package org.signalml.app.config.preset.managers;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.Annotations;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.signalml.app.config.preset.PresetManager;
import org.signalml.app.util.XMLUtils;
import org.signalml.domain.montage.generators.IMontageGenerator;
import org.signalml.domain.montage.system.EegElectrode;
import org.signalml.domain.montage.system.EegSystem;
import org.signalml.domain.montage.system.MontageGenerators;
/**
*
* This {@link PresetManager} manages the {@link MontageGenerators montage generators}
* definitions. Montage generators definitions and the list of
* {@link EegElectrode EEG electrodes} form an {@link EegSystem} -
* these definitions are read and linked together by the {@link EegSystemsPresetManager}.
*
* @author Piotr Szachewicz
*/
@XStreamAlias("monageGeneratorPresets")
public class MontageGeneratorsPresetManager extends AbstractMultifileResourcesPresetManager {
@Override
public String getDirectoryName() {
return "eegSystems/generators/";
}
@Override
public String[] getDefaultFileNames() {
return new String[] {
"eeg10_20_cap19_gen.xml",
"eeg10_10_cap33_gen.xml",
"eeg10_10_cap47_gen.xml",
"eeg10_20_capsleep_gen.xml",
};
}
@Override
public Class<?> getPresetClass() {
return MontageGenerators.class;
}
@Override
public XStream getStreamer() {
if (streamer == null) {
streamer = createStreamer();
}
return streamer;
}
/**
* Creates and returns an {@link XStreamer} used by this preset manager.
* @return
*/
protected XStream createStreamer() {
streamer = XMLUtils.getDefaultStreamer();
Annotations.configureAliases(streamer, EegSystemsPresetManager.class, MontageGenerators.class, IMontageGenerator.class);
return streamer;
}
}