view flys-aft/src/main/java/de/intevation/aft/Rivers.java @ 4768:99f9e371371b

Move distance calculation to Coordinate class. Use inheritance instead of composition in Anchor class. Made Anchor class static. Use epsilon equal comparision when checking for same station: Boy, do you ever learn that sharp equal comparison of doubles is not a clever idea!?
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 04 Jan 2013 15:35:51 +0100
parents a310aceb2e51
children f939e1e6cfa4
line wrap: on
line source
package de.intevation.aft;

import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;


import java.sql.SQLException;
import java.sql.ResultSet;

import de.intevation.db.ConnectedStatements;

import org.apache.log4j.Logger;

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

    public Rivers() {
    }

    public boolean sync(SyncContext context) throws SQLException {

        log.info("sync: rivers");

        ConnectedStatements flysStatements = context.getFlysStatements();
        ConnectedStatements aftStatements  = context.getAftStatements();

        Map<String, River> flysRivers = new HashMap<String, River>();

        ResultSet flysRs = flysStatements
            .getStatement("select.rivers").executeQuery();

        try {
            while (flysRs.next()) {
                int    id   = flysRs.getInt("id");
                String name = flysRs.getString("name");
                double from = flysRs.getDouble("min_km");
                double to   = flysRs.getDouble("max_km");
                flysRivers.put(name.toLowerCase(), new River(id, name, from, to));
            }
        }
        finally {
            flysRs.close();
        }

        List<River> commonRivers = new ArrayList<River>();

        ResultSet aftRs = aftStatements
            .getStatement("select.gewaesser").executeQuery();

        try {
            while (aftRs.next()) {
                String name = aftRs.getString("NAME");
                River river = flysRivers.get(name.toLowerCase());
                if (river != null) {
                    int id2 = aftRs.getInt("GEWAESSER_NR");
                    river.setId2(id2);
                    commonRivers.add(river);
                }
            }
        }
        finally {
            aftRs.close();
        }


        boolean modified = false;

        for (River river: commonRivers) {
            modified |= river.sync(context);
        }

        return modified;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org