Created
March 13, 2012 15:28
-
-
Save stuarthalloway/2029409 to your computer and use it in GitHub Desktop.
Print Schema from Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Datomic example code | |
*/ | |
import datomic.Connection; | |
import datomic.Database; | |
import datomic.Entity; | |
import java.util.Collection; | |
import java.util.Iterator; | |
import java.util.List; | |
import java.util.Set; | |
import static datomic.Peer.*; | |
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); | |
printAttributeSchema(conn.db()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment