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.PackageFullDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessFullDefinition;
import org.ow2.bonita.facade.def.majorElement.impl.PackageFullDefinitionImpl;
import org.ow2.bonita.facade.runtime.ProcessFullInstance;
import org.ow2.bonita.facade.runtime.impl.ProcessFullInstanceImpl;
import org.ow2.bonita.services.Archiver;
import org.ow2.bonita.services.Querier;
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 PackageFullDefinition packageDef) {
    Misc.checkArgsNotNull(packageDef);
    //if (getPersistenceService().getPackage(packageDef.getPackageDefinitionUUID()) == null) {
    if (getPackage(packageDef.getPackageDefinitionUUID()) == null) {
      final PackageFullDefinition pack = new PackageFullDefinitionImpl(packageDef);
      this.buffer.addPackage(pack);
      getQuerierDbSession().save(pack);
    } else {
      throw new IllegalArgumentException(" Can't archive: " + packageDef
          + " --- A record with processDefinitionUUID: "
          + packageDef + " has already been archived ");
    }
  }

  public void archive(final ProcessFullInstance processInst) {
    Misc.checkArgsNotNull(processInst);
    if (getProcessInstance(processInst.getUUID()) == null) {
      final ProcessFullInstance instance = new ProcessFullInstanceImpl(processInst);
      this.buffer.addInstance(instance);
      getQuerierDbSession().save(instance);
    } else {
      throw new IllegalArgumentException(" Can't archive: " + processInst
          + " --- A record with processInstanceUUID: "
          + processInst + " has already been archived ");
    }
  }

  public void remove(final PackageFullDefinition package1) {
    Misc.checkArgsNotNull(package1);
    this.buffer.removePackage(package1);
    getQuerierDbSession().delete(package1);
  }

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

  public void clear() {
    final Set packages = getQuerierDbSession().getPackages();
    for (final PackageFullDefinition pack : packages) {
      this.buffer.removePackage(pack);
      getQuerierDbSession().delete(pack);
    }
    final Set processes = getQuerierDbSession().getProcesses();
    Set processInstances;
    for (final ProcessFullDefinition process : processes) {
      processInstances = getQuerierDbSession().getProcessInstances(process.getProcessDefinitionUUID());
      for (final ProcessFullInstance processInstance : processInstances) {
        this.buffer.removeInstance(processInstance);
        getQuerierDbSession().delete(processInstance);
      }
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy