svn commit: r571949 - in /xml/xindice/trunk/java/src/org/apache/xindice/core/indexer: MemValueIndexer.java NameIndexer.java ValueIndexer.java

[email protected]
Newsgroups gmane.text.xml.xindice.devel
Message-ID <[email protected]>
Author: vgritsenko
Date: Sun Sep  2 03:52:38 2007
New Revision: 571949

URL: http://svn.apache.org/viewvc?rev=571949&view=rev
Log:
avoid getData()

Modified:
    xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java
    xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/NameIndexer.java
    xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java

Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java?rev=571949&r1=571948&r2=571949&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/MemValueIndexer.java Sun Sep  2 03:52:38 2007
@@ -269,7 +269,7 @@
                         for (; aLocatorIterator.hasNext(); ++aResultIndex) {
                             ValueLocator aLocator = (ValueLocator) aLocatorIterator.next();
                             aResult[aResultIndex] = new IndexMatch(
-                                    new Key(aLocator.getKey()), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
+                                    aLocator.getKey(), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
                         }
                     }
                 } else {
@@ -288,7 +288,7 @@
                             for (; aLocatorIterator.hasNext(); ++aResultIndex) {
                                 ValueLocator aLocator = (ValueLocator) aLocatorIterator.next();
                                 aResult[aResultIndex] = new IndexMatch(
-                                        new Key(aLocator.getKey()), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
+                                        aLocator.getKey(), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
                             }
                         }
                     }
@@ -1157,7 +1157,7 @@
             for (; aLocatorIterator.hasNext(); ++theStartIndex) {
                 ValueLocator aLocator = (ValueLocator) aLocatorIterator.next();
                 theArray[theStartIndex] = new IndexMatch(
-                        new Key(aLocator.getKey()), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
+                        aLocator.getKey(), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
             }
         }
 
@@ -1182,7 +1182,7 @@
         for (; aLocatorIterator.hasNext(); ++theStartIndex) {
             ValueLocator aLocator = (ValueLocator) aLocatorIterator.next();
             theArray[theStartIndex] = new IndexMatch(
-                    new Key(aLocator.getKey()), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
+                    aLocator.getKey(), aLocator.getPosition(), aLocator.getLength(), aLocator.getElementID(), aLocator.getAttributeID());
         }
         return theStartIndex;
     }
@@ -1225,9 +1225,11 @@
          * @return true if this object is equal to theCompareTo Object, false otherwise
          */
         public boolean equals(Object theCompareTo) {
+            //noinspection SimplifiableIfStatement
             if (theCompareTo instanceof EmptyValue) {
                 return true;
             }
+
             return theCompareTo.toString().length() == 0;
         }
 
@@ -1323,6 +1325,32 @@
      * the Collection.
      */
     private class ValueLocator implements Comparable {
+
+        /**
+         * the key of the Document containing the value
+         */
+        private Key itsKey;
+
+        /**
+         * the value's position in the document stream
+         */
+        private final int itsPosition;
+
+        /**
+         * the value's length
+         */
+        private final int itsLength;
+
+        /**
+         * the ID of the Element containing the value
+         */
+        private final short itsElementID;
+
+        /**
+         * the ID of the Attribute containing the value
+         */
+        private final short itsAttributeID;
+
         /**
          * Creates a new object.
          *
@@ -1337,7 +1365,7 @@
          *       instead of as a separate member.
          */
         public ValueLocator(Key theKey, int thePosition, int theLength, short theElementID, short theAttributeID) {
-            itsKey = theKey.getData();
+            itsKey = theKey;
             itsPosition = thePosition;
             itsLength = theLength;
             itsElementID = theElementID;
@@ -1349,7 +1377,7 @@
          *
          * @return the key of the Document containing the value
          */
-        public byte[] getKey() {
+        public Key getKey() {
             return itsKey;
         }
 
@@ -1429,24 +1457,9 @@
             ValueLocator aCompareTo = (ValueLocator) theObject;
 
             // compare keys
-            byte[] aCompareToKey = aCompareTo.itsKey;
-
-            int aMaxLength = itsKey.length > aCompareToKey.length ? aCompareToKey.length : itsKey.length;
-
-            for (int anIndex = 0; anIndex < aMaxLength; ++anIndex) {
-                byte aByteThis = itsKey[anIndex];
-                byte aByteThat = aCompareToKey[anIndex];
-
-                // compare bytes
-                if (aByteThis != aByteThat) {
-                    return aByteThis > aByteThat ? 1 : -1;
-                }
-            }
-
-            // comparison done if keys are not of equal length but initial
-            // substrings are equal
-            if (itsKey.length != aCompareToKey.length) {
-                return itsKey.length > aCompareToKey.length ? 1 : -1;
+            int result = itsKey.compareTo(aCompareTo.itsKey);
+            if (result != 0) {
+                return result;
             }
 
             // compare position
@@ -1472,30 +1485,5 @@
             // equal
             return 0;
         }
-
-        /**
-         * the key of the Document containing the value
-         */
-        private byte[] itsKey;
-
-        /**
-         * the value's position in the document stream
-         */
-        private final int itsPosition;
-
-        /**
-         * the value's length
-         */
-        private final int itsLength;
-
-        /**
-         * the ID of the Element containing the value
-         */
-        private final short itsElementID;
-
-        /**
-         * the ID of the Attribute containing the value
-         */
-        private final short itsAttributeID;
     }
 }

Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/NameIndexer.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/NameIndexer.java?rev=571949&r1=571948&r2=571949&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/NameIndexer.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/NameIndexer.java Sun Sep  2 03:52:38 2007
@@ -143,12 +143,10 @@
     }
 
     private IndexMatch getIndexMatch(Value v) {
-        byte[] b = v.getData();
-        int l = b.length - 5;
-        Key key = new Key(b, 0, l);
-
-        short elemID = (short) ((b[l + 1] << 8) | b[l + 2]);
-        short attrID = (short) ((b[l + 3] << 8) | b[l + 4]);
+        int l = v.getLength() - 5;
+        Key key = v.keyAt(0, l);
+        short elemID = v.shortAt(l + 1);
+        short attrID = v.shortAt(l + 3);
 
         return new IndexMatch(key, elemID, attrID);
     }

Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java?rev=571949&r1=571948&r2=571949&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/ValueIndexer.java Sun Sep  2 03:52:38 2007
@@ -380,14 +380,13 @@
     }
 
     private IndexMatch getIndexMatch(Value v) {
-        byte[] b = v.getData();
-        int l = b.length - 13;
-        Key key = new Key(b, 0, l);
+        int l = v.getLength() - 13;
 
-        int pos = ((b[l + 1] << 24) | (b[l + 2] << 16) | (b[l + 3] << 8) | b[l + 4]);
-        int len = ((b[l + 5] << 24) | (b[l + 6] << 16) | (b[l + 7] << 8) | b[l + 8]);
-        short elemID = (short) ((b[l + 9] << 8) | b[l + 10]);
-        short attrID = (short) ((b[l + 11] << 8) | b[l + 12]);
+        Key key = v.keyAt(0, l);
+        int pos = v.intAt(l + 1);
+        int len = v.intAt(l + 5);
+        short elemID = v.shortAt(l + 9);
+        short attrID = v.shortAt(l + 11);
 
         return new IndexMatch(key, pos, len, elemID, attrID);
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.