view flys-backend/src/main/java/de/intevation/flys/importer/Importer.java @ 182:1c0afb01bc93

Importer: Fixed error in HQL statement. flys-backend/trunk@1493 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 17 Mar 2011 10:29:18 +0000
parents 3908bfb2aa43
children 222f4db3430a
line wrap: on
line source
package de.intevation.flys.importer;

import java.io.File;
import java.io.IOException;

import java.util.List;

import org.apache.log4j.Logger;

import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;

import de.intevation.flys.backend.SessionFactoryProvider;

import de.intevation.flys.model.River;

public class Importer
{
    private static Logger log = Logger.getLogger(Importer.class);

    protected List<ImportRiver> rivers;

    protected Session session;

    public Importer() {
    }

    public Importer(List<ImportRiver> rivers) {
        this.rivers = rivers;
    }

    public List<ImportRiver> getRivers() {
        return rivers;
    }

    public void setRivers(List<ImportRiver> rivers) {
        this.rivers = rivers;
    }

    public void writeRivers() {
        log.debug("write rivers started");
        Query query = session.createQuery("from River where name=:name");
        for (ImportRiver iriver: rivers) {
            log.debug("writing river '" + iriver.getName() + "'");
            query.setString("name", iriver.getName());
            List<River> dbrivers = (List<River>)query.list();
            if (dbrivers.isEmpty()) {
                River dbriver = new River(iriver.getName());
                session.save(dbriver);
            }
        }
        log.debug("write rivers finished");
    }

    public void writeToDatabase() {
        SessionFactory sessionFactory =
            SessionFactoryProvider.createSessionFactory();

        session = sessionFactory.openSession();
        Transaction tx = null;

        try {
            tx = session.beginTransaction();

            writeRivers();

            tx.commit();
        }
        catch (RuntimeException re) {
            if (tx != null) {
                tx.rollback();
            }
            throw re;
        }
        finally {
            if (session != null) {
                session.close();
                session = null;
            }
        }
    }

    public static void main(String [] args) {

        InfoGewParser infoGewParser = new InfoGewParser();

        for (String gew: args) {
            log.info("parsing info gew file: " + gew);
            try {
                infoGewParser.parse(new File(gew));
            }
            catch (IOException ioe) {
                log.error("cannot while parsing: " + gew);
            }
        }

        new Importer(infoGewParser.getRivers()).writeToDatabase();
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org