
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