⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loader.java

📁 数据仓库工具
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    Vector vecXmlElements = new Vector();
    Vector vecJDBCTargetConnections = new Vector();

    //initializing logger
    //videti jos oko ulaznih parametara, iz main methode ili is xml fajla
    ParseLoggerParam loggerParam = new ParseLoggerParam(this.strLoaderJobFileName);
    String logClassName = loggerParam.getLogClassName();
	
    String pathToLoggerConf = loggerParam.getPathToLoggerConf();
    String strLoggerParam = "";
    boolean standardLogger = false;
    try {
      this.logger = (org.webdocwf.util.loader.logging.Logger)Class.forName(logClassName).
                    newInstance();
      if (pathToLoggerConf != null && pathToLoggerConf.length() != 0)
        strLoggerParam = pathToLoggerConf;
      else
        strLoggerParam = this.strLogDirName + ";" + this.strLogFileName;
    }
    catch (Exception e) {
      this.logger = new StandardLogger();
      strLoggerParam = this.strLogDirName + ";" + this.strLogFileName;
      standardLogger = true;
    }

    try {
      logger.configure(strLoggerParam);
      logger.setEnabledLogLevels(this.defaultLogMode);
      if (standardLogger == true) {
//        if (!importDefinitionElement.strLogMode.equalsIgnoreCase("none")) {
          this.logger.write("normal", "Default (Standard) Logger is load.");
//        }
      }

    }
    catch (Exception ex) {
      String msg = "Error while configuring logger.";
      LoaderException le = new LoaderException(msg + "\n" + ex.getMessage(), (Throwable)ex);
      BufferOctopusClass.getInstance().writeToBuffer(msg + "\n" + ex.getMessage() + "\n");
      //this.logger.write("normal", msg + "\n" + ex.getMessage() + "\n");
			this.logger.write("full", le.getStackTraceAsString());
      throw le;
    }

    this.timeCounter = new TimeWatch();

//    if (!this.echo.createLog(this.strLogDirName, this.strLogFileName))
//      this.echo.setLogFile(new File(this.strLogDirName, this.strLogFileName));
//    this.createLog(this.strLogFileName);

    jdbcParametersElement.setLogger(this.logger);
    jdbcParametersElement.setConfigReaderSource(this.configReaderSource);
    jdbcParametersElement.setLoaderJobPath(this.strLoaderJobFileName);

    configReaderSource.setLogger(this.logger);
    configReaderTarget.setLogger(this.logger);
    configReaderSource.setConfJarStructure(this.confJarStructure);
    configReaderTarget.setConfJarStructure(this.confJarStructure);

    loaderJobReader.setLogger(this.logger);
    loaderJobReader.setDefaultOnErrorContinue(this.bOnErrorContinue);
    sqlElement.setLogger(this.logger);
    sqlElement.setLoaderJob(this.loaderJobReader);
    sqlElement.setConfigReader(this.configReaderTarget);
    sqlElement.setJdbcParametersElement(this.jdbcParametersElement);
    checkRowCache.setLogger(this.logger);
    dataTransmition.setLogger(this.logger);

	
//    if (!importDefinitionElement.strLogMode.equalsIgnoreCase("none")) {
      this.logger.write("normal", "\nApplication is started.");
//    }

    this.timeCounter.setStartTime();
    ByteArrayInputStream inStream = null;
    ByteArrayOutputStream foStream = new ByteArrayOutputStream();
    // Loading XML file and replacing include tags
    LoaderXIncluder loaderInclude = new LoaderXIncluder(foStream);
    LocationOfException locationOfException = new LocationOfException(this.strLoaderJobFileName);
    loaderInclude.parseURI(this.strLoaderJobFileName);
    inStream = new ByteArrayInputStream(foStream.toByteArray());

//for test only
//    try {
//      File file=new File("c:/Users/Rale/Octopus/ObjectLoader/InputStream.txt");
//      FileOutputStream fileLogr=new FileOutputStream(file);
//    if(file.exists())
//      file.delete();
//    fileLogr.write(foStream.toByteArray());
//    fileLogr.close();
//    } catch(Exception e) { System.out.println("File error"); }

//part for validating input xml file
    try {
      OctopusValidator validator = new OctopusValidator();
      validator.validate(new ByteArrayInputStream(foStream.toByteArray()));
    }
    catch (Exception e) {
      this.logger.write("normal", "Sorry, validation error occurred . Message was: " + e.getMessage());
	  
      BufferOctopusClass.getInstance().writeToBuffer(
          "Sorry, validation error occurred . Message was: " + e.getMessage());
      LoaderException le = new LoaderException("Exception:"+e.getMessage(),(Throwable)e);
			this.logger.write("full", le.getStackTraceAsString());
			throw le; 
	 
    }
//    if (!importDefinitionElement.strLogMode.equalsIgnoreCase("none")) {
      this.logger.write("normal", "\nXML document is valid.");
	
