Package org.activiti.upgrade.data

Source Code of org.activiti.upgrade.data.UpgradeDataGenerator

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.upgrade.data;

import java.io.PrintWriter;
import java.sql.DriverManager;
import java.util.logging.Logger;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.db.DbSqlSession;
import org.activiti.engine.impl.interceptor.Command;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.interceptor.CommandExecutor;
import org.activiti.engine.impl.util.ClassNameUtil;
import org.activiti.engine.impl.util.LogUtil;
import org.activiti.upgrade.CleanPostgres;
import org.activiti.upgrade.ProxyDriver;
import org.activiti.upgrade.UpgradeUtil;

/**
* @author Tom Baeyens
* @author Joram Barrez
*/
public class UpgradeDataGenerator {
 
  static Logger log = Logger.getLogger(UpgradeDataGenerator.class.getName());
 
  public static void main(String[] args) {
   
    ProcessEngineConfigurationImpl processEngineConfiguration = null;
   
    try {

      LogUtil.readJavaUtilLoggingConfigFromClasspath();
     
      if (args==null || args.length!=2) {
        throw new RuntimeException("exactly 2 arguments expected: database and releaseVersion");
      }
     
      String database = args[0];
      String releaseVersion = args[1];
      log.fine("database: "+database);
      log.fine("releaseVersion: "+releaseVersion);
 
      processEngineConfiguration = UpgradeUtil.createProcessEngineConfiguration(database);

      // install the jdbc proxy driver
      log.fine("installing jdbc proxy driver delegating to "+processEngineConfiguration.getJdbcUrl());
      ProxyDriver.setUrl(processEngineConfiguration.getJdbcUrl());
      processEngineConfiguration.setJdbcUrl("proxy");
      DriverManager.registerDriver(new ProxyDriver());

      log.fine("building the process engine...");
      ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();

     
      log.fine("### Running data generator "+ClassNameUtil.getClassNameWithoutPackage(CommonDataGenerator.class)+" in the old version");
      CommonDataGenerator commonDataGenerator = new CommonDataGenerator();
      commonDataGenerator.setProcessEngine(processEngine);
      commonDataGenerator.run();
     
      // < 5.11 upgrade tests (ie the following data only needs to be generated when the engine is lower then or equals 5.10)
      if (UpgradeUtil.getProcessEngineVersion(processEngine) < 11) {
        Activiti_5_10_DataGenerator activiti_5_10_DataGenerator = new Activiti_5_10_DataGenerator();
        activiti_5_10_DataGenerator.setProcessEngine(processEngine);
        activiti_5_10_DataGenerator.run();
      }

      log.fine("### Captured SQL");
      PrintWriter file = new PrintWriter("src/test/resources/org/activiti/db/"+releaseVersion+"/data/"+database+".data.sql");
      System.err.println();
      System.err.println();
      for (String statement: ProxyDriver.statements) {
        System.err.println(statement);
        System.err.println();
        file.println(statement);
        file.println();
      }
      file.close();
     
    } catch (Exception e) {
      e.printStackTrace();
    }
   
    dbSchemaDrop(processEngineConfiguration);
  }

  private static void dbSchemaDrop(ProcessEngineConfigurationImpl processEngineConfiguration) {
    if (processEngineConfiguration.getDatabaseType().equals("postgres")) {
     
      CleanPostgres cleanPostgres = new CleanPostgres();
      cleanPostgres.execute();
     
    } else {
   
      CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutorTxRequired();
      commandExecutor.execute(new Command<Object> (){
        public Object execute(CommandContext commandContext) {
          commandContext
            .getSession(DbSqlSession.class)
            .dbSchemaDrop();
          return null;
        }
      });
     
    }
  }
}
TOP

Related Classes of org.activiti.upgrade.data.UpgradeDataGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.