froehlich    01/12/13 05:21:04

  Modified:    scratchpad/src/org/apache/cocoon/jispstore JispKey.java
                        JispFilesystemStore.java
  Log:
  hold,store,get and remove are working now alpha.
  
  Revision  Changes    Path
  1.2       +18 -24    
xml-cocoon2/scratchpad/src/org/apache/cocoon/jispstore/JispKey.java
  
  Index: JispKey.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/scratchpad/src/org/apache/cocoon/jispstore/JispKey.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JispKey.java      2001/12/13 00:04:34     1.1
  +++ JispKey.java      2001/12/13 13:21:04     1.2
  @@ -13,10 +13,11 @@
   import java.io.ObjectOutput; 
   
   final class JispKey extends KeyObject{
  +    static final long serialVersionUID = -6894793231339165076L;
       private String mKey;
       
       public JispKey() {
  -        mKey = null;
  +        mKey = new String("");
       }
       
       public JispKey(String keyValue) {
  @@ -24,43 +25,36 @@
       }
       
       public int compareTo(KeyObject key) {
  -        int code = -1;
  -
           if (key instanceof JispKey) {
  -            code = System.identityHashCode(this) -
  -                   System.identityHashCode(key);
  -
  -            if(code < 0) {
  -                code = KEY_LESS;
  -            } else if(code > 0) {
  -                code = KEY_MORE;
  +            int comp = mKey.trim().compareTo(((JispKey)key).mKey.trim());
  +    
  +            if (comp == 0) {
  +                return KEY_EQUAL;
               } else {
  -                code = KEY_EQUAL;
  +                if (comp < 0) {
  +                    return KEY_LESS;
  +                } else {
  +                    return KEY_MORE;
  +                }
               }
  +        } else {
  +            return KEY_ERROR;
           }
  -        return code;
       }
             
       public KeyObject makeNullKey() {
  -        JispKey nullKey = new JispKey();
  -        return nullKey;
  +        return new JispKey();;
       }
       
       public void writeExternal(ObjectOutput out) throws IOException {
  -        out.writeObject(mKey);
  +        String outKey;
  +        outKey = new String(mKey);
  +        out.writeUTF(outKey);
       }
       
       public void readExternal(ObjectInput in) 
       throws IOException, ClassNotFoundException {
  -        mKey = (String)in.readObject();
  -    }
  -
  -    public boolean equals(Object obj)
  -    {
  -        if ((obj != null) && (obj instanceof JispKey))
  -            return (mKey.equals(((JispKey)obj).mKey));
  -        else
  -            return false;
  +        mKey = in.readUTF();
       }
   
       public String toString() {
  
  
  
  1.2       +43 -35    
xml-cocoon2/scratchpad/src/org/apache/cocoon/jispstore/JispFilesystemStore.java
  
  Index: JispFilesystemStore.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/scratchpad/src/org/apache/cocoon/jispstore/JispFilesystemStore.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JispFilesystemStore.java  2001/12/13 00:04:34     1.1
  +++ JispFilesystemStore.java  2001/12/13 13:21:04     1.2
  @@ -20,7 +20,7 @@
   
   import com.coyotegulch.jisp.IndexedObjectDatabase;
   import com.coyotegulch.jisp.BTreeIndex;
  -import com.coyotegulch.jisp.KeyObject;
  +import com.coyotegulch.jisp.StringKey32;
   
   import java.io.File;
   import java.io.IOException;
  @@ -35,17 +35,17 @@
              Initializable {
   
       /** The directory repository */
  -    protected File directoryFile;
  -    protected volatile String directoryPath;
  +    protected File mDirectoryFile;
  +    protected volatile String mDirectoryPath;
   
       /** some statics for the moment */
       private static String DATABASE_NAME = "cocoon.data";
       private static String INDEX_NAME = "cocoon.idx";
  -    private static int ORDER = 33;
  +    private static int ORDER = 1001;
   
       /** The database */
  -    private IndexedObjectDatabase database;
  -    private BTreeIndex index;
  +    private IndexedObjectDatabase mDatabase;
  +    private BTreeIndex mIndex;
   
       /**
        * Sets the repository's location
  @@ -76,17 +76,17 @@
   
               if (myFile.exists()) {
                   this.getLogger().debug("Data file exists");
  -                database = new IndexedObjectDatabase(getDirectoryPath() + 
DATABASE_NAME,false);
  -                index = new BTreeIndex(this.getDirectoryPath() + INDEX_NAME);
  -                database.attachIndex(index);
  -                index.dumpTree();
  +                mDatabase = new IndexedObjectDatabase(getDirectoryPath() + 
DATABASE_NAME,false);
  +                mIndex = new BTreeIndex(this.getDirectoryPath() + INDEX_NAME);
  +                mDatabase.attachIndex(mIndex);
  +                mIndex.dumpTree();
               } else {
                   this.getLogger().debug("Data file not exists");
  -                database = new IndexedObjectDatabase(getDirectoryPath() + 
DATABASE_NAME,false);
  -                index = new BTreeIndex(this.getDirectoryPath() + INDEX_NAME,
  +                mDatabase = new IndexedObjectDatabase(getDirectoryPath() + 
DATABASE_NAME,false);
  +                mIndex = new BTreeIndex(this.getDirectoryPath() + INDEX_NAME,
                                              ORDER, new JispKey(),false);
  -                database.attachIndex(index);
  -                index.dumpTree();
  +                mDatabase.attachIndex(mIndex);
  +                mIndex.dumpTree();
               }   
           } catch (Exception e) {
               getLogger().error("initialize(..) Exception",e);
  @@ -98,30 +98,30 @@
        */
       public void setDirectory(final File directory)
       throws IOException {
  -        this.directoryFile = directory;
  +        this.mDirectoryFile = directory;
   
           /* Save directory path prefix */
  -        this.directoryPath = IOUtils.getFullFilename(this.directoryFile);
  -        this.directoryPath += File.separator;
  +        this.mDirectoryPath = IOUtils.getFullFilename(this.mDirectoryFile);
  +        this.mDirectoryPath += File.separator;
   
           /* Does directory exist? */
  -        if (!this.directoryFile.exists()) {
  +        if (!this.mDirectoryFile.exists()) {
               /* Create it anew */
  -            if (!this.directoryFile.mkdir()) {
  +            if (!this.mDirectoryFile.mkdir()) {
                   throw new IOException(
  -                "Error creating store directory '" + this.directoryPath + "': ");
  +                "Error creating store directory '" + this.mDirectoryPath + "': ");
               }
           }
   
           /* Is given file actually a directory? */
  -        if (!this.directoryFile.isDirectory()) {
  -            throw new IOException("'" + this.directoryPath + "' is not a 
directory");
  +        if (!this.mDirectoryFile.isDirectory()) {
  +            throw new IOException("'" + this.mDirectoryPath + "' is not a 
directory");
           }
   
           /* Is directory readable and writable? */
  -        if (!(this.directoryFile.canRead() && this.directoryFile.canWrite())) {
  +        if (!(this.mDirectoryFile.canRead() && this.mDirectoryFile.canWrite())) {
               throw new IOException(
  -                "Directory '" + this.directoryPath + "' is not readable/writable"
  +                "Directory '" + this.mDirectoryPath + "' is not readable/writable"
               );
           }
       }
  @@ -130,7 +130,7 @@
        * Returns the repository's full pathname
        */
       public String getDirectoryPath() {
  -        return this.directoryPath;
  +        return this.mDirectoryPath;
       }
   
       public Object get(Object key) {
  @@ -138,7 +138,7 @@
           Object readObj = null;
   
           try {
  -            readObj = database.read(new JispKey(key.toString()),index);
  +            readObj = mDatabase.read(new JispKey(key.toString()),mIndex);
               if(readObj != null) {
                   this.getLogger().debug("get(): FOUND!!= " + readObj);
               } else {
  @@ -156,12 +156,10 @@
           
           //this.remove(key);
           try {
  -            KeyObject[] keyArray = new JispKey[3];
  +            JispKey[] keyArray = new JispKey[1];
               keyArray[0] = new JispKey(key.toString());
  -            keyArray[1] = new JispKey(key.toString());
  -            keyArray[2] = new JispKey(key.toString());
       
  -            database.write(keyArray,(Serializable)value);
  +            mDatabase.write(keyArray,(Serializable)value);
           } catch (Exception e) {
               this.getLogger().error("store(..): Exception",e);
           }
  @@ -179,19 +177,29 @@
           this.getLogger().debug("remove(..) Remove item");
   
           try {
  -            KeyObject[] keyArray = new JispKey[3];
  +            JispKey[] keyArray = new JispKey[1];
               keyArray[0] = new JispKey(key.toString());
  -            keyArray[1] = new JispKey(key.toString());
  -            keyArray[2] = new JispKey(key.toString());
       
  -            database.remove(keyArray);
  +            mDatabase.remove(keyArray);
           } catch (Exception e) {
               this.getLogger().error("remove(..): Exception",e);
           }
       }
   
       public boolean containsKey(Object key) {
  -        return false;
  +        long res = -1;
  +        
  +        try {
  +            res = mIndex.findKey(new JispKey(key.toString()));
  +            this.getLogger().debug("containsKey(..): res=" + res);
  +        } catch (Exception e) {
  +            this.getLogger().error("containsKey(..) Exception",e);
  +        }
  +        if(res > 0) {
  +            return true;
  +        } else {
  +            return false;
  +        }
       }
   
       public Enumeration keys() {
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to