X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fproducer%2FExternalDbProducerNode.java;fp=source%2Fmir%2Fproducer%2FExternalDbProducerNode.java;h=3ff4b308e527b0a1755012d9d087a97cd3d0db5e;hb=c9ac8fa71b679f8d967aac901bbef945c13b94c9;hp=cfc1e51c45ebecf2e61577412c264e2b9a378392;hpb=d63595f89aaa4b6a524dc0b4af9e0eef888f4c6b;p=mir.git diff --git a/source/mir/producer/ExternalDbProducerNode.java b/source/mir/producer/ExternalDbProducerNode.java index cfc1e51c..3ff4b308 100755 --- a/source/mir/producer/ExternalDbProducerNode.java +++ b/source/mir/producer/ExternalDbProducerNode.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002 The Mir-coders group + * Copyright (C) 2001-2006 The Mir-coders group * * This file is part of Mir. * @@ -19,8 +19,6 @@ * * In addition, as a special exception, The Mir-coders gives permission to link * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), * and distribute linked combinations including the two. You must obey the * GNU General Public License in all respects for all of the code used other than * the above mentioned libraries. If you modify this file, you may extend this @@ -29,16 +27,18 @@ */ package mir.producer; +import mir.util.ParameterExpander; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; -import java.sql.*; - - -import mir.log.LoggerWrapper; -import mir.util.ExceptionFunctions; -import mir.util.ParameterExpander; public class ExternalDbProducerNode extends ProducerNodeDecorator { private String key; @@ -48,11 +48,11 @@ public class ExternalDbProducerNode extends ProducerNodeDecorator { private String database; private String username; private String password; - private String query; - + private String query; - public ExternalDbProducerNode(String aKey, String aDriver, String aHost, String aPort, String aDatabase, String aUsername, String aPassword,String aQuery,ProducerNode aSubNode) { + public ExternalDbProducerNode(String aKey, String aDriver, String aHost, String aPort, String aDatabase, String aUsername, String aPassword, String aQuery, ProducerNode aSubNode) { super(aSubNode); + key = aKey; driver = aDriver; host = aHost; @@ -60,61 +60,59 @@ public class ExternalDbProducerNode extends ProducerNodeDecorator { database = aDatabase; username = aUsername; password = aPassword; - query =aQuery; - + query = aQuery; } - public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { + public void produce(ProductionContext aProductionContext) throws ProducerFailure { try { - String expandedKey = ParameterExpander.expandExpression( aValueMap, key ); - String expandedDriver = ParameterExpander.expandExpression( aValueMap, driver); - String expandedHost = ParameterExpander.expandExpression( aValueMap, host); - String expandedPort = ParameterExpander.expandExpression( aValueMap, port); - String expandedDatabase = ParameterExpander.expandExpression( aValueMap, database); - String expandedUsername = ParameterExpander.expandExpression( aValueMap, username); - String expandedPassword = ParameterExpander.expandExpression( aValueMap, password); - String expandedQuery = ParameterExpander.expandExpression( aValueMap, query); + String expandedKey = ParameterExpander.expandExpression(aProductionContext.getValueSet(), key); + String expandedDriver = ParameterExpander.expandExpression(aProductionContext.getValueSet(), driver); + String expandedHost = ParameterExpander.expandExpression(aProductionContext.getValueSet(), host); + String expandedPort = ParameterExpander.expandExpression(aProductionContext.getValueSet(), port); + String expandedDatabase = ParameterExpander.expandExpression(aProductionContext.getValueSet(), database); + String expandedUsername = ParameterExpander.expandExpression(aProductionContext.getValueSet(), username); + String expandedPassword = ParameterExpander.expandExpression(aProductionContext.getValueSet(), password); + String expandedQuery = ParameterExpander.expandExpression(aProductionContext.getValueSet(), query); - if (expandedDriver.equals("postgresql")){ - Class.forName("org.postgresql.Driver"); + if ("postgresql".equals(expandedDriver)) { + Class.forName("org.postgresql.Driver"); } - if (expandedDriver.equals("mysql")){ - Class.forName("com.mysql.jdbc.Driver"); + if ("mysql".equals(expandedDriver)) { + Class.forName("com.mysql.jdbc.Driver"); } else { - throw new Exception("Unsupported DB Driver:"+expandedDriver); + throw new Exception("Unsupported DB Driver:" + expandedDriver); } - - Connection db = DriverManager.getConnection("jdbc:"+expandedDriver+"://"+expandedHost - +":"+expandedPort+"/"+expandedDatabase - , expandedUsername, expandedPassword); - + + Connection db = DriverManager.getConnection("jdbc:" + expandedDriver + "://" + expandedHost + + ":" + expandedPort + "/" + expandedDatabase + , expandedUsername, expandedPassword); + Statement st = db.createStatement(); ResultSet rs = st.executeQuery(expandedQuery); ResultSetMetaData rsmd = rs.getMetaData(); - int numberOfColumns= rsmd.getColumnCount(); - ArrayList fieldNames = new ArrayList(numberOfColumns); - for (int i=0;i