forked from geodmms/xdgnjobs

?? ?
2008-05-07 10445847ed1bfa5755127e828b603a3cdd49c5e3
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
@@ -95,31 +95,42 @@
        try
        {
            logger.info("-- step:clearOutputDirectory --");
            clearOutputDirectory();
            boolean bFirst = true;
            for (String orgSchema : _orgSchema)
            if (checkConvertDB())
            {
                OracleConvertJobContext jobContext = (OracleConvertJobContext) prepareJobContext(_filterPath);
                jobContext.setConnectionInfo(_oracleHost, _oraclePort, _oracleInstance);
                jobContext.setLogin(_username, _password);
                jobContext.setShapeData(_dataPath);
                jobContext.setConvertDB(_convertDB);
                jobContext.setConvertFile(_convertFile);
                jobContext.setExecutionContext(context);
                logger.info("-- step:convertOracleDB --");
                for (String orgSchema : _orgSchema)
                {
                    OracleConvertJobContext jobContext = (OracleConvertJobContext) prepareJobContext(_filterPath);
                    jobContext.setConnectionInfo(_oracleHost, _oraclePort, _oracleInstance);
                    jobContext.setLogin(_username, _password);
                    jobContext.setShapeData(_dataPath);
                    jobContext.setConvertDB(_convertDB);
                    jobContext.setConvertFile(_convertFile);
                    jobContext.setExecutionContext(context);
                if (bFirst)
                    copyConnectivity(jobContext);
                else
                    bFirst = false;
                    if (bFirst)
                        copyConnectivity(jobContext);
                    else
                        bFirst = false;
                logger.info("----- start schema:" + orgSchema + " -----");
                exetcuteConvert(jobContext, orgSchema, _dataPath);
                    logger.info("----- start schema:" + orgSchema + " -----");
                    exetcuteConvert(jobContext, orgSchema, _dataPath);
                //close all open filewriter instance
                jobContext.closeFeatureWrite();
                    //close all open filewriter instance
                    jobContext.closeFeatureWrite();
                }
            }
            convertIndexDesignFile(context);
            convertOtherDesignFile(context);
            if (checkConvertFile())
            {
                logger.info("-- step:convertIndexDesignFile --");
                convertIndexDesignFile(context);
                logger.info("-- step:convertOtherDesignFile --");
                convertOtherDesignFile(context);
            }
        } catch (SQLException e)
        {
            logger.warn(e.getMessage(), e);
@@ -129,10 +140,12 @@
            logger.warn(ex.getMessage(), ex);
            throw new JobExecutionException("IO error. " + ex.getMessage(), ex);
        }
        logger.info(jobName + " end at " + new Date());
    }
    /**
     * Connectivity½Æ»s¤@­Óª©¥»¡A¦b¬d¸ß¹q¬y¤è¦V®É¥Î¨Ó¤ñ¹ïOMS¸ê®Æ®wªº¹q¾¹³s±µ©Ê(Connectivity)
     *
     * @param jobContext
     * @throws SQLException
     */
@@ -219,25 +232,25 @@
        {
            rs = stmt.executeQuery(fetchStmt);
        while (rs.next())
        {
            int size = rs.getMetaData().getColumnCount();
            Object[] values = new Object[size];
            for (int i = 0; i < size; i++)
            while (rs.next())
            {
                values[i] = rs.getObject(i + 1);
                int size = rs.getMetaData().getColumnCount();
                Object[] values = new Object[size];
                for (int i = 0; i < size; i++)
                {
                    values[i] = rs.getObject(i + 1);
                }
                Integer key = ((BigDecimal) values[0]).intValue();
                String name = (String) values[1];
                Pair pair = (Pair) orderedMap.get(key);
                if (pair == null)
                    orderedMap.put(key, new Pair(name, null));
                else
                    pair.first = name;
            }
            Integer key = ((BigDecimal) values[0]).intValue();
            String name = (String) values[1];
            Pair pair = (Pair) orderedMap.get(key);
            if (pair == null)
                orderedMap.put(key, new Pair(name, null));
            else
                pair.first = name;
        }
        } catch (SQLException e)
        {
            logger.error(e.toString(), e);
@@ -444,6 +457,7 @@
    /**
     * °õ¦æÂà´«¯Á¤Þ¹ÏÀɪº¤u§@
     *
     * @param context ¤u§@°õ¦æÀô¹Ò
     */
    private void convertIndexDesignFile(JobExecutionContext context) throws JobExecutionException
@@ -471,10 +485,11 @@
        for (File dgnFile : dgnFiles)
        {
            IndexDgnConvertJobContext convertContext = new IndexDgnConvertJobContext(getDataPath());
            logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---");
            try
            {
                convertContext.setExecutionContext(context);
                String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.pathSeparator);
                String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator);
                convertContext.setFilename(dgnPaths[dgnPaths.length - 1]);
                FileInputStream fs = new FileInputStream(dgnFile);
@@ -485,6 +500,7 @@
                scanIndexDgnElement(convertContext);
                convertContext.commitTransaction();
                System.gc();
            } catch (FileNotFoundException e)
            {
                convertContext.rollbackTransaction();
@@ -568,6 +584,7 @@
    /**
     * °õ¦æÂà´«¨ä¥L³]­p¹ÏÀɪº¤u§@
     *
     * @param context
     */
    private void convertOtherDesignFile(JobExecutionContext context) throws JobExecutionException
@@ -595,10 +612,11 @@
        for (File dgnFile : dgnFiles)
        {
            GeneralDgnConvertJobContext convertContext = new GeneralDgnConvertJobContext(getDataPath());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try
            {
                convertContext.setExecutionContext(context);
                String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.pathSeparator);
                String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator);
                convertContext.setFilename(dgnPaths[dgnPaths.length - 1]);
                FileInputStream fs = new FileInputStream(dgnFile);
@@ -683,9 +701,58 @@
    private void processOtherElement(Element element, GeneralDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException
    {
        if (element instanceof TextElement)
        convertContext.putFeatureCollection(element);
    }
    private void clearOutputDirectory()
    {
        File outDataPath = new File(getDataPath(), OracleConvertJobContext.SHPOUTPATH);
        if (outDataPath.exists() && outDataPath.isDirectory())
        {
            convertContext.putFeatureCollection(element);
            deleteFilesInPath(outDataPath);
        }
        outDataPath = new File(getDataPath(), IndexDgnConvertJobContext.SHPOUTPATH);
        if (outDataPath.exists() && outDataPath.isDirectory())
        {
            deleteFilesInPath(outDataPath);
        }
        outDataPath = new File(getDataPath(), GeneralDgnConvertJobContext.SHPOUTPATH);
        if (outDataPath.exists() && outDataPath.isDirectory())
        {
            deleteFilesInPath(outDataPath);
        }
    }
    private void deleteFilesInPath(File outDataPath)
    {
        deleteFilesInPath(outDataPath, true);
    }
    private void deleteFilesInPath(File outDataPath, boolean removeSubDir)
    {
        if (!outDataPath.isDirectory())
        {
            return;
        }
        File[] files = outDataPath.listFiles();
        for (File file : files)
        {
            if (file.isFile())
            {
                if (!file.delete())
                {
                    logger.info("Cannot delete file-" + file.toString());
                }
            } else if (file.isDirectory())
            {
                deleteFilesInPath(file, removeSubDir);
                if (removeSubDir)
                {
                    if (file.delete())
                    {
                        logger.info("Cannot delete dir-" + file.toString());
                    }
                }
            }
        }
    }
}