Package org.uengine.processdesigner.mapper.transformers

Source Code of org.uengine.processdesigner.mapper.transformers.SequenceGeneratorTransformer

package org.uengine.processdesigner.mapper.transformers;

import java.awt.Container;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JRootPane;

import org.metaworks.FieldDescriptor;
import org.metaworks.Type;
import org.metaworks.inputter.SelectInput;
import org.metaworks.inputter.TextInput;
import org.uengine.kernel.ProcessInstance;
import org.uengine.persistence.dao.DAOFactory;
import org.uengine.persistence.dao.KeyGeneratorDAO;
import org.uengine.processdesigner.mapper.Transformer;
import org.uengine.processdesigner.mapper.TransformerDesigner;

import com.webdeninteractive.xbotts.Mapping.maptool.MapToolDataModel;

/**
* MySql 에서는 sequence.nextVal 을 사용하지 못한다. 때문에 select (max(columnName) + 1) from
* tableName; 의 형식으로 해야 할듯 한데
*
* 문제는 테이블명을 과 컬럼 명을 받아와야 한다는 것이고, 장점은 프라이머리 키가 아닌 컬럼에도 적용이 가능하다는 것이다.
*
* @author erim
*
*/
public class SequenceGeneratorTransformer extends Transformer {

  String sequence;

  public SequenceGeneratorTransformer() {
    setName("Sequence");
  }


  public static void metaworksCallback_changeMetadata(Type type) {

    FieldDescriptor fdSequence = type.getFieldDescriptor("Sequence");
    fdSequence.setInputter(new SelectInput(
        new Object[] {"BPM_ACLTABLE", "BPM_PROCDEF", "BPM_PROCDEFVER", "BPM_PROCINST", "BPM_PROCVAR", "BPM_ROLEMAPPING", "BPM_WORKITEM"},
        new Object[] {"ACLTABLE", "PROCDEF", "PROCDEFVER", "PROCINST", "PROCVAR", "ROLEMAPPING", "WORKITEM"})
    );
   
    FieldDescriptor fdType = type.getFieldDescriptor("sequence");
    fdType.setInputter(new TextInput());
  }


  public String getSequence() {
    return sequence;
  }


  public void setSequence(String sequence) {
    this.sequence = sequence;
  }

  @Override
  public Object transform(ProcessInstance instance, Map parameterMap, Map options) {
    Object result = null;
    try {
      DAOFactory df = DAOFactory.getInstance(instance.getProcessTransactionContext());

      KeyGeneratorDAO kgd = df.createKeyGenerator(getSequence(), new HashMap());
      kgd.select();
      kgd.next();
      result = kgd.getKeyNumber();
     
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    return result;
  }


  @Override
  public String[] getInputArguments() {
    return new String[] {};
  }


}
TOP

Related Classes of org.uengine.processdesigner.mapper.transformers.SequenceGeneratorTransformer

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.