import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import com.zfsoft.setup.intil.pojo.DataSourcePojo;
import com.zfsoft.setup.intl.commons.util.DataSourcePropertyFactory;
import com.zfsoft.setup.intl.commons.util.ResponseStatus;
import com.zfsoft.setup.intl.commons.util.SetupGuidCommonOption;
public class OADataSouceImpl extends DataSouce {
@Override
public ResponseStatus saveProperties(DataSourcePojo dataSourcePojo) {
String systemPath = SetupGuidCommonOption.getSystemDataSourcePath(dataSourcePojo.getCurNodeId());
if (this.judgeFileIsExists(systemPath)) {
Properties prop = readpropertyFileAndReplace(systemPath,
dataSourcePojo);
FileOutputStream fos;
try {
fos = new FileOutputStream(systemPath);
prop.store(fos, "sorted props");
} catch (Exception e) {
e.printStackTrace();
}
return ResponseStatus.SUCCESS;
} else {
return ResponseStatus.FILE_IS_NOT_EXISTS;
}
}
/***************************************************************************
*
* @param filePathAndName
* 文件路徑及名稱 如c:/fqf.properties
* @return
*/
public static Properties readPropertiesFile(String filePathAndName) {
SortedProperties prop = new SortedProperties();
InputStream in = null;
try {
in = new FileInputStream(new File(filePathAndName));
prop.load(in);
return prop;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
in = null;
}
}
return null;
}
/***************************************************************************
* 讀取配置文件並進行修改
*
* @param rPath
* @param dataSourcePojo
* @return
*/
private Properties readpropertyFileAndReplace(String systemPath,
DataSourcePojo dataSourcePojo) {
// 讀取配置文件
Properties prop = readPropertiesFile(systemPath);
prop.setProperty(OA_DATASOURCE_IP, dataSourcePojo.getIpAddress());
prop.setProperty(OA_DATASOURCE_PORT, dataSourcePojo.getPort());
prop.setProperty(OA_DATASOURCE_DBNAME, dataSourcePojo.getDbname());
prop.setProperty(OA_DATASOURCE_USERNAME, dataSourcePojo.getUserId());
prop.setProperty(OA_DATASOURCE_USERPWD, dataSourcePojo.getUserPwd());
return prop;
}
public static void main(String[] args) {
OADataSouceImpl oADataSouceImpl = new OADataSouceImpl();
DataSourcePojo dataSourcePojo = new DataSourcePojo();
dataSourcePojo.setDbname("orcl");
dataSourcePojo.setIpAddress("10.71.32.190");
dataSourcePojo.setPort("1521");
dataSourcePojo.setUserId("9sJ2qag3wxntnCJc87Ymxw==");
dataSourcePojo.setUserPwd("9sJ2qag3wxntnCJc87Ymxw==");
oADataSouceImpl.saveProperties(dataSourcePojo);
}
}
@SuppressWarnings("serial")
class SortedProperties extends Properties {
@SuppressWarnings("unchecked")
public Enumeration keys() {
Enumeration keysEnum = super.keys();
Vector<String> keyList = new Vector<String>();
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_IP);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_PORT);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_DBNAME);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_USERNAME);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_USERPWD);
while (keysEnum.hasMoreElements()) {
String key = (String)keysEnum.nextElement();
if(key.equals(DataSourcePropertyFactory.OA_DATASOURCE_IP) ||
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_PORT)||
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_DBNAME) ||
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_USERNAME)||
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_USERPWD) ){
continue;
}
keyList.add(key);
}
return keyList.elements();
}
}