Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.mapdb;
  
  
  
  
  import org.junit.Test;
  
  import java.io.*;
  import java.util.Set;
 
 import static org.junit.Assert.assertEquals;
 
 public class Issue148Test {
 
     @Test public void repeated_update(){
         File mapdbFile = Utils.tempDbFile();
 
         String str = Utils.randomString(1000);
         Engine engine = DBMaker.newAppendFileDB(mapdbFile).closeOnJvmShutdown().cacheDisable().asyncWriteDisable().makeEngine();
         long recid = engine.put(str,.);
         engine.commit();
         engine.close();
 
         for(int i=10;i<100;i++){
             engine = DBMaker.newAppendFileDB(mapdbFile).closeOnJvmShutdown().cacheDisable().asyncWriteDisable().makeEngine();
             assertEquals(strengine.get(recid.));
             str = Utils.randomString(i);
             engine.update(recid,str,.);
             assertEquals(strengine.get(recid.));
             engine.commit();
             engine.close();
         }
 
 
     }
 
     @Test
     public void test(){
 
         // 1 : Create HTreeMap, put some values , Commit and Close;
         File mapdbFile = Utils.tempDbFile();
         DB mapdb = DBMaker.newAppendFileDB(mapdbFile).closeOnJvmShutdown().cacheDisable().asyncWriteDisable().make();
 
         Serializer<CustomValuevalueSerializer = new CustomValueSerializer();
         HTreeMap<StringCustomValueusers = mapdb.createHashMap("users").keepCounter(true).make();
         users.put("jhon"new CustomValue("jhon",  32));
         users.put("mike"new CustomValue("mike",  30));
         mapdb.commit();
 
         ..println("Create and Fisrt Put [\"jhon\"->32, \"mike\"->30]");
         dumpUserDB(users);
 
         users.replace("mike"new CustomValue("mike",  33));
         mapdb.commit();
 
         ..println("Replace Before Close : [\"mike\"->33] looks as works");
         dumpUserDB(users);
 
         mapdb.close();
 
 
         // 2 : Open HTreeMap, replace some values , Commit and Close;
         mapdb = DBMaker.newAppendFileDB(mapdbFile).closeOnJvmShutdown().cacheDisable().asyncWriteDisable().make();
         users = mapdb.getHashMap("users");
 
         ..println("Just Reopen : all values ar good");
         dumpUserDB(users);
 
         CustomValue old = users.replace("jhon"new CustomValue("jhon", 31));
         assertEquals(32, old.age);
         assertEquals("jhon"old.name);
 
         assertEquals(31, users.get("jhon").);
         assertEquals("jhon"users.get("jhon").);
 
         mapdb.commit();
         assertEquals(31, users.get("jhon").);
         assertEquals("jhon"users.get("jhon").);
 
         ..println("Do Replacement on Reopen : [\"jhon\"->31] looks as works");
         dumpUserDB(users);
         mapdb.close();
 
 
         // 3 : Open HTreeMap, Dump
         mapdb = DBMaker.newAppendFileDB(mapdbFile).closeOnJvmShutdown().cacheDisable().asyncWriteDisable().make();
         users = mapdb.getHashMap("users");
 
         ..println("But final value is not changed");
         dumpUserDB(users);
         assertEquals(31, users.get("jhon").);
         assertEquals("jhon"users.get("jhon").);
 
         mapdb.close();
     }
 
     public static void dumpUserDB(HTreeMap<StringCustomValueusers){
 
         Set<Stringkeyset = users.keySet();
        if(keyset==null){
            return;
        }
        forString key : keyset ){
            CustomValue cv = users.get(key);
            ..format("%s(%b) : %d\n"keykey.equals(cv.name), cv.age);
        }
        ..println("");
    }

    
Custom Value and Serializer
    public static class CustomValue implements Serializable {
        private static final long serialVersionUID = -7585177565368493580L;
        final String name;
        final int age;
        public CustomValue(String nameint age){
            this. = name;
            this. = age;
        }
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ;
            result = prime * result + (( == null) ? 0 : .hashCode());
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            CustomValue other = (CustomValueobj;
            if ( != other.age)
                return false;
            if ( == null) {
                if (other.name != null)
                    return false;
            } else if (!.equals(other.name))
                return false;
            return true;
        }
    }
    public static class CustomValueSerializer implements Serializer<CustomValue>, Serializable {
        private static final long serialVersionUID = -6987588810823227467L;
        public void serialize(DataOutput outCustomValue valuethrows IOException {
            out.writeUTF(value.name);
            out.writeInt(value.age);
        }
        public CustomValue deserialize(DataInput inint available)
                throws IOException {
            return new CustomValuein.readUTF(), in.readInt() );
        }
    }
New to GrepCode? Check out our FAQ X