package net.ameba.cassandra.web.service;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import org.springframework.stereotype.Component;
/**
* {@link CassandraProperties} provides per user properties.
*
* @author suguru
*
*/
@Component
public class CassandraProperties {
public static final String HOST = "cassandra.host";
public static final String JMX_PORT = "cassandra.jmx.port";
public static final String THRIFT_PORT = "cassandra.thrift.port";
public static final String FRAMED_TRANSPORT = "cassandra.framedTransport";
private String fileName = ".cassandra-webconsole";
private Properties properties;
public CassandraProperties() throws IOException {
loadProperties();
}
/**
* Load properties from the file.
*
* @throws IOException
*/
public void loadProperties() throws IOException {
File userPropertyFile = getPropertiesFile();
if (userPropertyFile.exists()) {
properties = new Properties();
FileInputStream fis = new FileInputStream(userPropertyFile);
try {
properties.load(fis);
} finally {
fis.close();
}
}
}
/**
* Get property value.
* @param key
* @return
*/
public String getProperty(String key) {
if (properties == null) {
return null;
} else {
return properties.getProperty(key);
}
}
/**
* Set property key and value.
* @param key
* @param value
*/
public synchronized void setProperty(String key, String value) {
if (properties == null) {
properties = new Properties();
}
properties.setProperty(key, value);
}
/**
* Save properties to the file.
* @throws IOException
*/
public void saveProperties() throws IOException {
File userPropertyFile = getPropertiesFile();
FileOutputStream fos = new FileOutputStream(userPropertyFile);
try {
properties.store(fos, "Cassandra WebConsole User Properties");
} finally {
fos.close();
}
}
/**
* Check whether properties are loaded.
* @return
*/
public boolean hasProperties() {
return properties != null;
}
/**
* Get the property file related to current user.
* @return
*/
private File getPropertiesFile() {
return new File(
System.getProperty("user.home"),
fileName
);
}
}