Wikitty-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- 1653 discussions
r1246 - in trunk: wikitty-api/src/test/java/org/nuiton/wikitty/api wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
by sletellier@users.nuiton.org 27 Oct '11
by sletellier@users.nuiton.org 27 Oct '11
27 Oct '11
Author: sletellier
Date: 2011-10-27 16:28:09 +0200 (Thu, 27 Oct 2011)
New Revision: 1246
Url: http://nuiton.org/repositories/revision/wikitty/1246
Log:
- Fix imports
- Fix pageResult size for pagined select search
- Add test for pagined select search
Modified:
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-27 10:45:55 UTC (rev 1245)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-27 14:28:09 UTC (rev 1246)
@@ -1136,68 +1136,6 @@
assertPagedResultSizeEquals(0, results);
}
- @Test
- public void testSelect() throws Exception {
-
- // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
- assumeNotYetImplementedInMemory();
-
- //Test with an associated search that returns nothing
- Search query = Search.query().bw("Product.price", "15", "25")
- .sw("Product.name", "Paint");
-
- Criteria selectCriteria = query.criteria();
-
- selectCriteria.setSelect("Product.category");
-
- PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria);
-
- assertPagedResultSizeEquals(2, results);
-
- //Test with an associated search that returns nothing
- query = Search.query().bw("Product.price", "15", "25")
- .sw("Product.name", "Paint");
-
- selectCriteria = query.criteria();
-
- selectCriteria.setSelect("Product.name");
-
- results = proxy.findAllByCriteria(selectCriteria);
-
- assertPagedResultSizeEquals(0, results);
- }
-
- @Test
- public void testEntitiesSelect() throws Exception {
-
- // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
- assumeNotYetImplementedInMemory();
-
- //Test with an associated search that returns nothing
- Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
- .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint");
-
- Criteria selectCriteria = query.criteria();
-
- selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY);
-
- PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
-
- assertPagedResultSizeEquals(2, results);
-
- //Test with an associated search that returns nothing
- query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
- .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint");
-
- selectCriteria = query.criteria();
-
- selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME);
-
- results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
-
- assertPagedResultSizeEquals(0, results);
- }
-
/**
* <li> monext.monfield
* <li> *.monfield
@@ -1512,17 +1450,160 @@
}
@Test
+ public void testSelect() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ Search query = Search.query().bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint");
+ Criteria selectCriteria = query.criteria();
+ selectCriteria.setSelect("Product.category");
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria);
+ assertPagedResultSizeEquals(2, results);
+
+ //Test with an associated search that returns nothing
+ query = Search.query().bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint");
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect("Product.name");
+
+ results = proxy.findAllByCriteria(selectCriteria);
+ assertPagedResultSizeEquals(0, results);
+ }
+
+ @Test
+ public void testEntitiesSelect() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
+ .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint");
+ Criteria selectCriteria = query.criteria();
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY);
+
+ PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+ assertPagedResultSizeEquals(2, results);
+
+ //Test with an associated search that returns nothing
+ query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
+ .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint");
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME);
+
+ results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+ assertPagedResultSizeEquals(0, results);
+ }
+
+// TODO sletellier 20111027 : try with more data
+ @Test
+ public void testPaginedSelect() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ Search query = Search.query().exteq(EXT_PRODUCT);
+ Criteria selectCriteria = query.criteria();
+ selectCriteria.setSelect("Product.category");
+ selectCriteria.setFirstIndex(1);
+ selectCriteria.setEndIndex(1);
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria);
+ assertPaginedPagedResultSizeEquals(1, 2, results);
+
+ query = Search.query().exteq(EXT_PRODUCT);
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect("Product.category");
+ selectCriteria.setFirstIndex(0);
+ // No limit
+ selectCriteria.setEndIndex(-1);
+
+ results = proxy.findAllByCriteria(selectCriteria);
+ assertPaginedPagedResultSizeEquals(2, 2, results);
+
+ query = Search.query().exteq(EXT_PRODUCT);
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect("Product.category");
+ selectCriteria.setFirstIndex(0);
+ selectCriteria.setEndIndex(0);
+
+ results = proxy.findAllByCriteria(selectCriteria);
+ assertPaginedPagedResultSizeEquals(1, 2, results);
+
+ query = Search.query().exteq(EXT_PRODUCT);
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect("Product.category");
+ selectCriteria.setFirstIndex(0);
+ selectCriteria.setEndIndex(1);
+
+ results = proxy.findAllByCriteria(selectCriteria);
+ assertPaginedPagedResultSizeEquals(2, 2, results);
+ }
+
+// TODO sletellier 20111027 : try with more data
+ @Test
+ public void testPaginedEntitiesSelect() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY);
+ Criteria selectCriteria = query.criteria();
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY);
+ selectCriteria.setFirstIndex(1);
+ selectCriteria.setEndIndex(1);
+
+ PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+ assertPaginedPagedResultSizeEquals(1, 2, results);
+
+ query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY);
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY);
+ selectCriteria.setFirstIndex(0);
+ // No limit
+ selectCriteria.setEndIndex(-1);
+
+ results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+ assertPaginedPagedResultSizeEquals(2, 2, results);
+
+ query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY);
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY);
+ selectCriteria.setFirstIndex(0);
+ selectCriteria.setEndIndex(0);
+
+ results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+ assertPaginedPagedResultSizeEquals(1, 2, results);
+
+ query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY);
+ selectCriteria = query.criteria();
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY);
+ selectCriteria.setFirstIndex(0);
+ selectCriteria.setEndIndex(1);
+
+ results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+ assertPaginedPagedResultSizeEquals(2, 2, results);
+ }
+
+ @Test
public void testComplexQueries() throws Exception {
//TODO JC-07-04-2011 Write test
}
// Dont use this method if criteria use pagination
protected void assertPagedResultSizeEquals(int expected, PagedResult result) {
- Assert.assertEquals(expected, result.getAll().size());
Assert.assertEquals(expected, result.size());
Assert.assertEquals(expected, result.getNumFound());
}
+ // Dont use this method if criteria use pagination
+ protected void assertPaginedPagedResultSizeEquals(int expected, int expectedNumFound, PagedResult result) {
+ Assert.assertEquals(expected, result.size());
+ Assert.assertEquals(expectedNumFound, result.getNumFound());
+ }
+
//TODO JC-07-04-2011 Write test on sortBy, facets, and with other types (date,...)
public abstract WikittyService getWikittyService();
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-27 10:45:55 UTC (rev 1245)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-27 14:28:09 UTC (rev 1246)
@@ -695,7 +695,7 @@
criteria.addFacetField(selectWikitty);
// We need no result, just facet
- criteria.setEndIndex(0);
+ criteria.setEndIndex(firstIndex);
}
// Add faceting
@@ -774,14 +774,20 @@
// Remove this one
facets.remove(select);
- // Get total num founds
+ // Total found
numFound = facetTopics.size();
- // Extract ids
- ids = new ArrayList<String>(facetTopics.size());
- for (FacetTopic topic : facetTopics) {
+ // Extract ids starting on firstIndex
+ ids = new ArrayList<String>();
+
+ // If all must be return, use nbRows
+ endIndex = (endIndex == -1 ? nbRows : endIndex);
+ for (int i = firstIndex;i <= endIndex && i < numFound;i++) {
+
+ FacetTopic topic = facetTopics.get(i);
ids.add(topic.getTopicName());
}
+
} else {
// Extract ids
1
0
Author: sletellier
Date: 2011-10-27 12:45:55 +0200 (Thu, 27 Oct 2011)
New Revision: 1245
Url: http://nuiton.org/repositories/revision/wikitty/1245
Log:
Fix site style
Modified:
trunk/src/site/rst/user/search.rst
Modified: trunk/src/site/rst/user/search.rst
===================================================================
--- trunk/src/site/rst/user/search.rst 2011-10-27 09:27:34 UTC (rev 1244)
+++ trunk/src/site/rst/user/search.rst 2011-10-27 10:45:55 UTC (rev 1245)
@@ -35,32 +35,33 @@
Pour créer une recherche, vous commencez par initier un arbre de contrainte::
-Search myQuery = Search.query();
+ Search myQuery = Search.query();
La racine est un noeud ET. Vous pouvez ensuite rajouter des contraintes ou des
sous-noeuds.
-Par exemple, la requette A ET (B OU C) se représente en arbre ::
+Par exemple, la requette A ET (B OU C) se représente en arbre::
-ET
-|- A
-`- OU
- |- B
- `- C
+ ET
+ |- A
+ `- OU
+ |- B
+ `- C
Et de manière programmatique, nous aurons (les contraintes A, B et C sont
représentées par des méthodes similaires. Elle devraient-être remplacées par les
vraies méthodes de contrainte)::
-//Ajout de la contrainte A
-myQuery.A();
+ //Ajout de la contrainte A
-//Ajout du node OU, on le récupère pour lui ajouter des fils
-Search orNode = myQuery.or();
+ myQuery.A();
-//Ajout des fils du OU
-orNode.B().C();
+ //Ajout du node OU, on le récupère pour lui ajouter des fils
+ Search orNode = myQuery.or();
+ //Ajout des fils du OU
+ orNode.B().C();
+
Les contraintes disponibles
---------------------------
@@ -139,7 +140,7 @@
On obtient le critère de recherche à partir de la requête en faisant ::
-mySearch.criteria();
+ mySearch.criteria();
Les critères de recherches permettent d'ajouter un ordre ou des facettes :
@@ -148,8 +149,9 @@
* Restrictions : restriction - Liste des restrictions du criteria.
* Selection : select - Ajout d'un select pour définir le champs des Ids à retourner.
- Note:: Peut entrainer des problèmes de performances si beaucoups de résultats sont retournés.
+ .. Note:: Peut entrainer des problèmes de performances si beaucoups de résultats sont retournés.
+
* Premier index : firstIndex - Permet de définir le premier index à retourner. Principalement utilisé pour la pagination.
* Dernier index : endIndex - Permet de définir le dernier index à retourner. Principalement utilisé pour la pagination.
1
0
r1244 - in trunk: . wikitty-api/src/test/xmi wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by sletellier@users.nuiton.org 27 Oct '11
by sletellier@users.nuiton.org 27 Oct '11
27 Oct '11
Author: sletellier
Date: 2011-10-27 11:27:34 +0200 (Thu, 27 Oct 2011)
New Revision: 1244
Url: http://nuiton.org/repositories/revision/wikitty/1244
Log:
- Dont generate impl if already in class path or if operations is found
- Clean pom
Modified:
trunk/pom.xml
trunk/wikitty-api/src/test/xmi/wikittytest.zargo
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-10-27 09:27:06 UTC (rev 1243)
+++ trunk/pom.xml 2011-10-27 09:27:34 UTC (rev 1244)
@@ -34,6 +34,36 @@
</modules>
+ <name>Wikitty</name>
+
+ <description>Wikitty multi-module project</description>
+ <inceptionYear>2009</inceptionYear>
+ <url>http://maven-site.nuiton.org/wikitty</url>
+
+ <properties>
+ <platform>nuiton.org</platform>
+ <projectId>wikitty</projectId>
+
+ <maven3Version>3.0.3</maven3Version>
+
+ <!-- common versions used in sub-poms -->
+ <eugeneVersion>2.4.1-SNAPSHOT</eugeneVersion>
+ <nuitonUtilsVersion>2.2</nuitonUtilsVersion>
+ <nuitonI18nVersion>2.4.1</nuitonI18nVersion>
+ <processPluginVersion>1.1</processPluginVersion>
+ <jettyVersion>7.4.2.v20110526</jettyVersion>
+ <struts2jqueryVersion>3.1.0</struts2jqueryVersion>
+ <struts2Version>2.2.3</struts2Version>
+ <javassistVersion>3.8.0.GA</javassistVersion>
+ <jspapiversion>2.1</jspapiversion>
+
+ <nuitonProcessessorVersion>1.2.2</nuitonProcessessorVersion>
+ <nuiton-struts2>1.3</nuiton-struts2>
+ <!--Multilanguage maven-site -->
+ <locales>fr,en</locales>
+
+ </properties>
+
<dependencyManagement>
<dependencies>
<!-- pour la communication client/serveur et la notification sur protocole cajo -->
@@ -746,12 +776,6 @@
<!-- *** Project Information ************************************* -->
<!-- ************************************************************* -->
- <name>Wikitty</name>
-
- <description>Wikitty multi-module project</description>
- <inceptionYear>2009</inceptionYear>
- <url>http://maven-site.nuiton.org/wikitty</url>
-
<developers>
<developer>
<name>Benjamin Poussin</name>
@@ -895,30 +919,6 @@
<packaging>pom</packaging>
- <properties>
- <platform>nuiton.org</platform>
- <projectId>wikitty</projectId>
-
- <maven3Version>3.0.3</maven3Version>
-
- <!-- common versions used in sub-poms -->
- <eugeneVersion>2.3.5</eugeneVersion>
- <nuitonUtilsVersion>2.2</nuitonUtilsVersion>
- <nuitonI18nVersion>2.4.1</nuitonI18nVersion>
- <processPluginVersion>1.1</processPluginVersion>
- <jettyVersion>7.4.2.v20110526</jettyVersion>
- <struts2jqueryVersion>3.1.0</struts2jqueryVersion>
- <struts2Version>2.2.3</struts2Version>
- <javassistVersion>3.8.0.GA</javassistVersion>
- <jspapiversion>2.1</jspapiversion>
-
- <nuitonProcessessorVersion>1.2.2</nuitonProcessessorVersion>
- <nuiton-struts2>1.3</nuiton-struts2>
- <!--Multilanguage maven-site -->
- <locales>fr,en</locales>
-
- </properties>
-
<!-- ************************************************************* -->
<!-- *** Build Environment ************************************** -->
<!-- ************************************************************* -->
Modified: trunk/wikitty-api/src/test/xmi/wikittytest.zargo
===================================================================
(Binary files differ)
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2011-10-27 09:27:06 UTC (rev 1243)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2011-10-27 09:27:34 UTC (rev 1244)
@@ -35,6 +35,8 @@
import java.util.Random;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.java.ObjectModelTransformerToJava;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelModifier;
@@ -49,12 +51,15 @@
*/
public class WikittyImplementationGenerator extends ObjectModelTransformerToJava {
+ /** Logger */
+ private static final Log log = LogFactory.getLog(WikittyImplementationGenerator.class);
+
protected Map<ObjectModelClass, ObjectModelClass> processedClasses =
new HashMap<ObjectModelClass, ObjectModelClass>();
@Override
public void transformFromClass(ObjectModelClass clazz) {
- if (clazz.getOperations().isEmpty()) {
+ if (isGenerateImpl(clazz)) {
if (WikittyTransformerUtil.isBusinessEntity(clazz)) {
ObjectModelClass implementation = prepareImplementation(clazz);
@@ -68,6 +73,36 @@
}
}
+ protected boolean isGenerateImpl(ObjectModelClass clazz) {
+
+ Collection<ObjectModelOperation> operations = clazz.getOperations();
+ String fqn = clazz.getQualifiedName() + "Impl";
+
+ boolean alreadyInClassPath = isInClassPath(fqn);
+ if (alreadyInClassPath) {
+
+ return false;
+ }
+
+ // On ne génère pas le impl si l'entité a des opérations
+ if (!operations.isEmpty()) {
+
+ log.info("Will not generate [" + fqn + "], there is some operations to manually implement");
+ return false;
+ }
+
+ //De même, on ne génère pas le impl si il y a des opérations venant des
+ // superclasses non implémentées
+ for (ObjectModelOperation otherOp : clazz.getAllOtherOperations(false)) {
+ if (otherOp.isAbstract()) {
+ log.info("Will not generate [" + fqn + "], there is an abstract operation [" + otherOp.getName() + "] in allOtherOperations.");
+ return false;
+ }
+ }
+
+ return true;
+ }
+
protected ObjectModelClass prepareImplementation(ObjectModelClass clazz) {
ObjectModelClass implementation = processedClasses.get(clazz);
1
0
r1243 - in trunk: src/site/rst/user wikitty-api/src/main/java/org/nuiton/wikitty wikitty-api/src/main/java/org/nuiton/wikitty/search 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
by sletellier@users.nuiton.org 27 Oct '11
by sletellier@users.nuiton.org 27 Oct '11
27 Oct '11
Author: sletellier
Date: 2011-10-27 11:27:06 +0200 (Thu, 27 Oct 2011)
New Revision: 1243
Url: http://nuiton.org/repositories/revision/wikitty/1243
Log:
- Revert task : #1785 Add select method to allow specify wikittyId return field
- Use criteria to implement select
- Fill documentation with performance warning using select
- Clean tests
Modified:
trunk/src/site/rst/user/search.rst
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java
Modified: trunk/src/site/rst/user/search.rst
===================================================================
--- trunk/src/site/rst/user/search.rst 2011-10-25 08:41:30 UTC (rev 1242)
+++ trunk/src/site/rst/user/search.rst 2011-10-27 09:27:06 UTC (rev 1243)
@@ -148,6 +148,7 @@
* Restrictions : restriction - Liste des restrictions du criteria.
* Selection : select - Ajout d'un select pour définir le champs des Ids à retourner.
+ Note:: Peut entrainer des problèmes de performances si beaucoups de résultats sont retournés.
* Premier index : firstIndex - Permet de définir le premier index à retourner. Principalement utilisé pour la pagination.
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -28,6 +28,8 @@
import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.AbstractMap.SimpleEntry;
+
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.ApplicationConfig;
@@ -585,46 +587,43 @@
BusinessEntityImpl sample =
(BusinessEntityImpl) WikittyUtil.newInstance(clazz);
-// Commented for task : #1785 Add select method to allow specify wikittyId return field
-// No restriction is added on criteria, now, type verification is make on restore
-//
-// Check will be done in restore
-//
-// Wikitty wikitty = sample.getWikitty();
-// Collection<String> extensions = wikitty.getExtensionNames();
+ Wikitty wikitty = sample.getWikitty();
+ Collection<String> extensions = wikitty.getExtensionNames();
-// List<Criteria> serviceCriterias = new ArrayList<Criteria>(criterias.size());
-// for (Criteria criteria : criterias) {
-// // on ajoute la condition sur les extensions dans le critere
-// // du coup, pour ne pas modifier le critere qui vient en parametre
-// // il faut creer un nouveau critere ...
-// Criteria serviceCriteria = null;
-// if (criteria != null) {
-// // creation de la nouvelle contrainte
-// Search search = Search.query(criteria);
-// search = search.exteq(extensions);
-//
-// // utilisation de cette nouvelle contrainte sur le nouvel objet
-// serviceCriteria = criteria.clone();
-// serviceCriteria.setRestriction(search);
-// }
-//
-// // ajout de ce criteria dans la liste de tous les criteres
-// serviceCriterias.add(serviceCriteria);
-//
-// }
+ List<Criteria> serviceCriterias = new ArrayList<Criteria>(criterias.size());
+ for (Criteria criteria : criterias) {
+ // on ajoute la condition sur les extensions dans le critere
+ // du coup, pour ne pas modifier le critere qui vient en parametre
+ // il faut creer un nouveau critere ...
+ Criteria serviceCriteria = null;
+ if (criteria != null) {
+ serviceCriteria = criteria.clone();
+
+ // Dont add contraint if using select
+ if (StringUtils.isEmpty(criteria.getSelect())) {
+
+ // utilisation de cette nouvelle contrainte sur le nouvel objet
+ // creation de la nouvelle contrainte
+ Search search = Search.query(criteria);
+ search = search.exteq(extensions);
+
+ serviceCriteria.setRestriction(search);
+ }
+ }
+
+ // ajout de ce criteria dans la liste de tous les criteres
+ serviceCriterias.add(serviceCriteria);
+ }
+
List<PagedResult<String>> pagedResult = wikittyService.findAllByCriteria(
- securityToken, criterias);
+ securityToken, serviceCriterias);
// TODO poussin 20110318 optimize cast. Try to cast all pagedResult id
// in one call to service. Currently each PagedResult.cast do a call
result = new ArrayList<PagedResult<E>>(pagedResult.size());
for (PagedResult<String> p : pagedResult) {
-
-// #1785 Add select method to allow specify wikittyId return field
-// autoconvert is set to false to keep only entities in good type
- result.add((PagedResult<E>)p.cast(this, sample.getClass(), false));
+ result.add((PagedResult<E>)p.cast(this, sample.getClass(), true));
}
}
timeLog.log(start, "findAllByCriteria<Business>(List)");
@@ -843,7 +842,10 @@
long start = TimeLog.getTime();
E result = null;
if (criteria != null) {
- result = findByCriteria(clazz, Collections.singletonList(criteria)).get(0);
+ List<E> criterias = findByCriteria(clazz, Collections.singletonList(criteria));
+ if (!criterias.isEmpty()) {
+ result = criterias.get(0);
+ }
}
timeLog.log(start, "findByCriteria<Business>(One)");
return result;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -320,32 +320,6 @@
*/
public List<String> findByCriteria(String securityToken, List<Criteria> criteria);
-// /**
-// * Looking for Wikitty that match criteria. More than one criteria can be
-// * passed in parametre, for each criteria in parametre there is a PagedResult
-// * associated with the same index.
-// *
-// * @param securityToken security token
-// * @param fqFieldName field name for result
-// * @param criteria
-// * @return
-// */
-// public List<PagedResult<String>> findAllByCriteria(
-// String securityToken, String fqFieldName, List<Criteria> criteria);
-//
-// /**
-// * First lonely (or first one) wikitty object that match criteria, if no
-// * wikitty found or first retrived is not authorized for the user return
-// * null. for each criteria in parametre there is a result
-// * associated with the same index.
-// *
-// * @param securityToken security token
-// * @param fqFieldName field name for result
-// * @param criteria
-// * @return wikitty field name value object or null
-// */
-// public List<String> findByCriteria(String securityToken, String fqFieldName, List<Criteria> criteria);
-
/*
* Classification
* Most of classification purpose is handle by extension mechanisms
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java 2011-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -75,6 +75,10 @@
*/
protected String name;
+ /**
+ * Use to return select ids
+ * Be carefull, can be long if many result is found
+ */
protected String select;
/** All restriction on fields. */
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -54,8 +54,6 @@
import java.util.List;
import java.util.Set;
-import static org.junit.Assert.assertEquals;
-
/**
* User: couteau
* Date: 05/04/11
@@ -219,7 +217,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(eqCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -236,7 +234,7 @@
PagedResult<Wikitty> results2 = proxy.findAllByCriteria(eqCriteria2);
- Assert.assertEquals(1, results2.getAll().size());
+ assertPagedResultSizeEquals(1, results2);
Wikitty resultW2 = results.getFirst();
@@ -252,7 +250,7 @@
PagedResult<Wikitty> results3 = proxy.findAllByCriteria(eqCriteria3);
- Assert.assertEquals(1, results3.getAll().size());
+ assertPagedResultSizeEquals(1, results3);
Wikitty resultW3 = results.getFirst();
@@ -271,7 +269,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, eqCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -286,7 +284,7 @@
PagedResult<ProductEntity> results2 = proxy.findAllByCriteria(ProductEntity.class, eqCriteria2);
- Assert.assertEquals(1, results2.getAll().size());
+ assertPagedResultSizeEquals(1, results2);
ProductEntity resultW2 = results.getFirst();
@@ -300,7 +298,7 @@
PagedResult<ProductEntity> results3 = proxy.findAllByCriteria(ProductEntity.class, eqCriteria3);
- Assert.assertEquals(1, results3.getAll().size());
+ assertPagedResultSizeEquals(1, results3);
ProductEntity resultW3 = results.getFirst();
@@ -316,7 +314,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(neqCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -328,7 +326,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, neqCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -341,7 +339,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -360,7 +358,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -377,7 +375,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -397,7 +395,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -415,7 +413,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -427,7 +425,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -439,7 +437,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -459,7 +457,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -477,7 +475,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -490,7 +488,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -503,7 +501,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(inCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -525,7 +523,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, inCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -545,7 +543,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(inCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -564,7 +562,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, inCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -580,7 +578,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(exteqCriteria);
- Assert.assertEquals(3, results.getAll().size());
+ assertPagedResultSizeEquals(3, results);
}
@Test
@@ -591,7 +589,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, exteqCriteria);
- Assert.assertEquals(3, results.getAll().size());
+ assertPagedResultSizeEquals(3, results);
}
@Test
@@ -602,7 +600,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(extneqCriteria);
- Assert.assertEquals(7, results.getAll().size());
+ assertPagedResultSizeEquals(7, results);
}
@@ -614,7 +612,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(ideqCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -633,7 +631,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, ideqCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -651,7 +649,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(idneqCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -663,7 +661,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, idneqCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -678,7 +676,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(likeCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -693,7 +691,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, likeCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -708,7 +706,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(likeCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
}
@Test
@@ -723,7 +721,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, likeCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
}
@Test
@@ -734,7 +732,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(swCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -753,7 +751,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, swCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -771,7 +769,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(nswCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -783,7 +781,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, nswCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@Test
@@ -795,7 +793,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(ewCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -815,7 +813,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, ewCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -833,7 +831,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(notewCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -846,7 +844,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, notewCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -859,7 +857,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(keywordCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -872,7 +870,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, keywordCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -885,7 +883,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(isNull);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
@@ -898,7 +896,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, isNull);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
@@ -911,7 +909,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(isNotNull);
- Assert.assertEquals(3, results.getAll().size());
+ assertPagedResultSizeEquals(3, results);
}
@@ -924,7 +922,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, isNotNull);
- Assert.assertEquals(3, results.getAll().size());
+ assertPagedResultSizeEquals(3, results);
}
@@ -937,7 +935,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(rFalse);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
@@ -950,7 +948,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, rFalse);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
@@ -963,7 +961,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(rTrue);
- Assert.assertEquals(3, results.getAll().size());
+ assertPagedResultSizeEquals(3, results);
}
@@ -976,7 +974,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, rTrue);
- Assert.assertEquals(3, results.getAll().size());
+ assertPagedResultSizeEquals(3, results);
}
@@ -990,7 +988,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(andCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -1004,7 +1002,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, andCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -1019,7 +1017,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -1034,7 +1032,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
}
@@ -1049,7 +1047,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
}
@Test
@@ -1063,7 +1061,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
}
@Test
@@ -1083,7 +1081,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(associatedCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
Wikitty resultW = results.getFirst();
@@ -1099,7 +1097,7 @@
results = proxy.findAllByCriteria(associatedCriteria);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
@Test
@@ -1119,7 +1117,7 @@
PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, associatedCriteria);
- Assert.assertEquals(1, results.getAll().size());
+ assertPagedResultSizeEquals(1, results);
ProductEntity resultW = results.getFirst();
@@ -1135,7 +1133,7 @@
results = proxy.findAllByCriteria(ProductEntity.class, associatedCriteria);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
@Test
@@ -1154,7 +1152,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
//Test with an associated search that returns nothing
query = Search.query().bw("Product.price", "15", "25")
@@ -1166,7 +1164,7 @@
results = proxy.findAllByCriteria(selectCriteria);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
@Test
@@ -1185,7 +1183,7 @@
PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ assertPagedResultSizeEquals(2, results);
//Test with an associated search that returns nothing
query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
@@ -1197,7 +1195,7 @@
results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
- Assert.assertEquals(0, results.getAll().size());
+ assertPagedResultSizeEquals(0, results);
}
/**
@@ -1213,22 +1211,22 @@
{
Criteria criteria = Search.query().eq("Category.name", "HardWare").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().eq("*.name", "HardWare").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(2, pagedResult.size());
+ assertPagedResultSizeEquals(2, pagedResult);
}
{
Criteria criteria = Search.query().eq("Category.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().eq("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(2, pagedResult.size());
+ assertPagedResultSizeEquals(2, pagedResult);
}
}
@@ -1245,22 +1243,22 @@
{
Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare").criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().eq("*.name", "HardWare").criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().eq("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
}
@@ -1277,22 +1275,22 @@
{
Criteria criteria = Search.query().contains("Product.colors", "Red").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().contains("*.colors", "Red").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(2, pagedResult.size());
+ assertPagedResultSizeEquals(2, pagedResult);
}
{
Criteria criteria = Search.query().contains("Product.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().contains("*.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(2, pagedResult.size());
+ assertPagedResultSizeEquals(2, pagedResult);
}
}
@@ -1309,22 +1307,22 @@
{
Criteria criteria = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_COLORS, "Red").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().contains("*.colors", "Red").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_COLORS + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().contains("*.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
}
@@ -1341,22 +1339,22 @@
{
Criteria criteria = Search.query().like("Product.name", "*Blue").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like("*.name", "*Blue").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(2, pagedResult.size());
+ assertPagedResultSizeEquals(2, pagedResult);
}
{
Criteria criteria = Search.query().like("Product.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(2, pagedResult.size());
+ assertPagedResultSizeEquals(2, pagedResult);
}
}
@@ -1373,22 +1371,22 @@
{
Criteria criteria = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*Blue").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like("*.name", "*Blue").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
}
@@ -1399,32 +1397,32 @@
{
Criteria criteria = Search.query().eq("Category.name", "HardWare").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().eq("Category.name", "hardware").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(0, pagedResult.size());
+ assertPagedResultSizeEquals(0, pagedResult);
}
{
Criteria criteria = Search.query().like("Category.name", "HardWare", Like.SearchAs.ToLowerCase).criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like("Category.name", "hardware", Like.SearchAs.ToLowerCase).criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like("Category.name", "HardWare", Like.SearchAs.AsText).criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like("Category.name", "hardware", Like.SearchAs.AsText).criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
}
@@ -1435,32 +1433,32 @@
{
Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare").criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware").criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(0, pagedResult.size());
+ assertPagedResultSizeEquals(0, pagedResult);
}
{
Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare", Like.SearchAs.ToLowerCase).criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware", Like.SearchAs.ToLowerCase).criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare", Like.SearchAs.AsText).criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
{
Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware", Like.SearchAs.AsText).criteria();
PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
- assertEquals(1, pagedResult.size());
+ assertPagedResultSizeEquals(1, pagedResult);
}
}
@@ -1509,7 +1507,7 @@
for (Wikitty w : result) {
resulted.add(w.getFieldAsInt(sortableExtName, numFieldName));
}
- assertEquals(expected, resulted);
+ Assert.assertEquals(expected, resulted);
}
}
@@ -1518,6 +1516,13 @@
//TODO JC-07-04-2011 Write test
}
+ // Dont use this method if criteria use pagination
+ protected void assertPagedResultSizeEquals(int expected, PagedResult result) {
+ Assert.assertEquals(expected, result.getAll().size());
+ Assert.assertEquals(expected, result.size());
+ Assert.assertEquals(expected, result.getNumFound());
+ }
+
//TODO JC-07-04-2011 Write test on sortBy, facets, and with other types (date,...)
public abstract WikittyService getWikittyService();
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java 2011-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -24,6 +24,7 @@
*/
package org.nuiton.wikitty.api;
+import org.junit.Ignore;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyConfig;
import org.nuiton.wikitty.WikittyService;
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-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -163,7 +163,7 @@
/*
* -============ private test utils operations ============-
*/
- protected final static Search q() {
+ protected static Search q() {
return Search.query();
}
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -684,6 +684,20 @@
}
}
+ // task : #1785 Add select method to allow specify wikittyId return field
+ // If select is not empty, add facet on field
+ String select = criteria.getSelect();
+ boolean hasSelect = StringUtils.isNotEmpty(select);
+ if (hasSelect) {
+
+ // Limit on wikitty
+ String selectWikitty = SolrUtil.getSolrFieldName(select, TYPE.WIKITTY);
+ criteria.addFacetField(selectWikitty);
+
+ // We need no result, just facet
+ criteria.setEndIndex(0);
+ }
+
// Add faceting
List<String> facetField = criteria.getFacetField();
List<Criteria> facetCriteria = criteria.getFacetCriteria();
@@ -750,26 +764,41 @@
}
}
- List<String> ids = new ArrayList<String>(solrResults.size());
- for (SolrDocument doc : solrResults) {
+ List<String> ids;
+ int numFound;
+ if (hasSelect) {
- String id;
-// #1785 Add select method to allow specify wikittyId return field
-// Using specified select (if not null) to return id
- String select = criteria.getSelect();
- if (StringUtils.isNotEmpty(select)) {
- id = SolrUtil.getStringFieldValue(doc, select, TYPE.WIKITTY);
- } else {
- id = SolrUtil.getStringFieldValue(doc, SOLR_ID);
+ // Get select facet
+ List<FacetTopic> facetTopics = facets.get(select);
+
+ // Remove this one
+ facets.remove(select);
+
+ // Get total num founds
+ numFound = facetTopics.size();
+
+ // Extract ids
+ ids = new ArrayList<String>(facetTopics.size());
+ for (FacetTopic topic : facetTopics) {
+ ids.add(topic.getTopicName());
}
- if (id != null) {
+ } else {
+
+ // Extract ids
+ ids = new ArrayList<String>(solrResults.size());
+ for (SolrDocument doc : solrResults) {
+
+ String id = SolrUtil.getStringFieldValue(doc, SOLR_ID);
ids.add(id);
}
+
+ // Get total num found
+ numFound = (int)resp.getResults().getNumFound();
}
- int numFound = (int)resp.getResults().getNumFound();
+ // Build paged result
PagedResult<String> result = new PagedResult<String>(
- firstIndex, numFound, queryString, facets, ids);
+ firstIndex, numFound, queryString, facets, ids);
return result;
} catch (SolrServerException eee) {
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-10-25 08:41:30 UTC (rev 1242)
+++ trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-10-27 09:27:06 UTC (rev 1243)
@@ -27,6 +27,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.nuiton.wikitty.storage.solr.WikittySolrConstant.SOLR_QUERY_PARSER;
import java.util.ArrayList;
import java.util.Calendar;
@@ -35,6 +36,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.solr.client.solrj.SolrQuery;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -262,47 +264,17 @@
@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);
+ 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);
- PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
- List<String> list = result.getAll();
- assertEquals( 2, list.size() );
- }
- {
- Criteria criteria = Search.query()
- .bw("Product.price", "15", "25")
- .sw("Product.name", "Paint")
- .criteria()
- .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
-
- criteria.setSelect("Product.category");
- PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
- List<String> list = result.getAll();
-
- // Must return nothing
- assertEquals( 3, list.size() );
- }
- {
- Criteria criteria = Search.query()
- .bw("Product.price", "15", "25")
- .sw("Product.name", "Paint")
- .criteria()
- .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
-
- criteria.setSelect("Product.name");
- PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
- List<String> list = result.getAll();
-
- // Must return nothing
- assertEquals( 0, list.size() );
- }
+ PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
+ List<String> list = result.getAll();
+ assertEquals( 2, list.size() );
}
@Test
1
0
Author: sletellier
Date: 2011-10-25 10:41:30 +0200 (Tue, 25 Oct 2011)
New Revision: 1242
Url: http://nuiton.org/repositories/revision/wikitty/1242
Log:
- #1464 Up to date spec documentation : for criteria
Modified:
trunk/src/site/rst/user/search.rst
Modified: trunk/src/site/rst/user/search.rst
===================================================================
--- trunk/src/site/rst/user/search.rst 2011-10-25 08:40:59 UTC (rev 1241)
+++ trunk/src/site/rst/user/search.rst 2011-10-25 08:41:30 UTC (rev 1242)
@@ -137,11 +137,34 @@
Les critères
------------
-Les critères de recherches permettent d'ajouter un ordre ou des facettes,. On
-obtient le critère de recherche à partir de la requête en faisant ::
+On obtient le critère de recherche à partir de la requête en faisant ::
mySearch.criteria();
+Les critères de recherches permettent d'ajouter un ordre ou des facettes :
+
+* Nom : name - Nommage du criteria.
+
+* Restrictions : restriction - Liste des restrictions du criteria.
+
+* Selection : select - Ajout d'un select pour définir le champs des Ids à retourner.
+
+* Premier index : firstIndex - Permet de définir le premier index à retourner. Principalement utilisé pour la pagination.
+
+* Dernier index : endIndex - Permet de définir le dernier index à retourner. Principalement utilisé pour la pagination.
+
+* [TODO] facetMinCount
+
+* [TODO] facetLimit
+
+* [TODO] facetCriteria
+
+* [TODO] facetField
+
+* Tri : sortAscending - Ajout d'un ou plusieurs champs pour le tri ascendant du résultat.
+
+* Tri : sortDescending - Ajout d'un ou plusieurs champs pour le tri descendant du résultat.
+
La recherche
------------
1
0
r1241 - trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
by sletellier@users.nuiton.org 25 Oct '11
by sletellier@users.nuiton.org 25 Oct '11
25 Oct '11
Author: sletellier
Date: 2011-10-25 10:40:59 +0200 (Tue, 25 Oct 2011)
New Revision: 1241
Url: http://nuiton.org/repositories/revision/wikitty/1241
Log:
- #1785 Add select method to allow specify wikittyId return field
Modified:
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-25 08:38:14 UTC (rev 1240)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-25 08:40:59 UTC (rev 1241)
@@ -754,6 +754,8 @@
for (SolrDocument doc : solrResults) {
String id;
+// #1785 Add select method to allow specify wikittyId return field
+// Using specified select (if not null) to return id
String select = criteria.getSelect();
if (StringUtils.isNotEmpty(select)) {
id = SolrUtil.getStringFieldValue(doc, select, TYPE.WIKITTY);
1
0
r1240 - in trunk/wikitty-solr/src: main/java/org/nuiton/wikitty/storage/solr test/java/org/nuiton/wikitty/storage/solr
by sletellier@users.nuiton.org 25 Oct '11
by sletellier@users.nuiton.org 25 Oct '11
25 Oct '11
Author: sletellier
Date: 2011-10-25 10:38:14 +0200 (Tue, 25 Oct 2011)
New Revision: 1240
Url: http://nuiton.org/repositories/revision/wikitty/1240
Log:
- Improve associated tests
- Fix javadoc
Modified:
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java 2011-10-25 08:37:08 UTC (rev 1239)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java 2011-10-25 08:38:14 UTC (rev 1240)
@@ -411,7 +411,6 @@
* get value of field in SolrDocument, field must have only one value
* @param d
* @param fieldname
- * @param type
* @return
*/
static public String getStringFieldValue(SolrInputDocument d, String fieldname) {
@@ -439,7 +438,6 @@
* get value of field in SolrDocument, field must have only one value
* @param d
* @param fieldname
- * @param type
* @return
*/
static public String getStringFieldValue(SolrDocument d, String fieldname) {
@@ -466,7 +464,6 @@
* get value of field in SolrDocument, field must have only one value
* @param d
* @param fieldname
- * @param type
* @return
*/
static public Integer getIntFieldValue(SolrDocument d, String fieldname) {
@@ -575,7 +572,7 @@
* If value is collection or array get only the first element, else
* juste return value.
*
- * @param o
+ * @param value
* @return
*/
static public Object getOneValue(Object value) {
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-25 08:37:08 UTC (rev 1239)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-10-25 08:38:14 UTC (rev 1240)
@@ -35,6 +35,7 @@
import java.util.Map;
import java.util.Set;
+import com.ctc.wstx.util.StringUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.solr.client.solrj.SolrQuery;
@@ -751,8 +752,17 @@
List<String> ids = new ArrayList<String>(solrResults.size());
for (SolrDocument doc : solrResults) {
- String id = SolrUtil.getStringFieldValue(doc, SOLR_ID);
- ids.add(id);
+
+ String id;
+ String select = criteria.getSelect();
+ if (StringUtils.isNotEmpty(select)) {
+ id = SolrUtil.getStringFieldValue(doc, select, TYPE.WIKITTY);
+ } else {
+ id = SolrUtil.getStringFieldValue(doc, SOLR_ID);
+ }
+ if (id != null) {
+ ids.add(id);
+ }
}
int numFound = (int)resp.getResults().getNumFound();
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-10-25 08:37:08 UTC (rev 1239)
+++ trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-10-25 08:38:14 UTC (rev 1240)
@@ -40,7 +40,6 @@
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
-import org.nuiton.wikitty.entities.FieldType;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.FacetTopic;
import org.nuiton.wikitty.search.PagedResult;
@@ -263,17 +262,47 @@
@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);
+ {
+ 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);
- PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
- List<String> list = result.getAll();
- assertEquals( 2, list.size() );
+ PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
+ List<String> list = result.getAll();
+ assertEquals( 2, list.size() );
+ }
+ {
+ Criteria criteria = Search.query()
+ .bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint")
+ .criteria()
+ .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
+
+ criteria.setSelect("Product.category");
+ PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
+ List<String> list = result.getAll();
+
+ // Must return nothing
+ assertEquals( 3, list.size() );
+ }
+ {
+ Criteria criteria = Search.query()
+ .bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint")
+ .criteria()
+ .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
+
+ criteria.setSelect("Product.name");
+ PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0);
+ List<String> list = result.getAll();
+
+ // Must return nothing
+ assertEquals( 0, list.size() );
+ }
}
@Test
1
0
r1239 - in trunk/wikitty-api: . src/main/java/org/nuiton/wikitty src/main/java/org/nuiton/wikitty/search src/test/java/org/nuiton/wikitty/api src/test/xmi
by sletellier@users.nuiton.org 25 Oct '11
by sletellier@users.nuiton.org 25 Oct '11
25 Oct '11
Author: sletellier
Date: 2011-10-25 10:37:08 +0200 (Tue, 25 Oct 2011)
New Revision: 1239
Url: http://nuiton.org/repositories/revision/wikitty/1239
Log:
- #1785 Add select method to allow specify wikittyId return field
- Reactivate test model generation
- Include BusinessEntity in search test
Modified:
trunk/wikitty-api/pom.xml
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
trunk/wikitty-api/src/test/xmi/wikittytest.zargo
Modified: trunk/wikitty-api/pom.xml
===================================================================
--- trunk/wikitty-api/pom.xml 2011-10-21 16:21:57 UTC (rev 1238)
+++ trunk/wikitty-api/pom.xml 2011-10-25 08:37:08 UTC (rev 1239)
@@ -171,7 +171,7 @@
<goal>smart-generate</goal>
</goals>
</execution>
- <!-- <execution>
+ <execution>
<id>test-generation</id>
<phase>generate-test-sources</phase>
<configuration>
@@ -188,7 +188,7 @@
<goals>
<goal>smart-generate</goal>
</goals>
- </execution> -->
+ </execution>
</executions>
</plugin>
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-10-21 16:21:57 UTC (rev 1238)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-10-25 08:37:08 UTC (rev 1239)
@@ -424,18 +424,16 @@
// extension wanted by BusinessEntity (clazz)
// is not in wikitty, then wikitty is not good type
// for business
- result = null;
+ dto = null;
break;
}
}
- // le break au dessus permet de soritr d'une boucle
- // met si result est null il faut sortir de la methode et donc
- // sortir de la deuxieme boucle
- if (result == null) {
- break;
- }
}
- result.add(dto);
+
+ // Add only entity in good types
+ if (dto != null) {
+ result.add(dto);
+ }
}
}
timeLog.log(start, "restore<list>");
@@ -587,37 +585,46 @@
BusinessEntityImpl sample =
(BusinessEntityImpl) WikittyUtil.newInstance(clazz);
- Wikitty wikitty = sample.getWikitty();
- Collection<String> extensions = wikitty.getExtensionNames();
+// Commented for task : #1785 Add select method to allow specify wikittyId return field
+// No restriction is added on criteria, now, type verification is make on restore
+//
+// Check will be done in restore
+//
+// Wikitty wikitty = sample.getWikitty();
+// Collection<String> extensions = wikitty.getExtensionNames();
- List<Criteria> serviceCriterias = new ArrayList<Criteria>(criterias.size());
- for (Criteria criteria : criterias) {
- // on ajoute la condition sur les extensions dans le critere
- // du coup, pour ne pas modifier le critere qui vient en parametre
- // il faut creer un nouveau critere ...
- Criteria serviceCriteria = null;
- if (criteria != null) {
- // creation de la nouvelle contrainte
- Search search = Search.query(criteria);
- search = search.exteq(extensions);
+// List<Criteria> serviceCriterias = new ArrayList<Criteria>(criterias.size());
+// for (Criteria criteria : criterias) {
+// // on ajoute la condition sur les extensions dans le critere
+// // du coup, pour ne pas modifier le critere qui vient en parametre
+// // il faut creer un nouveau critere ...
+// Criteria serviceCriteria = null;
+// if (criteria != null) {
+// // creation de la nouvelle contrainte
+// Search search = Search.query(criteria);
+// search = search.exteq(extensions);
+//
+// // utilisation de cette nouvelle contrainte sur le nouvel objet
+// serviceCriteria = criteria.clone();
+// serviceCriteria.setRestriction(search);
+// }
+//
+// // ajout de ce criteria dans la liste de tous les criteres
+// serviceCriterias.add(serviceCriteria);
+//
+// }
- // utilisation de cette nouvelle contrainte sur le nouvel objet
- serviceCriteria = criteria.clone();
- serviceCriteria.setRestriction(search);
- }
-
- // ajout de ce criteria dans la liste de tous les criteres
- serviceCriterias.add(serviceCriteria);
- }
-
List<PagedResult<String>> pagedResult = wikittyService.findAllByCriteria(
- securityToken, serviceCriterias);
+ securityToken, criterias);
// TODO poussin 20110318 optimize cast. Try to cast all pagedResult id
// in one call to service. Currently each PagedResult.cast do a call
result = new ArrayList<PagedResult<E>>(pagedResult.size());
for (PagedResult<String> p : pagedResult) {
- result.add((PagedResult<E>)p.cast(this, sample.getClass(), true));
+
+// #1785 Add select method to allow specify wikittyId return field
+// autoconvert is set to false to keep only entities in good type
+ result.add((PagedResult<E>)p.cast(this, sample.getClass(), false));
}
}
timeLog.log(start, "findAllByCriteria<Business>(List)");
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-10-21 16:21:57 UTC (rev 1238)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-10-25 08:37:08 UTC (rev 1239)
@@ -320,6 +320,32 @@
*/
public List<String> findByCriteria(String securityToken, List<Criteria> criteria);
+// /**
+// * Looking for Wikitty that match criteria. More than one criteria can be
+// * passed in parametre, for each criteria in parametre there is a PagedResult
+// * associated with the same index.
+// *
+// * @param securityToken security token
+// * @param fqFieldName field name for result
+// * @param criteria
+// * @return
+// */
+// public List<PagedResult<String>> findAllByCriteria(
+// String securityToken, String fqFieldName, List<Criteria> criteria);
+//
+// /**
+// * First lonely (or first one) wikitty object that match criteria, if no
+// * wikitty found or first retrived is not authorized for the user return
+// * null. for each criteria in parametre there is a result
+// * associated with the same index.
+// *
+// * @param securityToken security token
+// * @param fqFieldName field name for result
+// * @param criteria
+// * @return wikitty field name value object or null
+// */
+// public List<String> findByCriteria(String securityToken, String fqFieldName, List<Criteria> criteria);
+
/*
* Classification
* Most of classification purpose is handle by extension mechanisms
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java 2011-10-21 16:21:57 UTC (rev 1238)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java 2011-10-25 08:37:08 UTC (rev 1239)
@@ -75,6 +75,8 @@
*/
protected String name;
+ protected String select;
+
/** All restriction on fields. */
protected Restriction restriction;
@@ -144,6 +146,10 @@
}
}
+ if (select != null) {
+ clone.select = select;
+ }
+
return clone;
} catch (CloneNotSupportedException eee) {
throw new WikittyException("Can't clone criteria", eee);
@@ -212,6 +218,14 @@
this.name = name;
}
+ public String getSelect() {
+ return select;
+ }
+
+ public void setSelect(String select) {
+ this.select = select;
+ }
+
public int getFirstIndex() {
return firstIndex;
}
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-10-21 16:21:57 UTC (rev 1238)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2011-10-25 08:37:08 UTC (rev 1239)
@@ -623,9 +623,10 @@
}
/**
+ * Add {@link SubSearch} to allow search on association (like sql join)
*
- * @param foreignFieldName
- * @return
+ * @param foreignFieldName association fieldName
+ * @return sub query
*/
public Search associated(String foreignFieldName) {
Search search = new SubSearch(foreignFieldName, this);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-21 16:21:57 UTC (rev 1238)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-25 08:37:08 UTC (rev 1239)
@@ -33,8 +33,12 @@
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.CategoryEntity;
+import org.nuiton.wikitty.entities.CategoryEntityImpl;
import org.nuiton.wikitty.entities.ExtensionFactory;
import org.nuiton.wikitty.entities.FieldType;
+import org.nuiton.wikitty.entities.ProductEntity;
+import org.nuiton.wikitty.entities.ProductEntityImpl;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.entities.WikittyImpl;
@@ -46,7 +50,9 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import static org.junit.Assert.assertEquals;
@@ -67,6 +73,7 @@
public static final String CATEGORY_NAME = "name";
public static final String VERSION = "3.0";
public static String W_ID ="";
+ public static String W_ENTITY_ID ="";
protected WikittyProxy proxy = new WikittyProxy(getWikittyService());
@@ -118,7 +125,7 @@
product1.setField(EXT_PRODUCT, PRODUCT_NAME, "Paint");
product1.setField(EXT_PRODUCT, PRODUCT_PRICE, 20);
product1.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category1.getId());
- List<String> colors1 = new ArrayList<String>();
+ Set<String> colors1 = new HashSet<String>();
colors1.add("Blue");
colors1.add("Black");
product1.setField(EXT_PRODUCT, PRODUCT_COLOR, colors1);
@@ -130,7 +137,7 @@
product2.setField(EXT_PRODUCT, PRODUCT_NAME, "Screwdriver");
product2.setField(EXT_PRODUCT, PRODUCT_PRICE, 3);
product2.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category2.getId());
- List<String> colors2 = new ArrayList<String>();
+ Set<String> colors2 = new HashSet<String>();
colors2.add("Red");
colors2.add("Black");
product2.setField(EXT_PRODUCT, PRODUCT_COLOR, colors2);
@@ -142,13 +149,57 @@
product3.setField(EXT_PRODUCT, PRODUCT_NAME, "Paint Blue");
product3.setField(EXT_PRODUCT, PRODUCT_PRICE, 22);
product3.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category2.getId());
- List<String> colors3 = new ArrayList<String>();
+ Set<String> colors3 = new HashSet<String>();
colors3.add("Blue");
product3.setField(EXT_PRODUCT, PRODUCT_COLOR, colors3);
proxy.store(product3);
W_ID = product3.getId();
+ ///////////////////////////////////////////////////////////////////////
+ // CREATE CATEGORIES ENTITIES //
+ ///////////////////////////////////////////////////////////////////////
+
+ //Create wikitty category named "Hardware"
+ CategoryEntity categoryEntity1 = new CategoryEntityImpl();
+ categoryEntity1.setName("HardWare");
+ proxy.store(categoryEntity1);
+
+ //Create wikitty category named "Wrong category"
+ CategoryEntity categoryEntity2 = new CategoryEntityImpl();
+ categoryEntity2.setName("Wrong category");
+ proxy.store(categoryEntity2);
+
+ ///////////////////////////////////////////////////////////////////////
+ // CREATE PRODUCTS ENTITIES //
+ ///////////////////////////////////////////////////////////////////////
+
+ //Create product named Paint, price is 20 category is category1
+ ProductEntity productEntity1 = new ProductEntityImpl();
+ productEntity1.setName("Paint");
+ productEntity1.setPrice(20);
+ productEntity1.setCategoryEntity(categoryEntity1.getWikittyId());
+ productEntity1.setColors(colors1);
+ proxy.store(productEntity1);
+
+ //Create product named Screwdriver, price is 3, category is category2
+ ProductEntity productEntity2 = new ProductEntityImpl();
+ productEntity2.setName("Screwdriver");
+ productEntity2.setPrice(3);
+ productEntity2.setCategoryEntity(categoryEntity2.getWikittyId());
+ productEntity2.setColors(colors2);
+ proxy.store(productEntity2);
+
+ //Create product named Paint Blue, price is 22, category is category2
+ ProductEntity productEntity3 = new ProductEntityImpl();
+ productEntity3.setName("Paint Blue");
+ productEntity3.setPrice(22);
+ productEntity3.setCategoryEntity(categoryEntity2.getWikittyId());
+ productEntity3.setColors(colors3);
+ proxy.store(productEntity3);
+
+ W_ENTITY_ID = productEntity3.getWikittyId();
+
}
protected void assumeNotYetImplementedInMemory() {
@@ -212,18 +263,76 @@
}
@Test
+ public void testEntitiesEq() throws Exception {
+
+ Search query = Search.query().eq(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3");
+
+ Criteria eqCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, eqCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getName());
+ Assert.assertEquals(3, resultW.getPrice());
+
+
+ //Test using pattern matching
+ Search query2 = Search.query().eq(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri*");
+
+ Criteria eqCriteria2 = query2.criteria();
+
+ PagedResult<ProductEntity> results2 = proxy.findAllByCriteria(ProductEntity.class, eqCriteria2);
+
+ Assert.assertEquals(1, results2.getAll().size());
+
+ ProductEntity resultW2 = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW2.getName());
+ Assert.assertEquals(3, resultW2.getPrice());
+
+ //Test using pattern matching
+ Search query3 = Search.query().eq(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri?er");
+
+ Criteria eqCriteria3 = query3.criteria();
+
+ PagedResult<ProductEntity> results3 = proxy.findAllByCriteria(ProductEntity.class, eqCriteria3);
+
+ Assert.assertEquals(1, results3.getAll().size());
+
+ ProductEntity resultW3 = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW3.getName());
+ Assert.assertEquals(3, resultW3.getPrice());
+ }
+
+ @Test
public void testNeq() throws Exception {
- Search query = Search.query().neq("Product.price", "3");
+ Search query = Search.query().exteq(EXT_PRODUCT).neq("Product.price", "3");
Criteria neqCriteria = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(neqCriteria);
- Assert.assertEquals(4, results.getAll().size());
+ Assert.assertEquals(2, results.getAll().size());
}
@Test
+ public void testEntitiesNeq() throws Exception {
+ Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY).neq(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3");
+
+ Criteria neqCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, neqCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
public void testBw() throws Exception {
Search query = Search.query().bw("Product.price", "3", "5");
@@ -243,6 +352,23 @@
}
@Test
+ public void testEntitiesBw() throws Exception {
+
+ Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3", "5");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getName());
+ Assert.assertEquals(3, resultW.getPrice());
+ }
+
+ @Test
public void testLt() throws Exception {
Search query = Search.query().lt("Product.price", "20");
@@ -262,7 +388,25 @@
}
- @Test
+ @Test
+ public void testEntitiesLt() throws Exception {
+
+ Search query = Search.query().lt(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getName());
+ Assert.assertEquals(3, resultW.getPrice());
+
+ }
+
+ @Test
public void testLe() throws Exception {
Search query = Search.query().le("Product.price", "20");
@@ -274,7 +418,19 @@
Assert.assertEquals(2, results.getAll().size());
}
- @Test
+ @Test
+ public void testEntitiesLe() throws Exception {
+
+ Search query = Search.query().le(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+ }
+
+ @Test
public void testGt() throws Exception {
Search query = Search.query().gt("Product.price", "20");
@@ -294,7 +450,25 @@
}
- @Test
+ @Test
+ public void testEntitiesGt() throws Exception {
+
+ Search query = Search.query().gt(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Paint Blue", resultW.getName());
+ Assert.assertEquals(22, resultW.getPrice());
+
+ }
+
+ @Test
public void testGe() throws Exception {
Search query = Search.query().ge("Product.price", "20");
@@ -308,6 +482,19 @@
}
@Test
+ public void testEntitiesGe() throws Exception {
+
+ Search query = Search.query().ge(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
public void testContains() throws Exception {
Search query = Search.query().contains("Product.price", "3");
@@ -330,6 +517,26 @@
}
@Test
+ public void testEntitiesContains() throws Exception {
+
+ Search query = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3");
+
+ Criteria inCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, inCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getName());
+ Assert.assertEquals(3, resultW.getPrice());
+
+ //TODO JC-07-04-2011 do a test with multi-valued field
+
+ }
+
+ @Test
public void testIn() throws Exception {
Search query = Search.query().in("Product.price", "1", "2", "3", "4", "5");
@@ -349,6 +556,23 @@
}
@Test
+ public void testEntitiesIn() throws Exception {
+
+ Search query = Search.query().in(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "1", "2", "3", "4", "5");
+
+ Criteria inCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, inCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getName());
+ Assert.assertEquals(3, resultW.getPrice());
+ }
+
+ @Test
public void testExteq() throws Exception {
Search query = Search.query().exteq(EXT_PRODUCT);
@@ -360,6 +584,17 @@
}
@Test
+ public void testEntitiesExteq() throws Exception {
+ Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY);
+
+ Criteria exteqCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, exteqCriteria);
+
+ Assert.assertEquals(3, results.getAll().size());
+ }
+
+ @Test
public void testExtneq() throws Exception {
Search query = Search.query().extneq(EXT_PRODUCT);
@@ -367,7 +602,7 @@
PagedResult<Wikitty> results = proxy.findAllByCriteria(extneqCriteria);
- Assert.assertEquals(2, results.getAll().size());
+ Assert.assertEquals(7, results.getAll().size());
}
@@ -391,33 +626,77 @@
}
@Test
+ public void testEntitiesIdeq() throws Exception {
+ Search query = Search.query().ideq(W_ENTITY_ID);
+
+ Criteria ideqCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, ideqCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Paint Blue", resultW.getName());
+ Assert.assertEquals(22, resultW.getPrice());
+
+ }
+
+ @Test
public void testIdneq() throws Exception {
- Search query = Search.query().idneq(W_ID);
+ Search query = Search.query().exteq(EXT_PRODUCT).idneq(W_ID);
Criteria idneqCriteria = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(idneqCriteria);
- Assert.assertEquals(4, results.getAll().size());
+ Assert.assertEquals(2, results.getAll().size());
}
@Test
+ public void testEntitiesIdneq() throws Exception {
+
+ Search query = Search.query().idneq(W_ENTITY_ID);
+
+ Criteria idneqCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, idneqCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+ }
+
+ @Test
public void testUnlike() throws Exception {
// FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
assumeNotYetImplementedInMemory();
- Search query = Search.query().unlike("Product.name", "*dri*");
+ Search query = Search.query().exteq(EXT_PRODUCT).unlike("Product.name", "*dri*");
Criteria likeCriteria = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(likeCriteria);
- Assert.assertEquals(4, results.getAll().size());
+ Assert.assertEquals(2, results.getAll().size());
}
@Test
+ public void testEntitiesUnlike() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ Search query = Search.query().unlike(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri*");
+
+ Criteria likeCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, likeCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+ }
+
+ @Test
public void testLike() throws Exception {
// FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
@@ -433,6 +712,21 @@
}
@Test
+ public void testEntitiesLike() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ Search query = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri*");
+
+ Criteria likeCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, likeCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+ }
+
+ @Test
public void testSw() throws Exception {
Search query = Search.query().sw("Product.name", "Scre");
@@ -452,18 +746,47 @@
}
@Test
+ public void testEntitiesSw() throws Exception {
+ Search query = Search.query().sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Scre");
+
+ Criteria swCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, swCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getName());
+ Assert.assertEquals(3, resultW.getPrice());
+
+ }
+
+ @Test
public void testNsw() throws Exception {
- Search query = Search.query().nsw("Product.name", "Scre");
+ Search query = Search.query().exteq(EXT_PRODUCT).nsw("Product.name", "Scre");
Criteria nswCriteria = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(nswCriteria);
- Assert.assertEquals(4, results.getAll().size());
+ Assert.assertEquals(2, results.getAll().size());
}
@Test
+ public void testEntitiesNsw() throws Exception {
+
+ Search query = Search.query().nsw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Scre");
+
+ Criteria nswCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, nswCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+ }
+
+ @Test
public void testEw() throws Exception {
Search query = Search.query().ew("Product.name", "ver");
@@ -484,22 +807,53 @@
}
@Test
+ public void testEntitiesEw() throws Exception {
+
+ Search query = Search.query().ew(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "ver");
+
+ Criteria ewCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, ewCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getName());
+ Assert.assertEquals(3, resultW.getPrice());
+
+ }
+
+ @Test
public void testNotew() throws Exception {
- Search query = Search.query().notew("Product.name", "ver");
+ Search query = Search.query().exteq(EXT_PRODUCT).notew("Product.name", "ver");
Criteria notewCriteria = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(notewCriteria);
- Assert.assertEquals(4, results.getAll().size());
+ Assert.assertEquals(2, results.getAll().size());
}
@Test
+ public void testEntitiesNotew() throws Exception {
+
+ Search query = Search.query().notew(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "ver");
+
+ Criteria notewCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, notewCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
public void testKeyword() throws Exception {
- Search query = Search.query().keyword("Paint");
+ Search query = Search.query().exteq(EXT_PRODUCT).keyword("Paint");
Criteria keywordCriteria = query.criteria();
@@ -510,6 +864,19 @@
}
@Test
+ public void testEntitiesKeyword() throws Exception {
+
+ Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY).keyword("Paint");
+
+ Criteria keywordCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, keywordCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
public void testIsNull() throws Exception {
Search query = Search.query().isNull("Product.name");
@@ -523,6 +890,19 @@
}
@Test
+ public void testEntitiesIsNull() throws Exception {
+
+ Search query = Search.query().isNull(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME);
+
+ Criteria isNull = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, isNull);
+
+ Assert.assertEquals(0, results.getAll().size());
+
+ }
+
+ @Test
public void testIsNotNull() throws Exception {
Search query = Search.query().isNotNull("Product.name");
@@ -536,6 +916,19 @@
}
@Test
+ public void testEntitiesIsNotNull() throws Exception {
+
+ Search query = Search.query().isNotNull(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME);
+
+ Criteria isNotNull = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, isNotNull);
+
+ Assert.assertEquals(3, results.getAll().size());
+
+ }
+
+ @Test
public void testFalse() throws Exception {
Search query = Search.query().rFalse();
@@ -549,19 +942,45 @@
}
@Test
+ public void testEntitiesFalse() throws Exception {
+
+ Search query = Search.query().rFalse();
+
+ Criteria rFalse = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, rFalse);
+
+ Assert.assertEquals(0, results.getAll().size());
+
+ }
+
+ @Test
public void testTrue() throws Exception {
- Search query = Search.query().rTrue();
+ Search query = Search.query().exteq(EXT_PRODUCT).rTrue();
Criteria rTrue = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(rTrue);
- Assert.assertEquals(5, results.getAll().size());
+ Assert.assertEquals(3, results.getAll().size());
}
@Test
+ public void testEntitiesTrue() throws Exception {
+
+ Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY).rTrue();
+
+ Criteria rTrue = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, rTrue);
+
+ Assert.assertEquals(3, results.getAll().size());
+
+ }
+
+ @Test
public void testAnd() throws Exception {
Search query = Search.query().and().bw("Product.price", "15", "25")
@@ -576,6 +995,20 @@
}
@Test
+ public void testEntitiesAnd() throws Exception {
+
+ Search query = Search.query().and().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
+ .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint");
+
+ Criteria andCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, andCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
public void testOr() throws Exception {
Search query = Search.query();
@@ -591,20 +1024,49 @@
}
@Test
+ public void testEntitiesOr() throws Exception {
+
+ Search query = Search.query();
+
+ query.or().gt(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20").sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Screw");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
public void testNot() throws Exception {
Search query = Search.query();
- query.not().ge("Product.price", "20");
+ query.exteq(EXT_PRODUCT).not().ge("Product.price", "20");
Criteria bwCriteria = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
- Assert.assertEquals(3, results.getAll().size());
+ Assert.assertEquals(1, results.getAll().size());
}
@Test
+ public void testEntitiesNot() throws Exception {
+
+ Search query = Search.query();
+
+ query.exteq(ProductEntity.EXT_PRODUCTENTITY).not().ge(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+ }
+
+ @Test
public void testAssociated() throws Exception {
/* Following request mean is :
@@ -628,8 +1090,6 @@
Assert.assertEquals("Paint", resultW.getFieldAsString(EXT_PRODUCT, PRODUCT_NAME));
Assert.assertEquals(20, resultW.getFieldAsInt(EXT_PRODUCT, PRODUCT_PRICE));
-
-
//Test with an associated search that returns nothing
query = Search.query().bw("Product.price", "15", "25")
.sw("Product.name", "Paint").associated("Product.category")
@@ -642,14 +1102,111 @@
Assert.assertEquals(0, results.getAll().size());
}
+ @Test
+ public void testEntitiesAssociated() throws Exception {
- /**
- * <li> monext.monfield
- * <li> *.monfield
- * <li> monext.monfield.NUMERIC
- * <li> *.monfield.NUMERIC
- **/
- @Test
+ /* Following request mean is :
+ * Looking for any product which price is between 15 and 25,
+ * and name starts with 'Paint',
+ * and with an associated category which name is 'Hardware'
+ */
+
+ Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
+ .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint").associated(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY)
+ .eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare");
+
+ Criteria associatedCriteria = query.criteria();
+
+ PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, associatedCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ ProductEntity resultW = results.getFirst();
+
+ Assert.assertEquals("Paint", resultW.getName());
+ Assert.assertEquals(20, resultW.getPrice());
+
+ //Test with an associated search that returns nothing
+ query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
+ .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint").associated(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY)
+ .eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "don't return anything");
+
+ associatedCriteria = query.criteria();
+
+ results = proxy.findAllByCriteria(ProductEntity.class, associatedCriteria);
+
+ Assert.assertEquals(0, results.getAll().size());
+ }
+
+ @Test
+ public void testSelect() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ //Test with an associated search that returns nothing
+ Search query = Search.query().bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint");
+
+ Criteria selectCriteria = query.criteria();
+
+ selectCriteria.setSelect("Product.category");
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ //Test with an associated search that returns nothing
+ query = Search.query().bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint");
+
+ selectCriteria = query.criteria();
+
+ selectCriteria.setSelect("Product.name");
+
+ results = proxy.findAllByCriteria(selectCriteria);
+
+ Assert.assertEquals(0, results.getAll().size());
+ }
+
+ @Test
+ public void testEntitiesSelect() throws Exception {
+
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+
+ //Test with an associated search that returns nothing
+ Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
+ .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint");
+
+ Criteria selectCriteria = query.criteria();
+
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY);
+
+ PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ //Test with an associated search that returns nothing
+ query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25")
+ .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint");
+
+ selectCriteria = query.criteria();
+
+ selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME);
+
+ results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria);
+
+ Assert.assertEquals(0, results.getAll().size());
+ }
+
+ /**
+ * <li> monext.monfield
+ * <li> *.monfield
+ * <li> monext.monfield.NUMERIC
+ * <li> *.monfield.NUMERIC
+ **/
+ @Test
public void testSearchAllEquals() {
// FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
assumeNotYetImplementedInMemory();
@@ -661,7 +1218,7 @@
{
Criteria criteria = Search.query().eq("*.name", "HardWare").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertEquals(2, pagedResult.size());
}
{
Criteria criteria = Search.query().eq("Category.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
@@ -671,8 +1228,40 @@
{
Criteria criteria = Search.query().eq("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
+ assertEquals(2, pagedResult.size());
+ }
+ }
+
+ /**
+ * <li> monext.monfield
+ * <li> *.monfield
+ * <li> monext.monfield.NUMERIC
+ * <li> *.monfield.NUMERIC
+ **/
+ @Test
+ public void testEntitiesSearchAllEquals() {
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+ {
+ Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare").criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
assertEquals(1, pagedResult.size());
}
+ {
+ Criteria criteria = Search.query().eq("*.name", "HardWare").criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().eq("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
}
/**
@@ -693,7 +1282,7 @@
{
Criteria criteria = Search.query().contains("*.colors", "Red").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertEquals(2, pagedResult.size());
}
{
Criteria criteria = Search.query().contains("Product.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
@@ -703,17 +1292,49 @@
{
Criteria criteria = Search.query().contains("*.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
+ assertEquals(2, pagedResult.size());
+ }
+ }
+
+ /**
+ * <li> monext.monfield
+ * <li> *.monfield
+ * <li> monext.monfield.NUMERIC
+ * <li> *.monfield.NUMERIC
+ **/
+ @Test
+ public void testEntitiesSearchAllContains() {
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+ {
+ Criteria criteria = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_COLORS, "Red").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
assertEquals(1, pagedResult.size());
}
+ {
+ Criteria criteria = Search.query().contains("*.colors", "Red").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_COLORS + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().contains("*.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
}
- /**
- * <li> monext.monfield
- * <li> *.monfield
- * <li> monext.monfield.NUMERIC
- * <li> *.monfield.NUMERIC
- **/
- @Test
+ /**
+ * <li> monext.monfield
+ * <li> *.monfield
+ * <li> monext.monfield.NUMERIC
+ * <li> *.monfield.NUMERIC
+ **/
+ @Test
public void testSearchAllLike() {
// FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
assumeNotYetImplementedInMemory();
@@ -725,7 +1346,7 @@
{
Criteria criteria = Search.query().like("*.name", "*Blue").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
- assertEquals(1, pagedResult.size());
+ assertEquals(2, pagedResult.size());
}
{
Criteria criteria = Search.query().like("Product.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
@@ -735,11 +1356,43 @@
{
Criteria criteria = Search.query().like("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria);
+ assertEquals(2, pagedResult.size());
+ }
+ }
+
+ /**
+ * <li> monext.monfield
+ * <li> *.monfield
+ * <li> monext.monfield.NUMERIC
+ * <li> *.monfield.NUMERIC
+ **/
+ @Test
+ public void testEntitiesSearchAllLike() {
+ // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming
+ assumeNotYetImplementedInMemory();
+ {
+ Criteria criteria = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*Blue").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
assertEquals(1, pagedResult.size());
}
+ {
+ Criteria criteria = Search.query().like("*.name", "*Blue").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().like("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria();
+ PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
}
- @Test
+ @Test
public void testSearchAllLowerCase() {
// FIXME implement it in memory
assumeNotYetImplementedInMemory();
@@ -775,13 +1428,49 @@
}
}
- @Test
+ @Test
+ public void testEntitiesSearchAllLowerCase() {
+ // FIXME implement it in memory
+ assumeNotYetImplementedInMemory();
+ {
+ Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare").criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware").criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(0, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare", Like.SearchAs.ToLowerCase).criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware", Like.SearchAs.ToLowerCase).criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare", Like.SearchAs.AsText).criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ {
+ Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware", Like.SearchAs.AsText).criteria();
+ PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria);
+ assertEquals(1, pagedResult.size());
+ }
+ }
+
+ @Test
public void testSearchWithSort() {
// FIXME implement it in memory
assumeNotYetImplementedInMemory();
{
Criteria criteria = Search.query().like("*.name", "*").criteria();
- criteria.setSortAscending(new String[]{"*.name"});
+ criteria.setSortAscending("*.name");
try {
proxy.findAllByCriteria(criteria);
} catch (Exception eee) {
@@ -813,8 +1502,7 @@
Collections.sort(expected);
{
Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, sortableExtName).criteria();
- criteria.setSortAscending(new String[]{
- WikittyUtil.getFQFieldName(sortableExtName, numFieldName)});
+ criteria.setSortAscending(WikittyUtil.getFQFieldName(sortableExtName, numFieldName));
PagedResult<Wikitty> result = proxy.findAllByCriteria(criteria);
List<Integer> resulted = new ArrayList<Integer>();
@@ -825,7 +1513,6 @@
}
}
-
@Test
public void testComplexQueries() throws Exception {
//TODO JC-07-04-2011 Write test
Modified: trunk/wikitty-api/src/test/xmi/wikittytest.zargo
===================================================================
(Binary files differ)
1
0
r1238 - trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component
by sletellier@users.nuiton.org 21 Oct '11
by sletellier@users.nuiton.org 21 Oct '11
21 Oct '11
Author: sletellier
Date: 2011-10-21 18:21:57 +0200 (Fri, 21 Oct 2011)
New Revision: 1238
Url: http://nuiton.org/repositories/revision/wikitty/1238
Log:
Fix select association taglib
Modified:
trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java
Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java
===================================================================
--- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java 2011-10-12 16:15:51 UTC (rev 1237)
+++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java 2011-10-21 16:21:57 UTC (rev 1238)
@@ -63,7 +63,9 @@
WikittyFieldHandler.FIELD_SEPARATOR);
// iterate wikitty for result construction
- for (Wikitty wiki : getWikitty().getFieldAsList(ext, fieldName, Wikitty.class)){
+ for (String id : getWikitty().getFieldAsList(ext, fieldName, String.class)){
+ Wikitty wiki = proxy.restore(id);
+
Option temp = new Option();
temp.setValeur(wiki.getId());
String desc = wiki.getId();
1
0
r1237 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty
by sletellier@users.nuiton.org 12 Oct '11
by sletellier@users.nuiton.org 12 Oct '11
12 Oct '11
Author: sletellier
Date: 2011-10-12 18:15:51 +0200 (Wed, 12 Oct 2011)
New Revision: 1237
Url: http://nuiton.org/repositories/revision/wikitty/1237
Log:
Fix doc
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2011-10-12 16:14:50 UTC (rev 1236)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2011-10-12 16:15:51 UTC (rev 1237)
@@ -995,7 +995,7 @@
}
/**
- * Extract all field values corresponding of fqField in entity
+ * Extract all field values corresponding of fqField in list of entities
*
* @param fqField fqField concerned
* @param entities entities concerned
1
0