blob: aee8c8b0b7bd823a6406719df2a03d3d1485ee21 (
plain)
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
124
125
126
|
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2009 Oracle. All rights reserved.
*
* $Id$
*/
package persist;
import java.io.File;
import java.io.FileNotFoundException;
import com.sleepycat.db.DatabaseException;
import com.sleepycat.db.Environment;
import com.sleepycat.db.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, FileNotFoundException {
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, FileNotFoundException {
/* Open a transactional Berkeley DB engine environment. */
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
envConfig.setTransactional(true);
envConfig.setInitializeCache(true);
envConfig.setInitializeLocking(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();
}
}
|