From 7ece3797db2478e76d4a2ca8ea4dd8d034b464ef Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Mon, 6 Aug 2007 00:49:18 +0000 Subject: Support filters as joined and not joined from one-to-many properties. --- .../carbonado/filter/TestFilterNotJoinedFrom.java | 50 ++++++++++++++-------- 1 file changed, 33 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/test/java/com/amazon/carbonado/filter/TestFilterNotJoinedFrom.java b/src/test/java/com/amazon/carbonado/filter/TestFilterNotJoinedFrom.java index 1e97d89..6957913 100644 --- a/src/test/java/com/amazon/carbonado/filter/TestFilterNotJoinedFrom.java +++ b/src/test/java/com/amazon/carbonado/filter/TestFilterNotJoinedFrom.java @@ -23,6 +23,7 @@ import junit.framework.TestSuite; import com.amazon.carbonado.stored.Address; import com.amazon.carbonado.stored.Order; +import com.amazon.carbonado.stored.OrderItem; import com.amazon.carbonado.stored.Shipment; /** @@ -47,11 +48,11 @@ public class TestFilterNotJoinedFrom extends TestCase { Filter filter = Filter.getOpenFilter(Shipment.class); Filter.NotJoined nj = filter.notJoinedFrom("order"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); } @@ -59,11 +60,11 @@ public class TestFilterNotJoinedFrom extends TestCase { Filter filter = Filter.getClosedFilter(Shipment.class); Filter.NotJoined nj = filter.notJoinedFrom("order"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); } @@ -72,11 +73,11 @@ public class TestFilterNotJoinedFrom extends TestCase { filter = filter.bind(); Filter.NotJoined nj = filter.notJoinedFrom("order"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); filter = Filter.filterFor(Shipment.class, "order.orderTotal < ?"); @@ -88,7 +89,7 @@ public class TestFilterNotJoinedFrom extends TestCase { assertEquals(Filter.getOpenFilter(Shipment.class), nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); filter = Filter.filterFor(Shipment.class, "order.address.addressCity = ?"); @@ -117,11 +118,11 @@ public class TestFilterNotJoinedFrom extends TestCase { filter = filter.bind(); Filter.NotJoined nj = filter.notJoinedFrom("order"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); filter = Filter.filterFor @@ -136,7 +137,7 @@ public class TestFilterNotJoinedFrom extends TestCase { nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); filter = Filter.filterFor @@ -166,11 +167,11 @@ public class TestFilterNotJoinedFrom extends TestCase { filter = filter.bind(); Filter.NotJoined nj = filter.notJoinedFrom("order"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); filter = Filter.filterFor @@ -189,11 +190,11 @@ public class TestFilterNotJoinedFrom extends TestCase { filter = filter.bind(); nj = filter.notJoinedFrom("order"); - assertEquals(Filter.getOpenFilter(Order.class), nj.getNotJoinedFilter()); + assertEquals(null, nj.getNotJoinedFilter()); assertEquals(filter, nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertTrue(nj.getNotJoinedFilter() instanceof OpenFilter); + assertTrue(nj.getNotJoinedFilter() == null); assertEquals(filter, nj.getRemainderFilter()); filter = Filter.filterFor @@ -219,11 +220,11 @@ public class TestFilterNotJoinedFrom extends TestCase { filter = filter.bind(); nj = filter.notJoinedFrom("order"); - assertEquals(Filter.getOpenFilter(Order.class), nj.getNotJoinedFilter()); + assertEquals(null, nj.getNotJoinedFilter()); assertEquals(filter, nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertEquals(Filter.getOpenFilter(Address.class), nj.getNotJoinedFilter()); + assertEquals(null, nj.getNotJoinedFilter()); assertEquals(filter, nj.getRemainderFilter()); } @@ -242,7 +243,7 @@ public class TestFilterNotJoinedFrom extends TestCase { assertEquals(Filter.getOpenFilter(Shipment.class), nj.getRemainderFilter()); nj = filter.notJoinedFrom("order.address"); - assertEquals(Filter.getOpenFilter(Address.class), nj.getNotJoinedFilter()); + assertEquals(null, nj.getNotJoinedFilter()); assertEquals(filter, nj.getRemainderFilter()); filter = filter.and("order.address.customData > ?"); @@ -268,4 +269,19 @@ public class TestFilterNotJoinedFrom extends TestCase { "| order.orderTotal != ?").bind(), nj.getRemainderFilter()); } + + public void testOneToMany() { + Filter filter = Filter.filterFor + (Order.class, "orderItems.itemPrice = ? & addressID = ?"); + + Filter.NotJoined nj = filter.notJoinedFrom("orderItems"); + + assertEquals(Filter.filterFor(OrderItem.class, "itemPrice = ?").bind(), + nj.getNotJoinedFilter()); + assertEquals(Filter.filterFor(Order.class, "addressID = ?").bind(), + nj.getRemainderFilter()); + + assertEquals(Filter.filterFor(Order.class, "orderItems.itemPrice = ?").bind(), + nj.getNotJoinedFilter().asJoinedFrom(Order.class, "orderItems")); + } } -- cgit v1.2.3