| | |
| | | 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"; |
| | |
| | | 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; |
| | |
| | | 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 |
| | | { |
| | |
| | | _createDummy = dataMap.getString(CREATEDUMMY); |
| | | |
| | | Log logger = getLogger(); |
| | | /* |
| | | logger.info("JOBDATA_DIR=" + _dataPath); |
| | | logger.info("CONFELMSFILTER=" + _filterPath); |
| | | logger.info("ORAHOST=" + _oracleHost); |
| | |
| | | logger.info("CONVERTFILE=" + _convertFile); |
| | | logger.info("CONVERTELEMIN=" + _convertElementIn); |
| | | logger.info("ELEMLOG=" + _elementLogging); |
| | | */ |
| | | |
| | | String strSchema = dataMap.getString(SPATAILSCHEMA); |
| | | StringTokenizer st = new StringTokenizer(strSchema, ","); |
| | |
| | | |
| | | 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."); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | return raw; |
| | | } |
| | | |
| | | public boolean isDriverFound() |
| | | { |
| | | return driverFound; |
| | | } |
| | | |
| | | public String getDataPath() |
| | |
| | | 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(); |
| | | } |
| | | } |