changeset 4073:2c70fae83d0c

start syncing at river level. flys-aft/trunk@3406 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 13 Dec 2011 13:41:43 +0000
parents 88f801888d85
children 100c4e0a45e1
files flys-aft/ChangeLog flys-aft/src/main/java/de/intevation/aft/Rivers.java flys-aft/src/main/java/de/intevation/aft/Sync.java flys-aft/src/main/java/de/intevation/db/ConnectionBuilder.java flys-aft/src/main/java/de/intevation/db/Statements.java flys-aft/src/main/java/de/intevation/db/SymbolicStatement.java
diffstat 6 files changed, 221 insertions(+), 144 deletions(-) [+]
line wrap: on
line diff
--- a/flys-aft/ChangeLog	Tue Dec 13 12:33:36 2011 +0000
+++ b/flys-aft/ChangeLog	Tue Dec 13 13:41:43 2011 +0000
@@ -1,3 +1,20 @@
+2011-12-13	Sascha L. Teichmann	<sascha.teichmann@inteavtion.de>
+
+	* src/main/java/de/intevation/db/ConnectionBuilder.java: Added
+	  access to Statements.
+
+	* src/main/java/de/intevation/db/SymbolicStatement.java: New.
+	  Made top level from inner class of Statements.
+
+	* src/main/java/de/intevation/db/Statements.java: Moved SymbolicStatement
+	  out to top level class.
+
+	* src/main/java/de/intevation/aft/Rivers.java: Syncing beginns at
+	  river level.
+
+	* src/main/java/de/intevation/aft/Sync.java: Start the syncing with
+	  the rivers of both dbs.
+
 2011-12-13	Sascha L. Teichmann	<sascha.teichmann@inteavtion.de>
 
 	* doc/conf.xml: Adjusted structure to be more generic.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-aft/src/main/java/de/intevation/aft/Rivers.java	Tue Dec 13 13:41:43 2011 +0000
