J'essaie de faire un tri personnalisé d'objets de calendrier (extraits d'une classe Node) avec tous les zéros rencontrés poussés à la fin lorsqu'ils sont triés.Le comparateur ne trie pas s'il rencontre une valeur nulle
Ceci est mon code:
public class CustomComparatorPubDate implements Comparator<Node> {
@Override
public int compare(Node o1, Node o2) {
try {
Calendar d1 = o1.getProperty("jcr:content/metadata/jcr:pubdate").getDate();
Calendar d2 = o2.getProperty("jcr:content/metadata/jcr:pubdate").getDate();
LOGGER.debug("d1: " + d1);
LOGGER.debug("d2: " + d2);
if (d2 == null && d1 == null) return 0;
if (d1 == null) return 1;
if (d2 == null) return -1;
int compar = d1.compareTo(d2);
LOGGER.debug("compar: " + compar);
return compar;
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
}
Mon appel à la classe ci-dessus:
Collections.sort(listofnodes, new CustomComparatorPubDate());
J'ai un tableau de test où l'un des biens d'objet est délibérément laissé nulle pour le test, où cela échoue. Si je peuple cette propriété, cela semble fonctionner correctement.
Une idée de ce qui ne va pas et comment y remédier? P.S: Eclipse ne me permettrait pas d'écrire ceci sans le bloc try/catch.
Edit: Dans les journaux, je vois qu'il jette un javax.jcr.PathNotFoundException
Qu'est-ce que cela implique? – gonzo
Il ne trier pas. Le tableau de liste d'intérêt est inchangé avant et après l'opération de tri. –
Veuillez poster la pile. – d33t