sascha@4073: package de.intevation.aft;
sascha@4073: 
sascha@4075: import java.util.Map;
sascha@4075: import java.util.HashMap;
sascha@4075: import java.util.List;
sascha@4075: import java.util.ArrayList;
sascha@4075: 
sascha@4075: 
sascha@4073: import java.sql.SQLException;
sascha@4075: import java.sql.ResultSet;
sascha@4073: 
sascha@4075: import de.intevation.db.ConnectedStatements;
sascha@4075: 
sascha@4075: import org.apache.log4j.Logger;
sascha@4073: 
sascha@4073: public class Rivers
sascha@4073: {
sascha@4075:     private static Logger log = Logger.getLogger(Rivers.class);
sascha@4073: 
sascha@4075:     public Rivers() {
sascha@4073:     }
sascha@4073: 
sascha@4094:     public boolean sync(SyncContext context) throws SQLException {
sascha@4077: 
sascha@4075:         log.info("sync: rivers");
sascha@4073: 
sascha@4077:         ConnectedStatements flysStatements = context.getFlysStatements();
sascha@4077:         ConnectedStatements aftStatements  = context.getAftStatements();
sascha@4077: 
sascha@4075:         Map<String, Integer> flysRivers = new HashMap<String, Integer>();
sascha@4075: 
sascha@4075:         ResultSet flysRs = flysStatements
sascha@4075:             .getStatement("select.river").executeQuery();
sascha@4075: 
sascha@4075:         while (flysRs.next()) {
sascha@4075:             Integer id   = flysRs.getInt("id");
sascha@4075:             String  name = flysRs.getString("name").toLowerCase();
sascha@4075:             flysRivers.put(name, id);
sascha@4075:         }
sascha@4075: 
sascha@4075:         flysRs.close();
sascha@4075: 
sascha@4075:         List<River> commonRivers = new ArrayList<River>();
sascha@4075: 
sascha@4075:         ResultSet aftRs = aftStatements
sascha@4075:             .getStatement("select.gewaesser").executeQuery();
sascha@4075: 
sascha@4075:         while (aftRs.next()) {
sascha@4075:             String name = aftRs.getString("NAME");
sascha@4075:             Integer id1 = flysRivers.get(name.toLowerCase());
sascha@4075:             if (id1 != null) {
sascha@4075:                 int id2 = aftRs.getInt("GEWAESSER_NR");
sascha@4075:                 River river = new River(id1, id2, name);
sascha@4075:                 commonRivers.add(river);
sascha@4075:             }
sascha@4075:         }
sascha@4075: 
sascha@4075:         aftRs.close();
sascha@4075: 
sascha@4094:         boolean modified = false;
sascha@4094: 
sascha@4075:         for (River river: commonRivers) {
sascha@4094:             modified |= river.sync(context);
sascha@4075:         }
sascha@4094: 
sascha@4094:         return modified;
sascha@4073:     }
sascha@4073: }
sascha@4073: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :