Class TopiaEntityHelper
java.lang.Object
org.nuiton.topia.persistence.util.TopiaEntityHelper
public class TopiaEntityHelper
extends java.lang.Object
Une classe avec des méthodes utiles sur les entités.
- Author:
- tchemit <chemit@codelutin.com>
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringASSOCIATION_PATTERNLe pattern d'une reference sur une association -
Constructor Summary
Constructors Constructor Description TopiaEntityHelper() -
Method Summary
Modifier and Type Method Description protected static voidaddInterface(java.util.Set<java.lang.Class<? extends TopiaEntity>> interfaces, java.lang.Class<? extends TopiaEntity> klass)static voidbindTechnical(TopiaEntity from, TopiaEntity dst)Bind les valeurs techniques depuis une entitée vers une autre.static <E extends TopiaEntity>
DiffState.DiffStateMapbuildDifferentiel(java.util.List<E> referentiel, java.util.List<E> locale)Construit le dictionnaire des differences entre deux listes d'entites.static voidcheckNotNull(java.lang.String methodName, java.lang.String parameterName, java.lang.Object value)static <E extends TopiaEntity>
voidcheckNotNullAndExistingEntity(java.lang.String paramName, E bean)Teste si une entité possède un topiaId.static <E extends TopiaEntity>
voidcheckNotNullAndNoneExistingEntity(java.lang.String paramName, E bean)Teste si une entité ne possède pas un topiaId.static voidcheckParameters(java.lang.Class<?>[] paramsType, java.lang.Object... params)static voidcheckSize(int size, java.lang.Object[] params)static voidcheckType(java.lang.Class<?>[] paramsType, int index, java.lang.Object[] params)static voidcreateDBFromSQL(java.io.File dbDirectory, TopiaContext topiaContext, java.net.URI resource)Create a new database from a sql dump locating in a gzip file.static java.util.Map<java.lang.Class<? extends TopiaEntity>,java.util.List<TopiaEntity>>detectEntities(TopiaEntityEnum[] contracts, java.util.Set<java.lang.Class<? extends TopiaEntity>> types, TopiaEntity... entities)Collecte l'ensemble des entites (via un parcours en profondeur) avec un filtrage sur les types d'entites a retourner.static TopiaEntityIdsMapdetectEntityIds(TopiaEntityEnum[] contracts, java.util.Set<java.lang.Class<? extends TopiaEntity>> types, TopiaEntity... entities)Collecte l'ensemble des ids d'entites (via un parcours en profondeur) avec un filtrage sur les types d'entites a retourner.static java.util.SortedMap<TopiaEntity,java.util.List<TopiaEntityRef>>detectReferences(TopiaEntityEnum[] contracts, java.lang.String[] expressions, java.util.Collection<? extends TopiaEntity> entities)Collecte toutes les references d'un ensemble d'entites donnees par leur topiaId sur un ensemble d'entites donne.static java.util.SortedMap<TopiaEntity,java.util.List<TopiaEntityRef>>detectReferences(TopiaEntityEnum[] contracts, java.lang.String[] expressions, TopiaEntity entities)Collecte toutes les references d'un ensemble d'entites donnees par leur topiaId sur un ensemble d'entites donne.static java.util.Set<java.lang.Class<? extends TopiaEntity>>detectTypes(TopiaEntityEnum[] contracts, TopiaEntity... entities)Collecte l'ensemble des types d'entites (via un parcours en profondeur).static java.util.List<TopiaEntity>filter(java.util.Collection<TopiaEntity> entities, java.lang.Class<? extends TopiaEntity> filterClass)Filter a list of entities, and keep only the ones from a given type.static java.lang.Class<? extends TopiaEntity>getContractClass(TopiaEntityEnum[] contracts, java.lang.Class<? extends TopiaEntity> klass)static java.util.Set<java.lang.Class<? extends TopiaEntity>>getContractClasses(TopiaEntityEnum[] contracts, java.lang.Iterable<java.lang.Class<? extends TopiaEntity>> klasses)static java.lang.Class<? extends TopiaEntity>[]getContracts(TopiaEntityEnum[] contracts)Ontenir l'ensemble des contrats d'entites a partir des descriptions d'entites.static <E extends TopiaEntity>
java.util.List<E>getEntities(TopiaContextImplementor srcCtxt, java.util.List<E> entityList, boolean canBeNull)static TopiaEntity[]getEntities(TopiaContext srcCtxt, java.lang.String... entityList)static java.util.List<? extends TopiaEntity>getEntitiesList(TopiaContext srcCtxt, java.lang.String... entityList)static <E extends TopiaEntity>
EgetEntityByTopiaId(java.util.Collection<E> entities, java.lang.String topiaId)Récupère une entité dans une liste d'entités à partir de sonTopiaEntity.getTopiaId().static TopiaEntityEnumgetEntityEnum(java.lang.Class<? extends TopiaEntity> klass, TopiaEntityEnum... contracts)static <E extends TopiaEntity>
EgetExistingEntity(TopiaDAO<E> dao, java.lang.String topiaId)Récupère une entité qui doit exister à partir de son id.static java.util.Set<java.lang.Class<? extends TopiaEntity>>getInterfaces(java.lang.Class<? extends TopiaEntity> klass, java.util.Set<java.lang.Class<? extends TopiaEntity>> klassInterfaces)static java.lang.StringgetNormalizedAssociationTableName(java.lang.String table1, java.lang.String table2)Given two names (representing two types of entity), obtains the association table name in the formatX_Ywhere X est the table name smaller (in natural order onString).static java.lang.String[]getTopiaIdArray(java.util.List<? extends TopiaEntity> entities)Construit un tableau des topiaId d'une liste donnée d'entités.static java.util.Comparator<TopiaEntity>getTopiaIdComparator()static java.util.List<java.lang.String>getTopiaIdList(java.util.Collection<? extends TopiaEntity> entities)Construit la liste des topiaId d'une liste donnée d'entités.static java.util.Set<java.lang.Class<? extends TopiaEntity>>retainContracts(TopiaEntityEnum[] contracts, java.util.Set<java.lang.Class<? extends TopiaEntity>> classes)Filtre un ensemble de classes d'entites en ne conservant que les contrats des entites.static <E extends TopiaEntity>
java.util.List<E>retainEntities(java.util.List<E> list, java.util.List<java.lang.String> topiaIds)Construit une list d'entite dont les ids sont tous dans la liste d'ids donnee.static voidsaveDB(java.io.File gzipFile, TopiaContext topiaContext)Save the given database to a gzip file.
-
Field Details
-
ASSOCIATION_PATTERN
public static final java.lang.String ASSOCIATION_PATTERNLe pattern d'une reference sur une association- See Also:
- Constant Field Values
-
-
Constructor Details
-
TopiaEntityHelper
public TopiaEntityHelper()
-
-
Method Details
-
bindTechnical
Bind les valeurs techniques depuis une entitée vers une autre.- Parameters:
from- l'entité sourcedst- l'entité destination
-
getExistingEntity
public static <E extends TopiaEntity> E getExistingEntity(TopiaDAO<E> dao, java.lang.String topiaId) throws TopiaException, java.lang.IllegalArgumentExceptionRécupère une entité qui doit exister à partir de son id. Si l'entité n'existe pas, on déclanche une exceptionIllegalArgumentException.- Type Parameters:
E- le type de l'entité- Parameters:
dao- la dao pour récupérer la valeurtopiaId- l'id de l'entité recherchée- Returns:
- l'entité recherché
- Throws:
TopiaException- pour tout pb lors de la récupération de l'entitéjava.lang.IllegalArgumentException- si l'entité n'existe pas.
-
getEntityByTopiaId
public static <E extends TopiaEntity> E getEntityByTopiaId(java.util.Collection<E> entities, java.lang.String topiaId)Récupère une entité dans une liste d'entités à partir de sonTopiaEntity.getTopiaId().- Type Parameters:
E- le type de l'entité- Parameters:
entities- la liste des entités à scannertopiaId- l'id de l'entité recherchée- Returns:
- l'entité trouvée, ou
nullsi elle n'est pas trouvée.
-
checkNotNullAndExistingEntity
public static <E extends TopiaEntity> void checkNotNullAndExistingEntity(java.lang.String paramName, E bean) throws java.lang.IllegalStateException, java.lang.NullPointerExceptionTeste si une entité possède un topiaId.- Type Parameters:
E- le type de l'entité- Parameters:
paramName- le nom du paramètre à afficher en casd'erreurbean- l'entité à tester- Throws:
java.lang.IllegalStateException- si l'entité n'a pas de topiaIdjava.lang.NullPointerException- si l'entité est null
-
checkNotNullAndNoneExistingEntity
public static <E extends TopiaEntity> void checkNotNullAndNoneExistingEntity(java.lang.String paramName, E bean) throws java.lang.NullPointerException, java.lang.IllegalStateExceptionTeste si une entité ne possède pas un topiaId.- Type Parameters:
E- le type del'entité- Parameters:
paramName- le nom de paramètre à afficher en cas d'erreurbean- l'entité à tester- Throws:
java.lang.NullPointerException- si l'entité est nullejava.lang.IllegalStateException- si l'entité possède un topiaId.
-
createDBFromSQL
public static void createDBFromSQL(java.io.File dbDirectory, TopiaContext topiaContext, java.net.URI resource) throws java.io.IOException, TopiaException, java.lang.NullPointerExceptionCreate a new database from a sql dump locating in a gzip file.- Parameters:
dbDirectory- the directory where to create the dbtopiaContext- the topiaContext to use to create the databseresource- the url of the sql dump gzip file to use- Throws:
TopiaException- if any pb while creating dbjava.io.IOException- if any io exceptionjava.lang.NullPointerException- if parameters are null
-
saveDB
public static void saveDB(java.io.File gzipFile, TopiaContext topiaContext) throws TopiaException, java.io.IOException, java.lang.NullPointerExceptionSave the given database to a gzip file.- Parameters:
gzipFile- the file where to store dbtopiaContext- the topiaContext of the db to store- Throws:
TopiaException- if any pb while saving dbjava.lang.NullPointerException- if parameters are nulljava.io.IOException- if could not create gzipFile container directory
-
getTopiaIdComparator
- Returns:
- the new instanciated comparator
-
filter
public static java.util.List<TopiaEntity> filter(java.util.Collection<TopiaEntity> entities, java.lang.Class<? extends TopiaEntity> filterClass)Filter a list of entities, and keep only the ones from a given type.- Parameters:
entities- the list of entities to filterfilterClass- the type of entities to keep- Returns:
- the list of filtered entities for the given entity type in the list
- Since:
- 2.1.4
-
getContractClass
public static java.lang.Class<? extends TopiaEntity> getContractClass(TopiaEntityEnum[] contracts, java.lang.Class<? extends TopiaEntity> klass) -
getContractClasses
public static java.util.Set<java.lang.Class<? extends TopiaEntity>> getContractClasses(TopiaEntityEnum[] contracts, java.lang.Iterable<java.lang.Class<? extends TopiaEntity>> klasses) -
getEntityEnum
public static TopiaEntityEnum getEntityEnum(java.lang.Class<? extends TopiaEntity> klass, TopiaEntityEnum... contracts) -
retainContracts
public static java.util.Set<java.lang.Class<? extends TopiaEntity>> retainContracts(TopiaEntityEnum[] contracts, java.util.Set<java.lang.Class<? extends TopiaEntity>> classes)Filtre un ensemble de classes d'entites en ne conservant que les contrats des entites.- Parameters:
contracts- les contracts connusclasses- l'ensemble des classes a filter- Returns:
- l'ensemble des contrats filtres
- Since:
- 2.2.0
-
getContracts
Ontenir l'ensemble des contrats d'entites a partir des descriptions d'entites.- Parameters:
contracts- les contracts connus- Returns:
- l'ensemble des contrats d'entites
- Since:
- 2.2.0
-
detectTypes
public static java.util.Set<java.lang.Class<? extends TopiaEntity>> detectTypes(TopiaEntityEnum[] contracts, TopiaEntity... entities) throws TopiaExceptionCollecte l'ensemble des types d'entites (via un parcours en profondeur). On retourne toujours les contrats des entites et jamais les implantations.- Parameters:
contracts- les definitions d'entites connuesentities- les entites a parcourir- Returns:
- l'ensemble des types d'entites decouverts (uniquement les contrats des entites).
- Throws:
TopiaException- if a problem while visiting entities
-
detectEntities
public static java.util.Map<java.lang.Class<? extends TopiaEntity>,java.util.List<TopiaEntity>> detectEntities(TopiaEntityEnum[] contracts, java.util.Set<java.lang.Class<? extends TopiaEntity>> types, TopiaEntity... entities) throws TopiaExceptionCollecte l'ensemble des entites (via un parcours en profondeur) avec un filtrage sur les types d'entites a retourner. On retourne toujours les contrats des entites et jamais les implantations.- Parameters:
contracts- les definitions d'entites connuestypes- l'ensemble des types acceptablesentities- les entites a parcourir- Returns:
- l'ensemble des entites decouverts (on converse uniquement les entites dont le contract est dans l'ensemble voulu).
- Throws:
TopiaException- if a pb while visiting entities
-
detectEntityIds
public static TopiaEntityIdsMap detectEntityIds(TopiaEntityEnum[] contracts, java.util.Set<java.lang.Class<? extends TopiaEntity>> types, TopiaEntity... entities) throws TopiaExceptionCollecte l'ensemble des ids d'entites (via un parcours en profondeur) avec un filtrage sur les types d'entites a retourner. On retourne toujours les contrats des entites et jamais les implantations.- Parameters:
contracts- les definitions d'entites connuestypes- l'ensemble des types acceptablesentities- les entites a parcourir- Returns:
- l'ensemble des ids d'entites decouverts (on converse uniquement les entites dont le contract est dans l'ensemble voulu).
- Throws:
TopiaException- if a pb while visiting entities
-
detectReferences
public static java.util.SortedMap<TopiaEntity,java.util.List<TopiaEntityRef>> detectReferences(TopiaEntityEnum[] contracts, java.lang.String[] expressions, TopiaEntity entities) throws TopiaExceptionCollecte toutes les references d'un ensemble d'entites donnees par leur topiaId sur un ensemble d'entites donne.- Parameters:
contracts- les definitions d'entites connuesexpressions- l'ensemble des ids a detecterentities- les entites a parcourir- Returns:
- l'ensemble des references decouvertes.
- Throws:
TopiaException- if a pb while visiting entities- See Also:
TopiaEntityRef
-
detectReferences
public static java.util.SortedMap<TopiaEntity,java.util.List<TopiaEntityRef>> detectReferences(TopiaEntityEnum[] contracts, java.lang.String[] expressions, java.util.Collection<? extends TopiaEntity> entities) throws TopiaExceptionCollecte toutes les references d'un ensemble d'entites donnees par leur topiaId sur un ensemble d'entites donne.- Parameters:
contracts- les definitions d'entites connuesexpressions- l'ensemble des ids a detecterentities- les entites a parcourir- Returns:
- l'ensemble des references decouvertes.
- Throws:
TopiaException- if a pb while visiting entities- See Also:
TopiaEntityRef
-
getTopiaIdList
public static java.util.List<java.lang.String> getTopiaIdList(java.util.Collection<? extends TopiaEntity> entities)Construit la liste des topiaId d'une liste donnée d'entités.- Parameters:
entities- la liste des entités- Returns:
- la liste des topiaId
-
getTopiaIdArray
Construit un tableau des topiaId d'une liste donnée d'entités.- Parameters:
entities- la liste des entités- Returns:
- le tableau des topiaId
- Since:
- 2.5.2
-
retainEntities
public static <E extends TopiaEntity> java.util.List<E> retainEntities(java.util.List<E> list, java.util.List<java.lang.String> topiaIds)Construit une list d'entite dont les ids sont tous dans la liste d'ids donnee.- Type Parameters:
E- le type des entites de la liste- Parameters:
list- la liste a filtertopiaIds- la liste des ids a retenir- Returns:
- la nouvelle liste filtree
-
buildDifferentiel
public static <E extends TopiaEntity> DiffState.DiffStateMap buildDifferentiel(java.util.List<E> referentiel, java.util.List<E> locale)Construit le dictionnaire des differences entre deux listes d'entites.- Type Parameters:
E- le type des entites- Parameters:
referentiel- la liste considere comme referencelocale- la liste a mettre a jour- Returns:
- le dictionnaire des etats des entites ajoutees, modifiees ou obsoletes.
- Since:
- 2.2.0
- See Also:
DiffState
-
getInterfaces
public static java.util.Set<java.lang.Class<? extends TopiaEntity>> getInterfaces(java.lang.Class<? extends TopiaEntity> klass, java.util.Set<java.lang.Class<? extends TopiaEntity>> klassInterfaces) -
addInterface
protected static void addInterface(java.util.Set<java.lang.Class<? extends TopiaEntity>> interfaces, java.lang.Class<? extends TopiaEntity> klass) -
getEntities
public static <E extends TopiaEntity> java.util.List<E> getEntities(TopiaContextImplementor srcCtxt, java.util.List<E> entityList, boolean canBeNull) throws TopiaException- Throws:
TopiaException
-
getEntities
public static TopiaEntity[] getEntities(TopiaContext srcCtxt, java.lang.String... entityList) throws TopiaException- Throws:
TopiaException
-
getEntitiesList
public static java.util.List<? extends TopiaEntity> getEntitiesList(TopiaContext srcCtxt, java.lang.String... entityList) throws TopiaException- Throws:
TopiaException
-
checkNotNull
public static void checkNotNull(java.lang.String methodName, java.lang.String parameterName, java.lang.Object value) -
checkParameters
public static void checkParameters(java.lang.Class<?>[] paramsType, java.lang.Object... params) -
checkSize
public static void checkSize(int size, java.lang.Object[] params) -
checkType
public static void checkType(java.lang.Class<?>[] paramsType, int index, java.lang.Object[] params) -
getNormalizedAssociationTableName
public static java.lang.String getNormalizedAssociationTableName(java.lang.String table1, java.lang.String table2)Given two names (representing two types of entity), obtains the association table name in the formatX_Ywhere X est the table name smaller (in natural order onString). Example: fromAandB, we getA_B.- Parameters:
table1- the first tabletable2- the second table- Returns:
- the normalized association table name
- Since:
- 2.6.12
-