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 Details

  • Constructor Details

  • Method Details

    • bindTechnical

      public static void bindTechnical​(TopiaEntity from, TopiaEntity dst)
      Bind les valeurs techniques depuis une entitée vers une autre.
      Parameters:
      from - l'entité source
      dst - l'entité destination
    • getExistingEntity

      public static <E extends TopiaEntity> E getExistingEntity​(TopiaDAO<E> dao, java.lang.String topiaId) throws TopiaException, java.lang.IllegalArgumentException
      Récupère une entité qui doit exister à partir de son id. Si l'entité n'existe pas, on déclanche une exception IllegalArgumentException.
      Type Parameters:
      E - le type de l'entité
      Parameters:
      dao - la dao pour récupérer la valeur
      topiaId - 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 son TopiaEntity.getTopiaId().
      Type Parameters:
      E - le type de l'entité
      Parameters:
      entities - la liste des entités à scanner
      topiaId - l'id de l'entité recherchée
      Returns:
      l'entité trouvée, ou null si 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.NullPointerException
      Teste 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'erreur
      bean - l'entité à tester
      Throws:
      java.lang.IllegalStateException - si l'entité n'a pas de topiaId
      java.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.IllegalStateException
      Teste 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'erreur
      bean - l'entité à tester
      Throws:
      java.lang.NullPointerException - si l'entité est nulle
      java.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.NullPointerException
      Create a new database from a sql dump locating in a gzip file.
      Parameters:
      dbDirectory - the directory where to create the db
      topiaContext - the topiaContext to use to create the databse
      resource - the url of the sql dump gzip file to use
      Throws:
      TopiaException - if any pb while creating db
      java.io.IOException - if any io exception
      java.lang.NullPointerException - if parameters are null
    • saveDB

      public static void saveDB​(java.io.File gzipFile, TopiaContext topiaContext) throws TopiaException, java.io.IOException, java.lang.NullPointerException
      Save the given database to a gzip file.
      Parameters:
      gzipFile - the file where to store db
      topiaContext - the topiaContext of the db to store
      Throws:
      TopiaException - if any pb while saving db
      java.lang.NullPointerException - if parameters are null
      java.io.IOException - if could not create gzipFile container directory
    • getTopiaIdComparator

      public static java.util.Comparator<TopiaEntity> getTopiaIdComparator()
      Obtain a new Comparator pour TopiaEntity based on the TopiaEntity.getTopiaId() method.
      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 filter
      filterClass - 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 connus
      classes - l'ensemble des classes a filter
      Returns:
      l'ensemble des contrats filtres
      Since:
      2.2.0
    • getContracts

      public static java.lang.Class<? extends TopiaEntity>[] getContracts​(TopiaEntityEnum[] contracts)
      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 TopiaException
      Collecte 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 connues
      entities - 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 TopiaException
      Collecte 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 connues
      types - l'ensemble des types acceptables
      entities - 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 TopiaException
      Collecte 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 connues
      types - l'ensemble des types acceptables
      entities - 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 TopiaException
      Collecte toutes les references d'un ensemble d'entites donnees par leur topiaId sur un ensemble d'entites donne.
      Parameters:
      contracts - les definitions d'entites connues
      expressions - l'ensemble des ids a detecter
      entities - 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 TopiaException
      Collecte toutes les references d'un ensemble d'entites donnees par leur topiaId sur un ensemble d'entites donne.
      Parameters:
      contracts - les definitions d'entites connues
      expressions - l'ensemble des ids a detecter
      entities - 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

      public static java.lang.String[] getTopiaIdArray​(java.util.List<? extends TopiaEntity> entities)
      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 filter
      topiaIds - 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 reference
      locale - 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 format X_Y where X est the table name smaller (in natural order on String). Example: from A and B, we get A_B.
      Parameters:
      table1 - the first table
      table2 - the second table
      Returns:
      the normalized association table name
      Since:
      2.6.12