--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/arch/osx/lucene/collections.py Tue May 25 02:43:45 2010 +0200
@@ -0,0 +1,117 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from lucene import PythonSet, PythonIterator, JavaError
+
+
+class JavaSet(PythonSet):
+ """
+ This class implements java.util.Set around a Python set instance it wraps.
+ """
+
+ def __init__(self, _set):
+ super(JavaSet, self).__init__()
+ self._set = _set
+
+ def __contains__(self, obj):
+ return obj in self._set
+
+ def __len__(self):
+ return len(self._set)
+
+ def __iter__(self):
+ return iter(self._set)
+
+ def add(self, obj):
+ if obj not in self._set:
+ self._set.add(obj)
+ return True
+ return False
+
+ def addAll(self, collection):
+ size = len(self._set)
+ self._set.update(collection)
+ return len(self._set) > size
+
+ def clear(self):
+ self._set.clear()
+
+ def contains(self, obj):
+ return obj in self._set
+
+ def containsAll(self, collection):
+ for obj in collection:
+ if obj not in self._set:
+ return False
+ return True
+
+ def equals(self, collection):
+ if type(self) is type(collection):
+ return self._set == collection._set
+ return False
+
+ def isEmpty(self):
+ return len(self._set) == 0
+
+ def iterator(self):
+ class _iterator(PythonIterator):
+ def __init__(_self):
+ super(_iterator, _self).__init__()
+ _self._iterator = iter(self._set)
+ def hasNext(_self):
+ if hasattr(_self, '_next'):
+ return True
+ try:
+ _self._next = _self._iterator.next()
+ return True
+ except StopIteration:
+ return False
+ def next(_self):
+ if hasattr(_self, '_next'):
+ next = _self._next
+ del _self._next
+ else:
+ next = _self._iterator.next()
+ return next
+ return _iterator()
+
+ def remove(self, obj):
+ try:
+ self._set.remove(obj)
+ return True
+ except KeyError:
+ return False
+
+ def removeAll(self, collection):
+ result = False
+ for obj in collection:
+ try:
+ self._set.remove(obj)
+ result = True
+ except KeyError:
+ pass
+ return result
+
+ def retainAll(self, collection):
+ result = False
+ for obj in list(self._set):
+ if obj not in c:
+ self._set.remove(obj)
+ result = True
+ return result
+
+ def size(self):
+ return len(self._set)
+
+ def toArray(self):
+ return list(self._set)
+