38. NoSQL Hang the DBA @knuthaug http://blog.knuthaugen.no/ http://github.com/knuthaug [email_address]
39. @Test public void retrievePersonFromDatabase (){ Person testPerson = new Person ( "Knut Haugen" , new Address ( "Josefines gate" , "0401" , "oslo" , "Norge" )); persons. insert (testPerson); Person dbPerson = (Person) persons. findOne (); assertEquals (testPerson. get ( "name" ), dbPerson. get ( "name" )); assertEquals ( ((Address) dbPerson. get ( "address" )). place (), "oslo" ); }
40. //Imports and package snipped public class Person implements DBObject { Map map = new LinkedHashMap (); public Person () { // for the driver to be able to instantiate! } public Person ( String fullName, Address newAddress) { put ( "name" , fullName); put ( "address" , newAddress); } public Object put ( String s, Object o) { return map. put (s, o);} public void putAll (DBObject dbObject) { } public void putAll ( Map map) {} public Object get ( String s) { return map. get (s); } public Map toMap () { return map; } public Object removeField ( String s) { return null; } public boolean containsKey ( String s) { return false;} public boolean containsField ( String s) { return false;} public Set < String > keySet () { return map. keySet (); } public void markAsPartialObject () {} public boolean isPartialObject () { return false; } }
41. import org.neo4j.graphdb. Node ; public class Person extends NetworkNode implements Person { private final String PERSON_BIRTHDATE = "birthDate" ; private final String NAME_PROPERTY = "name" ; private final Node node; public Person ( Node underlyingNode) { Node = underlyingNode; } public String birthDate ( String BirthDate) { underlyingNode. setProperty (PERSON_BIRTHDATE, birthDate ); return ( String ) node. getProperty (PERSON_BIRTHDATE); } public String birthDate () { return ( String ) node. getProperty (PERSON_BIRTHDATE); } public String name ( String name) { underlyingNode. setProperty (NAME_PROPERTY, name); return ( String ) node. getProperty (NAME_PROPERTY); } public String name () { return ( String ) node. getProperty (NAME_PROPERTY); } public Node getUnderLyingNode () { return node; } }