//    }

    // Import attribute values from variable tags from XML
    this.importVariable(inStream);
    // Setting bReplaceInData if there is even one ReplaceInData attribut
    // in variable tags
    for (int i = 0; i < this.vecReplaceInData.size(); i++) {
      if (this.vecReplaceInData.get(i).toString().equalsIgnoreCase("true"))
        bReplaceInData = true;
    }
    // Change variable values in SQL, JDBC and Constants Tags in XML
    this.foStreamTmp = foStream;
    foStream = new ByteArrayOutputStream();
    LoadVariable loadVariable = new LoadVariable(foStream, this);
    loadVariable.parseURI();
    //refresh inStream with replaced variables
	 inStream = new ByteArrayInputStream(foStream.toByteArray());
    loaderJobReader.setDefaultLogMode(this.defaultLogMode);
    loaderJobReader.importLoaderJobAttributes(inStream);
    iImportJobs = this.parseImportJob(inStream);
    iCopyTable = this.parseCopyTable(inStream);
    iSqlTags = sqlElement.parseSql(inStream);
    iEchoElements = this.parseEcho(inStream);
    this.importRestartCounter(inStream);
    vecXmlElements = this.parseMainElements(inStream);

    //setting the last number of importDefinition tag
    iLastImportDefinition = 0;
    for (int i = 0; i < vecXmlElements.size(); i++) {
      if (vecXmlElements.get(i).toString().equalsIgnoreCase("importDefinition"))
        iLastImportDefinition = i;
    }
    jdbcParametersElement.parseTargetJDBCParameters(inStream);
    DBConnectionManager connManager = new DBConnectionManager(jdbcParametersElement.
                                      getTargetConnections());
    Connection connToPools = null;

    try {
      this.isDefaultJdbc = jdbcParametersElement.parseImportJDBCDefaultParameters(inStream);

      if (this.strVendorFileName != null && !this.strVendorFileName.equals(""))
        configReaderTarget.setVendorFileName(this.strVendorFileName);
        //this can be erased!!!?
      configReaderTarget.readConfigValues(jdbcParametersElement.getTargetDBVendor(),
          jdbcParametersElement.getTargetDriverName(), "target");
      this.currentOidColumnName = configReaderTarget.getOidColumnName();
      this.currentVersionColumnName = configReaderTarget.getVersionColumnName();

      if (jdbcParametersElement.getJDBCTargetParameterDriver().equals("") ||
          jdbcParametersElement.getJDBCTargetParameterDriver() == null)
        jdbcParametersElement.setJDBCTargetParameterDriver(configReaderTarget.getDriverClassName());
      Class.forName(jdbcParametersElement.getJDBCTargetParameterDriver());

      int iImport = 0;
      int iCopy = 0;
      int iSql = 0;
      int iEcho = 0;
      //main loop
      for (int l = 0; l < (iImportJobs + iCopyTable + iSqlTags + iEchoElements); l++) {
        Object tempLogMode = this.logModes.get(l);
        if( tempLogMode != null && !tempLogMode.equals("") )
		  	this.logger.setEnabledLogLevels(tempLogMode.toString());
		  else
		   this.logger.setEnabledLogLevels(loaderJobReader.getDefaultLogMode());
		  //reset global variables
        this.resetGlobalVariables();
        relationsCache.resetRelationsCache();
        checkRowCache.resetCheckRowCache();
//        if (!importDefinitionElement.strLogMode.equalsIgnoreCase("none")) {
          this.logger.write("normal",
              "\nImport job No. " + (iImport + iCopy + iSql + 1) + " is started.");
//        }

        if (vecXmlElements.get(l).toString().equalsIgnoreCase("importDefinition")) {
          this.logger.write("full", "Importing and parsing XML file is started.");
          //importing specific jdbc parameters if any exist
          this.parseAndImport(inStream, iImport);
          jdbcParametersElement.parseImportJDBCParameters(inStream, iImport + 1, "importDefinition");

          configReaderSource.readConfigValues(jdbcParametersElement.getDbVendor(),
              jdbcParametersElement.getDriverName(), "source");
          configReaderTarget.readConfigValues(jdbcParametersElement.getTargetDBVendor(),
              jdbcParametersElement.getTargetDriverName(), "target");
//          validStmt.setConfigReader(configReaderSource);
          this.currentOidColumnName = configReaderTarget.getOidColumnName();
          this.currentVersionColumnName = configReaderTarget.getVersionColumnName();
		    
        }
        //rale 24.10.2003
        else if (vecXmlElements.get(l).toString().equalsIgnoreCase("copyTable")) {
          this.logger.write("full", "Importing and parsing XML file is started.");
          this.parseAndImport(inStream, iCopy);
          //this.logger.setEnabledLogLevels(importDefinitionElement.strCopyTableLogMode);
          jdbcParametersElement.parseImportJDBCParameters(inStream, iCopy + 1, "copyTable");

          configReaderSource.readConfigValues(jdbcParametersElement.getDbVendor(),
              jdbcParametersElement.getDriverName(),
              "source");
          configReaderTarget.readConfigValues(jdbcParametersElement.getTargetDBVendor(),
              jdbcParametersElement.getTargetDriverName(),
              "target");
          this.currentOidColumnName = configReaderTarget.getOidColumnName();
          this.currentVersionColumnName = configReaderTarget.getVersionColumnName();
        } else if (vecXmlElements.get(l).toString().equalsIgnoreCase("sql")) {
          configReaderTarget.readConfigValues(jdbcParametersElement.getTargetDBVendor(),
              jdbcParametersElement.getTargetDriverName(), "target");

          this.currentOidColumnName = configReaderTarget.getOidColumnName();
          this.currentVersionColumnName = configReaderTarget.getVersionColumnName();

          //this don't send enything to logger (importSQLStatement)
		    this.logger.write("full", "Importing and parsing XML file is started.");
          this.vecSqlStmt = sqlElement.importSQLStatement(inStream, iSql);
          //defining the log mode
//          if (!sqlElement.getSqlLogMode().equals("") && sqlElement.getSqlLogMode() != null)
            //this.logger.setEnabledLogLevels(sqlElement.getSqlLogMode());
//          else
//            this.logger.setEnabledLogLevels(loaderJobReader.getDefaultLogMode());

          //importing specific jdbc parameters if any exist
          this.logger.write("full", "Importing and parsing XML file is started.");
          jdbcParametersElement.parseImportJDBCParameters(inStream, iSql + 1, "sql");
        }
        if (vecXmlElements.get(l).toString().equalsIgnoreCase("importDefinition") ||
            vecXmlElements.get(l).toString().equalsIgnoreCase("sql") ||
            vecXmlElements.get(l).toString().equalsIgnoreCase("copyTable")) {

          if (jdbcParametersElement.getJDBCSourceParameterDriver().equals("") ||
              jdbcParametersElement.getJDBCSourceParameterDriver() == null)
            jdbcParametersElement.setJDBCSourceParameterDriver(configReaderSource.
                getDriverClassName());

          if (jdbcParametersElement.getJDBCTargetParameterDriver().equals("") ||
              jdbcParametersElement.getJDBCTargetParameterDriver() == null)
            jdbcParametersElement.setJDBCTargetParameterDriver(configReaderTarget.
                getDriverClassName());
        }
        this.logger.write("full", "Importing and parsing XML file is finished.");

        connManager.setLoaderJobPath(this.strLoaderJobFileName);
        connManager.setConnectionPrefix(configReaderTarget.getConnectionPrefix());
        connManager.setParsePermission(configReaderTarget.getFileSystemDatabase());
        
				try {
        	connToPools = connManager.getConnection(jdbcParametersElement.
                      getJDBCTargetParameterConnection());
          //TODO ZK 17.6 2004. This make problem with Excel jdbc-odbc.             
          connToPools.setAutoCommit(false);
        }catch (Exception ex) {
          String message = "Can't get connection to Target Database." + "\n" +
                           "Maybe connection "
                           + jdbcParametersElement.getJDBCTargetParameterConnection()
                           + " is wrong. ";
          LoaderException le = new LoaderException("SQLException: " + message + "\n" +
                               ex.getMessage() + "\n", (Throwable)ex);
					this.logger.write("full", le.getStackTraceAsString());
          throw le;
        }
        if (vecXmlElements.get(l).toString().equalsIgnoreCase("importDefinition")) {
          if (importDefinitionElement.bRestartAutoCreate == true) {
            dataTransmition.createRestartCounterTable(connToPools);
          }
          this.currentJobName = "importDefinition";
          String importName = importDefinitionElement.strImportDefinitionName;
          boolean doJob = true;
          for (int i = 0; i < this.includeTables.size(); i++) {
            if (importName.equalsIgnoreCase(this.includeTables.get(i).toString())) {
              doJob = true;
              break;
            } else {
              doJob = false;
            }
          }
          if (doJob) {
            try {
              this.loadSource(connToPools);
             
            }
            catch (Exception ex) {
              //this.logger.write("normal", "\t" + ex.getMessage().toString());
              LoaderException le = new LoaderException("SQLException: ", (Throwable)ex);
							this.logger.write("full", le.getStackTraceAsString());
              if (importDefinitionElement.strOnErrorContinueXml.equalsIgnoreCase("true")) {
                this.logger.write("normal",
                    "\tError : Application is not terminated because 'OnErrorContinue' attribute has value 'true'");
              } else {
                this.logger.write("normal",
                    "\tError : Application is terminated because 'OnErrorContinue' attribute has value 'false'");
                connManager.release("true");
                throw le;
              }
            } 
            //release resources
            finally {
	            for (int i = 0; i < pstmtForInsert.size(); i++) {
	              String key = pstmtKeys.get(i).toString();
	              PreparedStatement pstmt = (PreparedStatement)pstmtForInsert.get(key);
	              pstmt.close();
	            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -