Vous connaissez les classes outils de Java (Collection, Comparator, Predicate, Transformer) ? Eh bien, ayez le réflexe Utils!

Pour enrichir et rendre toujours plus génériques et extensibles vos traitements, de nombreuses interfaces/classes outils de Java (Collection, Comparator, Predicate, Transformer...) possèdent une API complémentaire qui se termine en -Utils. Un simple CTRL+SHIFT+T "*Utils" dans mon IDE Eclipse les fait ressortir.
J'y retrouve les classes suivantes, avec un bref aperçu de leurs méthodes.

BooleanUtils (org.apache.commons.lang)

  • static Boolean negate(Boolean bool) : renvoie le complémentaire du booléen
  • static Boolean xor(Boolean array) : calcule un "XOR" sur un tableau de booléens

CollectionUtils (org.apache.commons.collections)

  • static boolean exists(java.util.Collection collection, Predicate predicate) : indique si au moins un élément de la collection vérifie le prédicat.
  • static void filter(java.util.Collection collection, Predicate predicate) : retire tous les éléments de la collection qui ne vérifient pas le prédicat.
  • static java.lang.Object find(java.util.Collection collection, Predicate predicate) : récupère le premier élément de la collection qui vérifie le prédicat.
  • java.util.Collection select(java.util.Collection inputCollection, Predicate predicate) : récupère tous les éléments de la collection qui vérifient le prédicat.
  • static void transform(java.util.Collection collection, Transformer transformer) : transforme tous les éléments de la collection.

ComparatorUtils (org.apache.commons.collections)

  • static java.util.Comparator chainedComparator(java.util.Collection comparators) : crée un comparateur global construit en chainant les comparateurs passés en paramètre
  • static java.util.Comparator chainedComparator(java.util.Collection comparators) : crée le comparateur inverse.

ConverterUtils(org.apache.commons.beanutils)

  • static String convert(Object value) : convertit un objet en String
  • static Object convert(String value, Class clazz) : convertit un objet dans le type spécifié.

DateFormatUtils (org.apache.commons.lang.time)

  • static String format(Date date, String pattern) : formatte simplement une date en String à partir d'un pattern.

DateUtils (org.apache.commons.lang.time)

  • static Calendar truncate(Calendar date, int field) : permet de tronquer une date en indiquant le champ (Calendar) le plus signifiant.
  • static boolean isSameInstant(Calendar cal1, Calendar cal2) : vérifie si les deux dates correspondent au même instant (très utile si on a passé les dates dans la méthode précédente au préalable).

MapUtils (org.apache.commons.collections)

  • static java.util.Map predicatedMap(java.util.Map map, Predicate keyPred, Predicate valuePred) : retourne la sous-map correspondant à la première sur laquelle on a appliqué des prédicats.
  • static java.util.Map transformedMap(java.util.Map map, Transformer keyTransformer, Transformer valueTransformer) : retourne la sous-map correspondant à la première sur laquelle on a appliqué des transformers.

PredicateUtils (org.apache.commons.collections)

  • static Predicate allPredicate(java.util.Collection predicates) : crée le prédicat résultat de la conjonction de tous les prédicats.
  • static Predicate anyPredicate(java.util.Collection predicates) : crée le prédicat résultat de la disjonction de tous les prédicats.
  • static Predicate notNullPredicate() : crée le prédicat de non nullité.
  • static Predicate uniquePredicate() : prédicat qui répond oui la première fois qu'un objet y passe, et non le reste du temps.

StringUtils (org.springframework.util)

  • static String arrayToDelimitedString(Object arr, String delim) : retourne la chaîne globale contenant toutes les chaines du tableau, séparées par le délimiteur.
  • static boolean hasText(String str) : détermine si une chaîne possède du texte

TransformerUtils (org.apache.commons.collections)

  • static Transformer chainedTransformer(java.util.Collection transformers) : crée le transformeur chaîné des transformers passés en paramètre
  • static Transformer stringValueTransformer() : tranforme un objet en sa version String
  • static Transformer switchTransformer(Predicate predicate, Transformer trueTransformer, Transformer falseTransformer) : crée un transformer dont le traitement dépend, sur chaque objet entrant, de la valeur d'un prédicat.

Comme vous l'aurez remarqué, la plupart des classes que j'utilise proviennent des librairies apache.
Même si ces classes fournissent des fonctions très sympas, on regrettera deux points en particulier :

  • le caractère static de ces classes, qui empêche les tests en isolation (via Mockito notamment) ;
  • la non généricité de la plupart d'entre elles (CollectionUtils, Transformer...).

Alors vous aussi, ayez le réflexe Utils!

Liens
API Apache Commons Collections
API Apache Commons BeanUtils
API Apache Commons Lang
API org.springframework.util

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.