Mercurial > dive4elements > river
diff flys-aft/src/main/java/de/intevation/db/Statements.java @ 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 | a4e79e8e0aa0 |
children | 100c4e0a45e1 |
line wrap: on
line diff
--- 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/";