1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002,2008 Oracle. All rights reserved.
*
* $Id: CustomKeyOrderExample.java,v 1.6 2008/01/07 14:28:43 cwl Exp $
*/
package persist;
import java.io.File;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.persist.EntityCursor;
import com.sleepycat.persist.EntityStore;
import com.sleepycat.persist.PrimaryIndex;
import com.sleepycat.persist.StoreConfig;
import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.KeyField;
import com.sleepycat.persist.model.Persistent;
import com.sleepycat.persist.model.PrimaryKey;
public class CustomKeyOrderExample {
@Entity
static class Person {
@PrimaryKey
ReverseOrder name;
Person(String name) {
this.name = new ReverseOrder(name);
}
private Person() {} // For deserialization
@Override
public String toString() {
return name.value;
}
}
@Persistent
static class ReverseOrder implements Comparable<ReverseOrder> {
@KeyField(1)
String value;
ReverseOrder(String value) {
this.value = value;
}
private ReverseOrder() {} // For deserialization
public int compareTo(ReverseOrder o) {
return o.value.compareTo(value);
}
}
public static void main(String[] args)
throws DatabaseException {
if (args.length != 2 || !"-h".equals(args[0])) {
System.err.println
("Usage: java " + CustomKeyOrderExample.class.getName() +
" -h <envHome>");
System.exit(2);
}
CustomKeyOrderExample example =
new CustomKeyOrderExample(new File(args[1]));
example.run();
example.close();
}
private Environment env;
private EntityStore store;
private CustomKeyOrderExample(File envHome)
throws DatabaseException {
/* Open a transactional Berkeley DB engine environment. */
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
env = new Environment(envHome, envConfig);
/* Open a transactional entity store. */
StoreConfig storeConfig = new StoreConfig();
storeConfig.setAllowCreate(true);
storeConfig.setTransactional(true);
store = new EntityStore(env, "TestStore", storeConfig);
}
private void run()
throws DatabaseException {
PrimaryIndex<ReverseOrder,Person> index =
store.getPrimaryIndex(ReverseOrder.class, Person.class);
index.put(new Person("Andy"));
index.put(new Person("Lisa"));
index.put(new Person("Zola"));
/* Print the entities in key order. */
EntityCursor<Person> people = index.entities();
try {
for (Person person : people) {
System.out.println(person);
}
} finally {
people.close();
}
}
private void close()
throws DatabaseException {
store.close();
env.close();
}
}
|