1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 /*
18 * Created on Aug 31, 2004
19 *
20 * TODO To change the template for this generated file go to
21 * Window - Preferences - Java - Code Generation - Code and Comments
22 */
23 package org.apache.jetspeed.page.document.psml;
24
25 import java.util.Comparator;
26 import java.util.List;
27
28 /***
29 * <p>
30 * DocumentOrderCompartaor
31 * </p>
32 * <p>
33 *
34 * </p>
35 *
36 * @author <a href="mailto:weaver@apache.org">Scott T. Weaver </a>
37 * @version $Id: NodeOrderCompartaor.java 516881 2007-03-11 10:34:21Z ate $
38 *
39 */
40 public class NodeOrderCompartaor implements Comparator
41 {
42 private List nodeIndex;
43 private String relativePath="";
44
45 /***
46 *
47 */
48 public NodeOrderCompartaor( List nodeIndex, String relativePath )
49 {
50 super();
51 this.nodeIndex = nodeIndex;
52 this.relativePath = relativePath;
53 }
54
55 /***
56 * <p>
57 * compare
58 * </p>
59 *
60 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
61 * @param o1
62 * @param o2
63 * @return
64 */
65 public int compare( Object o1, Object o2 )
66 {
67
68 String node1 = null;
69 String node2 = null;
70
71 if(relativePath.length() < o1.toString().length())
72 {
73 node1 = o1.toString().substring(relativePath.length());
74 }
75 else
76 {
77 node1 = o1.toString();
78 }
79
80 if(relativePath.length() < o2.toString().length())
81 {
82 node2 = o2.toString().substring(relativePath.length());
83 }
84 else
85 {
86 node2 = o2.toString();
87 }
88
89 String c1 = null;
90 String c2 = null;
91
92 if (nodeIndex != null)
93 {
94 int index1 = nodeIndex.indexOf(node1);
95 int index2 = nodeIndex.indexOf(node2);
96
97 if (index1 > -1)
98 {
99 c1 = String.valueOf(index1);
100 }
101 else
102 {
103 c1 = node1;
104 }
105
106 if (index2 > -1)
107 {
108 c2 = String.valueOf(index2);
109 }
110 else
111 {
112 c2 = node2;
113 }
114 }
115 else
116 {
117 c1 = node1;
118 c2 = node2;
119 }
120
121 return c1.compareTo(c2);
122
123 }
124
125 }