r772 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport wikitty-api/src/main/java/org/nuiton/wikitty/services wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport wikitty-perf-test/src/main/java/org/nuiton/wikitty/perftest wikitty-publication/src/main/java/org/nuiton/wikitty/publication wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr
Author: bpoussin Date: 2011-04-08 18:18:50 +0200 (Fri, 08 Apr 2011) New Revision: 772 Url: http://nuiton.org/repositories/revision/wikitty/772 Log: Evolution #1394: add new find method with multiple criteria uniformisation on a maintenant en parametre, List<Criteria>, Criteria ou Criteria[] pour toutes les methodes find du proxy et le service utilise seulement List Modified: 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/addons/importexport/ExportTask.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java trunk/wikitty-perf-test/src/main/java/org/nuiton/wikitty/perftest/PerfTestSearch.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-04-08 16:18:50 UTC (rev 772) @@ -48,6 +48,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -505,29 +506,11 @@ return result; } - /** - * Search object that correspond to criteria and that have all extension - * needed by BusinessEntity (clazz). If criteria is null, find all extensions - * else if criteria is empty return nothing. - * - * @param <E> object type - * @param clazz entity class - * @param criteria criteria - * @return paged result - */ - public <E extends BusinessEntity> PagedResult<E> findAllByCriteria( - Class<E> clazz, Criteria criteria) { - long start = TimeLog.getTime(); - Criteria[] criterias; - if (criteria == null) { - criterias = new Criteria[1]; - } else { - criterias = new Criteria[]{criteria}; - } - PagedResult<E> result = multiFindAllByCriteria(clazz, criterias)[0]; - timeLog.log(start, "findAllByCriteria<Business>"); - return result; - } + /////////////////////////////////////////////////////////////////////////// + // + // FIND ALL BY CRITERIA <E> + // + /////////////////////////////////////////////////////////////////////////// /** * Search object that correspond to criteria and that have all extension @@ -539,10 +522,10 @@ * @param criteria criteria * @return paged result */ - public <E extends BusinessEntity> PagedResult<E>[] multiFindAllByCriteria( - Class<E> clazz, Criteria ... criterias) { + public <E extends BusinessEntity> List<PagedResult<E>> findAllByCriteria( + Class<E> clazz, List<Criteria> criterias) { long start = TimeLog.getTime(); - PagedResult<E>[] result = null; + List<PagedResult<E>> result = null; if (criterias != null) { // newInstance only return BusinessEntityWikittyImpl BusinessEntityImpl sample = @@ -551,14 +534,17 @@ Wikitty wikitty = sample.getWikitty(); Collection<String> extensions = wikitty.getExtensionNames(); - Criteria[] serviceCriterias = new Criteria[criterias.length]; - for (int i = 0; i < serviceCriterias.length; i++) { - Criteria criteria = criterias[i]; + 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 ... Search search = Search.query(criteria); search = search.exteq(extensions); Criteria serviceCriteria = search.criteria(); - serviceCriterias[i] = serviceCriteria; + serviceCriterias.add(serviceCriteria); + // ... et si besoin recopier tout ce qui etait sur l'ancien if (criteria != null) { serviceCriteria.setName(criteria.getName()); serviceCriteria.setFirstIndex(criteria.getFirstIndex()); @@ -589,149 +575,299 @@ } } } - PagedResult<String>[] pagedResult = wikittyService.findAllByCriteria( + List<PagedResult<String>> pagedResult = wikittyService.findAllByCriteria( 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 PagedResult[pagedResult.length]; - for (int i = 0; i < result.length; i++) { - // we can cast with autoconvert true because we have add restriction - // on extension - result[i] = (PagedResult<E>) pagedResult[i].cast( - this, sample.getClass(), true); + result = new ArrayList<PagedResult<E>>(pagedResult.size()); + for (PagedResult<String> p : pagedResult) { + result.add((PagedResult<E>)p.cast(this, sample.getClass(), true)); } } - timeLog.log(start, "multiFindAllByCriteria<Business>"); + timeLog.log(start, "findAllByCriteria<Business>(List)"); return result; } - public PagedResult<Wikitty> findAllByCriteria(Criteria criteria) { + /** + * Search object that correspond to criteria and that have all extension + * needed by BusinessEntity (clazz). If criteria is null, find all extensions + * else if criteria is empty return nothing. + * + * @param <E> object type + * @param clazz entity class + * @param criteria criteria + * @return paged result + */ + public <E extends BusinessEntity> PagedResult<E> findAllByCriteria( + Class<E> clazz, Criteria criteria) { long start = TimeLog.getTime(); - PagedResult<Wikitty> result = null; - if (criteria != null) { - result = multiFindAllByCriteria(criteria)[0]; - } - timeLog.log(start, "findAllByCriteria"); - return result; + PagedResult<E> result = findAllByCriteria(clazz, + Collections.singletonList(criteria)).get(0); + timeLog.log(start, "findAllByCriteria<Business>(One)"); + return result; } - public PagedResult<Wikitty>[] multiFindAllByCriteria(Criteria ... criteria) { + /** + * Search object that correspond to criteria and that have all extension + * needed by BusinessEntity (clazz). If criteria is null, find all extensions + * else if criteria is empty return nothing. + * + * @param <E> object type + * @param clazz entity class + * @param criteria criteria + * @return paged result + */ + public <E extends BusinessEntity> PagedResult<E>[] findAllByCriteria( + Class<E> clazz, Criteria c1, Criteria c2, Criteria... otherCriteria) { long start = TimeLog.getTime(); - PagedResult<Wikitty>[] result = null; + List<Criteria> criterias = new ArrayList<Criteria>(otherCriteria.length + 2); + Collections.addAll(criterias, c1, c2); + Collections.addAll(criterias, otherCriteria); + + List<PagedResult<E>> resultList = findAllByCriteria(clazz, criterias); + PagedResult<E>[] result = resultList.toArray(new PagedResult[criterias.size()]); + timeLog.log(start, "findAllByCriteria<Business>(Varargs)"); + return result; + } + + /////////////////////////////////////////////////////////////////////////// + // + // FIND ALL BY CRITERIA <Wikitty> + // + /////////////////////////////////////////////////////////////////////////// + + public List<PagedResult<Wikitty>> findAllByCriteria(List<Criteria> criteria) { + long start = TimeLog.getTime(); + List<PagedResult<Wikitty>> result = null; if (criteria != null) { - PagedResult<String>[] resultId = + List<PagedResult<String>> resultId = wikittyService.findAllByCriteria(securityToken, criteria); // 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 PagedResult[resultId.length]; - for (int i = 0; i < resultId.length; i++) { - result[i] = resultId[i].cast(securityToken, wikittyService); + result = new ArrayList<PagedResult<Wikitty>>(resultId.size()); + for (PagedResult<String> p : resultId) { + result.add(p.cast(securityToken, wikittyService)); } } - timeLog.log(start, "multiFindAllByCriteria"); + timeLog.log(start, "findAllByCriteria(List)"); return result; } - public PagedResult<String> findAllIdByCriteria(Criteria criteria) { + public PagedResult<Wikitty> findAllByCriteria(Criteria criteria) { long start = TimeLog.getTime(); - PagedResult<String> result = null; + PagedResult<Wikitty> result = null; if (criteria != null) { - result = multiFindAllIdByCriteria(criteria)[0]; + result = findAllByCriteria(Collections.singletonList(criteria)).get(0); } - timeLog.log(start, "findAllIdByCriteria"); + timeLog.log(start, "findAllByCriteria(One)"); return result; } - public PagedResult<String>[] multiFindAllIdByCriteria(Criteria ... criteria) { + public PagedResult<Wikitty>[] findAllByCriteria( + Criteria c1, Criteria c2, Criteria ... otherCriteria) { long start = TimeLog.getTime(); - PagedResult<String>[] result = null; + + List<Criteria> criterias = new ArrayList<Criteria>(otherCriteria.length + 2); + Collections.addAll(criterias, c1, c2); + Collections.addAll(criterias, otherCriteria); + + List<PagedResult<Wikitty>> resultList = findAllByCriteria(criterias); + PagedResult<Wikitty>[] result = resultList.toArray(new PagedResult[criterias.size()]); + + timeLog.log(start, "findAllByCriteria(Varargs)"); + return result; + } + + /////////////////////////////////////////////////////////////////////////// + // + // FIND ALL ID BY CRITERIA <String> + // + /////////////////////////////////////////////////////////////////////////// + + public List<PagedResult<String>> findAllIdByCriteria(List<Criteria> criteria) { + long start = TimeLog.getTime(); + List<PagedResult<String>> result = null; if (criteria != null) { result = wikittyService.findAllByCriteria(securityToken, criteria); } - timeLog.log(start, "multiFindAllIdByCriteria"); + timeLog.log(start, "findAllIdByCriteria(List)"); return result; } - public String findIdByCriteria(Criteria criteria) { + public PagedResult<String> findAllIdByCriteria(Criteria criteria) { long start = TimeLog.getTime(); - String result = null; + PagedResult<String> result = null; if (criteria != null) { - result = multiFindIdByCriteria(criteria)[0]; + result = findAllIdByCriteria( + Collections.singletonList(criteria)).get(0); } - timeLog.log(start, "findIdByCriteria"); + timeLog.log(start, "findAllIdByCriteria(One)"); return result; } - public String[] multiFindIdByCriteria(Criteria ... criteria) { + public PagedResult<String>[] findAllIdByCriteria( + Criteria c1, Criteria c2, Criteria ... otherCriteria) { long start = TimeLog.getTime(); - String[] result = null; + + List<Criteria> criterias = new ArrayList<Criteria>(otherCriteria.length + 2); + Collections.addAll(criterias, c1, c2); + Collections.addAll(criterias, otherCriteria); + + List<PagedResult<String>> resultList = findAllIdByCriteria(criterias); + PagedResult<String>[] result = resultList.toArray(new PagedResult[criterias.size()]); + + timeLog.log(start, "findAllIdByCriteria(Varargs)"); + return result; + } + + /////////////////////////////////////////////////////////////////////////// + // + // FIND ID BY CRITERIA <String> + // + /////////////////////////////////////////////////////////////////////////// + + public List<String> findIdByCriteria(List<Criteria> criteria) { + long start = TimeLog.getTime(); + List<String> result = null; if (criteria != null) { result = wikittyService.findByCriteria(securityToken, criteria); } - timeLog.log(start, "multiFindIdByCriteria"); + timeLog.log(start, "findIdByCriteria(List)"); return result; } - public <E extends BusinessEntity> E findByCriteria( - Class<E> clazz, Criteria criteria) { + public String findIdByCriteria(Criteria criteria) { long start = TimeLog.getTime(); - E result = null; + String result = null; if (criteria != null) { - result = multiFindByCriteria(clazz, criteria)[0]; + result = findIdByCriteria(Collections.singletonList(criteria)).get(0); } - timeLog.log(start, "findByCriteria<Business>"); - return result; + timeLog.log(start, "findIdByCriteria(One)"); + return result; } - public <E extends BusinessEntity> E[] multiFindByCriteria( - Class<E> clazz, Criteria ... criterias) { + public String[] findIdByCriteria( + Criteria c1, Criteria c2, Criteria... otherCriteria) { long start = TimeLog.getTime(); - E[] result = null; + + List<Criteria> criterias = new ArrayList<Criteria>(otherCriteria.length + 2); + Collections.addAll(criterias, c1, c2); + Collections.addAll(criterias, otherCriteria); + + List<String> resultList = findIdByCriteria(criterias); + String[] result = resultList.toArray(new String[criterias.size()]); + + timeLog.log(start, "findIdByCriteria(Varargs)"); + return result; + } + + /////////////////////////////////////////////////////////////////////////// + // + // FIND BY CRITERIA <E> + // + /////////////////////////////////////////////////////////////////////////// + + public <E extends BusinessEntity> List<E> findByCriteria( + Class<E> clazz, List<Criteria> criterias) { + long start = TimeLog.getTime(); + List<E> result = null; if (criterias != null) { BusinessEntityImpl sample = (BusinessEntityImpl) WikittyUtil.newInstance(clazz); Wikitty wikitty = sample.getWikitty(); Collection<String> extensions = wikitty.getExtensionNames(); - Criteria[] serviceCriterias = new Criteria[criterias.length]; - for (int i = 0; i < criterias.length; i++) { - Criteria criteria = criterias[i]; + List<Criteria> serviceCriterias = new ArrayList<Criteria>(criterias.size()); + for (Criteria criteria : criterias) { Search search = Search.query(criteria); search = search.exteq(extensions); criteria = search.criteria(); - serviceCriterias[i] = criteria; + serviceCriterias.add(criteria); } - String[] id = multiFindIdByCriteria(serviceCriterias); - List<E> objects = restore(clazz, Arrays.asList(id)); - result = objects.toArray((E[])Array.newInstance(clazz, objects.size())); + List<String> id = findIdByCriteria(serviceCriterias); + result = restore(clazz, id); } - timeLog.log(start, "multiFindByCriteria<Business>"); + timeLog.log(start, "multiFindByCriteria<Business>(List>"); return result; } + public <E extends BusinessEntity> E findByCriteria( + Class<E> clazz, Criteria criteria) { + long start = TimeLog.getTime(); + E result = null; + if (criteria != null) { + result = findByCriteria(clazz, Collections.singletonList(criteria)).get(0); + } + timeLog.log(start, "findByCriteria<Business>(One)"); + return result; + } + + public <E extends BusinessEntity> E[] findByCriteria( + Class<E> clazz, Criteria c1, Criteria c2, Criteria... otherCriteria) { + long start = TimeLog.getTime(); + + List<Criteria> criterias = new ArrayList<Criteria>(otherCriteria.length + 2); + Collections.addAll(criterias, c1, c2); + Collections.addAll(criterias, otherCriteria); + + List<E> resultList = findByCriteria(clazz, criterias); + E[] result = resultList.toArray((E[])Array.newInstance(clazz, resultList.size())); + + timeLog.log(start, "findByCriteria<Business>(One)"); + return result; + } + + /////////////////////////////////////////////////////////////////////////// + // + // FIND BY CRITERIA <Wikitty> + // + /////////////////////////////////////////////////////////////////////////// + + public List<Wikitty> findByCriteria(List<Criteria> criteria) { + long start = TimeLog.getTime(); + List<Wikitty> result = null; + if (criteria != null) { + List<String> id = findIdByCriteria(criteria); + result = restore(id); + } + timeLog.log(start, "findByCriteria(List)"); + return result; + } + public Wikitty findByCriteria(Criteria criteria) { long start = TimeLog.getTime(); String id = findIdByCriteria(criteria); Wikitty wikitty = restore(id); - timeLog.log(start, "findByCriteria"); + timeLog.log(start, "findByCriteria(One)"); return wikitty; } - public Wikitty[] multiFindByCriteria(Criteria ... criteria) { + public Wikitty[] findByCriteria( + Criteria c1, Criteria c2, Criteria... otherCriteria) { long start = TimeLog.getTime(); - Wikitty[] result = null; - if (criteria != null) { - String[] id = multiFindIdByCriteria(criteria); - List<Wikitty> wikitty = restore(Arrays.asList(id)); - result = wikitty.toArray(new Wikitty[wikitty.size()]); - } - timeLog.log(start, "multiFindByCriteria"); + + List<Criteria> criterias = new ArrayList<Criteria>(otherCriteria.length + 2); + Collections.addAll(criterias, c1, c2); + Collections.addAll(criterias, otherCriteria); + + List<String> resultList = findIdByCriteria(criterias); + List<Wikitty> wikitties = restore(resultList); + Wikitty[] result = wikitties.toArray(new Wikitty[resultList.size()]); + + timeLog.log(start, "findByCriteria(One)"); return result; } + + /////////////////////////////////////////////////////////////////////////// + // + // FIND BY TREE NODE + // + /////////////////////////////////////////////////////////////////////////// + /** * Recupere une portion d'arbre a partir de l'id passer en parametre. L'id * doit etre celui d'un WikittyTreeNode. Ce WikittyTreeNode est alors le Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-04-08 16:18:50 UTC (rev 772) @@ -300,8 +300,8 @@ * @param criteria * @return */ - public PagedResult<String>[] findAllByCriteria( - String securityToken, Criteria ... criteria); + public List<PagedResult<String>> findAllByCriteria( + String securityToken, List<Criteria> criteria); /** * First lonely (or first one) wikitty object that match criteria, if no @@ -313,7 +313,7 @@ * @param criteria * @return wikitty id object or null */ - public String[] findByCriteria(String securityToken, Criteria ... criteria); + public List<String> findByCriteria(String securityToken, List<Criteria> criteria); /* * Classification Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportTask.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportTask.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ExportTask.java 2011-04-08 16:18:50 UTC (rev 772) @@ -25,6 +25,7 @@ package org.nuiton.wikitty.addons.importexport; import java.io.Writer; +import java.util.Collections; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.search.Criteria; @@ -65,7 +66,7 @@ criteria.addFacetField(Element.ELT_EXTENSION); PagedResult<String> pageResultId = ws.findAllByCriteria( - securityToken, criteria)[0]; + securityToken, Collections.singletonList(criteria)).get(0); long time = 0; if (log.isInfoEnabled()) { time = System.currentTimeMillis(); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/addons/importexport/ImportExportCSV.java 2011-04-08 16:18:50 UTC (rev 772) @@ -266,7 +266,8 @@ fValue = m.group(6); } Criteria criteria = Search.query().eq(fqField, fValue).criteria(); - String id = ws.findByCriteria(securityToken, criteria)[0]; + String id = ws.findByCriteria(securityToken, + Collections.singletonList(criteria)).get(0); Wikitty wikitty = WikittyServiceEnhanced.restore( ws, securityToken, id); if (wikitty == null) { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceDelegator.java 2011-04-08 16:18:50 UTC (rev 772) @@ -161,13 +161,13 @@ } @Override - public PagedResult<String>[] findAllByCriteria( - String securityToken, Criteria ... criteria) { + public List<PagedResult<String>> findAllByCriteria( + String securityToken, List<Criteria> criteria) { return delegate.findAllByCriteria(securityToken, criteria); } @Override - public String[] findByCriteria(String securityToken, Criteria ... criteria) { + public List<String> findByCriteria(String securityToken, List<Criteria> criteria) { return delegate.findByCriteria(securityToken, criteria); } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceHook.java 2011-04-08 16:18:50 UTC (rev 772) @@ -2,6 +2,7 @@ import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -70,9 +71,10 @@ Criteria criteria = Search.query().exteq(WikittyHook.EXT_WIKITTYHOOK) .and().eq(WikittyHook.FQ_FIELD_WIKITTYHOOK_ACTIONTOHOOK, actionName) .criteria(); - PagedResult<String>[] ids = getDelegate().findAllByCriteria(securityToken, criteria); + PagedResult<String> ids = getDelegate().findAllByCriteria(securityToken, + Collections.singletonList(criteria)).get(0); - List<Wikitty> result = getDelegate().restore(securityToken, ids[0].getAll()); + List<Wikitty> result = getDelegate().restore(securityToken, ids.getAll()); return result; } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java 2011-04-08 16:18:50 UTC (rev 772) @@ -51,6 +51,7 @@ import org.nuiton.wikitty.entities.WikittyUser; import org.nuiton.wikitty.entities.WikittyUserHelper; import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.Search; /** @@ -92,8 +93,10 @@ @Override public String login(String login, String password) { - String userId = getDelegate().findByCriteria(null, Search.query().eq( - WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria())[0]; + Criteria criteria = Search.query() + .eq(WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria(); + String userId = getDelegate().findByCriteria(null, + Collections.singletonList(criteria)).get(0); if (userId == null) { throw new IllegalArgumentException(String.format( "no such account '%s'", login)); @@ -715,9 +718,11 @@ getDelegate(), securityToken, appAdminGroupId); if (group == null) { // 1er fois, on le recherche - String groupId = getDelegate().findByCriteria(securityToken, - Search.query().eq(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, - WikittySecurityHelper.WIKITTY_APPADMIN_GROUP_NAME).criteria())[0]; + Criteria criteria = Search.query() + .eq(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, + WikittySecurityHelper.WIKITTY_APPADMIN_GROUP_NAME).criteria(); + String groupId = getDelegate().findByCriteria( + securityToken, Collections.singletonList(criteria)).get(0); appAdminGroupId = groupId; group = WikittyServiceEnhanced.restore( getDelegate(), securityToken, appAdminGroupId); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2011-04-08 16:18:50 UTC (rev 772) @@ -30,6 +30,7 @@ import org.nuiton.wikitty.storage.WikittyStorage; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.LinkedHashMap; @@ -366,7 +367,7 @@ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, name).criteria(); criteria.setEndIndex(0); // result is not use, just numFound PagedResult<String> wikittyWithExt = findAllByCriteria( - securityToken, criteria)[0]; + securityToken, Collections.singletonList(criteria)).get(0); int numFound = wikittyWithExt.getNumFound(); if (numFound > 0) { throw new WikittyException(String.format( @@ -662,7 +663,8 @@ Search.query().eq(WikittyTreeNode. FQ_FIELD_WIKITTYTREENODE_PARENT, id).criteria(); List<String> wikittyNodesId = findAllByCriteria( - securityToken, criteria)[0].getAll(); + securityToken, Collections.singletonList(criteria)) + .get(0).getAll(); for (String wikittyNodeId : wikittyNodesId) { if (!idSet.contains(wikittyNodeId)) { Wikitty treeNode = restore( @@ -676,7 +678,8 @@ criteria = Search.query().eq(WikittyTreeNode. FQ_FIELD_WIKITTYTREENODE_ATTACHMENT, id).criteria(); wikittyNodesId = findAllByCriteria( - securityToken, criteria)[0].getAll(); + securityToken, Collections.singletonList(criteria)) + .get(0).getAll(); for (String wikittyNodeId : wikittyNodesId) { if (!idSet.contains(wikittyNodeId)) { Wikitty treeNode = restore( @@ -758,8 +761,8 @@ * return new PagedResult with Wikitty instance */ @Override - public PagedResult<String>[] findAllByCriteria( - String securityToken, Criteria ... criteria) { + public List<PagedResult<String>> findAllByCriteria( + String securityToken, List<Criteria> criteria) { WikittyTransaction tx = WikittyTransaction.get(); boolean txBeginHere = false; try { @@ -768,13 +771,21 @@ txBeginHere = true; } - PagedResult<String>[] result = new PagedResult[criteria.length]; - for (int i = 0; i < result.length; i++) { - result[i] = getSearchEngine().findAllByCriteria(tx, criteria[i]); + List<PagedResult<String>> result = + new ArrayList<PagedResult<String>>(criteria.size()); + for (Criteria c : criteria) { + PagedResult<String> searchResult = + getSearchEngine().findAllByCriteria(tx, c); + result.add(searchResult); } + if (txBeginHere) { tx.commit(); } + if (criteria.size() != result.size()) { + log.error(String.format("Criteria input list (%s) has not same size that result list (%s)", + criteria.size(), result.size())); + } return result; } catch (WikittyException ex) { if (tx != null && tx.isStarted()) { @@ -790,7 +801,7 @@ } @Override - public String[] findByCriteria(String securityToken, Criteria ... criteria) { + public List<String> findByCriteria(String securityToken, List<Criteria> criteria) { WikittyTransaction tx = WikittyTransaction.get(); boolean txBeginHere = false; try { @@ -799,27 +810,32 @@ txBeginHere = true; } - String[] result = new String[criteria.length]; - Criteria[] criteriaLimit = new Criteria[criteria.length]; - for (int i = 0; i < criteria.length; i++) { - criteriaLimit[i] = - Search.query(criteria[i]).criteria() + List<String> result = new ArrayList<String>(criteria.size()); + List<Criteria> criteriaLimit = new ArrayList<Criteria>(criteria.size()); + for (Criteria c : criteria) { + Criteria cLimit = Search.query(c).criteria() .setFirstIndex(0).setEndIndex(1); + criteriaLimit.add(cLimit); } - PagedResult<String>[] idsArray = + List<PagedResult<String>> idsList = findAllByCriteria(securityToken, criteriaLimit); - for (int i = 0; i < criteria.length; i++) { - PagedResult<String> ids = idsArray[i]; + for (PagedResult<String> ids : idsList) { if (ids.size() > 0) { - result[i] = ids.getFirst(); + result.add(ids.getFirst()); + } else { + result.add(null); } } if (txBeginHere) { tx.commit(); } + if (criteria.size() != result.size()) { + log.error(String.format("Criteria input list (%s) has not same size that result list (%s)", + criteria.size(), result.size())); + } return result; } catch (WikittyException ex) { if (tx != null && tx.isStarted()) { @@ -877,7 +893,8 @@ search = search.eq(WikittyTreeNode.FQ_FIELD_WIKITTYTREENODE_PARENT, treeNodeId); Criteria criteria = search.criteria(); - PagedResult<String> childTreeNodeIds = findAllByCriteria(securityToken, criteria)[0]; + PagedResult<String> childTreeNodeIds = findAllByCriteria( + securityToken, Collections.singletonList(criteria)).get(0); List<String> treeNodeIds = new ArrayList<String>(); treeNodeIds.add(treeNodeId); for (String childTreeNodeId : childTreeNodeIds.getAll()) { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceTransaction.java 2011-04-08 16:18:50 UTC (rev 772) @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.LinkedList; @@ -281,15 +282,18 @@ } @Override - public PagedResult<String>[] findAllByCriteria( - String securityToken, Criteria ... criteria) { - PagedResult<String>[] resultTxArray = tx.findAllByCriteria(securityToken, criteria); - PagedResult<String>[] resultWsArray = ws.findAllByCriteria(securityToken, criteria); + public List<PagedResult<String>> findAllByCriteria( + String securityToken, List<Criteria> criteria) { + List<PagedResult<String>> resultTxList = + tx.findAllByCriteria(securityToken, criteria); + List<PagedResult<String>> resultWsList = + ws.findAllByCriteria(securityToken, criteria); - PagedResult<String>[] result = new PagedResult[resultWsArray.length]; - for (int i=0; i<result.length; i++) { - PagedResult<String> resultTx = resultTxArray[i]; - PagedResult<String> resultWs = resultWsArray[i]; + List<PagedResult<String>> result = + new ArrayList<PagedResult<String>>(resultWsList.size()); + for (int i=0; i<criteria.size(); i++) { + PagedResult<String> resultTx = resultTxList.get(i); + PagedResult<String> resultWs = resultWsList.get(i); // Il faut fusionner les deux resultats // - ne pas avoir de doublon // - ne pas retenir ceux supprimer dans la transaction @@ -312,29 +316,43 @@ Map<String, List<FacetTopic>> facets = resultWs.getFacets(); List<String> results = new ArrayList<String>(ids); - result[i] = new PagedResult<String>( - firstIndice, numFound, queryString, facets, results); + result.add(new PagedResult<String>( + firstIndice, numFound, queryString, facets, results)); } + + if (criteria.size() != result.size()) { + log.error(String.format("Criteria input list (%s) has not same size that result list (%s)", + criteria.size(), result.size())); + } + return result; } @Override - public String[] findByCriteria(String securityToken, Criteria ... criteria) { - String[] result = new String[criteria.length]; - Criteria[] criteriaLimit = new Criteria[criteria.length]; - for (int i=0; i<criteria.length; i++) { - criteriaLimit[i] = - Search.query(criteria[i]).criteria().setFirstIndex(0).setEndIndex(1); + public List<String> findByCriteria(String securityToken, List<Criteria> criteria) { + List<String> result = new ArrayList<String>(criteria.size()); + List<Criteria> criteriaLimit = new ArrayList<Criteria>(criteria.size()); + for (Criteria c : criteria) { + Criteria climit = Search.query(c).criteria().setFirstIndex(0).setEndIndex(1); + criteriaLimit.add(climit); } - PagedResult<String>[] idsArray = findAllByCriteria(securityToken, criteriaLimit); + List<PagedResult<String>> idsList = findAllByCriteria( + securityToken, criteriaLimit); - for (int i=0; i<criteria.length; i++) { - PagedResult<String> ids = idsArray[i]; + for (PagedResult<String> ids : idsList) { if (ids.size() > 0) { - result[i] = ids.getFirst(); + result.add(ids.getFirst()); + } else { + result.add(null); } } + + if (criteria.size() != result.size()) { + log.error(String.format("Criteria input list (%s) has not same size that result list (%s)", + criteria.size(), result.size())); + } + return result; } Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java 2011-04-08 16:18:50 UTC (rev 772) @@ -26,6 +26,7 @@ package org.nuiton.wikitty.addons.importexport; import java.net.URL; +import java.util.Collections; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.logging.Log; @@ -197,12 +198,12 @@ // test extension support Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, extensionTag.getName()).criteria(); - PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); Assert.assertEquals(1, pagedResult.getNumFound()); // test normal import Criteria criteria2 = Search.query().eq(extensionClient.getName() + ".name", "Toto").criteria(); - PagedResult<String> pagedResult2 = ws.findAllByCriteria(null, criteria2)[0]; + PagedResult<String> pagedResult2 = ws.findAllByCriteria(null, Collections.singletonList(criteria2)).get(0); Assert.assertEquals(1, pagedResult2.getNumFound()); // import attachment id that not exist, must be not imported Modified: trunk/wikitty-perf-test/src/main/java/org/nuiton/wikitty/perftest/PerfTestSearch.java =================================================================== --- trunk/wikitty-perf-test/src/main/java/org/nuiton/wikitty/perftest/PerfTestSearch.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-perf-test/src/main/java/org/nuiton/wikitty/perftest/PerfTestSearch.java 2011-04-08 16:18:50 UTC (rev 772) @@ -35,6 +35,7 @@ import org.nuiton.wikitty.services.WikittyServiceEnhanced; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class PerfTestSearch { @@ -79,8 +80,8 @@ private static void searchGt(int researches, WikittyService ws, WikittyExtension ext, String searchIn, String searched, boolean withRestore) { for (int i = 0; i < researches; i++) { Criteria criteria = Search.query().gt(ext.getName() + "." + searchIn, searched).criteria(); - PagedResult<String>[] result = ws.findAllByCriteria(null, criteria); - List<String> found = result[0].getAll(); + List<PagedResult<String>> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)); + List<String> found = result.get(0).getAll(); for (String aFound : found) { if (withRestore) { Wikitty wikittyFound = WikittyServiceEnhanced.restore(ws, null, aFound); Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java 2011-04-08 16:18:50 UTC (rev 772) @@ -237,8 +237,8 @@ } @Override - public PagedResult<String>[] findAllByCriteria(String securityToken, - Criteria... criteria) { + public List<PagedResult<String>> findAllByCriteria(String securityToken, + List<Criteria> criteria) { // TODO mfortun-2011-04-05 throw new UnsupportedOperationException("not yet implemented"); // return null; @@ -246,7 +246,7 @@ } @Override - public String[] findByCriteria(String securityToken, Criteria... criteria) { + public List<String> findByCriteria(String securityToken, List<Criteria> criteria) { // TODO mfortun-2011-04-05 throw new UnsupportedOperationException("not yet implemented"); // return null; Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java =================================================================== --- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-04-08 16:18:50 UTC (rev 772) @@ -30,6 +30,7 @@ import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.List; import org.apache.commons.logging.Log; @@ -161,7 +162,7 @@ .eq("Test.name_s", "chaise") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(1, list.size()); @@ -179,7 +180,7 @@ .contains("Product.price", "20") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(3, list.size()); } @@ -188,7 +189,7 @@ .contains("Product.price", "20", "30", "35") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(0, list.size()); } @@ -201,7 +202,7 @@ .in("Product.price", "20") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(3, list.size()); } @@ -210,7 +211,7 @@ .in("Product.price", "20", "30", "35") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(4, list.size()); } @@ -219,7 +220,7 @@ .in("Product.price", "25", "30", "40") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(0, list.size()); } @@ -232,7 +233,7 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(4, list.size()); @@ -242,7 +243,7 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - result = ws.findAllByCriteria(null, criteria)[0]; + result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); list = result.getAll(); assertEquals(3, list.size()); } @@ -257,7 +258,7 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals( 2, list.size() ); } @@ -265,12 +266,12 @@ @Test public void testKeywordSearch() throws Exception { Criteria criteria = Search.query().keyword("bureau").criteria(); - PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> result = pagedResult.getAll(); assertEquals(1, result.size()); criteria = Search.query().keyword("nothing").criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); result = pagedResult.getAll(); assertEquals(0, result.size()); @@ -279,7 +280,7 @@ // donc remplacement de la chaine *33* par *ai* // *ai* matches 'paint' et 'chaise' criteria = Search.query().keyword("*ai*").criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); result = pagedResult.getAll(); assertEquals(6, result.size()); @@ -287,7 +288,7 @@ .keyword("*33*") .eq("Test.name", "bureau") .criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); result = pagedResult.getAll(); assertEquals(1, result.size()); } @@ -297,7 +298,7 @@ Criteria criteria = Search.query().keyword("*").criteria(); criteria.addFacetField(Element.ELT_EXTENSION); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(13, result.getAll().size()); List<FacetTopic> topics = result.getTopic(Element.ELT_EXTENSION); @@ -321,14 +322,14 @@ .eq("Test.enabled", "true") .criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(1, result.getNumFound()); criteria = Search.query() .eq("Test.enabled", "false") .criteria(); - result = ws.findAllByCriteria(null, criteria)[0]; + result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(2, result.getNumFound()); } @@ -338,14 +339,14 @@ query.not().eq("Test.name", "bureau"); Criteria criteria = query.criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(12, result.getNumFound()); query = Search.query().eq("Test.amount", "003300"); query.not().eq("Test.name", "bureau"); criteria = query.criteria(); - result = ws.findAllByCriteria(null, criteria)[0]; + result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(1, result.getNumFound()); } @@ -356,7 +357,7 @@ example.setField("Product", "price", 20); Criteria criteria = Search.query(example).criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(3, result.getNumFound()); } @@ -366,7 +367,7 @@ Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, "Product").criteria(); criteria.addFacetField("Product.value"); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<FacetTopic> topics = result.getTopic("Product.value"); for (FacetTopic topic : topics) { String topicName = topic.getTopicName(); @@ -384,7 +385,7 @@ Criteria facet2 = Search.query().eq("Product.value", "2").criteria("2"); criteria.addFacetCriteria(facet2); - result = ws.findAllByCriteria(null, criteria)[0]; + result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); topics = result.getTopic("1"); FacetTopic topic = topics.get(0); @@ -411,24 +412,24 @@ criteria.setFirstIndex(0); criteria.setEndIndex(0); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(13, result.getNumFound()); ws.syncSearchEngine(null); - result = ws.findAllByCriteria(null, criteria)[0]; + result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertTrue(13 <= result.getNumFound()); } @Test public void testNullSearch() { Criteria criteria = Search.query().isNotNull("Product.optional").eq(Element.ELT_EXTENSION, "Product").criteria(); - PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> result = pagedResult.getAll(); assertEquals(2, result.size()); criteria = Search.query().isNull("Product.optional").eq(Element.ELT_EXTENSION, "Product").criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); result = pagedResult.getAll(); assertEquals(3, result.size()); } @@ -438,26 +439,26 @@ /*@Test public void testLikeSearch() throws Exception { Criteria criteria = Search.query().like("Category.name", "hArDwArE").criteria(); - PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> result = pagedResult.getAll(); assertEquals(1, result.size()); criteria = Search.query().like("Category.name", "*wAr*").criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); result = pagedResult.getAll(); assertEquals(1, result.size()); criteria = Search.query().like("Category.name", "Har*").criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); result = pagedResult.getAll(); assertEquals(1, result.size()); criteria = Search.query().like("Test.description", "help").criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(1, pagedResult.getNumFound()); criteria = Search.query().like("Test.description", "helped").criteria(); - pagedResult = ws.findAllByCriteria(null, criteria)[0]; + pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); assertEquals(1, pagedResult.getNumFound()); }*/ @@ -471,7 +472,7 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(1, list.size()); @@ -483,7 +484,7 @@ .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); - result = ws.findAllByCriteria(null, criteria)[0]; + result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); list = result.getAll(); assertEquals(5, list.size()); }*/ @@ -508,7 +509,7 @@ // If an exception is thrown, check that the pattern in WikittyUtil // is compatible with solr, in particular that the trailing Z // is present and respect http://wiki.apache.org/solr/IndexingDates - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); @@ -520,14 +521,14 @@ Criteria criteria = Search.query() .bw("Test.buildDate_dt", AbstractTestConformance.format("26/09/2009"), Criteria.ALL_VALUES) .criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); List<String> list = result.getAll(); assertEquals(2, list.size()); criteria = Search.query() .ge("Test.buildDate_dt", AbstractTestConformance.format("26/09/2009")) .criteria(); - result = ws.findAllByCriteria(null, criteria)[0]; + result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); list = result.getAll(); assertEquals(2, list.size()); } @@ -545,20 +546,20 @@ { // sans accent Criteria criteria = Search.query().keyword("coucou").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); Assert.assertEquals(1, result.size()); } { // avec accent Criteria criteria = Search.query().keyword("çéçà").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); Assert.assertEquals(1, result.size()); } { // avec accent specifiquement sur le champs name Criteria criteria = Search.query().eq( WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME,"çéçà").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); Assert.assertEquals(1, result.size()); } { @@ -567,7 +568,7 @@ WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME + WikittySolrConstant.SUFFIX_STRING + WikittySolrConstant.SUFFIX_STRING_FULLTEXT, "ceca").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); Assert.assertEquals(1, result.size()); } { @@ -578,7 +579,7 @@ WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME + WikittySolrConstant.SUFFIX_STRING + WikittySolrConstant.SUFFIX_STRING_FULLTEXT, "CECA").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); Assert.assertEquals(1, result.size()); } { @@ -587,7 +588,7 @@ // et et majuscule /*Criteria criteria = Search.query().like( WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "CECA").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0]; + PagedResult<String> result = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); Assert.assertEquals(1, result.size());*/ } } Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java =================================================================== --- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java 2011-04-08 15:35:00 UTC (rev 771) +++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java 2011-04-08 16:18:50 UTC (rev 772) @@ -90,13 +90,15 @@ { Criteria c = Search.query().keyword("lab*").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, c)[0]; + PagedResult<String> result = ws.findAllByCriteria( + null, Collections.singletonList(c)).get(0); System.out.println(result.getAll()); Assert.assertEquals(2, result.getNumFound()); } { Criteria c = Search.query().keyword("*a*").criteria(); - PagedResult<String> result = ws.findAllByCriteria(null, c)[0]; + PagedResult<String> result = ws.findAllByCriteria( + null, Collections.singletonList(c)).get(0); System.out.println(result.getAll()); Assert.assertEquals(3, result.getNumFound()); } @@ -297,7 +299,8 @@ // look for it Search query = Search.query(); query.eq(Element.ELT_ID, "wikkitytodelete"); - Assert.assertEquals(1, ws.findAllByCriteria(null, query.criteria())[0].getNumFound()); + Assert.assertEquals(1, ws.findAllByCriteria(null, + Collections.singletonList(query.criteria())).get(0).getNumFound()); Assert.assertEquals(1, proxy.findAllByCriteria(query.criteria()).getNumFound()); // delete it @@ -305,7 +308,8 @@ // try to look for it after deletion Assert.assertEquals(0, proxy.findAllByCriteria(query.criteria()).getNumFound()); - Assert.assertEquals(0, ws.findAllByCriteria(null, query.criteria())[0].getNumFound()); + Assert.assertEquals(0, ws.findAllByCriteria(null, + Collections.singletonList(query.criteria())).get(0).getNumFound()); } // Nombre of iteration for test delete @@ -336,7 +340,8 @@ // look for it Search query = Search.query(); query.eq(Element.ELT_EXTENSION, WikittyLabel.EXT_WIKITTYLABEL); - Assert.assertEquals(NB_DOCS_TO_DELETE, ws.findAllByCriteria(null, query.criteria())[0].getNumFound()); + Assert.assertEquals(NB_DOCS_TO_DELETE, ws.findAllByCriteria(null, + Collections.singletonList(query.criteria())).get(0).getNumFound()); Assert.assertEquals(NB_DOCS_TO_DELETE, proxy.findAllByCriteria(query.criteria()).getNumFound()); Assert.assertEquals(NB_DOCS_TO_DELETE, proxy.findAllByCriteria(WikittyLabel.class, query.criteria()).getNumFound()); @@ -345,7 +350,8 @@ // try to look for it after deletion Assert.assertEquals(0, proxy.findAllByCriteria(query.criteria()).getNumFound()); - Assert.assertEquals(0, ws.findAllByCriteria(null, query.criteria())[0].getNumFound()); + Assert.assertEquals(0, ws.findAllByCriteria(null, + Collections.singletonList(query.criteria())).get(0).getNumFound()); Assert.assertEquals(0, proxy.findAllByCriteria(WikittyLabel.class, query.criteria()).size()); } }
participants (1)
-
bpoussin@users.nuiton.org