diff --git a/src/com/sheepit/client/standalone/swing/SettingsLoader.java b/src/com/sheepit/client/standalone/swing/SettingsLoader.java new file mode 100644 index 0000000..7c2d008 --- /dev/null +++ b/src/com/sheepit/client/standalone/swing/SettingsLoader.java @@ -0,0 +1,179 @@ +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; + + public SettingsLoader() { + generateFilePath(); + } + + public SettingsLoader(String login_, String password_, ComputeType computeMethod_, GPUDevice gpu_, String cacheDir_) { + generateFilePath(); + login = login_; + password = password_; + cacheDir = cacheDir_; + + 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 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); + } + + 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; + + 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"); + } + } + catch (IOException io) { + io.printStackTrace(); + } + finally { + if (input != null) { + try { + input.close(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + public void merge(Configuration config) { + if (config == null) { + System.out.println("SettingsLoader::merge config is null"); + } + + loadFile(); + + if (login != null) { + config.setLogin(login); + } + if (password != null) { + config.setPassword(password); + } + + if (computeMethod != null) { + config.setComputeMethod(ComputeType.valueOf(computeMethod)); + } + if (gpu != null) { + GPUDevice device = GPU.getGPUDevice(gpu); + if (device != null) { + config.setUseGPU(device); + } + } + if (cacheDir != null) { + config.setCacheDir(new File(cacheDir)); + } + } + + @Override + public String toString() { + return "ConfigurationLoader [path=" + path + ", login=" + login + ", password=" + password + ", computeMethod=" + computeMethod + ", gpu=" + gpu + ", cacheDir=" + cacheDir + "]"; + } +} diff --git a/src/com/sheepit/client/standalone/swing/activity/Settings.java b/src/com/sheepit/client/standalone/swing/activity/Settings.java index 12998d7..e63c897 100644 --- a/src/com/sheepit/client/standalone/swing/activity/Settings.java +++ b/src/com/sheepit/client/standalone/swing/activity/Settings.java @@ -19,6 +19,7 @@ import com.sheepit.client.Configuration.ComputeType; import com.sheepit.client.hardware.gpu.GPU; import com.sheepit.client.hardware.gpu.GPUDevice; import com.sheepit.client.standalone.GuiSwing; +import com.sheepit.client.standalone.swing.SettingsLoader; public class Settings implements Activity { private static final String DUMMY_CACHE_DIR = "Auto detected"; @@ -44,6 +45,7 @@ public class Settings implements Activity { @Override public void show() { Configuration config = parent.getConfiguration(); + new SettingsLoader().merge(config); int size_height_label = 24; int start_label_left = 109; @@ -252,6 +254,13 @@ public class Settings implements Activity { } parent.setCredentials(login.getText(), new String(password.getPassword())); + + String cachePath = null; + if (config.getUserSpecifiedACacheDir() && config.getStorageDir() != null) { + cachePath = config.getStorageDir().getAbsolutePath(); + } + + new SettingsLoader(login.getText(), new String(password.getPassword()), method, selected_gpu, cachePath).saveFile(); } }