package net.ion.craken.db; import java.sql.SQLException; import junit.framework.TestCase; import net.ion.craken.node.ReadSession; import net.ion.craken.node.TransactionJob; import net.ion.craken.node.WriteNode; import net.ion.craken.node.WriteSession; import net.ion.craken.node.crud.Craken; import net.ion.craken.node.crud.tree.Fqn; import net.ion.craken.node.exception.AlreadyExistsException; import net.ion.framework.db.DBController; import net.ion.framework.db.Rows; import net.ion.framework.db.servant.StdOutServant; public class TestBaseFnManager extends TestCase{ protected DBController dc; private Craken r; protected ReadSession session; @Override protected void setUp() throws Exception { this.r = Craken.inmemoryCreateWithTest() ; this.session = r.start().login("test") ; CrakenFnManager dbm = registerFunction() ; this.dc = new DBController("craken", dbm, new StdOutServant()); dc.initSelf() ; } @Override protected void tearDown() throws Exception { dc.destroySelf(); r.shutdown() ; } private CrakenFnManager registerFunction() { CrakenFnManager dbm = new CrakenFnManager(this.r, "test") ; dbm.register("dummy", new QueryPackage(){ @Function("addPersonWith") public int addPerson(final String name, final int age, final String address) throws Exception{ return session().tranSync(new TransactionJob<Integer>() { public Integer handle(WriteSession wsession) { wsession.pathBy("/persons/" + name).property("name", name).property("age", age).property("address", address) ; return 1 ; } }) ; } public int batchWith(final String[] names, final int[] ages, final String[] address) throws Exception{ return session().tranSync(new TransactionJob<Integer>() { public Integer handle(WriteSession wsession) { WriteNode persons = wsession.pathBy("/persons") ; for (int i =0 ; i < names.length ; i++) { if (wsession.exists("/persons/" + names[i])) throw new AlreadyExistsException(Fqn.fromString("/persons/" + names[i])) ; persons.child(names[i]).property("name", names[i]).property("age", ages[i]).property("address", address[i]) ; } return 1 ; } }) ; } public Rows findPersonBy(String name){ return session().ghostBy("/persons").child(name).toRows("name, age"); } public Rows listPersonBy() throws SQLException{ return session().ghostBy("/persons").children().toAdRows("name, age"); } public String toString(){ return "dummy package" ; } }) ; return dbm ; } }