Skip to content

Instantly share code, notes, and snippets.

@stuarthalloway
Created March 13, 2012 15:28
Show Gist options
  • Save stuarthalloway/2029409 to your computer and use it in GitHub Desktop.
Save stuarthalloway/2029409 to your computer and use it in GitHub Desktop.
Print Schema from Java
/**
* 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