/**
*安装类
*
*@authoradmin
*
*/
publicclassInstall {
publicstaticvoiddbXml(String fileName, String dbHost, String dbPort,
String dbName, String dbUser, String dbPassword)throwsException {
String s = FileUtils.readFileToString(newFile(fileName));
s = s.replaceFirst("DB_HOST", dbHost);
s = s.replaceFirst("DB_PORT", dbPort);
s = s.replaceFirst("DB_NAME", dbName);
s = s.replaceFirst("DB_USER", dbUser);
s = s.replaceFirst("DB_PASSWORD", dbPassword);
FileUtils.writeStringToFile(newFile(fileName), s);
}
publicstaticConnection getConn(String dbHost, String dbPort,
String dbName, String dbUser, String dbPassword)throwsException {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connStr ="jdbc:mysql://"+ dbHost +":"+ dbPort +"/"+ dbName
+"?user="+ dbUser +"&password="+ dbPassword
+"&characterEncoding=GBK";
Connection conn = DriverManager.getConnection(connStr);
returnconn;
}
publicstaticvoidwebXml(String fromFile, String toFile)throwsException {
FileUtils.copyFile(newFile(fromFile),newFile(toFile));
}
/**
*创建数据库
*
*@paramdbHost
*@paramdbName
*@paramdbPort
*@paramdbUser
*@paramdbPassword
*@throwsException
*/
publicstaticvoidcreateDb(String dbHost, String dbPort, String dbName,
String dbUser, String dbPassword)throwsException {
Class.forName("com.mysql.jdbc.Driver").newInstance();;
String connStr ="jdbc:mysql://"+ dbHost +":"+ dbPort +"?user="
+ dbUser +"&password="+ dbPassword +"&characterEncoding=GBK";
Connection conn = DriverManager.getConnection(connStr);
Statement stat = conn.createStatement();
String sql ="drop database if exists "+ dbName;
stat.execute(sql);
sql ="create database "+ dbName
+" CHARACTER SET GBK";
stat.execute(sql);
stat.close();
conn.close();
}
publicstaticvoidchangeDbCharset(String dbHost, String dbPort,
String dbName, String dbUser, String dbPassword)throwsException {
Connection conn = getConn(dbHost, dbPort, dbName, dbUser, dbPassword);
Statement stat = conn.createStatement();
String sql ="ALTER DATABASE "+ dbName
+" CHARACTER SET GBK";
stat.execute(sql);
stat.close();
conn.close();
}
/**
*创建表
*
*@paramdbHost
*@paramdbName
*@paramdbPort
*@paramdbUser
*@paramdbPassword
*@paramsqlList
*@throwsException
*/
publicstaticvoidcreateTable(String dbHost, String dbPort, String dbName,
String dbUser, String dbPassword, List sqlList)
throwsException {
Connection conn = getConn(dbHost, dbPort, dbName, dbUser, dbPassword);
Statement stat = conn.createStatement();
for(String dllsql : sqlList) {
stat.addBatch(dllsql);
}
stat.executeBatch();
stat.close();
conn.close();
}
/**
*更新配置
*
*@paramdbHost
*@paramdbName
*@paramdbPort
*@paramdbUser
*@paramdbPassword
*@paramdomain
*@paramcxtPath
*@paramport
*@throwsException
*/
publicstaticvoidupdateConfig(String dbHost, String dbPort,
String dbName, String dbUser, String dbPassword, String domain,
String cxtPath, String port)throwsException {
Connection conn = getConn(dbHost, dbPort, dbName, dbUser, dbPassword);
Statement stat = conn.createStatement();
String sql ="update CORE_WEBSITE set DOMAIN='"+ domain +"'";
stat.executeUpdate(sql);
sql ="update CORE_GLOBAL set CONTEXT_PATH='"+ cxtPath +"',PORT="
+ port;
stat.executeUpdate(sql);
stat.close();
conn.close();
}
/**
*读取sql语句。“/*”开头为注释,“;”为sql结束。
*
*@paramfileName
*sql文件地址
*@returnlistofsql
*@throwsException
*/
publicstaticList readSql(String fileName)throwsException {
BufferedReader br =newBufferedReader(newInputStreamReader(
newFileInputStream(fileName), Constants.ENCODING));
List sqlList =newArrayList();
StringBuilder sqlSb =newStringBuilder();
String s =null;
while((s = br.readLine()) !=null) {
if(s.startsWith("/*")) {
continue;
}
if(s.endsWith(";")) {
sqlSb.append(s);
sqlSb.setLength(sqlSb.length() - 1);
sqlList.add(sqlSb.toString());
sqlSb.setLength(0);
}else{
sqlSb.append(s);
}
}
br.close();
returnsqlList;
}
}