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

org.ow2.bonita.persistence.db.DbHistory Maven / Gradle / Ivy

package org.ow2.bonita.persistence.db;

import java.util.Set;

import org.ow2.bonita.facade.def.majorElement.ProcessDefinition;
import org.ow2.bonita.facade.def.majorElement.impl.ProcessDefinitionImpl;
import org.ow2.bonita.facade.runtime.ProcessInstance;
import org.ow2.bonita.facade.runtime.impl.ProcessInstanceImpl;
import org.ow2.bonita.services.Archiver;
import org.ow2.bonita.services.Querier;
import org.ow2.bonita.util.ExceptionManager;
import org.ow2.bonita.util.Misc;

/**
 *
 * @author Thomas Gueze
 *
 */
public class DbHistory extends AbstractDbQuerier implements Archiver, Querier {

  public DbHistory(final String name) {
    super(name, new DbQuerierBufferImpl());
  }

  public void archive(final ProcessDefinition process) {
    Misc.checkArgsNotNull(process);
    if (getProcess(process.getUUID()) == null) {
      final ProcessDefinitionImpl proc = new ProcessDefinitionImpl(process);
      this.buffer.addProcess(proc);
      getQuerierDbSession().save(proc);
    } else {
    	String message = ExceptionManager.getInstance().getFullMessage(
    			"bsi_DH_1", process);
      throw new IllegalArgumentException(message);
    }
  }

  public void archive(final ProcessInstance processInst) {
    Misc.checkArgsNotNull(processInst);
    if (getProcessInstance(processInst.getUUID()) == null) {
      final ProcessInstance instance = new ProcessInstanceImpl(processInst);
      this.buffer.addInstance(instance);
      getQuerierDbSession().save(instance);
    } else {
    	String message = ExceptionManager.getInstance().getFullMessage(
    			"bsi_DH_2", processInst);
      throw new IllegalArgumentException(message);
    }
  }

  public void remove(final ProcessDefinition process) {
    Misc.checkArgsNotNull(process);
    this.buffer.removeProcess(process);
    getQuerierDbSession().delete(process);
  }

  public void remove(final ProcessInstance processInst) {
    Misc.checkArgsNotNull(processInst);
    this.buffer.removeInstance(processInst);
    getQuerierDbSession().delete(processInst);
  }

  public void clear() {
    final Set processes = getQuerierDbSession().getProcesses();
    Set processInstances;
    for (final ProcessDefinition processDef : processes) {
    	processInstances = getQuerierDbSession().getProcessInstances(processDef.getUUID());
        for (final ProcessInstance processInstance : processInstances) {
          this.buffer.removeInstance(processInstance);
          getQuerierDbSession().delete(processInstance);
        }
      this.buffer.removeProcess(processDef);
      getQuerierDbSession().delete(processDef);
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy