Package de.xima.fc.filter.db
Class PluginEmManager
- java.lang.Object
-
- de.xima.fc.filter.db.PluginEmManager
-
- All Implemented Interfaces:
IPluginEmManager
public final class PluginEmManager extends Object implements IPluginEmManager
A manager for anEntityManagerthat can be used by a plugin of typeIPluginEntities. It is meant to be used within the backend of FORMCYCLE, ie for all FORMCYCLE urls that start with/uior/portal. It takes care of creating a new entity manager when required or reusing an old one. When you use this manager, theEntityManagerwill also be closed automatically once a HTTP requests finishes. Create an instance of this class by passing it theEntityManagerFactoryinstance you received fromIPluginEntitiesParams.getEntityManagerFactory().- Author:
- XIMA MEDIA GmbH
-
-
Constructor Summary
Constructors Constructor Description PluginEmManager(javax.persistence.EntityManagerFactory factory)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbeginTransaction()Begins a new transation, if no transaction is currently active.static voidcloseAll()voidcloseEntityManager()If theEntityManagerassociated with the current thread is open, close it.voidcommit()If a transaction is currently active, commits it.javax.persistence.EntityManagergetEntityManager()javax.persistence.EntityManagergetOrCreateEntityManager()booleanisEntityDetached(Object entity)Checks whether a given entity is currently detached, ie not managed by the entity manager.booleanisTransactionActive()de.xima.cmn.dao.interfaces.IBaseEntityContextnewEntityContext()This creates a newIBaseEntityContextyou can use to read or write plugin entities.voidrollback()If a transaction is currently active, performs a rollback of that transaction.static voidrollbackAll()
-
-
-
Method Detail
-
beginTransaction
public void beginTransaction()
Description copied from interface:IPluginEmManagerBegins a new transation, if no transaction is currently active. Creates a new entity manager if noEntityManageris associated with the current thread.- Specified by:
beginTransactionin interfaceIPluginEmManager
-
closeEntityManager
public void closeEntityManager()
Description copied from interface:IPluginEmManagerIf theEntityManagerassociated with the current thread is open, close it. Otherwise, does nothing.- Specified by:
closeEntityManagerin interfaceIPluginEmManager
-
commit
public void commit()
Description copied from interface:IPluginEmManagerIf a transaction is currently active, commits it. Otherwise, does nothing.- Specified by:
commitin interfaceIPluginEmManager
-
getEntityManager
public javax.persistence.EntityManager getEntityManager()
- Specified by:
getEntityManagerin interfaceIPluginEmManager- Returns:
- The
EntityManagerassociated with the current thread. If no entity manager exists yet, returnsnull.
-
getOrCreateEntityManager
public javax.persistence.EntityManager getOrCreateEntityManager()
- Specified by:
getOrCreateEntityManagerin interfaceIPluginEmManager- Returns:
- The
EntityManagerassociated with the current thread. If no entity manager exists yet, creates a new one.
-
isEntityDetached
public boolean isEntityDetached(Object entity)
Description copied from interface:IPluginEmManagerChecks whether a given entity is currently detached, ie not managed by the entity manager.- Specified by:
isEntityDetachedin interfaceIPluginEmManager- Parameters:
entity- An entity to check.- Returns:
- Whether the given entity is currently managed by the entity manager.
-
isTransactionActive
public boolean isTransactionActive()
- Specified by:
isTransactionActivein interfaceIPluginEmManager- Returns:
- Whether a transaction is currently active.
-
newEntityContext
public de.xima.cmn.dao.interfaces.IBaseEntityContext newEntityContext()
Description copied from interface:IPluginEmManagerThis creates a newIBaseEntityContextyou can use to read or write plugin entities. Make sure you always wrap this call in atry-with statementto ensure it is properly closed. This will take care of closing the underlyingEntityManagerat the appropriate time. Note that when you are within a backend context (eg a backend configuration menu or a portal page), the underlying entity manager is created only once for each HTTP request and reused during the request.You should use this method as follows:
try (final IBaseEntityContext ec = pluginEmManager.newEntityContext()) { // use entity context with some DAO // this fetches all existing MyEntity new AbstractDao<MyEntity, Long, IBaseEntityContext>(MyEntity.class) {}.all(null, new QueryCriteriaManager()); }- Specified by:
newEntityContextin interfaceIPluginEmManager- Returns:
- A new
IBaseEntityContextthat can be used with the DAO API of FORMCYCLE.
-
rollback
public void rollback()
Description copied from interface:IPluginEmManagerIf a transaction is currently active, performs a rollback of that transaction. Otherwise, does nothing.- Specified by:
rollbackin interfaceIPluginEmManager
-
closeAll
public static void closeAll()
-
rollbackAll
public static void rollbackAll()
-
-