r558 - in trunk/wikitty-api/src: main/java/org/nuiton/wikitty/storage test/java/org/nuiton/wikitty/addons
Author: bpoussin Date: 2010-12-03 16:52:10 +0100 (Fri, 03 Dec 2010) New Revision: 558 Url: http://nuiton.org/repositories/revision/wikitty/558 Log: fix in inMemory implementation to support search on collection field Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/WikittyLabelUtilTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2010-12-03 15:52:09 UTC (rev 557) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2010-12-03 15:52:10 UTC (rev 558) @@ -25,6 +25,7 @@ package org.nuiton.wikitty.storage; import java.util.Collection; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -84,9 +85,22 @@ if (!w.hasField(extName[0], extName[1])) { return false; } + // recupere la valeur dans le wikitty Object o = w.getFqField(fqfieldName); + // recupere le type de la valeur FieldType t = w.getFieldType(fqfieldName); - Object value = t.getValidValue(binOp.getValue()); + // convertie la valeur a verifier dans le meme type que la valeur + // du wikitty + Object value = binOp.getValue(); + if ( !(value instanceof Collection) && t.isCollection()) { + // on doit encapsuler dans une collection, car la creation + // de la requete ajoute autant de v == o && ... que de valeurs + // dans la collection (champs multi-value solr). Mais + // dans le inmemory on doit retrouve des collections et non pas + // des objets seuls :( + value = Collections.singleton(value); + } + value = t.getValidValue(value); boolean checked = false; switch (restriction.getName()) { case EQUALS: Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/WikittyLabelUtilTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/WikittyLabelUtilTest.java 2010-12-03 15:52:09 UTC (rev 557) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/WikittyLabelUtilTest.java 2010-12-03 15:52:10 UTC (rev 558) @@ -14,19 +14,20 @@ import org.nuiton.wikitty.search.PagedResult; public class WikittyLabelUtilTest { + @Test public void testFindAllByLabel() { - WikittyConfig config = new WikittyConfig(); - WikittyService ws = WikittyServiceFactory.buildWikittyService(config); - WikittyProxy proxy = new WikittyProxy(ws); - WikittyExtension ext = ExtensionFactory.create("test", "1").addField("toto", TYPE.NUMERIC).extension(); - Wikitty w = new WikittyImpl(); - String id = w.getId(); - w.addExtension(ext); - w.setField(ext.getName(), "toto", 42); - proxy.store(w); - WikittyLabelUtil.addLabel(proxy, id, "hello"); - PagedResult<Wikitty> wikitties = WikittyLabelUtil.findAllByLabel(proxy, "hello", 0, 1); - assertEquals(wikitties.get(0), w); + WikittyConfig config = new WikittyConfig(); + WikittyService ws = WikittyServiceFactory.buildWikittyService(config); + WikittyProxy proxy = new WikittyProxy(ws); + WikittyExtension ext = ExtensionFactory.create("test", "1").addField("toto", TYPE.NUMERIC).extension(); + Wikitty w = new WikittyImpl(); + String id = w.getId(); + w.addExtension(ext); + w.setField(ext.getName(), "toto", 42); + proxy.store(w); + WikittyLabelUtil.addLabel(proxy, id, "hello"); + PagedResult<Wikitty> wikitties = WikittyLabelUtil.findAllByLabel(proxy, "hello", 0, 1); + assertEquals(wikitties.get(0), w); } }
participants (1)
-
bpoussin@users.nuiton.org