sascha@177: package de.intevation.flys.importer; sascha@177: sascha@177: import java.io.File; sascha@177: import java.io.IOException; sascha@177: sascha@180: import java.util.List; sascha@180: sascha@177: import org.apache.log4j.Logger; sascha@177: sascha@180: import org.hibernate.SessionFactory; sascha@180: import org.hibernate.Session; sascha@180: import org.hibernate.Transaction; sascha@180: import org.hibernate.Query; sascha@180: sascha@180: import de.intevation.flys.backend.SessionFactoryProvider; sascha@180: sascha@180: import de.intevation.flys.model.River; sascha@180: sascha@177: public class Importer sascha@177: { sascha@177: private static Logger log = Logger.getLogger(Importer.class); sascha@177: sascha@180: protected List rivers; sascha@180: sascha@180: protected Session session; sascha@180: sascha@180: public Importer() { sascha@180: } sascha@180: sascha@180: public Importer(List rivers) { sascha@180: this.rivers = rivers; sascha@180: } sascha@180: sascha@180: public List getRivers() { sascha@180: return rivers; sascha@180: } sascha@180: sascha@180: public void setRivers(List rivers) { sascha@180: this.rivers = rivers; sascha@180: } sascha@180: sascha@180: public void writeRivers() { sascha@180: Query query = session.createQuery("select River where name=:name"); sascha@180: for (ImportRiver iriver: rivers) { sascha@180: query.setString("name", iriver.getName()); sascha@180: List dbrivers = (List)query.list(); sascha@180: if (dbrivers.isEmpty()) { sascha@180: River dbriver = new River(iriver.getName()); sascha@180: session.save(dbriver); sascha@180: } sascha@180: } sascha@180: } sascha@180: sascha@180: public void writeToDatabase() { sascha@180: SessionFactory sessionFactory = sascha@180: SessionFactoryProvider.createSessionFactory(); sascha@180: sascha@180: session = sessionFactory.openSession(); sascha@180: Transaction tx = null; sascha@180: sascha@180: try { sascha@180: tx = session.beginTransaction(); sascha@180: sascha@180: writeRivers(); sascha@180: sascha@180: tx.commit(); sascha@180: } sascha@180: catch (RuntimeException re) { sascha@180: if (tx != null) { sascha@180: tx.rollback(); sascha@180: } sascha@180: throw re; sascha@180: } sascha@180: finally { sascha@180: if (session != null) { sascha@180: session.close(); sascha@180: session = null; sascha@180: } sascha@180: } sascha@180: } sascha@180: sascha@177: public static void main(String [] args) { sascha@177: sascha@177: InfoGewParser infoGewParser = new InfoGewParser(); sascha@177: sascha@177: for (String gew: args) { sascha@177: log.info("parsing info gew file: " + gew); sascha@177: try { sascha@177: infoGewParser.parse(new File(gew)); sascha@177: } sascha@177: catch (IOException ioe) { sascha@177: log.error("cannot while parsing: " + gew); sascha@177: } sascha@177: } sascha@180: sascha@180: new Importer(infoGewParser.getRivers()).writeToDatabase(); sascha@177: } sascha@177: } sascha@177: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :