Class TopiaEntityHelper

java.lang.Object
org.nuiton.topia.persistence.util.TopiaEntityHelper

public class TopiaEntityHelper extends Object
Une classe avec des méthodes utiles sur les entités.
Author:
Tony Chemit - chemit@codelutin.com
  • Field Details

    • ASSOCIATION_PATTERN

      public static final String ASSOCIATION_PATTERN
      Le pattern d'une reference sur une association
      See Also:
  • Constructor Details

    • TopiaEntityHelper

      public TopiaEntityHelper()
  • 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, String topiaId) throws TopiaException, 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é
      IllegalArgumentException - si l'entité n'existe pas.
    • getEntityByTopiaId

      public static <E extends TopiaEntity> E getEntityByTopiaId(Collection<E> entities, 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.
    • getEntityByIndex

      public static <O> O getEntityByIndex(Collection<O> entities, int index) throws IndexOutOfBoundsException
      Get entity at index position in the collection is not null.
      Type Parameters:
      O - type of object
      Parameters:
      entities - collection of entities (can be null)
      index - position to get
      Returns:
      the entity at the given index, or null if entities are null
      Throws:
      IndexOutOfBoundsException - if index is out of bounds
      Since:
      3.0
    • checkNotNullAndExistingEntity

      public static <E extends TopiaEntity> void checkNotNullAndExistingEntity(String paramName, E bean) throws IllegalStateException, 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:
      IllegalStateException - si l'entité n'a pas de topiaId
      NullPointerException - si l'entité est null
    • checkNotNullAndNoneExistingEntity

      public static <E extends TopiaEntity> void checkNotNullAndNoneExistingEntity(String paramName, E bean) throws NullPointerException, 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:
      NullPointerException - si l'entité est nulle
      IllegalStateException - si l'entité possède un topiaId.
    • getTopiaIdComparator

      public static Comparator<TopiaEntity> getTopiaIdComparator()
      Obtain a new Comparator pour TopiaEntity based on the TopiaEntity.getTopiaId() method.
      Returns:
      the new instanciated comparator
    • filter

      public static List<TopiaEntity> filter(Collection<TopiaEntity> entities, 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 Class<? extends TopiaEntity> getContractClass(TopiaEntityEnum[] contracts, Class<? extends TopiaEntity> klass)
    • getContractClasses

      public static Set<Class<? extends TopiaEntity>> getContractClasses(TopiaEntityEnum[] contracts, Iterable<Class<? extends TopiaEntity>> klasses)
    • getEntityEnum

      public static TopiaEntityEnum getEntityEnum(Class<? extends TopiaEntity> klass, TopiaEntityEnum... contracts)
    • retainContracts

      public static Set<Class<? extends TopiaEntity>> retainContracts(TopiaEntityEnum[] contracts, Set<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 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 Set<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 Map<Class<? extends TopiaEntity>,List<TopiaEntity>> detectEntities(TopiaEntityEnum[] contracts, Set<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, Set<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 SortedMap<TopiaEntity,List<TopiaEntityRef>> detectReferences(TopiaEntityEnum[] contracts, 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:
    • detectReferences

      public static SortedMap<TopiaEntity,List<TopiaEntityRef>> detectReferences(TopiaEntityEnum[] contracts, String[] expressions, 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:
    • getTopiaIdList

      public static List<String> getTopiaIdList(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 String[] getTopiaIdArray(Collection<? 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> List<E> retainEntities(Collection<E> list, List<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(List<E> referentiel, 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:
    • getInterfaces

      public static Set<Class<? extends TopiaEntity>> getInterfaces(Class<? extends TopiaEntity> klass, Set<Class<? extends TopiaEntity>> klassInterfaces)
    • addInterface

      protected static void addInterface(Set<Class<? extends TopiaEntity>> interfaces, Class<? extends TopiaEntity> klass)
    • getEntities

      public static <E extends TopiaEntity> List<E> getEntities(TopiaPersistenceContext srcCtxt, List<E> entityList, boolean canBeNull) throws TopiaException
      Throws:
      TopiaException
    • getEntities

      public static TopiaEntity[] getEntities(TopiaPersistenceContext srcCtxt, String... entityList) throws TopiaException
      Throws:
      TopiaException
    • getEntitiesList

      public static List<? extends TopiaEntity> getEntitiesList(TopiaPersistenceContext srcCtxt, String... entityList) throws TopiaException
      Throws:
      TopiaException
    • checkNotNull

      public static void checkNotNull(String methodName, String parameterName, Object value)
    • checkParameters

      public static void checkParameters(Class<?>[] paramsType, Object... params)
    • checkSize

      public static void checkSize(int size, Object[] params)
    • checkType

      public static void checkType(Class<?>[] paramsType, int index, Object[] params)
    • getNormalizedAssociationTableName

      public static String getNormalizedAssociationTableName(String table1, 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