Package org.uengine.processdesigner.inputters

Source Code of org.uengine.processdesigner.inputters.ProcessVariableInput

package org.uengine.processdesigner.inputters;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import org.metaworks.Instance;
import org.metaworks.inputter.DateInput;
import org.metaworks.inputter.InstanceSensitiveInputter;
import org.metaworks.inputter.TextInput;
import org.uengine.kernel.Activity;
import org.uengine.kernel.ActivityDueDatePointingProcessVariable;
import org.uengine.kernel.HumanActivity;
import org.uengine.kernel.InstanceDueDatePointingProcessVariable;
import org.uengine.kernel.InstanceNamePointingProcessVariable;
import org.uengine.kernel.InstancePropertyPointingProcessVariable;
import org.uengine.kernel.ProcessDefinition;
import org.uengine.kernel.ProcessVariable;
import org.uengine.kernel.Role;
import org.uengine.kernel.RolePointingProcessVariable;
import org.uengine.processdesigner.*;
import org.uengine.ui.ObjectLifeCycleListener;
import org.uengine.util.ActivityFor;

/**
* @author Jinyoung Jang
*/

public class ProcessVariableInput extends org.metaworks.inputter.SelectInput implements ObjectLifeCycleListener, InstanceSensitiveInputter{

  PropertyChangeListener processDefinitionListener;

 
  public ProcessVariableInput(){
    super(null);
  }
 
  public void setProcessDefinition(ProcessDefinition def){
    try{
      final ProcessDefinition finalDef = def;
     
      processDefinitionListener = new PropertyChangeListener(){
        public void propertyChange(PropertyChangeEvent evt) {
          if(evt.getPropertyName().equalsIgnoreCase("processVariables")){
            refreshVariableSelector(finalDef);
          }
          if(evt.getPropertyName().equalsIgnoreCase("roles")){
            refreshVariableSelector(finalDef);
          }
        }
      };
   
      def.addProperyChangeListener(processDefinitionListener);
     
    }catch(Exception e){
    }
   
    refreshVariableSelector(def);
  }
 
  public void refreshVariableSelector(ProcessDefinition def){
    ProcessVariable[] pvds = (def != null ? def.getProcessVariables() : new ProcessVariable[]{});
    Role[] roles = (def != null ? def.getRoles() : new Role[]{});
   
//    System.out.println("ProcessVariableInput.length of pvds: " + pvds.length);
   
    final ArrayList variables = new ArrayList();
   
    if(pvds!=null)
    for(int i=0; i<pvds.length; i++){
//      if(filter!=null && filter.indexOf(pvds[i].getType().getName()) > -1)
      variables.add(pvds[i]);
    }
   
    if(roles!=null)
    for(int i=0; i<roles.length; i++){
      RolePointingProcessVariable rolePV = new RolePointingProcessVariable();
      rolePV.setRole(roles[i]);
      variables.add(rolePV);
    }


    variables.add(new InstancePropertyPointingProcessVariable("InstanceId"));
    variables.add(new InstanceNamePointingProcessVariable());
    variables.add(new InstanceDueDatePointingProcessVariable());


    ActivityFor forLoopForAddingCommandVariables = new ActivityFor(){

      public void logic(Activity activity) {
        if (!(activity instanceof HumanActivity)) return;
       
        ProcessVariable commandVariable = new ProcessVariable();
        final HumanActivity finalActivity = (HumanActivity)activity;
       
        variables.add(new ActivityDueDatePointingProcessVariable(finalActivity));
      }
     
    };
    forLoopForAddingCommandVariables.run(def);

    String[] selections = new String[variables.size() + 1];
    selections[0] = "";
    Object[] values = new Object[variables.size() + 1];
    values[0] = null;

    if(values.length > 1)
    for(int i=1; i<variables.size() + 1; i++){
      selections[i] = variables.get(i-1).toString();
      values[i] = variables.get(i-1);
    }
   
    setSelections(selections);
    setValues(values);
  }
 
  public void setFilter(String filter){
    this.filter = filter;
   
    refreshVariableSelector((ProcessDefinition)ProcessDesigner.getInstance().getProcessDefinitionDesigner().getActivity());
   
  }
  String filter = null;
 

  public void onDestroy() {
    try{
      final ProcessDefinition def = (ProcessDefinition)ProcessDesigner.getInstance().getProcessDefinitionDesigner().getActivity();
      def.removeProperyChangeListener(processDefinitionListener);
    }catch(Exception e){
    }   
  }

  public void onInitialize() {
  }

  public void setInstance(Instance rec, String fieldName) {
    if (rec instanceof ActivityRecord) {

      ActivityRecord actRec = (ActivityRecord) rec;
      setProcessDefinition(actRec.getActivity().getProcessDefinition());
    }
  }

}
TOP

Related Classes of org.uengine.processdesigner.inputters.ProcessVariableInput

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.