Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package ca.carleton.gcrc.couch.command;
  
  import java.io.File;
  import java.net.URL;
 
 
 public class AtlasProperties {
 
 	static public AtlasProperties fromAtlasDir(File atlasDirthrows Exception {
 		Properties props = new Properties();
 		readProperties(atlasDirprops);
 		
 		return fromProperties(props);
 	}
 
 	static public AtlasProperties fromProperties(Properties propsthrows Exception {
 		AtlasProperties atlasProps = new AtlasProperties();
 		
 		atlasProps.setAtlasNameprops.getProperty("atlas.name") );
 		atlasProps.setCouchDbNameprops.getProperty("couchdb.dbName") );
 		atlasProps.setCouchDbAdminUserprops.getProperty("couchdb.admin.user") );
 		atlasProps.setCouchDbAdminPasswordprops.getProperty("couchdb.admin.password") );
 		
 		// CouchDb URL
 		try {
 			String urlStr = props.getProperty("couchdb.url");
 			URL url = new URL(urlStr);
 			atlasProps.setCouchDbUrl(url);
 		} catch(Exception e) {
 			throw new Exception("Unable to decode CouchDB URL",e);
 		}
 		
 		// Server port
 		try {
 			String portString = props.getProperty("servlet.url.port");
 			int port = Integer.parseInt(portString);
 			if( 0 == port ) {
 				throw new Exception("Invalid servlet port: "+portString);
 			}
 			atlasProps.setServerPort(port);
 		} catch(Exception e) {
 			throw new Exception("Unable to interpret servlet port",e);
 		}
 		
 		
 		return atlasProps;
 	}
 
 	static public void readProperties(File atlasDirProperties propsthrows Exception {
 		// install.properties
 		{
 			File installPropFile = new File(atlasDir,"config/install.properties");
 			ifinstallPropFile.exists() && installPropFile.isFile() ){
 				FileInputStream fis = null;
 				try {
 					fis = new FileInputStream(installPropFile);
 					InputStreamReader reader = new InputStreamReader(fis,"UTF-8");
 					props.load(reader);
 					
 				} catch(Exception e) {
 					throw new Exception("Unable to read config properties from: "+installPropFile.getAbsolutePath(), e);
 					
 				} finally {
 					ifnull != fis ){
 						try{
 							fis.close();
 						} catch(Exception e) {
 							// Ignore
 						}
 					}
 				}
 			}
 		}
 
 		// sensitive.properties
 		{
 			File sensitivePropFile = new File(atlasDir,"config/sensitive.properties");
 			ifsensitivePropFile.exists() && sensitivePropFile.isFile() ){
 				FileInputStream fis = null;
 				try {
 					fis = new FileInputStream(sensitivePropFile);
 					InputStreamReader reader = new InputStreamReader(fis,"UTF-8");
 					props.load(reader);
 					
 				} catch(Exception e) {
 					throw new Exception("Unable to read config properties from: "+sensitivePropFile.getAbsolutePath(), e);
 					
 				} finally {
 					ifnull != fis ){
 						try{
 							fis.close();
 						} catch(Exception e) {
							// Ignore
						}
					}
				}
			}
		}
	}
	static public void writeProperties(File atlasDirProperties propsthrows Exception {
		// Create config directory, if needed
		File configDir = new File(atlasDir,"config");
		try {
			iffalse == configDir.exists() ){
				iffalse == configDir.mkdir() ) {
					throw new Exception("Error creating directory: "+configDir.getAbsolutePath());
				}
			}
catch(Exception e) {
			throw new Exception("Unable to create config directory",e);
		}
		// Divide public and sensitive properties
		Properties publicProps = new Properties();
		Properties sensitiveProps = new Properties();
		Enumeration<?> namesEnum = props.propertyNames();
		whilenamesEnum.hasMoreElements() ){
			Object keyObj = namesEnum.nextElement();
			ifkeyObj instanceof String ) {
				String key = (String)keyObj;
				String value = props.getProperty(key);
				if"couchdb.admin.password".equals(key) ){
					sensitiveProps.put(keyvalue);
else {
					publicProps.put(keyvalue);
				}
			}
		}
		// Write public file
		{
			File installPropFile = new File(configDir,"install.properties");
			FileOutputStream fos = null;
			try {
				fos = new FileOutputStream(installPropFile);
				OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
				PropertiesWriter propWriter = new PropertiesWriter(osw);
				propWriter.write(publicProps);
				osw.flush();
catch(Exception e) {
				throw new Exception("Unable to write config properties to: "+installPropFile.getAbsolutePath(), e);
finally {
				ifnull != fos ){
					try{
						fos.close();
catch(Exception e) {
						// Ignore
					}
				}
			}
		}
		// Write sensitive file
		{
			File sensitivePropFile = new File(configDir,"sensitive.properties");
			FileOutputStream fos = null;
			try {
				fos = new FileOutputStream(sensitivePropFile);
				OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
				PropertiesWriter propWriter = new PropertiesWriter(osw);
				propWriter.write(sensitiveProps);
				osw.flush();
catch(Exception e) {
				throw new Exception("Unable to write config properties to: "+sensitivePropFile.getAbsolutePath(), e);
finally {
				ifnull != fos ){
					try{
						fos.close();
catch(Exception e) {
						// Ignore
					}
				}
			}
		}
	}
	private String atlasName;
	private URL couchDbUrl;
	private int serverPort = 8080;
	public String getAtlasName() {
		return ;
	}
	public void setAtlasName(String atlasName) {
		this. = atlasName;
	}
	public URL getCouchDbUrl() {
		return ;
	}
	public void setCouchDbUrl(URL couchDbUrl) {
		this. = couchDbUrl;
	}
	public String getCouchDbName() {
		return ;
	}
	public void setCouchDbName(String couchDbName) {
		this. = couchDbName;
	}
	}
	public void setCouchDbAdminUser(String couchDbAdminUser) {
		this. = couchDbAdminUser;
	}
	}
	public void setCouchDbAdminPassword(String couchDbAdminPassword) {
		this. = couchDbAdminPassword;
	}
	public int getServerPort() {
		return ;
	}
	public void setServerPort(int serverPort) {
		this. = serverPort;
	}
New to GrepCode? Check out our FAQ X