From aaf4c6c3a1d50b67b9a7dfd1bc011615ba5d9f57 Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Fri, 06 Jun 2008 18:44:30 +0800 Subject: [PATCH] update for EOFM-115 --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java | 95 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 90 insertions(+), 5 deletions(-) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java index 3e68794..532d267 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java @@ -6,23 +6,35 @@ import java.nio.ByteBuffer; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Map; import java.util.StringTokenizer; +import java.util.TreeMap; + +import com.vividsolutions.jts.util.Assert; +import com.ximple.eofms.jobs.context.AbstractOracleJobContext; import org.apache.commons.logging.Log; +import org.geotools.data.DataStore; +import org.geotools.data.jdbc.ConnectionPoolManager; +import org.geotools.data.oracle.OracleDataStore; +import org.geotools.data.oracle.OracleDataStoreFactory; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; -import com.vividsolutions.jts.util.Assert; - import oracle.sql.BLOB; - -import com.ximple.eofms.jobs.context.AbstractOracleJobContext; public abstract class AbstractOracleDatabaseJob implements Job { + /** The Oracle driver class name */ + private static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver"; + + private static final String ORACLE_URL = "jdbc:oracle:thin:@"; + private static final String PROPUsrKey = "user"; + private static final String PROPPassKey = "password"; + private static final String JOBDATA_DIR = "JOBDATA_DIR"; private static final String CONFELMSFILTER = "ELMSFILTER_CONF"; private static final String SPATAILSCHEMA = "ORGSCHEMA"; @@ -39,6 +51,8 @@ private static final String TESTMODE = "TESTMODE"; private static final String TESTCOUNT = "TESTCOUNT"; + protected static OracleDataStoreFactory dataStoreFactory = new OracleDataStoreFactory(); + protected String _dataPath; protected String _filterPath; protected String _oracleHost; @@ -54,10 +68,22 @@ protected ArrayList<String> _orgSchema = new ArrayList<String>(); protected boolean _testMode = false; protected int _testCount = -1; + protected OracleDataStore sourceDataStore; + private boolean driverFound = true; + + protected AbstractOracleDatabaseJob() + { + try { + Class.forName(JDBC_DRIVER); + } catch (Throwable t) { + // must be running off dummy jar! + driverFound = false; + } + } public abstract void execute(JobExecutionContext context) throws JobExecutionException; - public Log getLogger() { return null; } + public abstract Log getLogger(); protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException { @@ -77,6 +103,7 @@ _createDummy = dataMap.getString(CREATEDUMMY); Log logger = getLogger(); + /* logger.info("JOBDATA_DIR=" + _dataPath); logger.info("CONFELMSFILTER=" + _filterPath); logger.info("ORAHOST=" + _oracleHost); @@ -88,6 +115,7 @@ logger.info("CONVERTFILE=" + _convertFile); logger.info("CONVERTELEMIN=" + _convertElementIn); logger.info("ELEMLOG=" + _elementLogging); + */ String strSchema = dataMap.getString(SPATAILSCHEMA); StringTokenizer st = new StringTokenizer(strSchema, ","); @@ -123,22 +151,27 @@ if (_oracleHost == null) { + logger.warn("OracleHOST is null"); throw new JobExecutionException("Unknown Oracle Host."); } if (_oracleInstance == null) { + logger.warn("OracleINSTANCE is null"); throw new JobExecutionException("Unknown Oracle Instance."); } if (_username == null) { + logger.warn("OracleUSER is null"); throw new JobExecutionException("Unknown Oracle Username."); } if (_password == null) { + logger.warn("OraclePASS is null"); throw new JobExecutionException("Unknown Oracle Password."); } if (_orgSchema == null) { + logger.warn("OracleSchema is null"); throw new JobExecutionException("Unknown Spatial Database Schema."); } } @@ -183,6 +216,11 @@ } return raw; + } + + public boolean isDriverFound() + { + return driverFound; } public String getDataPath() @@ -304,4 +342,51 @@ return _createDummy != null && !_createDummy.equalsIgnoreCase("false") && !_createDummy.equalsIgnoreCase("no") && !_createDummy.equalsIgnoreCase("0"); } + + public DataStore getSourceDataStore() + { + return sourceDataStore; + } + + protected void createSourceDataStore() throws JobExecutionException + { + if (sourceDataStore != null) + { + sourceDataStore.dispose(); + sourceDataStore = null; + } + + if (!isDriverFound()) + { + throw new JobExecutionException("Oracle JDBC Driver not found.-" + JDBC_DRIVER); + } + Map<String, String> map = new TreeMap<String, String>(); + map.put("host", _oracleHost); + map.put("port", _oraclePort); + map.put("instance", _oracleInstance); + map.put("user", _username); + map.put("passwd", _password); + map.put("dbtype", "oracle"); + map.put("alias", _oracleInstance); + map.put("namespace", null); + if (!dataStoreFactory.canProcess(map)) + { + getLogger().warn("cannot process properties-"); + throw new JobExecutionException("cannot process properties-"); + } + try + { + sourceDataStore = (OracleDataStore) dataStoreFactory.createDataStore(map); + } catch (IOException e) + { + getLogger().warn(e.getMessage(), e); + throw new JobExecutionException(e.getMessage(), e); + } + } + + protected void disconnect() + { + ConnectionPoolManager manager = ConnectionPoolManager.getInstance(); + manager.closeAll(); + } } -- Gitblit v0.0.0-SNAPSHOT