sascha@177: package de.intevation.flys.importer; sascha@177: sascha@184: import java.util.List; sascha@184: sascha@177: import java.io.File; sascha@184: import java.io.IOException; sascha@184: sascha@184: import org.apache.log4j.Logger; sascha@184: sascha@188: import de.intevation.flys.model.River; sascha@188: sascha@184: import de.intevation.flys.utils.FileTools; sascha@177: sascha@188: import org.hibernate.Session; sascha@188: import org.hibernate.Query; sascha@188: sascha@177: public class ImportRiver sascha@177: { sascha@184: private static Logger log = Logger.getLogger(ImportRiver.class); sascha@184: sascha@184: public static final String PEGEL_GLT = "PEGEL.GLT"; sascha@184: sascha@177: protected String name; sascha@177: sascha@177: protected File wstFile; sascha@177: sascha@177: protected File bbInfoFile; sascha@177: sascha@184: protected List gauges; sascha@184: sascha@186: protected List annotations; sascha@186: sascha@188: protected River peer; sascha@188: sascha@177: public ImportRiver() { sascha@177: } sascha@177: sascha@177: public ImportRiver(String name, File wstFile, File bbInfoFile) { sascha@177: this.name = name; sascha@177: this.wstFile = wstFile; sascha@177: this.bbInfoFile = bbInfoFile; sascha@177: } sascha@177: sascha@177: public String getName() { sascha@177: return name; sascha@177: } sascha@177: sascha@177: public void setName(String name) { sascha@177: this.name = name; sascha@177: } sascha@177: sascha@177: public File getWstFile() { sascha@177: return wstFile; sascha@177: } sascha@177: sascha@177: public void setWstFile(File wstFile) { sascha@177: this.wstFile = wstFile; sascha@177: } sascha@177: sascha@177: public File getBBInfo() { sascha@177: return bbInfoFile; sascha@177: } sascha@177: sascha@177: public void setBBInfo(File bbInfoFile) { sascha@177: this.bbInfoFile = bbInfoFile; sascha@177: } sascha@184: sascha@186: public void parseDependencies() throws IOException { sascha@186: parseGauges(); sascha@186: parseAnnotations(); sascha@186: } sascha@186: sascha@184: public void parseGauges() throws IOException { sascha@184: File gltFile = new File(wstFile.getParentFile(), PEGEL_GLT); sascha@184: gltFile = FileTools.repair(gltFile); sascha@184: sascha@184: if (!gltFile.isFile() || !gltFile.canRead()) { sascha@184: log.warn("cannot read gauges from '" + gltFile + "'"); sascha@184: return; sascha@184: } sascha@184: sascha@184: PegelGltParser pgltp = new PegelGltParser(); sascha@184: pgltp.parse(gltFile); sascha@184: sascha@184: gauges = pgltp.getGauges(); sascha@189: sascha@189: for (ImportGauge gauge: gauges) { sascha@189: gauge.parseDependencies(); sascha@189: } sascha@184: } sascha@186: sascha@186: public void parseAnnotations() throws IOException { sascha@186: File riverDir = wstFile.getParentFile().getParentFile(); sascha@186: AnnotationsParser aparser = new AnnotationsParser(); sascha@186: aparser.parse(riverDir); sascha@186: sascha@186: annotations = aparser.getAnnotations(); sascha@186: } sascha@188: sascha@188: public void storeAnnotations() { sascha@188: River river = getPeer(); sascha@188: for (ImportAnnotation annotation: annotations) { sascha@188: annotation.getPeer(river); sascha@188: } sascha@188: } sascha@188: sascha@188: public River getPeer() { sascha@188: if (peer == null) { sascha@188: Session session = Importer.sessionHolder.get(); sascha@188: Query query = session.createQuery("from River where name=:name"); sascha@188: query.setString("name", name); sascha@188: List rivers = query.list(); sascha@188: if (rivers.isEmpty()) { sascha@188: peer = new River(name); sascha@188: session.save(peer); sascha@188: } sascha@188: else { sascha@188: peer = rivers.get(0); sascha@188: } sascha@188: } sascha@188: return peer; sascha@188: } sascha@177: } sascha@177: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :