-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathPrintSchema.java
More file actions
71 lines (63 loc) · 2.2 KB
/
PrintSchema.java
File metadata and controls
71 lines (63 loc) · 2.2 KB
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
/**
* Datomic example code
*/
import datomic.Entity;
import datomic.Connection;
import datomic.Database;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Map;
import static datomic.Peer.connect;
import static datomic.Peer.createDatabase;
import static datomic.Peer.q;
public class PrintSchema {
/**
* Print an entity
*/
public static void printEntity(Entity e) {
Set keys = e.keySet();
for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
Object key = iterator.next();
System.out.println(key + " = " + e.get(key));
}
}
/**
* Print results from a query that returns entities in 1-tuples.
* @param tuples
*/
public static void printEntities(Collection<List<Object>> tuples) {
for (Iterator<List<Object>> iterator = tuples.iterator(); iterator.hasNext();) {
System.out.println();
printEntity((Entity) iterator.next().get(0));
}
}
/**
* Schemas are plain data, like everything else. Values of
* :db.install/attribute are the attributes defined in the schema.
* @param db
*/
public static void printAttributeSchema(Database db) {
Collection<List<Object>> tuples = q("[:find ?entity" +
" :where [_ :db.install/attribute ?v]" +
"[(.entity $ ?v) ?entity]]",
db);
printEntities(tuples);
}
public static void main(String[] args) {
String uri = "datomic:mem://db";
createDatabase(uri);
Connection conn = connect(uri);
String query = "[:find ?entity " +
":in $ ?s " +
":where [?e :db/valueType]" +
"[?e :db/ident ?a]" +
"[(namespace ?a) ?ns]" +
"[(= ?ns ?s)]" +
"[(.entity $ ?e) ?entity]]";
Collection<List<Object>> results = q(query,conn.db(),"db");
printEntities(results);
// printAttributeSchema(conn.db());
}
}