r746 - in trunk: wikitty-api/src/main/java/org/nuiton/wikitty/services wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr
Author: sletellier Date: 2011-03-08 19:02:04 +0100 (Tue, 08 Mar 2011) New Revision: 746 Url: http://nuiton.org/repositories/revision/wikitty/746 Log: - Fix bug #1383 (http://www.nuiton.org/issues/show/1383) - Fix javadocs Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.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/services/WikittyServiceStorage.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2011-03-04 16:35:52 UTC (rev 745) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2011-03-08 18:02:04 UTC (rev 746) @@ -82,7 +82,7 @@ * TODO poussin 20101027 remove it when all used WikittyServiceHelper.build * * Used by specific child - * {@link org.nuiton.wikitty.jdbc.WikittyServiceJDBC} + * {@link org.nuiton.wikitty.jdbc.WikittyStorageJDBC} * {@link org.nuiton.wikitty.jdbc.WikittyServiceJPA} * {@link org.nuiton.wikitty.jdbc.WikittyServiceHbase} */ @@ -289,7 +289,7 @@ * * @see WikittyUtil#extensionNamePattern * @see WikittyUtil#extensionFieldNamePattern - * @param exts + * @param exts extentions */ protected void checkExtension(Collection<WikittyExtension> exts) { for (WikittyExtension ext : exts) { @@ -471,9 +471,11 @@ /** * restore one wikitty - * @param securityToken - * @param id - * @return + * + * @param securityToken security token previously returned by login. If + * securityToken is not valid, this method do nothing + * @param id to restore + * @return wikitty found */ protected Wikitty restore(String securityToken, String id) { WikittyTransaction tx = WikittyTransaction.get(); @@ -556,9 +558,11 @@ /** * Upgrade wikitty but not saved it. - * @param securityToken - * @param wikitty - * @return + * + * @param securityToken security token previously returned by login. If + * securityToken is not valid, this method do nothing + * @param wikitty to upgrade + * @return wikitty upgraded */ protected Wikitty upgradeData(String securityToken, Wikitty wikitty) { Wikitty result = wikitty; @@ -856,7 +860,6 @@ * Get recursive id of tree node children of {@code treeNodeId}. * * @param securityToken security token - * @param transaction transaction * @param treeNodeId tree node id * @return all id of {@code treeNodeId}'s children */ @@ -919,7 +922,9 @@ /** * This method do some commit during execution. Transaction must be not * started when we call it. - * @param securityToken + * + * @param securityToken security token previously returned by login. If + * securityToken is not valid, this method do nothing */ @Override public void syncSearchEngine(final String securityToken) { @@ -1022,17 +1027,12 @@ } } - /** + /* * Question: * <li> on ne force pas le store de wikitty, ils vont donc avoir potentiellement * des versions differentes sur plusieurs serveurs, est-ce problematique ? * <li> on ne passe pas la date de suppression des wikitties, ils vont donc * avoir différente date de suppression sur différent serveur, est-ce problematique ? - * - * - * @param securityToken - * @param events - * @return */ @Override public WikittyEvent replay( Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java =================================================================== --- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java 2011-03-04 16:35:52 UTC (rev 745) +++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/SolrUtil.java 2011-03-08 18:02:04 UTC (rev 746) @@ -73,6 +73,7 @@ * en parametre * * @param doc le document representant l'objet + * @return attached treeNodes * @since 3.1 */ static public Set<String> getAttachedTreeNode(SolrDocument doc) { @@ -88,6 +89,9 @@ /** * Find solr document by id + * @param solrServer solR serveur + * @param id to find + * @return solR document found */ static public SolrDocument findById(SolrServer solrServer, String id) { id = quoteForSolr(id); @@ -110,6 +114,10 @@ /** * Find solr document by id + * + * @param solrServer solR serveur + * @param ids to find + * @return solR documents found * @since 3.1 */ static public Map<String, SolrDocument> findAllById( @@ -121,6 +129,8 @@ /** * Find solr document by TreeNode parents extra field + * + * @param solrServer solR server * @param ids id that must be find in parents list * @return Map key:TreeNode id, value; solr document associate with id * @since 3.1 @@ -134,6 +144,8 @@ /** * Find solr document by TreeNode attachment field + * + * @param solrServer solR server * @param ids id that must be find in attachment list * @return Map key:TreeNode id, value; solr document associate with id * @since 3.1 @@ -148,7 +160,8 @@ /** * Find solr document by specified field in argument - * @param solrServer + * + * @param solrServer solR serveur * @param solrField field where we looking for ids * @param ids ids that must be in solrField * @return Map key:TreeNode id, value; solr document associate with id @@ -170,6 +183,7 @@ SolrQuery query = new SolrQuery(request); QueryResponse response = executeQuery(solrServer, query); + SolrDocumentList results = response.getResults(); for (SolrDocument doc : results) { String id = (String) doc.getFieldValue(SOLR_ID); @@ -185,14 +199,17 @@ /** * Execute SolrQuery on specified SolrServer and return the result * - * @param solrServer - * @param query - * @return - * @throws SolrServerException + * @param solrServer solR server + * @param query to execute + * @return QueryResponse + * @throws SolrServerException if exception occured on request execution */ static public QueryResponse executeQuery(SolrServer solrServer, SolrQuery query) throws SolrServerException { long start = TimeLog.getTime(); + + // par defaut SolR pagine par 10, alors que dans tous les cas, il nous les faut tous + query.setRows(Integer.MAX_VALUE); QueryResponse result = solrServer.query(query); long numGet = result.getResults().size(); @@ -205,12 +222,12 @@ /** * if you change this method, change - * {@link TypeFieldModifer#convertToField(org.nuiton.wikitty.services.WikittyTransaction, java.lang.String)} + * {@link TypeFieldModifier#convertToField(org.nuiton.wikitty.services.WikittyTransaction, java.lang.String)} * too * - * @param fqfieldName - * @param type - * @return + * @param fqfieldName FQ field name + * @param type of field + * @return field name */ static public String getSolrFieldName(String fqfieldName, TYPE type) { switch (type) { @@ -232,10 +249,12 @@ } /** + * Copy solr document * - * @param source - * @param dest - * @param fields only copy this field, if null or empty, copy all field + * @param source solr document source + * @param dest solr document destination + * @param fieldToInclude only copy thes fields, if null or empty, copy all field + * @param fieldToExclude to not copy these fields */ static public void copySolrDocument( SolrDocument source, SolrInputDocument dest, @@ -283,9 +302,10 @@ } /** + * Copy solr document * - * @param source - * @param dest + * @param source solr document source + * @param dest solr document destination * @param fieldToInclude only copy this field, if null or empty, copy all field * @since 3.1 */ @@ -295,10 +315,11 @@ } /** + * Copy solr document exlude some fields * - * @param source - * @param dest - * @param fields only copy this field, if null or empty, copy all field + * @param source solr document source + * @param dest solr document destination + * @param fieldToExclude not copy these fields * @since 3.1 */ static public void copySolrDocumentExcludeSomeField( Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java =================================================================== --- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-03-04 16:35:52 UTC (rev 745) +++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-03-08 18:02:04 UTC (rev 746) @@ -60,7 +60,6 @@ import org.nuiton.wikitty.services.WikittyTransaction; import java.io.File; -import java.util.Collections; import org.apache.commons.lang.StringUtils; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.TimeLog; @@ -97,7 +96,7 @@ * Init wikitty search engine on solr embedded server. * * @param extensionStorage extension storage - * @param properties properties (can be null) + * @param config app config (can be null) */ public WikittySearchEngineSolr( ApplicationConfig config, WikittyExtensionStorage extensionStorage) { @@ -347,8 +346,8 @@ * <li> reindexation des objets qui le contenait comme parent dans un champs attached * </li> * - * @param transaction - * @param ids + * @param transaction wikitty transaction + * @param ids to deletes * @throws WikittyException */ @Override @@ -429,7 +428,7 @@ // les phases suivantes ne sont a faire que s'il y a des TreeNode // supprimes - Map<String, SolrDocument> treeNodeParentRemoved = Collections.emptyMap(); + Map<String, SolrDocument> treeNodeParentRemoved; if (treeNodeRemoved != null && treeNodeRemoved.size() > 0) { // // Phase 3: reindexation des noeuds dont un pere a disparu @@ -476,13 +475,14 @@ * Modifie/Ajoute les champs specifique a l'indexation des arbres sur les * TreeNode. * - * On se base sur le fait que si un TreeNode est dans SolrResource il ne + * On se base sur le fait que si un TreeNode est dans {@link SolrResource} il ne * peut etre que dans deux etats. Soit il a ete reindexe pour les arbres * et il a les champs d'indexation arbre. Soit il a pas encore ete reindexe * pour les arbres et dans ce cas il ne doit pas avoir les champs d'indexation * d'arbre. (il est donc interdit d'avoir des champs d'indexation arbre - * obsolete si le document est dans SolrResource) + * obsolete si le document est dans {@link SolrResource}) * + * @param solrResource solR resource * @param doc les documents representant le TreeNode * @param tree tous les autres noeuds d'arbre dont on pourrait avoir * besoin pour l'indexation @@ -756,13 +756,13 @@ /** * Si l'argument n'est pas un TreeNode, une exception est levee * - * @param transaction - * @param w l'objet root du resultat + * @param transaction wikitty transaction + * @param wikittyId l'objet root du resultat * @param depth profondeur souhaite pour la recherche des fils * @param count vrai si l'on souhaite avoir le nombre d'attachment associe * au noeud retourne * @param filter filtre utilise pour compter le nombre d'attachment - * @return + * @return all childrens count */ @Override public TreeNodeResult<String> findAllChildrenCount( @@ -779,10 +779,9 @@ Search treeSearch = Search.query().and().eq(TREENODE_PARENTS, wikittyId); if (depth >= 0) { Integer d = (Integer) doc.getFieldValue(TREENODE_DEPTH); - int startDepth = d.intValue(); treeSearch = treeSearch.bw(TREENODE_DEPTH, - String.valueOf(startDepth), - String.valueOf(startDepth + depth)); + String.valueOf(d), + String.valueOf(d + depth)); } Criteria treeCriteria = treeSearch.criteria(); 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-03-04 16:35:52 UTC (rev 745) +++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrTest.java 2011-03-08 18:02:04 UTC (rev 746) @@ -37,12 +37,7 @@ import org.junit.Test; import org.nuiton.wikitty.WikittyConfig; import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.entities.Wikitty; -import org.nuiton.wikitty.entities.WikittyImpl; -import org.nuiton.wikitty.entities.WikittyLabelImpl; -import org.nuiton.wikitty.entities.WikittyTreeNode; -import org.nuiton.wikitty.entities.WikittyTreeNodeImpl; -import org.nuiton.wikitty.entities.WikittyUserImpl; +import org.nuiton.wikitty.entities.*; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.search.Search; @@ -312,4 +307,45 @@ Assert.assertEquals(0, proxy.findAllByCriteria(query.criteria()).getNumFound()); Assert.assertEquals(0, ws.findAllByCriteria(null, query.criteria()).getNumFound()); } + + // Nombre of iteration for test delete + public static final int NB_DOCS_TO_DELETE = 17; + + /** + * Test que lorsque plus de 10 documents solr sont supprimés, il le sont réelement + * car par défault, solr limte les resultats à 10 + * + * @see + */ + @Test + public void testSolrDeleteMoreThan10Documents() { + + List<WikittyLabel> toDelete = new ArrayList<WikittyLabel>(); + + for (int i = 0;i < NB_DOCS_TO_DELETE;i++) { + WikittyLabel toDeleteEntity = new WikittyLabelImpl(); + + // store new wikitty + toDeleteEntity.addLabels("toDeleteEntity" + i); + toDelete.add(toDeleteEntity); + } + + // Store all + proxy.store(toDelete); + + // 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()).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()); + + // delete it + proxy.delete(toDelete); + + // try to look for it after deletion + Assert.assertEquals(0, proxy.findAllByCriteria(query.criteria()).getNumFound()); + Assert.assertEquals(0, ws.findAllByCriteria(null, query.criteria()).getNumFound()); + Assert.assertEquals(0, proxy.findAllByCriteria(WikittyLabel.class, query.criteria()).size()); + } }
participants (1)
-
sletellier@users.nuiton.org