package com.constellio.sdk.tests; import static org.apache.commons.io.IOUtils.closeQuietly; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.apache.commons.io.FileUtils; import com.constellio.data.utils.PropertyFileUtils; public class SDKPropertiesLoader { boolean locked; Map<String, String> sdkProperties; Map<String, String> getSDKProperties() { if (locked) { return new HashMap<String, String>(); } if (sdkProperties == null) { sdkProperties = loadSDKProperties(); for (String propertyName : System.getProperties().stringPropertyNames()) { if (propertyName.startsWith("skip.")) { sdkProperties.put(propertyName, System.getProperty(propertyName)); } } } return sdkProperties; } private Map<String, String> loadSDKProperties() { File sdkProperties = new SDKFoldersLocator().getSDKProperties(); if (!sdkProperties.exists()) { File defaultSdkProperties = new File(sdkProperties.getParentFile(), "sdk.properties.default"); try { FileUtils.copyFile(defaultSdkProperties, sdkProperties); } catch (IOException e) { throw new RuntimeException(e); } } return PropertyFileUtils.loadKeyValues(sdkProperties); } public void writeValues(Map<String, String> values) { File sdkProperties = new SDKFoldersLocator().getSDKProperties(); Properties prop = new Properties(); FileReader reader = null; FileWriter writer = null; try { reader = new FileReader(sdkProperties); prop.load(reader); // FileInputStream or whatever closeQuietly(reader); for (Map.Entry<String, String> entry : values.entrySet()) { prop.setProperty(entry.getKey(), entry.getValue()); } writer = new FileWriter(sdkProperties); prop.store(writer, ""); } catch (Exception e) { throw new RuntimeException(e); } finally { closeQuietly(reader); closeQuietly(writer); } } public void setLocked(boolean locked) { this.locked = locked; } }