Files
sheepit-shadow-nabber/src/com/sheepit/client/standalone/swing/SettingsLoader.java

201 lines
4.5 KiB
Java
Raw Normal View History

2015-03-31 00:29:58 +01:00
package com.sheepit.client.standalone.swing;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
import com.sheepit.client.Configuration;
import com.sheepit.client.Configuration.ComputeType;
import com.sheepit.client.hardware.gpu.GPU;
import com.sheepit.client.hardware.gpu.GPUDevice;
public class SettingsLoader {
private String path;
private String login;
private String password;
private String computeMethod;
private String gpu;
private String cacheDir;
private String autoSignIn;
2015-03-31 00:29:58 +01:00
public SettingsLoader() {
generateFilePath();
}
public SettingsLoader(String login_, String password_, ComputeType computeMethod_, GPUDevice gpu_, String cacheDir_, boolean autoSignIn_) {
2015-03-31 00:29:58 +01:00
generateFilePath();
login = login_;
password = password_;
cacheDir = cacheDir_;
autoSignIn = String.valueOf(autoSignIn_);
2015-03-31 00:29:58 +01:00
if (computeMethod_ != null) {
try {
computeMethod = computeMethod_.name();
}
catch (IllegalArgumentException e) {
}
}
if (gpu_ != null) {
gpu = gpu_.getCudaName();
}
}
private void generateFilePath() {
path = System.getProperty("user.home") + File.separator + ".sheepit.conf";
}
public String getFilePath() {
return path;
}
2015-03-31 00:29:58 +01:00
public void saveFile() {
Properties prop = new Properties();
OutputStream output = null;
try {
output = new FileOutputStream(path);
if (cacheDir != null) {
prop.setProperty("cache-dir", cacheDir);
}
if (computeMethod != null) {
prop.setProperty("compute-method", computeMethod);
}
if (gpu != null) {
prop.setProperty("compute-gpu", gpu);
}
if (login != null) {
prop.setProperty("login", login);
}
if (password != null) {
prop.setProperty("password", password);
}
if (autoSignIn != null) {
prop.setProperty("auto-signin", autoSignIn);
}
2015-03-31 00:29:58 +01:00
prop.store(output, null);
}
catch (IOException io) {
io.printStackTrace();
}
finally {
if (output != null) {
try {
output.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void loadFile() {
this.login = null;
this.password = null;
this.computeMethod = null;
this.gpu = null;
this.cacheDir = null;
this.autoSignIn = null;
2015-03-31 00:29:58 +01:00
if (new File(path).exists() == false) {
return;
}
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream(path);
prop.load(input);
if (prop.containsKey("cache-dir")) {
this.cacheDir = prop.getProperty("cache-dir");
}
if (prop.containsKey("compute-method")) {
this.computeMethod = prop.getProperty("compute-method");
}
if (prop.containsKey("compute-gpu")) {
this.gpu = prop.getProperty("compute-gpu");
}
if (prop.containsKey("login")) {
this.login = prop.getProperty("login");
}
if (prop.containsKey("password")) {
this.password = prop.getProperty("password");
}
if (prop.containsKey("auto-signin")) {
this.autoSignIn = prop.getProperty("auto-signin");
}
2015-03-31 00:29:58 +01:00
}
catch (IOException io) {
io.printStackTrace();
}
finally {
if (input != null) {
try {
input.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* Merge the Settings file with the Configuration.
* The Configuration will have high priority.
*/
2015-03-31 00:29:58 +01:00
public void merge(Configuration config) {
if (config == null) {
System.out.println("SettingsLoader::merge config is null");
}
loadFile();
if (config.login().isEmpty() && login != null) {
2015-03-31 00:29:58 +01:00
config.setLogin(login);
}
if (config.password().isEmpty() && password != null) {
2015-03-31 00:29:58 +01:00
config.setPassword(password);
}
2015-04-05 22:03:45 +01:00
if ((config.getComputeMethod() == null && computeMethod != null) || (config.getComputeMethod() != ComputeType.valueOf(computeMethod) && computeMethod != null)) {
2015-03-31 00:29:58 +01:00
config.setComputeMethod(ComputeType.valueOf(computeMethod));
}
if (config.getGPUDevice() == null && gpu != null) {
2015-03-31 00:29:58 +01:00
GPUDevice device = GPU.getGPUDevice(gpu);
if (device != null) {
config.setUseGPU(device);
}
}
if (config.getUserSpecifiedACacheDir() == false && cacheDir != null) {
2015-03-31 00:29:58 +01:00
config.setCacheDir(new File(cacheDir));
}
config.setAutoSignIn(Boolean.valueOf(autoSignIn));
2015-03-31 00:29:58 +01:00
}
@Override
public String toString() {
return "ConfigurationLoader [path=" + path + ", login=" + login + ", password=" + password + ", computeMethod=" + computeMethod + ", gpu=" + gpu + ", cacheDir=" + cacheDir + "]";
}
}