diff options
| author | Thomas Knall <t.knall@datentechnik-innovation.com> | 2015-01-30 13:53:59 +0100 | 
|---|---|---|
| committer | Thomas Knall <t.knall@datentechnik-innovation.com> | 2015-01-30 13:53:59 +0100 | 
| commit | e873da6795c75e37cd3b3e2cd0c41831157ffe32 (patch) | |
| tree | 0c1ade8dfd9f2c19375719aece514535f081a431 /id/server/idserverlib | |
| parent | 9c76562c98ff7ec8ccb2749ccd85309bfd3096b6 (diff) | |
| parent | 78a3caea21bdd5475007b958d59b23b1d3deccfb (diff) | |
| download | moa-id-spss-e873da6795c75e37cd3b3e2cd0c41831157ffe32.tar.gz moa-id-spss-e873da6795c75e37cd3b3e2cd0c41831157ffe32.tar.bz2 moa-id-spss-e873da6795c75e37cd3b3e2cd0c41831157ffe32.zip | |
Merge branch 'MOAID-62'
Diffstat (limited to 'id/server/idserverlib')
3 files changed, 99 insertions, 34 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java index a67badf49..0dfd2236f 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProvider.java @@ -110,10 +110,10 @@ import at.gv.egovernment.moa.id.config.auth.data.ProtocolAllowed;  import at.gv.egovernment.moa.id.config.legacy.BuildFromLegacyConfig;  import at.gv.egovernment.moa.id.config.stork.STORKConfig;  import at.gv.egovernment.moa.id.data.IssuerAndSerial; +import at.gv.egovernment.moa.id.process.dao.ProcessInstanceStore;  import at.gv.egovernment.moa.id.protocols.pvp2x.config.MOADefaultBootstrap;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.MiscUtil; -import at.gv.util.config.EgovUtilConfiguration;  import at.gv.util.config.EgovUtilPropertiesConfiguration;  /** @@ -344,6 +344,7 @@ public class AuthConfigurationProvider extends ConfigurationProvider {  				config.addAnnotatedClass(OldSSOSessionIDStore.class);  				config.addAnnotatedClass(ExceptionStore.class);  				config.addAnnotatedClass(InterfederationSessionStore.class); +				config.addAnnotatedClass(ProcessInstanceStore.class);  				config.addProperties(moaSessionProp);  				MOASessionDBUtils.initHibernate(config, moaSessionProp); diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAO.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAO.java index 57489c33e..0aa6f80cd 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAO.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/process/dao/ProcessInstanceStoreDAO.java @@ -2,6 +2,7 @@ package at.gv.egovernment.moa.id.process.dao;  import java.util.List; +import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;  import at.gv.egovernment.moa.id.process.ProcessInstance;  public interface ProcessInstanceStoreDAO { @@ -12,18 +13,23 @@ public interface ProcessInstanceStoreDAO {  	 *   	 * @param pIStore  	 *            the {@link ProcessInstanceStore} to persist. +	 * @throws MOADatabaseException +	 *             is thrown if a problem occurs while accessing the database.  	 */ -	void save(ProcessInstanceStore pIStore); +	void save(ProcessInstanceStore pIStore) throws MOADatabaseException;  	/** -	 * Loads a {@link ProcessInstanceStore}, defined by -	 * {@code processInstanceID} from the database. +	 * Returns a {@link ProcessInstanceStore}, defined by +	 * {@code processInstanceID} from the database, or {@code null} if the +	 * object could not be found.  	 *   	 * @param processInstanceID  	 *            the id of the {@code ProcessInstanceStore} to retrieve. -	 * @return a ProcessInstanceStore. +	 * @return a ProcessInstanceStore, or {@code null}. +	 * @throws MOADatabaseException +	 *             is thrown if a problem occurs while accessing the database.  	 */ -	ProcessInstanceStore load(String processInstanceId); +	ProcessInstanceStore load(String processInstanceId) throws MOADatabaseException;  	/**  	 * Deletes the {@link ProcessInstance} corresponding with the @@ -31,26 +37,19 @@ public interface ProcessInstanceStoreDAO {  	 *   	 * @param processInstanceID  	 *            the id of the {@code ProcessInstance} to be deleted. +	 * @throws MOADatabaseException +	 *             is thrown if a problem occurs while accessing the database.  	 */ -	void remove(String processInstanceId); +	void remove(String processInstanceId) throws MOADatabaseException;  	/**  	 * Returns all {@link ProcessInstanceStore} objects stored in the database.  	 * The returned list may be empty, but never {@code null}.  	 *   	 * @return a list of {@link ProcessInstanceStore} (never {@code null}). +	 * @throws MOADatabaseException +	 *             is thrown if a problem occurs while accessing the database.  	 */ -	List<ProcessInstanceStore> getAllProcessInstanceStores(); - -	/** -	 * Returns the specific {@link ProcessInstanceStore} object corresponding to -	 * the given {@code processInstanceId}, or {@code null} if the object could -	 * not be found. -	 *  -	 * @param processInstanceId -	 *            the processInstanceId to search. -	 * @return the ProcessInstanceStore for the given id, or {@code null}. -	 */ -	ProcessInstanceStore getProcessInstance(String processInstanceId); +	List<ProcessInstanceStore> getAllProcessInstanceStores() throws MOADatabaseException;  } 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;  	}  } | 
