package com.isti.xmax.data;
import java.util.List;
import java.util.SortedSet;
import org.apache.log4j.Logger;
import com.isti.traceview.TraceViewException;
import com.isti.traceview.common.IEvent;
import com.isti.traceview.data.DataModule;
import com.isti.xmax.XMAXException;
import com.isti.xmax.common.Earthquake;
import com.isti.xmax.common.Pick;
import com.isti.xmax.common.QCIssue;
/**
* <p>
* Customized {@link DataModule}.
* </p>
* <p>
* Realize singleton pattern, i.e we can have only one data module in the program.
* </p>
*
* @author Max Kokoulin
*/
public class XMAXDataModule extends DataModule {
private static final Logger logger = Logger.getLogger(XMAXDataModule.class);
/**
* List of known earthquakes
*/
private List<IEvent> earthquakes = null;
private static XMAXDataModule instance = null;
private XMAXDataModule() {
super();
setChannelFactory(new XMAXChannelFactory());
}
/**
* @return set of known quality control issues
*/
public SortedSet<QCIssue> getAllQCIssues() {
return null;
}
/**
* @return list of known earthquakes, ordered by date
*/
public List<IEvent> getEarthquakes() {
return earthquakes;
}
/**
* Customized {@link DataModule#loadData()} - also initializes earthquakes and picks
*/
public void loadData() throws TraceViewException {
super.loadData();
// Adding events
earthquakes = Earthquake.getEarthquakes(getAllDataTimeInterval());
// Loading picks from xml database
try {
Pick.loadPicks();
} catch (XMAXException e) {
logger.error("Can't load picks: ", e);
}
}
public static XMAXDataModule getInstance() {
if (instance == null) {
instance = new XMAXDataModule();
}
return instance;
}
}