package org.signalml.app.config.preset.managers;
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.ChannelType;
import org.signalml.domain.montage.system.EegElectrode;
import org.signalml.domain.montage.system.EegSystem;
import org.signalml.domain.montage.system.EegSystemName;
import org.signalml.math.geometry.Polar3dPoint;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.XStreamer;
import com.thoughtworks.xstream.annotations.Annotations;
/**
* This {@link PresetManager} manages the electrodes definitions of a {@link EegSystem}
* which are handled like presets. It is capable of reading the electrodes definitions
* from a directory and restoring default electrodes configuration from resource.
*
* @author Piotr Szachewicz
*/
public class EegElectrodesPresetManager extends AbstractMultifileResourcesPresetManager {
@Override
public String getDirectoryName() {
return "eegSystems/electrodes/";
}
@Override
public String[] getDefaultFileNames() {
return new String[] {
"eeg10_20_cap19.xml",
"eeg10_20_cap25.xml",
"eeg10_20_cap25_extended.xml",
"eeg10_10_cap33.xml",
"eeg10_10_cap47.xml",
"eeg10_20_capsleep.xml",
};
}
@Override
public Class<?> getPresetClass() {
return EegSystem.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, EegSystem.class, EegElectrode.class, Polar3dPoint.class, ChannelType.class, IMontageGenerator.class, EegSystemName.class);
return streamer;
}
}