01: /**
02: * LibreSource
03: * Copyright (C) 2004-2008 Artenum SARL / INRIA
04: * http://www.libresource.org - contact@artenum.com
05: *
06: * This file is part of the LibreSource software,
07: * which can be used and distributed under license conditions.
08: * The license conditions are provided in the LICENSE.TXT file
09: * at the root path of the packaging that enclose this file.
10: * More information can be found at
11: * - http://dev.libresource.org/home/license
12: *
13: * Initial authors :
14: *
15: * Guillaume Bort / INRIA
16: * Francois Charoy / Universite Nancy 2
17: * Julien Forest / Artenum
18: * Claude Godart / Universite Henry Poincare
19: * Florent Jouille / INRIA
20: * Sebastien Jourdain / INRIA / Artenum
21: * Yves Lerumeur / Artenum
22: * Pascal Molli / Universite Henry Poincare
23: * Gerald Oster / INRIA
24: * Mariarosa Penzi / Artenum
25: * Gerard Sookahet / Artenum
26: * Raphael Tani / INRIA
27: *
28: * Contributors :
29: *
30: * Stephane Bagnier / Artenum
31: * Amadou Dia / Artenum-IUP Blois
32: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33: */package org.libresource.kernel.comparator;
34:
35: import org.libresource.LibresourceResourceValue;
36:
37: import org.libresource.kernel.UriManager;
38: import org.libresource.kernel.comparator.util.TreeNode;
39:
40: import java.net.URI;
41:
42: import java.util.Comparator;
43: import java.util.SortedSet;
44:
45: public class ParentUriComparator implements Comparator {
46: private Comparator comparator;
47:
48: public ParentUriComparator() {
49: this (null);
50: }
51:
52: public ParentUriComparator(Comparator comparator) {
53: this .comparator = comparator;
54: }
55:
56: public int compare(Object lsvalue1, Object lsvalue2) {
57: LibresourceResourceValue lsv1 = null;
58: LibresourceResourceValue lsv2 = null;
59:
60: if (lsvalue1 instanceof TreeNode) {
61: lsv1 = ((TreeNode) lsvalue1).getValue();
62: lsv2 = ((TreeNode) lsvalue2).getValue();
63: } else {
64: lsv1 = (LibresourceResourceValue) lsvalue1;
65: lsv2 = (LibresourceResourceValue) lsvalue2;
66: }
67:
68: if (UriManager.getDepth(lsv1.getUri()) == UriManager
69: .getDepth(lsv2.getUri())) {
70: int result = UriManager.getParentPath(lsv1.getUri())
71: .compareTo(
72: UriManager.getParentPath((lsv2.getUri())));
73:
74: if ((comparator != null) && (result == 0)) {
75: return comparator.compare(lsvalue1, lsvalue2);
76: }
77: }
78:
79: return lsv1.getUri().getPath().compareTo(
80: lsv2.getUri().getPath());
81: }
82:
83: public String toString() {
84: return "ParentUriComparator(" + comparator + ")";
85: }
86: }
|