r1251 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty/search wikitty-api/src/main/java/org/nuiton/wikitty/search/operators wikitty-api/src/test/java/org/nuiton/wikitty/api wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr
Author: bpoussin Date: 2011-11-08 18:38:39 +0100 (Tue, 08 Nov 2011) New Revision: 1251 Url: http://nuiton.org/repositories/revision/wikitty/1251 Log: Anomalie #1797: Change Search association implementation to work correctly Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/AssociatedRestriction.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/SubSearch.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2011-11-08 17:37:49 UTC (rev 1250) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2011-11-08 17:38:39 UTC (rev 1251) @@ -629,7 +629,8 @@ * @return sub query */ public Search associated(String foreignFieldName) { - Search search = new SubSearch(foreignFieldName, this); + Search search = new SubSearch(foreignFieldName); + subSearchs.add(search); return search; } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/AssociatedRestriction.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/AssociatedRestriction.java 2011-11-08 17:37:49 UTC (rev 1250) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/AssociatedRestriction.java 2011-11-08 17:38:39 UTC (rev 1251) @@ -28,21 +28,15 @@ private static final long serialVersionUID = 1L; - private Restriction associatedRestriction; - private Restriction embededRestriction; - private Element element; + protected Element element; + protected Restriction restriction; - public AssociatedRestriction(Restriction parentRestriction, Restriction embededRestriction, Element element) { - this.associatedRestriction = parentRestriction; - this.embededRestriction = embededRestriction; + public AssociatedRestriction(Element element, Restriction restriction) { + this.restriction = restriction; this.name = RestrictionName.ASSOCIATED; this.element = element; } - public Restriction getParentRestrictionDto() { - return associatedRestriction; - } - public Element getElement() { return element; } @@ -52,6 +46,6 @@ } public Restriction getRestriction() { - return embededRestriction; + return restriction; } } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/SubSearch.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/SubSearch.java 2011-11-08 17:37:49 UTC (rev 1250) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/SubSearch.java 2011-11-08 17:38:39 UTC (rev 1251) @@ -29,20 +29,16 @@ public class SubSearch extends Search { protected String foreignName; - protected Search parent; - public SubSearch(String foreignFieldName, Search search) { + public SubSearch(String foreignFieldName) { this.foreignName = foreignFieldName; - this.parent = search; } @Override protected Restriction getRestrictions() throws UnsupportedOperationException { return new AssociatedRestriction( - parent.criteria().getRestriction(), - super.getRestrictions(), - new Element(foreignName) - ); + new Element(foreignName), + super.getRestrictions()); } } Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java 2011-11-08 17:37:49 UTC (rev 1250) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java 2011-11-08 17:38:39 UTC (rev 1251) @@ -138,12 +138,6 @@ Assert.assertTrue( "Restriction is " + dto.getClass().getName(), embedded instanceof Equals ); checkRestriction(embedded, RestrictionName.EQUALS, "Category.name", "Hardware"); Assert.assertEquals( "Product.category", ass.getElement().getName() ); - Restriction parentRestriction = ass.getParentRestrictionDto(); - Assert.assertTrue( "Restriction is " + dto.getClass().getName(), parentRestriction instanceof And ); - And and = (And) parentRestriction; - Restriction[] dtos = and.getRestrictions().toArray(new Restriction[]{}); - Assert.assertTrue( dtos[0] instanceof Between ); - checkRestriction(dtos[1], RestrictionName.STARTS_WITH, "Product.name", "Paint"); } @Test Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java =================================================================== --- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java 2011-11-08 17:37:49 UTC (rev 1250) +++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java 2011-11-08 17:38:39 UTC (rev 1251) @@ -213,15 +213,7 @@ } generatedRestriction = new In(associated.getElement(), ids); } - Restriction parent = associated.getParentRestrictionDto(); - And and; - if ( parent instanceof And ) { - and = (And) parent; - and.getRestrictions().add( generatedRestriction ); - } else { - and = RestrictionHelper.and( Arrays.asList(new Restriction[]{ associated.getParentRestrictionDto(), generatedRestriction }) ); - } - return toSolr(and, solr); + return toSolr(generatedRestriction, solr); } private String not2solr(Not not, SolrServer solr) throws WikittyException { Modified: trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java =================================================================== --- trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-11-08 17:37:49 UTC (rev 1250) +++ trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-11-08 17:38:39 UTC (rev 1251) @@ -262,13 +262,13 @@ @Test public void testAssociativeSearch() throws Exception { - Criteria criteria = Search.query() - .bw("Product.price", "15", "25") - .sw("Product.name", "Paint") - .associated( "Product.category") - .eq("Category.name", "Hardware") - .criteria() - .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); + Search search = Search.query() + .bw("Product.price", "15", "25") + .sw("Product.name", "Paint"); + search.associated( "Product.category") + .eq("Category.name", "Hardware"); + Criteria criteria = search.criteria() + .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll();
participants (1)
-
bpoussin@users.nuiton.org