package org.signalml.app.config;
import java.io.File;
import java.io.FileNotFoundException;
import org.apache.log4j.Logger;
import org.signalml.app.config.preset.managers.BookFilterPresetManager;
import org.signalml.app.config.preset.managers.EegSystemsPresetManager;
import org.signalml.app.config.preset.managers.ExperimentsSettingsPresetManager;
import org.signalml.app.config.preset.managers.FFTSampleFilterPresetManager;
import org.signalml.app.config.preset.managers.PredefinedTimeDomainFiltersPresetManager;
import org.signalml.app.config.preset.managers.SignalExportPresetManager;
import org.signalml.app.config.preset.managers.StyledTagSetPresetManager;
import org.signalml.app.config.preset.managers.TimeDomainSampleFilterPresetManager;
import org.signalml.app.model.montage.MontagePresetManager;
public class ManagerOfPresetManagers {
protected static final Logger logger = Logger.getLogger(ManagerOfPresetManagers.class);
private File profileDir = null;
private MontagePresetManager montagePresetManager = null;
private BookFilterPresetManager bookFilterPresetManager = null;
private SignalExportPresetManager signalExportPresetManager = null;
private FFTSampleFilterPresetManager fftFilterPresetManager = null;
private ExperimentsSettingsPresetManager experimentsSettingsPresetManager = null;
private TimeDomainSampleFilterPresetManager timeDomainSampleFilterPresetManager = null;
private PredefinedTimeDomainFiltersPresetManager predefinedTimeDomainSampleFilterPresetManager = null;
private StyledTagSetPresetManager styledTagSetPresetManager = null;
private EegSystemsPresetManager eegSystemsPresetManager = null;
public ManagerOfPresetManagers(File profileDir) {
this.profileDir = profileDir;
}
public void loadPresetsFromPersistence() {
eegSystemsPresetManager = new EegSystemsPresetManager();
eegSystemsPresetManager.setProfileDir(profileDir);
eegSystemsPresetManager.createProfileDirectoriesIfNecessary();
try {
eegSystemsPresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("EEG systems configuration not found!");
} catch (Exception ex) {
logger.error("Failed to read eeg systems configuration", ex);
}
montagePresetManager = new MontagePresetManager(eegSystemsPresetManager);
montagePresetManager.setProfileDir(profileDir);
try {
montagePresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("Montage preset config not found - will use defaults");
} catch (Exception ex) {
logger.error("Failed to read montage configuration - will use defaults", ex);
}
bookFilterPresetManager = new BookFilterPresetManager();
bookFilterPresetManager.setProfileDir(profileDir);
try {
bookFilterPresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("Book filter preset config not found - will use defaults");
} catch (Exception ex) {
logger.error("Failed to read book filter configuration - will use defaults", ex);
}
signalExportPresetManager = new SignalExportPresetManager();
signalExportPresetManager.setProfileDir(profileDir);
try {
signalExportPresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("Signal export preset config not found - will use defaults");
} catch (Exception ex) {
logger.error("Failed to read signal export configuration - will use defaults", ex);
}
fftFilterPresetManager = new FFTSampleFilterPresetManager();
fftFilterPresetManager.setProfileDir(profileDir);
try {
fftFilterPresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("FFT sample filter preset config not found - will use defaults");
} catch (Exception ex) {
logger.error("Failed to read FFT sample filter configuration - will use defaults", ex);
}
experimentsSettingsPresetManager = new ExperimentsSettingsPresetManager();
experimentsSettingsPresetManager.setProfileDir(profileDir);
try {
experimentsSettingsPresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("Experiments settings not found - will start off with an empty list");
} catch (Exception ex) {
logger.error("Failed to read OpenBCI modules configuration - will start with an empty list", ex);
}
timeDomainSampleFilterPresetManager = new TimeDomainSampleFilterPresetManager();
timeDomainSampleFilterPresetManager.setProfileDir(profileDir);
try {
timeDomainSampleFilterPresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("Time domain sample filter preset config not found - will use defaults");
} catch (Exception ex) {
logger.error("Failed to read time domain sample filter configuration - will use defaults", ex);
}
predefinedTimeDomainSampleFilterPresetManager = new PredefinedTimeDomainFiltersPresetManager();
try {
predefinedTimeDomainSampleFilterPresetManager.loadDefaults();
} catch (FileNotFoundException ex) {
logger.error("Failed to read predefined time domain sample filters - file not found", ex);
} catch (Exception ex) {
logger.error("Failed to read predefined time domain sample filters", ex);
}
styledTagSetPresetManager = new StyledTagSetPresetManager();
styledTagSetPresetManager.setProfileDir(profileDir);
try {
styledTagSetPresetManager.readFromPersistence(null);
} catch (FileNotFoundException ex) {
logger.debug("Styled tag set preset config not found - will use defaults");
} catch (Exception ex) {
logger.error("Failed to read styled tag set configuration - will use defaults", ex);
}
}
public void writePresetsToPersistence() {
try {
montagePresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write montage configuration", ex);
}
try {
bookFilterPresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write book filter configuration", ex);
}
try {
signalExportPresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write signal export configuration", ex);
}
try {
fftFilterPresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write FFT sample filter configuration", ex);
}
try {
experimentsSettingsPresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write new experiments settings presets to file", ex);
}
try {
timeDomainSampleFilterPresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write time domain sample filter configuration", ex);
}
/*TODO: if predefined filters should be ever edited and saved
as presets, this lines should be uncommented.
try {
predefinedTimeDomainSampleFilterPresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write predefined time domain sample filters configuration", ex);
}*/
try {
styledTagSetPresetManager.writeToPersistence(null);
} catch (Exception ex) {
logger.error("Failed to write styled tag set configuration", ex);
}
}
public MontagePresetManager getMontagePresetManager() {
return montagePresetManager;
}
public void setMontagePresetManager(MontagePresetManager montagePresetManager) {
this.montagePresetManager = montagePresetManager;
}
public BookFilterPresetManager getBookFilterPresetManager() {
return bookFilterPresetManager;
}
public void setBookFilterPresetManager(BookFilterPresetManager bookFilterPresetManager) {
this.bookFilterPresetManager = bookFilterPresetManager;
}
public SignalExportPresetManager getSignalExportPresetManager() {
return signalExportPresetManager;
}
public void setSignalExportPresetManager(SignalExportPresetManager signalExportPresetManager) {
this.signalExportPresetManager = signalExportPresetManager;
}
public FFTSampleFilterPresetManager getFftFilterPresetManager() {
return fftFilterPresetManager;
}
public void setFftFilterPresetManager(FFTSampleFilterPresetManager fftFilterPresetManager) {
this.fftFilterPresetManager = fftFilterPresetManager;
}
public ExperimentsSettingsPresetManager getExperimentsSettingsPresetManager() {
return experimentsSettingsPresetManager;
}
public void setExperimentsSettingsPresetManager(ExperimentsSettingsPresetManager experimentsSettingsPresetManager) {
this.experimentsSettingsPresetManager = experimentsSettingsPresetManager;
}
public TimeDomainSampleFilterPresetManager getTimeDomainSampleFilterPresetManager() {
return timeDomainSampleFilterPresetManager;
}
public void setTimeDomainSampleFilterPresetManager(TimeDomainSampleFilterPresetManager timeDomainSampleFilterPresetManager) {
this.timeDomainSampleFilterPresetManager = timeDomainSampleFilterPresetManager;
}
public PredefinedTimeDomainFiltersPresetManager getPredefinedTimeDomainSampleFilterPresetManager() {
return predefinedTimeDomainSampleFilterPresetManager;
}
public void setPredefinedTimeDomainSampleFilterPresetManager(PredefinedTimeDomainFiltersPresetManager predefinedTimeDomainSampleFilterPresetManager) {
this.predefinedTimeDomainSampleFilterPresetManager = predefinedTimeDomainSampleFilterPresetManager;
}
public StyledTagSetPresetManager getStyledTagSetPresetManager() {
return styledTagSetPresetManager;
}
public void setStyledTagSetPresetManager(StyledTagSetPresetManager styledTagSetPresetManager) {
this.styledTagSetPresetManager = styledTagSetPresetManager;
}
public EegSystemsPresetManager getEegSystemsPresetManager() {
return eegSystemsPresetManager;
}
public void setEegSystemsPresetManager(EegSystemsPresetManager eegSystemsPresetManager) {
this.eegSystemsPresetManager = eegSystemsPresetManager;
}
}