Package com.dbxml.db.core.data

Examples of com.dbxml.db.core.data.Value


      private synchronized void split(Transaction tx) throws DBException, IOException {
         Value[] leftVals;
         Value[] rightVals;
         long[] leftPtrs;
         long[] rightPtrs;
         Value separator;

         short vc = ph.getValueCount();
         int pivot = vc / 2;

         // Split the node into two nodes
View Full Code Here


                        if ( leftIdx < 0 )
                           leftIdx = -(leftIdx + 1);
                        if ( rightIdx < 0 )
                           rightIdx = -(rightIdx + 1);
                        for ( int i = 0; i < ptrs.length; i++ ) {
                           Value testValue = getIndexValue(values[i]);
                           if ( i >= leftIdx && i <= rightIdx && query.testValue(testValue) ) {
                              Value extraValue = getExtraValue(values[i]);
                              callback.indexInfo(testValue, extraValue);
                           }
                        }
                        break;

                     case IndexQuery.NEQ:
                        if ( !compoundVals ) {
                           for ( int i = 0; i < ptrs.length; i++ )
                              if ( i != leftIdx )
                                 callback.indexInfo(values[i], null);
                           break;
                        }
                        // The fall through is intentional

                     case IndexQuery.NBWX:
                     case IndexQuery.NBW:
                     case IndexQuery.NSW:
                        if ( leftIdx < 0 )
                           leftIdx = -(leftIdx + 1);
                        if ( rightIdx < 0 )
                           rightIdx = -(rightIdx + 1);
                        for ( int i = 0; i < ptrs.length; i++ ) {
                           Value testValue = getIndexValue(values[i]);
                           if ( (i <= leftIdx || i >= rightIdx) && query.testValue(testValue) ) {
                              Value extraValue = getExtraValue(values[i]);
                              callback.indexInfo(testValue, extraValue);
                           }
                        }
                        break;

                     case IndexQuery.LT:
                     case IndexQuery.LTE:
                        if ( leftIdx < 0 )
                           leftIdx = -(leftIdx + 1);
                        for ( int i = 0; i < ptrs.length; i++ ) {
                           Value testValue = getIndexValue(values[i]);
                           if ( i <= leftIdx && query.testValue(testValue) ) {
                              Value extraValue = getExtraValue(values[i]);
                              callback.indexInfo(testValue, extraValue);
                           }
                        }
                        break;

                     case IndexQuery.GT:
                     case IndexQuery.GTE:
                        if ( rightIdx < 0 )
                           rightIdx = -(rightIdx + 1);
                        for ( int i = 0; i < ptrs.length; i++ ) {
                           Value testValue = getIndexValue(values[i]);
                           if ( i >= rightIdx && query.testValue(testValue) ) {
                              Value extraValue = getExtraValue(values[i]);
                              callback.indexInfo(testValue, extraValue);
                           }
                        }
                        break;

                     case IndexQuery.NIN:
                     default:
                        for ( int i = 0; i < ptrs.length; i++ ) {
                           Value testValue = getIndexValue(values[i]);
                           if ( query.testValue(testValue) ) {
                              Value extraValue = getExtraValue(values[i]);
                              callback.indexInfo(testValue, extraValue);
                           }
                        }
                        break;
                  }
                  break;

               default:
                  throw new BTreeCorruptException("Invalid Page Type In query");
            }

         }
         else {
            // No Query - Just Walk The Tree
            switch ( ph.getStatus() ) {
               case BRANCH:
                  for ( int i = 0; i < ptrs.length; i++ )
                     getChildNode(tx, i).query(tx, query, callback);
                  break;

               case LEAF:
                  for ( int i = 0; i < values.length; i++ ) {
                     Value testValue = getIndexValue(values[i]);
                     Value extraValue = getExtraValue(values[i]);
                     callback.indexInfo(testValue, extraValue);
                  }
                  break;

               default:
View Full Code Here

   public String getPattern() {
      return pattern;
   }

   private Value getCombinedValue(Value value, Key key, int pos, int elemID, int attrID) {
      Value result;
      try {
         int valSize = value.getLength();
         int keySize = key.getLength();
         int totalSize = valSize+keySize+16;

         byte[] b = new byte[totalSize];

         System.arraycopy(value.getRawData(), value.getOffset(), b, 0, valSize);
         System.arraycopy(key.getRawData(), key.getOffset(), b, valSize+1, keySize);

         int l = valSize+keySize+2;

         ByteArray.writeInt(b, l, pos);    // Write the pos
         ByteArray.writeInt(b, l+4, elemID); // Write the elemID
         ByteArray.writeInt(b, l+8, attrID); // Write the attrID
         ByteArray.writeShort(b, l+12, (short)valSize);

         result = new Value(b);
      }
      catch ( Exception e ) {
         result = null; // This will never happen
      }
      return result;
View Full Code Here

   public void remove(Transaction tx, String value, Key key, int pos, int elemID, int attrID) throws DBException {
      String[] set = getReducedSet(value);
      for ( int i = 0; i < set.length; i++ ) {
         try {
            Value cv = getCombinedValue(new Value(set[i]), key, pos, elemID, attrID);
            removeValue(tx, cv);
         }
         catch ( DBException d ) {
            throw d;
         }
View Full Code Here

   public void add(Transaction tx, String value, Key key, int pos, int elemID, int attrID) throws DBException {
      String[] set = getReducedSet(value);
      for ( int i = 0; i < set.length; i++ ) {
         try {
            Value cv = getCombinedValue(new Value(set[i]), key, pos, elemID, attrID);
            addValue(tx, cv, MATCH_INFO);
         }
         catch ( DBException d ) {
            throw d;
         }
View Full Code Here

            continue;

         if ( stemmer != null )
            s = stemmer.stemWord(s);

         vals[i] = new Value(s);
      }

      // Now issue the query
      final List results = new ArrayList(128);
View Full Code Here

   public static Value getIndexValue(Value value) {
      byte[] b = value.getRawData();
      int pos = value.getOffset();
      int len = value.getLength();
      int valLen = ByteArray.readShort(b, (pos+len)-2);
      return new Value(b, pos, valLen);
   }
View Full Code Here

      int pos = value.getOffset();
      int len = value.getLength();
      int valLen = ByteArray.readShort(b, (pos+len)-2);
      if ( valLen < len-2 ) {
         // Take into account the null separator
         return new Value(b, pos+valLen+1, (len-valLen)-3);
      }
      else
         return EmptyValue;
   }
View Full Code Here

      this.op = op;
      if ( op == SW || op == NSW ) {
         byte[] b = new byte[val1.getLength() + 1];
         System.arraycopy(val1.getData(), 0, b, 0, b.length - 1);
         b[b.length - 1] = (byte)0xFF; // Was 127
         Value val2 = new Value(b);
         vals = new Value[]{val1, val2};
      }
      else
         vals = new Value[]{val1};
   }
View Full Code Here

               Set stopWords = fidx.getStopWords();
               if ( stopWords != null && stopWords.contains(value) )
                  return null;
            }

            IndexQuery idxQry = new IndexQuery(pattern, node.operator, new Value(node.value));
            IndexMatch[] matches = idx.queryMatches(tx, idxQry);
            return QueryEngine.getUniqueKeys(matches);
         }
         else
            throw new ProcessingException("No FullText Index to support pattern '"+node.name+"'");
View Full Code Here

TOP

Related Classes of com.dbxml.db.core.data.Value

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.