1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.mavibot.btree.comparator;
21
22
23 import java.util.Comparator;
24
25
26
27
28
29
30
31 public class ByteArrayComparator implements Comparator<byte[]>
32 {
33
34
35
36
37
38
39
40 public int compare( byte[] byteArray1, byte[] byteArray2 )
41 {
42 if ( byteArray1 == byteArray2 )
43 {
44 return 0;
45 }
46
47 if ( byteArray1 == null )
48 {
49 if ( byteArray2 == null )
50 {
51 return 0;
52 }
53 else
54 {
55 return -1;
56 }
57 }
58 else
59 {
60 if ( byteArray2 == null )
61 {
62 return 1;
63 }
64 else
65 {
66 if ( byteArray1.length < byteArray2.length )
67 {
68 int pos = 0;
69
70 for ( byte b1 : byteArray1 )
71 {
72 byte b2 = byteArray2[pos];
73
74 if ( b1 == b2 )
75 {
76 pos++;
77 }
78 else if ( b1 < b2 )
79 {
80 return -1;
81 }
82 else
83 {
84 return 1;
85 }
86 }
87
88 return -1;
89 }
90 else
91 {
92 int pos = 0;
93
94 for ( byte b2 : byteArray2 )
95 {
96 byte b1 = byteArray1[pos];
97
98 if ( b1 == b2 )
99 {
100 pos++;
101 }
102 else if ( b1 < b2 )
103 {
104 return -1;
105 }
106 else
107 {
108 return 1;
109 }
110 }
111
112 if ( pos < byteArray1.length )
113 {
114 return 1;
115 }
116 else
117 {
118 return 0;
119 }
120 }
121 }
122 }
123 }
124 }