All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ow2.bonita.light.impl.LightProcessInstanceImpl Maven / Gradle / Ivy

/**
 * Copyright (C) 2009  BonitaSoft S.A.
 * BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation
 * version 2.1 of the License.
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General Public License along with this
 * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 * Floor, Boston, MA  02110-1301, USA.
 **/
package org.ow2.bonita.light.impl;

import java.util.Date;

import org.ow2.bonita.facade.runtime.InstanceState;
import org.ow2.bonita.facade.runtime.ProcessInstance;
import org.ow2.bonita.facade.runtime.impl.RuntimeRecordImpl;
import org.ow2.bonita.facade.uuid.ActivityInstanceUUID;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessInstanceUUID;
import org.ow2.bonita.light.LightProcessInstance;
import org.ow2.bonita.util.Misc;

/**
 * @author Pierre Vigneras, Charles Souillard
 */
public class LightProcessInstanceImpl extends RuntimeRecordImpl implements LightProcessInstance {

  private static final long serialVersionUID = 8366284714927360659L;
  protected ProcessInstanceUUID parentInstanceUUID;
  protected ActivityInstanceUUID parentActivityUUID;
  protected long nb;
  protected long lastUpdate;
  protected InstanceState state;
  protected String endedBy;
  protected long endedDate;
  protected String startedBy;
  protected long startedDate;
  protected boolean isArchived;

  protected LightProcessInstanceImpl() { }

  public LightProcessInstanceImpl(ProcessDefinitionUUID processUUID, ProcessInstanceUUID instanceUUID, ProcessInstanceUUID rootInstanceUUID, long instanceNb) {
    super(processUUID, instanceUUID, rootInstanceUUID);
    this.nb = instanceNb;
    this.state = InstanceState.STARTED;
    this.lastUpdate = System.currentTimeMillis();
    this.isArchived = false;
  }

  public LightProcessInstanceImpl(final ProcessInstance processInstance) {
    super(processInstance);
    if (processInstance.getParentInstanceUUID() != null) {
      this.parentInstanceUUID = new ProcessInstanceUUID(processInstance.getParentInstanceUUID());
    }
    if (processInstance.getParentActivityUUID() != null) {
      this.parentActivityUUID = new ActivityInstanceUUID(processInstance.getParentActivityUUID());
    }

    this.nb = processInstance.getNb();
    this.lastUpdate = Misc.getTime(processInstance.getLastUpdate());
    this.state = processInstance.getInstanceState();
    this.endedBy = processInstance.getEndedBy();
    this.endedDate = Misc.getTime(processInstance.getEndedDate());
    this.startedBy = processInstance.getStartedBy();
    this.startedDate = Misc.getTime(processInstance.getStartedDate());

    this.isArchived = processInstance.isArchived();
  }

  @Override
  public boolean equals(final Object obj) {
    if (obj == null) {
      return false;
    }
    if (!(obj.getClass().equals(this.getClass()))) {
      return false;
    }
    final LightProcessInstanceImpl other = (LightProcessInstanceImpl) obj;
    if (other.getUUID() == null) {
      return getUUID() == null;
    }
    return other.getUUID().equals(getUUID());
  }

  @Override
  public int hashCode() {
    return getUUID().hashCode();
  }

  public String getEndedBy() {
    return this.endedBy;
  }

  public Date getEndedDate() {
    return Misc.getDate(this.endedDate);
  }

  public String getStartedBy() {
    return this.startedBy;
  }

  public Date getStartedDate() {
    return Misc.getDate(this.startedDate);
  }

  public InstanceState getInstanceState() {
    return this.state;
  }

  public ProcessInstanceUUID getParentInstanceUUID() {
    return this.parentInstanceUUID;
  }

  public ActivityInstanceUUID getParentActivityUUID() {
    return this.parentActivityUUID;
  }

  public ProcessInstanceUUID getUUID() {
    return getProcessInstanceUUID();
  }

  public Date getLastUpdate() {
    return Misc.getDate(lastUpdate);
  }

  public long getNb() {
    return this.nb;
  }

  public ProcessInstanceUUID getRootInstanceUUID() {
    return rootInstanceUUID;
  }


  public boolean isArchived() {
    return isArchived;
  }

  @Override
  public String toString() {
    return this.getClass().getName()
    + "[uuid: " + getUUID()
    + ", processDefinitionUUID: " + getProcessDefinitionUUID()
    + ", processUUID: " + getProcessInstanceUUID()
    + ", parentInstanceUUID: " + getParentInstanceUUID()
    + ", parentActivityUUID: " + getParentActivityUUID()
    + ", startedBy: " + getStartedBy()
    + ", endedBy: " + getEndedBy()
    + ", startedDate: " + getStartedDate()
    + ", endedDate: " + getEndedDate()
    + ", rootInstanceUUID: " + getRootInstanceUUID()
    + ", archived:" + isArchived
    + "]";
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy