aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java95
1 files changed, 80 insertions, 15 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java
index cde34acd1..4b7468013 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAOImpl.java
@@ -1,10 +1,18 @@
package at.gv.egovernment.moa.id.process.dao;
+import java.util.Collections;
import java.util.List;
+import org.hibernate.Criteria;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+
/**
* Database backed implementation of the {@link ProcessInstanceStoreDAO}
* interface.
@@ -20,32 +28,89 @@ public class ProcessInstanceStoreDAOImpl implements ProcessInstanceStoreDAO {
}
@Override
- public void save(ProcessInstanceStore pIStore) {
- // TODO Auto-generated method stub
+ public void save(ProcessInstanceStore pIStore) throws MOADatabaseException {
+ try {
+ MOASessionDBUtils.saveOrUpdate(pIStore);
+ log.debug("Store process instance with='{}' in the database.", pIStore.getProcessInstanceId());
+ } catch (MOADatabaseException e) {
+ log.warn("ProcessInstanceStore could not be persisted to the database.");
+ throw e;
+ }
}
@Override
- public ProcessInstanceStore load(String processInstanceID) {
- // TODO Auto-generated method stub
- return null;
- }
+ public ProcessInstanceStore load(String processInstanceId) throws MOADatabaseException {
- @Override
- public void remove(String processInstanceId) {
- // TODO Auto-generated method stub
+ log.debug("Retrieve the ProcessInstanceStore for id='{}' from the database.", processInstanceId);
+ Session session = MOASessionDBUtils.getCurrentSession();
+
+ ProcessInstanceStore result = null;
+ Transaction tx = null;
+ synchronized (session) {
+ try {
+
+ tx = session.beginTransaction();
+ // select all where processInstanceId equals processInstanceId
+ Criteria criteria = session.createCriteria(ProcessInstanceStore.class);
+ criteria.add(Restrictions.eq("processInstanceId", processInstanceId));
+ result = (ProcessInstanceStore) criteria.uniqueResult();
+ tx.commit();
+ } catch (Exception e) {
+ log.error("There are multiple persisted processes with the same process instance id '{}'",
+ processInstanceId);
+ if (tx != null) {
+ tx.rollback();
+ }
+ throw e;
+ } finally {
+ MOASessionDBUtils.closeSession();
+ }
+ }
+ return result;
}
@Override
- public List<ProcessInstanceStore> getAllProcessInstanceStores() {
- // TODO Auto-generated method stub
- return null;
+ public void remove(String processInstanceId) throws MOADatabaseException {
+
+ log.debug("Delete the ProcessInstanceStore for id='{}' from the database.", processInstanceId);
+
+ ProcessInstanceStore toBeDeleted = load(processInstanceId);
+ boolean deleted = MOASessionDBUtils.delete(toBeDeleted);
+ if (!deleted) {
+ log.warn("Could not delete the ProcessInstanceStore with process instance id '{}'", processInstanceId);
+ throw new MOADatabaseException("Could not delete the ProcessInstanceStore with process instance id '"
+ + processInstanceId + "'.");
+ }
}
+ @SuppressWarnings("unchecked")
@Override
- public ProcessInstanceStore getProcessInstance(String processInstanceId) {
- // TODO Auto-generated method stub
- return null;
+ public List<ProcessInstanceStore> getAllProcessInstanceStores() throws MOADatabaseException {
+ log.debug("Retrieve a list with all ProcessInstanceStores from the database.");
+ Session session = MOASessionDBUtils.getCurrentSession();
+
+ List<ProcessInstanceStore> result = Collections.emptyList();
+ Transaction tx = null;
+ synchronized (session) {
+ try {
+
+ tx = session.beginTransaction();
+ // select all
+ result = session.createCriteria(ProcessInstanceStore.class).list();
+ tx.commit();
+
+ } catch (Exception e) {
+ log.error("A problem occured while retrieving all stored ProcessInstanceStores.");
+ if (tx != null) {
+ tx.rollback();
+ }
+ throw e;
+ } finally {
+ MOASessionDBUtils.closeSession();
+ }
+ }
+ return result;
}
}