public void addAttribute(DeweyID deweyID, String qName, int parentCID, boolean qNameFound)
     throws IOException, Exception {
   // parentCID is curNode's CID
   //        logManager.LogManager.log(6,qName);
   //        logManager.LogManager.log(6,"Attrib: "+deweyID.toString());
   //        logManager.LogManager.log(6,String.valueOf(deweyID.getCID()));
   //        }
   //         elemIndex.insert(deweyID.getCID(),deweyID);
   //         bTreeIndex.insert(deweyID,deweyID.getCID(),qName);
   if (!qNameFound) {
     // structSumIndex.add(deweyID.getCID(),qName,parentCID);
     try {
       if (con != null) {
         String sqlQuery = "INSERT INTO \"OrderedByCID\" (\"CID\", \"DeweyID\") VALUES (?, ?);";
         PreparedStatement pst = con.prepareStatement(sqlQuery);
         pst.setInt(1, deweyID.getCID());
         pst.setString(2, deweyID.toString());
         //                    pst.setString(3, String.v);
         pst.executeUpdate();
         pst.close();
       }
     } catch (SQLException e) {
       System.out.println("JDBC Driver is not Configured Correctly !");
       e.printStackTrace();
       return;
     }
   }
   // checkBufPool();
 }
  public void addValue(DeweyID deweyID, String value, int parentCID) throws IOException, Exception {
    // we may have problem here
    // maybe we should update previously inserted attributes instead of insert new one

    // FOR ATTrib Values (Actually they are behaved the same as text contents)
    // text contents are not added to element index,thier CID shouldn be Zero
    // elemIndex.insert(0,deweyID);
    // bTreeIndex.insert(deweyID,-1,value);
    logManager.LogManager.log(6, value);
    logManager.LogManager.log(6, "Value: " + deweyID.toString());
    try {
      if (con != null) {
        String sqlQuery =
            "INSERT INTO \"OrderedByCID\" (\"CID\", \"DeweyID\" , \"Value\") VALUES (?, ? ,?);";
        PreparedStatement pst = con.prepareStatement(sqlQuery);
        pst.setInt(1, deweyID.getCID());
        pst.setString(2, deweyID.toString());
        pst.setString(3, value);
        pst.executeUpdate();
        pst.close();
      }
    } catch (SQLException e) {
      System.out.println("JDBC Driver is not Configured Correctly !");
      e.printStackTrace();
      return;
    }

    // structSumIndex.add(-1,value,parentCID);THIS IS NOT NEEDED!
    // checkBufPool();
  }
 public void addContent(DeweyID deweyID, StringBuilder contentBuilder, int parentCID)
     throws IOException, Exception {
   String content = new String(contentBuilder);
   try {
     if (con != null) {
       String sqlQuery =
           "INSERT INTO \"OrderedByCID\" (\"CID\", \"DeweyID\" , \"Value\") VALUES (?, ? ,?);";
       PreparedStatement pst = con.prepareStatement(sqlQuery);
       pst.setInt(1, deweyID.getCID());
       pst.setString(2, deweyID.toString());
       pst.setString(3, content);
       pst.executeUpdate();
       pst.close();
     }
   } catch (SQLException e) {
     System.out.println("JDBC Driver is not Configured Correctly !");
     e.printStackTrace();
     return;
   }
   // text contents are not added to element index,thier CID shouldn be Zero
   // elemIndex.insert(0,deweyID);
   //         bTreeIndex.insert(deweyID,-2,content);
   //         System.out.println("CID: -2");
   // structSumIndex.add(-2,content,parentCID);THIS IS NOT NEEDED
   // checkBufPool();
 }
  public int internalNodeSearch(DeweyID deweyId) {
    // page: pagestate,nextpage,freeoffset
    // ps,isroot,isleaf,number of keys in this
    // page,freeoff,nextp(leftmost),deweyId,nextp,deweyId,nextp(rightmost)
    int pagePointer = -1; // null
    int length;
    byte[] curId;
    DeweyID curDId = null;
    DeweyID result = null;
    InternalBuffer.position(Settings.dataStartPos); // 3+4+4 ps+isL+isR+freeOff+numOf
    // if(IsRoot() & IsLeaf()& freeOffset==Settings.dataStartPos)
    if (numOfKeys > 0) {
      for (int i = 0; i < numOfKeys; i++) {
        pagePointer = InternalBuffer.getInt(); // next page adrs
        length = InternalBuffer.getInt();
        curId = new byte[length];
        InternalBuffer.get(curId, 0, length);
        curDId = new DeweyID();
        curDId.setDeweyId(curId);
        result = curDId;
        if (!(curDId.notGreaterThan(deweyId))) {
          break;
        }
      }
      if (curDId.notGreaterThan(deweyId)) // baraye akharin curID(rightMost)
      {
        pagePointer = InternalBuffer.getInt(); // the last (right most)pointer
      }
    }
    return pagePointer; // page i ro bar migardune k result max un hast.
    // ki<k<ki+1

  }
 public void addElement(DeweyID deweyID, String qName, int parentCID, boolean qNameFound)
     throws IOException, Exception, SQLException {
   try {
     if (con != null) {
       String sqlQuery = "INSERT INTO \"OrderedByCID\" (\"CID\", \"DeweyID\") VALUES (?, ?);";
       PreparedStatement pst = con.prepareStatement(sqlQuery);
       pst.setInt(1, deweyID.getCID());
       pst.setString(2, deweyID.toString());
       pst.executeUpdate();
       pst.close();
     }
   } catch (SQLException e) {
     System.out.println("JDBC Driver is not Configured Correctly !");
     e.printStackTrace();
     return;
   }
 }