Graceful fallback when .yml files fail to load.

Only save params once per optimization.
This commit is contained in:
Fabian Becker 2014-11-15 07:08:14 +01:00
parent 667e069bcc
commit 17263cc023
4 changed files with 25 additions and 22 deletions

View File

@ -496,7 +496,7 @@ public class Main extends JFrame implements OptimizationStateListener {
}
});
LOGGER.log(Level.FINE, "Working directory is: {0}", System.getProperty("user.dir"));
LOGGER.log(Level.INFO, "Working directory is: {0}", System.getProperty("user.dir"));
LOGGER.log(Level.FINE, "Class path is: {0}", System.getProperty("java.class.path", "."));
if (!(configurationPane.isVisible())) {

View File

@ -48,8 +48,8 @@ public class OptimizationParameters extends AbstractOptimizationParameters imple
try {
FileInputStream fileStream = new FileInputStream(yamlFile);
instance = (OptimizationParameters) new Yaml().load(fileStream);
} catch (FileNotFoundException ex) {
LOGGER.log(Level.WARNING, "Could not load instance object.", ex);
} catch (Exception ex) {
LOGGER.log(Level.WARNING, "Could not load OptimizationParameters.yml.", ex);
}
if (instance == null) {

View File

@ -167,15 +167,17 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo
try {
EVAERROR.clearMsgCache();
this.setName(getInfoString());
while (isOptimizationRunning()) {
setPriority(3);
if (saveParams) {
if (isOptimizationRunning() && saveParams) {
try {
optimizationParameters.saveInstance();
} catch (Exception e) {
LOGGER.log(Level.WARNING, "Could not save optimization instance!", e);
}
}
while (isOptimizationRunning()) {
setPriority(3);
resultPopulation = this.optimize();
setPriority(1);
}

View File

@ -10,11 +10,10 @@ import eva2.tools.StringSelection;
import eva2.util.annotation.Description;
import eva2.util.annotation.Hidden;
import eva2.util.annotation.Parameter;
import eva2.yaml.BeanSerializer;
import org.yaml.snakeyaml.Yaml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.Serializable;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -62,13 +61,13 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
*
* @return A loaded (from file) or new instance of the class.
*/
public static StatisticsParameters getInstance(String serFileName) {
public static StatisticsParameters getInstance(String yamlFile) {
StatisticsParameters instance = null;
try {
FileInputStream fileStream = new FileInputStream(serFileName);
instance = (StatisticsParameters) Serializer.loadObject(fileStream);
} catch (FileNotFoundException ex) {
LOGGER.log(Level.WARNING, "Could not store instance object.", ex);
FileInputStream fileStream = new FileInputStream(yamlFile);
instance = (StatisticsParameters) new Yaml().load(fileStream);
} catch (Exception ex) {
LOGGER.log(Level.WARNING, "Could not load Statistics.yml.", ex);
}
if (instance == null) {
@ -106,9 +105,11 @@ public class StatisticsParameters implements InterfaceStatisticsParameters, Inte
@Override
public void saveInstance() {
try {
FileOutputStream fileStream = new FileOutputStream("Statistics.ser");
Serializer.storeObject(fileStream, this);
} catch (FileNotFoundException ex) {
FileOutputStream fileStream = new FileOutputStream("Statistics.yml");
String yaml = BeanSerializer.serializeObject(this);
fileStream.write(yaml.getBytes());
fileStream.close();
} catch (IOException ex) {
LOGGER.log(Level.WARNING, "Could not store instance object.", ex);
}
}