package net.ion.craken.node.search; import java.util.List; import net.ion.craken.node.ReadNode; import net.ion.craken.node.TransactionJob; import net.ion.craken.node.WriteSession; import net.ion.craken.node.crud.PredicatedResponse; import net.ion.craken.node.crud.util.ResponsePredicates; import net.ion.craken.node.crud.util.TransactionJobs; import net.ion.framework.db.Page; import net.ion.framework.util.Debug; public class TestResponsePredicate extends TestBaseSearch { public void testBelow() throws Exception { session.tranSync(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.root().child("/emp/bleujin").property("name", "bleujin").property("job", "dev") ; wsession.root().child("/emp/hero").property("name", "hero") ; wsession.root().child("/dept/dev").property("name", "dev") ; wsession.root().child("/emp/jin").property("name", "jin").property("job", "dev") ; return null; } }) ; assertEquals(3, session.queryRequest("dev").find().size()) ; assertEquals(0, session.root().childQuery("dev", false).find().size()) ; assertEquals(1, session.pathBy("/dept").childQuery("dev", false).find().size()) ; List<ReadNode> list = session.queryRequest("dev").descending("name").find().predicated(ResponsePredicates.belowAt("/emp")).toList(); Debug.line(list) ; } public void testWhere() throws Exception { session.tranSync(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.root().child("/emp/bleujin").property("name", "bleujin").property("job", "dev").property("age", 20) ; wsession.root().child("/emp/hero").property("name", "hero").property("age", 21) ; wsession.root().child("/dept/dev").property("name", "dev").property("age", 22) ; wsession.root().child("/emp/jin").property("name", "jin").property("job", "dev").property("age", 23) ; return null; } }) ; final PredicatedResponse response = session.queryRequest("").descending("name").find().predicated(ResponsePredicates.where("age between 20 and 22 and this.name in ('hero', 'dev')")); response.debugPrint() ; assertEquals(2, response.totoalCount()) ; } public void testWhereEqual() throws Exception { session.tranSync(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) { wsession.root().child("/emp/bleujin").property("name", "bleujin").property("job", "dev").property("age", 20) ; wsession.root().child("/emp/hero").property("name", "hero").property("age", 21) ; wsession.root().child("/dept/dev").property("name", "dev").property("age", 22) ; wsession.root().child("/emp/jin").property("name", "jin").property("job", "dev").property("age", 23) ; return null; } }) ; session.queryRequest("").descending("name").find().predicated(ResponsePredicates.where("age=20")).debugPrint();; } public void testFive() throws Exception { session.tranSync(TransactionJobs.dummy("/emp", 20)) ; session.tranSync(TransactionJobs.dummy("/dept", 25)) ; PredicatedResponse result = session.queryRequest("bleujin").ascending("dummy").find() .predicated(ResponsePredicates.belowAt("/emp")) .predicated(ResponsePredicates.page(Page.create(5, 2))); assertEquals("bleujin", result.readNode(0).property("name").value()) ; assertEquals(5, result.size()) ; assertEquals(5, result.first().property("dummy").value()) ; assertEquals(9, result.last().property("dummy").value()) ; } }