@@ -0,0 +1,27 @@
+package de.intevation.aft;
+
+import java.sql.SQLException;
+
+import de.intevation.db.ConnectionBuilder;
+
+public class Rivers
+{
+    protected ConnectionBuilder aftConnectionBuilder;
+    protected ConnectionBuilder flysConnectionBuilder;
+
+    public Rivers(
+        ConnectionBuilder aftConnectionBuilder,
+        ConnectionBuilder flysConnectionBuilder
+    ) {
+        this.aftConnectionBuilder  = aftConnectionBuilder;
+        this.flysConnectionBuilder = flysConnectionBuilder;
+    }
+
+    public void sync() throws SQLException {
+    }
+
+    public void close() {
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+
--- a/flys-aft/src/main/java/de/intevation/aft/Sync.java	Tue Dec 13 12:33:36 2011 +0000
+++ b/flys-aft/src/main/java/de/intevation/aft/Sync.java	Tue Dec 13 13:41:43 2011 +0000
@@ -2,6 +2,8 @@
 
 import java.io.File;
 
+import java.sql.SQLException;
+
 import org.w3c.dom.Document;
 
 import de.intevation.utils.XML;
@@ -32,12 +34,25 @@
             System.exit(1);
         }
 
+        ConnectionBuilder aftConnectionBuilder =
+            new ConnectionBuilder(AFT, config);
+
         ConnectionBuilder flysConnectionBuilder =
             new ConnectionBuilder(FLYS, config);
 
-        ConnectionBuilder aftConnectionBuilder =
-            new ConnectionBuilder(AFT, config);
+        Rivers rivers = new Rivers(
+            aftConnectionBuilder,
+            flysConnectionBuilder);
 
+        try {
+            rivers.sync();
+        }
+        catch (SQLException sqle) {
+            System.err.println("syncing failed: " + sqle.getMessage());
+        }
+        finally {
+            rivers.close();
+        }
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-aft/src/main/java/de/intevation/db/ConnectionBuilder.java	Tue Dec 13 12:33:36 2011 +0000
+++ b/flys-aft/src/main/java/de/intevation/db/ConnectionBuilder.java	Tue Dec 13 13:41:43 2011 +0000
@@ -29,9 +29,12 @@
     protected String password;
     protected String url;
 
+    protected Statements statements;
+
     public ConnectionBuilder(String type, Document document) {
         this.type = type;
         extractCredentials(document);
+        statements = new Statements(type, driver != null ? driver : "");
     }
 
     protected void extractCredentials(Document document) {
@@ -68,5 +71,9 @@
 
         return DriverManager.getConnection(url, user, password);
     }
+
+    public SymbolicStatement getStatement(String key) {
+        return statements.getStatement(key);
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-aft/src/main/java/de/intevation/db/Statements.java	Tue Dec 13 12:33:36 2011 +0000
+++ b/flys-aft/src/main/java/de/intevation/db/Statements.java	Tue Dec 13 13:41:43 2011 +0000
@@ -7,154 +7,12 @@
 
 import org.apache.log4j.Logger;
 
-import java.util.List;
-import java.util.ArrayList;
 import java.util.Map;
 import java.util.HashMap;
 import java.util.Enumeration;
 
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.PreparedStatement;
-import java.sql.Timestamp;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 public class Statements
 {
-    public static final Pattern VAR = Pattern.compile(":([a-zA-Z0-9_]+)");
-
-    public static class SymbolicStatement {
-
-        protected String statement;
-        protected String compiled;
-        protected Map<String, List<Integer>> positions;
-
-        public class Instance {
-
-            /** TODO: Support more types. */
-
-            protected PreparedStatement stmnt;
-
-            public Instance(Connection connection) throws SQLException {
-                stmnt = connection.prepareStatement(compiled);
-            }
-
-            public void close() {
-                try {
-                    stmnt.close();
-                }
-                catch (SQLException sqle) {
-                    log.error("cannot close statement", sqle);
-                }
-            }
-
-            public void setInt(String key, int value)
-            throws SQLException 
-            {
-                List<Integer> pos = positions.get(key.toLowerCase());
-                if (pos != null) {
-                    for (Integer p: pos) {
-                        stmnt.setInt(p, value);
-                    }
-                }
-            }
-
-            public void setString(String key, String value)
-            throws SQLException 
-            {
-                List<Integer> pos = positions.get(key.toLowerCase());
-                if (pos != null) {
-                    for (Integer p: pos) {
-                        stmnt.setString(p, value);
-                    }
-                }
-            }
-
-            public void setObject(String key, Object value)
-            throws SQLException 
-            {
-                List<Integer> pos = positions.get(key.toLowerCase());
-                if (pos != null) {
-                    for (Integer p: pos) {
-                        stmnt.setObject(p, value);
-                    }
-                }
-            }
-
-            public void setTimestamp(String key, Timestamp value)
-            throws SQLException 
-            {
-                List<Integer> pos = positions.get(key.toLowerCase());
-                if (pos != null) {
-                    for (Integer p: pos) {
-                        stmnt.setTimestamp(p, value);
-                    }
-                }
-            }
-
-            public void setDouble(String key, int value)
-            throws SQLException 
-            {
-                List<Integer> pos = positions.get(key.toLowerCase());
-                if (pos != null) {
-                    for (Integer p: pos) {
-                        stmnt.setDouble(p, value);
-                    }
-                }
-            }
-
-            public void setNull(String key, int sqlType)
-            throws SQLException 
-            {
-                List<Integer> pos = positions.get(key.toLowerCase());
-                if (pos != null) {
-                    for (Integer p: pos) {
-                        stmnt.setNull(p, sqlType);
-                    }
-                }
-            }
-
-            public void set(Map<String, Object> map) throws SQLException {
-                for (Map.Entry<String, Object> entry: map.entrySet()) {
-                    setObject(entry.getKey(), entry.getValue());
-                }
-            }
-
-        } // class Instance
-
-        public SymbolicStatement(String statement) {
-            this.statement = statement;
-            compile();
-        }
-
-        public String getStatement() {
-            return statement;
-        }
-
-        protected void compile() {
-            positions = new HashMap<String, List<Integer>>();
-
-            StringBuffer sb = new StringBuffer();
-            Matcher m = VAR.matcher(statement);
-            int index = 1;
-            while (m.find()) {
-                String key = m.group(1).toLowerCase();
-                List<Integer> list = positions.get(key);
-                if (list == null) {
-                    list = new ArrayList<Integer>();
-                    positions.put(key, list);
-                }
-                list.add(index++);
-                m.appendReplacement(sb, "?");
-            }
-            m.appendTail(sb);
-            compiled = sb.toString();
-        }
-    } // class SymbolicStatement
-
-
     private static Logger log = Logger.getLogger(Statements.class);
 
     public static final String RESOURCE_PATH = "/sql/";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-aft/src/main/java/de/intevation/db/SymbolicStatement.java	Tue Dec 13 13:41:43 2011 +0000
@@ -0,0 +1,153 @@
+package de.intevation.db;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.PreparedStatement;
+import java.sql.Timestamp;
+
+import org.apache.log4j.Logger;
+
+public class SymbolicStatement {
+
+    private static Logger log = Logger.getLogger(SymbolicStatement.class);
+
+    public static final Pattern VAR = Pattern.compile(":([a-zA-Z0-9_]+)");
+
+    protected String statement;
+    protected String compiled;
+    protected Map<String, List<Integer>> positions;
+
+    public class Instance {
+
+        /** TODO: Support more types. */
+
+        protected PreparedStatement stmnt;
+
+        public Instance(Connection connection) throws SQLException {
+            stmnt = connection.prepareStatement(compiled);
+        }
+
+        public void close() {
+            try {
+                stmnt.close();
+            }
+            catch (SQLException sqle) {
+                log.error("cannot close statement", sqle);
+            }
+        }
+
+        public void setInt(String key, int value)
+        throws SQLException 
+        {
+            List<Integer> pos = positions.get(key.toLowerCase());
+            if (pos != null) {
+                for (Integer p: pos) {
+                    stmnt.setInt(p, value);
+                }
+            }
+        }
+
+        public void setString(String key, String value)
+        throws SQLException 
+        {
+            List<Integer> pos = positions.get(key.toLowerCase());
+            if (pos != null) {
+                for (Integer p: pos) {
+                    stmnt.setString(p, value);
+                }
+            }
+        }
+
+        public void setObject(String key, Object value)
+        throws SQLException 
+        {
+            List<Integer> pos = positions.get(key.toLowerCase());
+            if (pos != null) {
+                for (Integer p: pos) {
+                    stmnt.setObject(p, value);
+                }
+            }
+        }
+
+        public void setTimestamp(String key, Timestamp value)
+        throws SQLException 
+        {
+            List<Integer> pos = positions.get(key.toLowerCase());
+            if (pos != null) {
+                for (Integer p: pos) {
+                    stmnt.setTimestamp(p, value);
+                }
+            }
+        }
+
+        public void setDouble(String key, int value)
+        throws SQLException 
+        {
+            List<Integer> pos = positions.get(key.toLowerCase());
+            if (pos != null) {
+                for (Integer p: pos) {
+                    stmnt.setDouble(p, value);
+                }
+            }
+        }
+
+        public void setNull(String key, int sqlType)
+        throws SQLException 
+        {
+            List<Integer> pos = positions.get(key.toLowerCase());
+            if (pos != null) {
+                for (Integer p: pos) {
+                    stmnt.setNull(p, sqlType);
+                }
+            }
+        }
+
+        public void set(Map<String, Object> map) throws SQLException {
+            for (Map.Entry<String, Object> entry: map.entrySet()) {
+                setObject(entry.getKey(), entry.getValue());
+            }
+        }
+
+        public void clearParameters() throws SQLException {
+            stmnt.clearParameters();
+        }
+
+    } // class Instance
+
+    public SymbolicStatement(String statement) {
+        this.statement = statement;
+        compile();
+    }
+
+    public String getStatement() {
+        return statement;
+    }
+
+    protected void compile() {
+        positions = new HashMap<String, List<Integer>>();
+
+        StringBuffer sb = new StringBuffer();
+        Matcher m = VAR.matcher(statement);
+        int index = 1;
+        while (m.find()) {
+            String key = m.group(1).toLowerCase();
+            List<Integer> list = positions.get(key);
+            if (list == null) {
+                list = new ArrayList<Integer>();
+                positions.put(key, list);
+            }
+            list.add(index++);
+            m.appendReplacement(sb, "?");
+        }
+        m.appendTail(sb);
+        compiled = sb.toString();
+    }
+} // class SymbolicStatement

http://dive4elements.wald.intevation.org