forked from geodmms/xdgnjobs

?? ?
2008-06-06 aaf4c6c3a1d50b67b9a7dfd1bc011615ba5d9f57
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();
    }
}