diff --git a/src/main/java/li/strolch/persistence/inmemory/InMemoryOrderDao.java b/src/main/java/li/strolch/persistence/inmemory/InMemoryOrderDao.java index e24f93eef..19b4585a6 100644 --- a/src/main/java/li/strolch/persistence/inmemory/InMemoryOrderDao.java +++ b/src/main/java/li/strolch/persistence/inmemory/InMemoryOrderDao.java @@ -1,9 +1,19 @@ package li.strolch.persistence.inmemory; +import java.util.List; + import li.strolch.model.Order; +import li.strolch.model.query.OrderQuery; import li.strolch.persistence.api.OrderDao; +import li.strolch.runtime.query.inmemory.InMemoryOrderQueryVisitor; +import li.strolch.runtime.query.inmemory.InMemoryQuery; public class InMemoryOrderDao extends InMemoryDao implements OrderDao { - // marker class + @Override + public List doQuery(OrderQuery orderQuery) { + InMemoryOrderQueryVisitor visitor = new InMemoryOrderQueryVisitor(); + InMemoryQuery query = visitor.visit(orderQuery); + return query.doQuery(this); + } } diff --git a/src/main/java/li/strolch/persistence/inmemory/InMemoryResourceDao.java b/src/main/java/li/strolch/persistence/inmemory/InMemoryResourceDao.java index 6f6b50fe4..cf7f4261a 100644 --- a/src/main/java/li/strolch/persistence/inmemory/InMemoryResourceDao.java +++ b/src/main/java/li/strolch/persistence/inmemory/InMemoryResourceDao.java @@ -1,9 +1,19 @@ package li.strolch.persistence.inmemory; +import java.util.List; + import li.strolch.model.Resource; +import li.strolch.model.query.ResourceQuery; import li.strolch.persistence.api.ResourceDao; +import li.strolch.runtime.query.inmemory.InMemoryQuery; +import li.strolch.runtime.query.inmemory.InMemoryResourceQueryVisitor; public class InMemoryResourceDao extends InMemoryDao implements ResourceDao { - // marker class + @Override + public List doQuery(ResourceQuery resourceQuery) { + InMemoryResourceQueryVisitor visitor = new InMemoryResourceQueryVisitor(); + InMemoryQuery query = visitor.visit(resourceQuery); + return query.doQuery(this); + } } diff --git a/src/main/java/li/strolch/runtime/agent/api/ComponentContainer.java b/src/main/java/li/strolch/runtime/agent/api/ComponentContainer.java index b58fd6446..d33b32a63 100644 --- a/src/main/java/li/strolch/runtime/agent/api/ComponentContainer.java +++ b/src/main/java/li/strolch/runtime/agent/api/ComponentContainer.java @@ -15,10 +15,8 @@ */ package li.strolch.runtime.agent.api; - /** * @author Robert von Burg - * */ public interface ComponentContainer { diff --git a/src/main/java/li/strolch/runtime/agent/api/OrderMap.java b/src/main/java/li/strolch/runtime/agent/api/OrderMap.java index 65f71262a..a67105d3e 100644 --- a/src/main/java/li/strolch/runtime/agent/api/OrderMap.java +++ b/src/main/java/li/strolch/runtime/agent/api/OrderMap.java @@ -19,9 +19,8 @@ import li.strolch.model.Order; /** * @author Robert von Burg - * */ public interface OrderMap extends ElementMap { - // + // marker interface } diff --git a/src/main/java/li/strolch/runtime/agent/api/ResourceMap.java b/src/main/java/li/strolch/runtime/agent/api/ResourceMap.java index d1fc7bbb4..cac4319b9 100644 --- a/src/main/java/li/strolch/runtime/agent/api/ResourceMap.java +++ b/src/main/java/li/strolch/runtime/agent/api/ResourceMap.java @@ -19,9 +19,8 @@ import li.strolch.model.Resource; /** * @author Robert von Burg - * */ public interface ResourceMap extends ElementMap { - // + // marker interface } diff --git a/src/main/java/li/strolch/runtime/agent/impl/TransactionalElementMap.java b/src/main/java/li/strolch/runtime/agent/impl/TransactionalElementMap.java index b5f81c5ed..36a4b0dd9 100644 --- a/src/main/java/li/strolch/runtime/agent/impl/TransactionalElementMap.java +++ b/src/main/java/li/strolch/runtime/agent/impl/TransactionalElementMap.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Set; import li.strolch.model.StrolchElement; +import li.strolch.model.query.StrolchQuery; import li.strolch.persistence.api.PersistenceHandler; import li.strolch.persistence.api.StrolchDao; import li.strolch.persistence.api.StrolchTransaction; @@ -11,10 +12,11 @@ import li.strolch.runtime.agent.api.ElementMap; /** * @author Robert von Burg - * + * * @param */ -public abstract class TransactionalElementMap implements ElementMap { +public abstract class TransactionalElementMap> implements + ElementMap { private PersistenceHandler persistenceHandler; private String realm; @@ -28,6 +30,10 @@ public abstract class TransactionalElementMap implemen return this.realm; } + protected PersistenceHandler getPersistenceHandler() { + return this.persistenceHandler; + } + protected abstract StrolchDao getDao(StrolchTransaction tx); @Override diff --git a/src/main/java/li/strolch/runtime/agent/impl/TransactionalOrderMap.java b/src/main/java/li/strolch/runtime/agent/impl/TransactionalOrderMap.java index 660fc27c5..136706160 100644 --- a/src/main/java/li/strolch/runtime/agent/impl/TransactionalOrderMap.java +++ b/src/main/java/li/strolch/runtime/agent/impl/TransactionalOrderMap.java @@ -1,12 +1,13 @@ package li.strolch.runtime.agent.impl; import li.strolch.model.Order; +import li.strolch.model.query.OrderQuery; import li.strolch.persistence.api.OrderDao; import li.strolch.persistence.api.PersistenceHandler; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.runtime.agent.api.OrderMap; -public class TransactionalOrderMap extends TransactionalElementMap implements OrderMap { +public class TransactionalOrderMap extends TransactionalElementMap implements OrderMap { public TransactionalOrderMap(String realm, PersistenceHandler persistenceHandler) { super(realm, persistenceHandler); diff --git a/src/main/java/li/strolch/runtime/agent/impl/TransactionalResourceMap.java b/src/main/java/li/strolch/runtime/agent/impl/TransactionalResourceMap.java index c75565c11..fc094d4c8 100644 --- a/src/main/java/li/strolch/runtime/agent/impl/TransactionalResourceMap.java +++ b/src/main/java/li/strolch/runtime/agent/impl/TransactionalResourceMap.java @@ -1,12 +1,13 @@ package li.strolch.runtime.agent.impl; import li.strolch.model.Resource; +import li.strolch.model.query.ResourceQuery; import li.strolch.persistence.api.PersistenceHandler; import li.strolch.persistence.api.ResourceDao; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.runtime.agent.api.ResourceMap; -public class TransactionalResourceMap extends TransactionalElementMap implements ResourceMap { +public class TransactionalResourceMap extends TransactionalElementMap implements ResourceMap { public TransactionalResourceMap(String realm, PersistenceHandler persistenceHandler) { super(realm, persistenceHandler); diff --git a/src/main/java/li/strolch/runtime/query/inmemory/ListNavigator.java b/src/main/java/li/strolch/runtime/query/inmemory/AnyNavigator.java similarity index 73% rename from src/main/java/li/strolch/runtime/query/inmemory/ListNavigator.java rename to src/main/java/li/strolch/runtime/query/inmemory/AnyNavigator.java index 301adc37d..de722b5dc 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/ListNavigator.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/AnyNavigator.java @@ -18,21 +18,15 @@ package li.strolch.runtime.query.inmemory; import java.util.List; import li.strolch.model.StrolchElement; -import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.persistence.api.StrolchDao; /** * @author Robert von Burg */ -public class ListNavigator implements Navigator { - - private List input; - - public ListNavigator(List input) { - this.input = input; - } +public class AnyNavigator implements Navigator { @Override - public List navigate(StrolchTransaction tx) { - return this.input; + public List navigate(StrolchDao dao) { + return dao.queryAll(); } } diff --git a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryOrderQueryVisitor.java b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryOrderQueryVisitor.java index 1f9bace3f..607217deb 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryOrderQueryVisitor.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryOrderQueryVisitor.java @@ -21,20 +21,20 @@ import li.strolch.model.query.OrderQuery; import li.strolch.model.query.OrderQueryVisitor; import li.strolch.model.query.StateSelection; import li.strolch.model.query.StrolchTypeNavigation; -import li.strolch.runtime.agent.api.ComponentContainer; +import li.strolch.persistence.api.OrderDao; /** * @author Robert von Burg */ -public class InMemoryOrderQueryVisitor extends InMemoryQueryVisitor implements OrderQueryVisitor { +public class InMemoryOrderQueryVisitor extends InMemoryQueryVisitor implements OrderQueryVisitor { - public InMemoryOrderQueryVisitor(ComponentContainer container) { - super(container); + public InMemoryOrderQueryVisitor() { + super(); } @Override - protected InMemoryQueryVisitor newInstance() { - return new InMemoryOrderQueryVisitor(this.container); + protected InMemoryQueryVisitor newInstance() { + return new InMemoryOrderQueryVisitor(); } public InMemoryQuery visit(OrderQuery orderQuery) { @@ -50,7 +50,7 @@ public class InMemoryOrderQueryVisitor extends InMemoryQueryVisitor imple @Override public void visit(StrolchTypeNavigation navigation) { - this.navigator = new OrderTypeNavigator(navigation.getType(), this.container); + this.navigator = new OrderTypeNavigator(navigation.getType()); } @Override diff --git a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQuery.java b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQuery.java index 4b671f5a1..b062f5733 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQuery.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQuery.java @@ -20,7 +20,7 @@ import java.util.Iterator; import java.util.List; import li.strolch.model.StrolchElement; -import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.persistence.api.StrolchDao; /** * @author Robert von Burg @@ -51,9 +51,9 @@ public class InMemoryQuery { this.selectors.add(selector); } - public List doQuery(StrolchTransaction tx) { + public List doQuery(StrolchDao dao) { - List elements = this.navigator.navigate(tx); + List elements = this.navigator.navigate(dao); Iterator iter = elements.iterator(); while (iter.hasNext()) { T element = iter.next(); @@ -66,6 +66,7 @@ public class InMemoryQuery { } private boolean isAccepted(T element) { + for (Selector selector : this.selectors) { if (!selector.select(element)) return false; diff --git a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQueryVisitor.java b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQueryVisitor.java index d197fa988..e4c8de8aa 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQueryVisitor.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryQueryVisitor.java @@ -24,9 +24,6 @@ import li.strolch.model.query.BooleanSelection; import li.strolch.model.query.IdSelection; import li.strolch.model.query.NameSelection; import li.strolch.model.query.OrSelection; -import li.strolch.model.query.ParameterSelectionVisitor; -import li.strolch.model.query.Selection; -import li.strolch.model.query.StrolchElementSelectionVisitor; import li.strolch.model.query.ParameterSelection.BooleanParameterSelection; import li.strolch.model.query.ParameterSelection.DateParameterSelection; import li.strolch.model.query.ParameterSelection.FloatParameterSelection; @@ -34,20 +31,21 @@ import li.strolch.model.query.ParameterSelection.IntegerParameterSelection; import li.strolch.model.query.ParameterSelection.LongParameterSelection; import li.strolch.model.query.ParameterSelection.StringListParameterSelection; import li.strolch.model.query.ParameterSelection.StringParameterSelection; -import li.strolch.runtime.agent.api.ComponentContainer; +import li.strolch.model.query.ParameterSelectionVisitor; +import li.strolch.model.query.Selection; +import li.strolch.model.query.StrolchElementSelectionVisitor; +import li.strolch.persistence.api.StrolchDao; /** * @author Robert von Burg */ -public abstract class InMemoryQueryVisitor implements +public abstract class InMemoryQueryVisitor> implements StrolchElementSelectionVisitor, ParameterSelectionVisitor { - protected ComponentContainer container; protected Navigator navigator; protected List> selectors; - public InMemoryQueryVisitor(ComponentContainer container) { - this.container = container; + public InMemoryQueryVisitor() { this.selectors = new ArrayList<>(); } @@ -64,11 +62,11 @@ public abstract class InMemoryQueryVisitor newInstance(); + protected abstract InMemoryQueryVisitor newInstance(); @Override public void visitAnd(AndSelection andSelection) { - InMemoryQueryVisitor query = newInstance(); + InMemoryQueryVisitor query = newInstance(); List selections = andSelection.getSelections(); for (U selection : selections) { selection.accept(query); @@ -79,7 +77,7 @@ public abstract class InMemoryQueryVisitor void visitOr(OrSelection orSelection) { - InMemoryQueryVisitor query = newInstance(); + InMemoryQueryVisitor query = newInstance(); List selections = orSelection.getSelections(); for (U selection : selections) { selection.accept(query); diff --git a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryResourceQueryVisitor.java b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryResourceQueryVisitor.java index d52de5828..ff6c92479 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/InMemoryResourceQueryVisitor.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/InMemoryResourceQueryVisitor.java @@ -15,34 +15,25 @@ */ package li.strolch.runtime.query.inmemory; -import java.util.ArrayList; -import java.util.List; - import li.strolch.model.Resource; import li.strolch.model.query.ResourceQuery; import li.strolch.model.query.ResourceQueryVisitor; import li.strolch.model.query.StrolchTypeNavigation; -import li.strolch.runtime.agent.api.ComponentContainer; +import li.strolch.persistence.api.ResourceDao; /** * @author Robert von Burg */ -public class InMemoryResourceQueryVisitor extends InMemoryQueryVisitor implements ResourceQueryVisitor { +public class InMemoryResourceQueryVisitor extends InMemoryQueryVisitor implements + ResourceQueryVisitor { - private ComponentContainer container; - - private Navigator navigator; - private List> selectors; - - public InMemoryResourceQueryVisitor(ComponentContainer container) { - super(container); - this.container = container; - this.selectors = new ArrayList<>(); + public InMemoryResourceQueryVisitor() { + super(); } @Override - protected InMemoryQueryVisitor newInstance() { - return new InMemoryResourceQueryVisitor(this.container); + protected InMemoryQueryVisitor newInstance() { + return new InMemoryResourceQueryVisitor(); } public InMemoryQuery visit(ResourceQuery resourceQuery) { @@ -58,6 +49,6 @@ public class InMemoryResourceQueryVisitor extends InMemoryQueryVisitor @Override public void visit(StrolchTypeNavigation navigation) { - this.navigator = new ResourceTypeNavigator(navigation.getType(), this.container); + this.navigator = new ResourceTypeNavigator(navigation.getType()); } } diff --git a/src/main/java/li/strolch/runtime/query/inmemory/Navigator.java b/src/main/java/li/strolch/runtime/query/inmemory/Navigator.java index 8e18658b6..d3183475a 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/Navigator.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/Navigator.java @@ -18,12 +18,12 @@ package li.strolch.runtime.query.inmemory; import java.util.List; import li.strolch.model.StrolchElement; -import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.persistence.api.StrolchDao; /** * @author Robert von Burg */ -public interface Navigator{ +public interface Navigator { - public List navigate(StrolchTransaction tx); + public List navigate(StrolchDao dao); } diff --git a/src/main/java/li/strolch/runtime/query/inmemory/OrderTypeNavigator.java b/src/main/java/li/strolch/runtime/query/inmemory/OrderTypeNavigator.java index 1e56d2af4..aca9e8bc0 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/OrderTypeNavigator.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/OrderTypeNavigator.java @@ -16,26 +16,16 @@ package li.strolch.runtime.query.inmemory; import li.strolch.model.Order; -import li.strolch.runtime.agent.api.ComponentContainer; -import li.strolch.runtime.agent.api.ElementMap; /** * @author Robert von Burg */ public class OrderTypeNavigator extends StrolchTypeNavigator { - private ComponentContainer container; - /** * @param type */ - public OrderTypeNavigator(String type, ComponentContainer container) { + public OrderTypeNavigator(String type) { super(type); - this.container = container; - } - - @Override - protected ElementMap getElementMap() { - return this.container.getOrderMap(); } } diff --git a/src/main/java/li/strolch/runtime/query/inmemory/ResourceTypeNavigator.java b/src/main/java/li/strolch/runtime/query/inmemory/ResourceTypeNavigator.java index 4c31020be..a8e710158 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/ResourceTypeNavigator.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/ResourceTypeNavigator.java @@ -16,26 +16,16 @@ package li.strolch.runtime.query.inmemory; import li.strolch.model.Resource; -import li.strolch.runtime.agent.api.ComponentContainer; -import li.strolch.runtime.agent.api.ElementMap; /** * @author Robert von Burg */ public class ResourceTypeNavigator extends StrolchTypeNavigator { - private ComponentContainer container; - /** * @param type */ - public ResourceTypeNavigator(String type, ComponentContainer container) { + public ResourceTypeNavigator(String type) { super(type); - this.container = container; - } - - @Override - protected ElementMap getElementMap() { - return this.container.getResourceMap(); } } diff --git a/src/main/java/li/strolch/runtime/query/inmemory/StrolchTypeNavigator.java b/src/main/java/li/strolch/runtime/query/inmemory/StrolchTypeNavigator.java index 63a692cad..6a6db9fd0 100644 --- a/src/main/java/li/strolch/runtime/query/inmemory/StrolchTypeNavigator.java +++ b/src/main/java/li/strolch/runtime/query/inmemory/StrolchTypeNavigator.java @@ -18,8 +18,7 @@ package li.strolch.runtime.query.inmemory; import java.util.List; import li.strolch.model.StrolchElement; -import li.strolch.persistence.api.StrolchTransaction; -import li.strolch.runtime.agent.api.ElementMap; +import li.strolch.persistence.api.StrolchDao; /** * @author Robert von Burg @@ -33,9 +32,7 @@ public abstract class StrolchTypeNavigator implements } @Override - public List navigate(StrolchTransaction tx) { - return getElementMap().getElementsBy(tx, this.type); + public List navigate(StrolchDao dao) { + return dao.queryAll(this.type); } - - protected abstract ElementMap getElementMap(); } diff --git a/src/test/java/li/strolch/runtime/test/query/inmemory/InMemoryQueryTest.java b/src/test/java/li/strolch/runtime/test/query/inmemory/InMemoryQueryTest.java index 432fb1f49..d82108575 100644 --- a/src/test/java/li/strolch/runtime/test/query/inmemory/InMemoryQueryTest.java +++ b/src/test/java/li/strolch/runtime/test/query/inmemory/InMemoryQueryTest.java @@ -29,11 +29,13 @@ import li.strolch.model.State; import li.strolch.model.parameter.BooleanParameter; import li.strolch.model.parameter.FloatParameter; import li.strolch.model.parameter.StringParameter; +import li.strolch.persistence.inmemory.InMemoryOrderDao; +import li.strolch.persistence.inmemory.InMemoryResourceDao; import li.strolch.runtime.query.inmemory.AndSelector; +import li.strolch.runtime.query.inmemory.AnyNavigator; import li.strolch.runtime.query.inmemory.BooleanSelector; import li.strolch.runtime.query.inmemory.IdSelector; import li.strolch.runtime.query.inmemory.InMemoryQuery; -import li.strolch.runtime.query.inmemory.ListNavigator; import li.strolch.runtime.query.inmemory.NameSelector; import li.strolch.runtime.query.inmemory.OrSelector; import li.strolch.runtime.query.inmemory.ParameterSelector; @@ -52,12 +54,14 @@ public class InMemoryQueryTest { public void shouldQueryOrderById() { List orders = getOrders(); + InMemoryOrderDao dao = new InMemoryOrderDao(); + dao.saveAll(orders); InMemoryQuery orderQuery = new InMemoryQuery<>(); - orderQuery.setNavigator(new ListNavigator<>(orders)); + orderQuery.setNavigator(new AnyNavigator()); orderQuery.addSelector(new IdSelector("@1")); - List result = orderQuery.doQuery(null); + List result = orderQuery.doQuery(dao); assertEquals(1, result.size()); assertEquals("@1", result.get(0).getId()); } @@ -66,12 +70,14 @@ public class InMemoryQueryTest { public void shouldQueryResourceById() { List resources = getResources(); + InMemoryResourceDao dao = new InMemoryResourceDao(); + dao.saveAll(resources); InMemoryQuery resourceQuery = new InMemoryQuery<>(); - resourceQuery.setNavigator(new ListNavigator<>(resources)); + resourceQuery.setNavigator(new AnyNavigator()); resourceQuery.addSelector(new IdSelector("@1")); - List result = resourceQuery.doQuery(null); + List result = resourceQuery.doQuery(dao); assertEquals(1, result.size()); assertEquals("@1", result.get(0).getId()); } @@ -80,14 +86,16 @@ public class InMemoryQueryTest { public void shouldQueryResourceByIdOr() { List resources = getResources(); + InMemoryResourceDao dao = new InMemoryResourceDao(); + dao.saveAll(resources); InMemoryQuery resourceQuery = new InMemoryQuery<>(); - resourceQuery.setNavigator(new ListNavigator<>(resources)); + resourceQuery.setNavigator(new AnyNavigator()); BooleanSelector andSelector = new OrSelector<>(new IdSelector("@3"), new IdSelector("@4")); resourceQuery.addSelector(andSelector); - List result = resourceQuery.doQuery(null); + List result = resourceQuery.doQuery(dao); assertEquals(2, result.size()); assertEquals("@3", result.get(0).getId()); assertEquals("@4", result.get(1).getId()); @@ -97,16 +105,18 @@ public class InMemoryQueryTest { public void shouldQueryResourceByIdAnd() { List resources = getResources(); + InMemoryResourceDao dao = new InMemoryResourceDao(); + dao.saveAll(resources); InMemoryQuery resourceQuery = new InMemoryQuery<>(); - resourceQuery.setNavigator(new ListNavigator<>(resources)); + resourceQuery.setNavigator(new AnyNavigator()); List> andSelectors = new ArrayList<>(); andSelectors.add(new IdSelector("@3")); andSelectors.add(new NameSelector("Res 3")); BooleanSelector andSelector = new AndSelector(andSelectors); resourceQuery.addSelector(andSelector); - List result = resourceQuery.doQuery(null); + List result = resourceQuery.doQuery(dao); assertEquals(1, result.size()); assertEquals("@3", result.get(0).getId()); } @@ -115,16 +125,18 @@ public class InMemoryQueryTest { public void shouldNotQueryResourceByIdAnd() { List resources = getResources(); + InMemoryResourceDao dao = new InMemoryResourceDao(); + dao.saveAll(resources); InMemoryQuery resourceQuery = new InMemoryQuery<>(); - resourceQuery.setNavigator(new ListNavigator<>(resources)); + resourceQuery.setNavigator(new AnyNavigator()); List> andSelectors = new ArrayList<>(); andSelectors.add(new IdSelector("@3")); andSelectors.add(new NameSelector("Res 4")); BooleanSelector andSelector = new AndSelector(andSelectors); resourceQuery.addSelector(andSelector); - List result = resourceQuery.doQuery(null); + List result = resourceQuery.doQuery(dao); assertEquals(0, result.size()); } @@ -133,14 +145,16 @@ public class InMemoryQueryTest { List resources = getResources(); resources.add(getBallResource()); + InMemoryResourceDao dao = new InMemoryResourceDao(); + dao.saveAll(resources); InMemoryQuery ballQuery = new InMemoryQuery<>(); - ballQuery.setNavigator(new ListNavigator<>(resources)); - ballQuery.addSelector(ParameterSelector.stringSelector("parameters", "color", "red")); - ballQuery.addSelector(ParameterSelector.booleanSelector("parameters", "forChildren", true)); - ballQuery.addSelector(ParameterSelector.floatSelector("parameters", "diameter", 22.0)); - - List result = ballQuery.doQuery(null); + ballQuery.setNavigator(new AnyNavigator()); + ballQuery.addSelector(ParameterSelector. stringSelector("parameters", "color", "red")); + ballQuery.addSelector(ParameterSelector. booleanSelector("parameters", "forChildren", true)); + ballQuery.addSelector(ParameterSelector. floatSelector("parameters", "diameter", 22.0)); + + List result = ballQuery.doQuery(dao); assertEquals(1, result.size()); } diff --git a/src/test/java/li/strolch/runtime/test/query/inmemory/QueryTest.java b/src/test/java/li/strolch/runtime/test/query/inmemory/QueryTest.java index 3cfa19d0c..0e29ecb4e 100644 --- a/src/test/java/li/strolch/runtime/test/query/inmemory/QueryTest.java +++ b/src/test/java/li/strolch/runtime/test/query/inmemory/QueryTest.java @@ -73,11 +73,11 @@ public class QueryTest { ResourceQuery query = new ResourceQuery(new StrolchTypeNavigation("MyType")); query.addSelection(andSelection); - InMemoryResourceQueryVisitor resourceQuery = new InMemoryResourceQueryVisitor(agent.getContainer()); + InMemoryResourceQueryVisitor resourceQuery = new InMemoryResourceQueryVisitor(); InMemoryQuery inMemoryQuery = resourceQuery.visit(query); List result; try (StrolchTransaction tx = resourceMap.openTx()) { - result = inMemoryQuery.doQuery(tx); + result = inMemoryQuery.doQuery(tx.getResourceDao()); } assertEquals(1, result.size()); assertEquals("@1", result.get(0).getId()); @@ -103,11 +103,11 @@ public class QueryTest { OrderQuery query = new OrderQuery(new StrolchTypeNavigation("MyType")); query.addSelection(andSelection); - InMemoryOrderQueryVisitor orderQuery = new InMemoryOrderQueryVisitor(agent.getContainer()); + InMemoryOrderQueryVisitor orderQuery = new InMemoryOrderQueryVisitor(); InMemoryQuery inMemoryQuery = orderQuery.visit(query); List result; try (StrolchTransaction tx = orderMap.openTx()) { - result = inMemoryQuery.doQuery(tx); + result = inMemoryQuery.doQuery(tx.getOrderDao()); } assertEquals(1, result.size()); assertEquals("@1", result.get(0).getId());