package org.signalml.plugin.method.helper;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.signalml.app.config.preset.Preset;
import org.signalml.app.method.ApplicationMethodManager;
import org.signalml.app.method.MethodPresetManager;
import org.signalml.plugin.exception.PluginException;
import org.signalml.plugin.method.PluginMethodManager;
import org.signalml.plugin.tool.PluginResourceRepository;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.XStreamException;
public class PluginPresetManagerHelper {
protected static final Logger logger = Logger
.getLogger(PluginPresetManagerHelper.class);
public static MethodPresetManager GetPresetForMethod(
ApplicationMethodManager applicationMethodManager,
PluginMethodManager pluginMethodManager,
String methodName, Class<? extends Preset> parameterClass) {
MethodPresetManager presetManager = new MethodPresetManager(methodName,
parameterClass);
presetManager.setProfileDir(applicationMethodManager.getProfileDir());
try {
presetManager.setStreamer((XStream) PluginResourceRepository
.GetResource("streamer"));
} catch (PluginException e) {
pluginMethodManager.handleException(e);
logger.warn("Can't get proper streamer (method: " + methodName
+ ")", e);
return presetManager;
}
try {
presetManager.readFromPersistence(null);
} catch (IOException ex) {
if (ex instanceof FileNotFoundException) {
logger.warn("Seems like preset configuration doesn't exist (method: "
+ methodName + ")");
} else {
logger.warn("Failed to read presets - presets lost (method: "
+ methodName + ")", ex);
}
} catch (XStreamException ex) {
logger.warn("Failed to convert presets - presets lost (method: "
+ methodName + ")", ex);
} catch (Exception ex) {
logger.error("Failed to load presets (method: " + methodName + ")", ex);
}
return presetManager;
}
}