Author: bpoussin Date: 2010-06-11 19:17:10 +0200 (Fri, 11 Jun 2010) New Revision: 126 Url: http://nuiton.org/repositories/revision/wikitty/126 Log: Evolution #678 - ajout directement sur PagedResult de cast(token, ws): PagedResult<Wikitty> et utilisation Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java 2010-06-11 17:01:31 UTC (rev 125) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/PagedResult.java 2010-06-11 17:17:10 UTC (rev 126) @@ -99,6 +99,45 @@ * When you used autoconvert = false, you have a potentially problem when * you have modified a BusinessEntity to have new extension and all your * wikitty object are not uptodate in database. + * + * @param <E> class to cast into + * @param proxy used to retrieve securityToken and WikittyService + * @param autoconvert if autoconvert is false and object don't all needed + * extension, object is not put in the result + * @return new PagedResult, this result can have less elements that original + * for some reason (security, ...) + */ + public PagedResult<Wikitty> cast(String securityToken, WikittyService ws) { + List<Wikitty> castedResult; + + if (results.size() == 0) { + castedResult = new ArrayList<Wikitty>(); + } else { + if (results.get(0) instanceof String) { + // le pagedresult courant contient des Ids + // Si ce n'est pas le cas, ca veut dire que le developpeur utilisant + // ce PagedResult ne sait pas ce qu'il fait :) + List<String> ids = (List<String>) results; + castedResult = ws.restore(securityToken, ids); + } else { + throw new ClassCastException("PagedResult don't contains" + + " wikitty String id but " + results.get(0).getClass()); + } + } + PagedResult<Wikitty> result = new PagedResult<Wikitty>( + firstIndice, numFound, queryString, facets, castedResult); + return result; + } + + /** + * Convert all result to the wanted type and return new PagedResult with + * this new result list. If some result don't have the right extension (clazz) + * this extension is automatically added if autoconvert is true. Else + * an exception is thrown when result without extension is found. + * + * When you used autoconvert = false, you have a potentially problem when + * you have modified a BusinessEntity to have new extension and all your + * wikitty object are not uptodate in database. * * @param <E> class to cast into * @param proxy used to retrieve securityToken and WikittyService Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-06-11 17:01:31 UTC (rev 125) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2010-06-11 17:17:10 UTC (rev 126) @@ -334,10 +334,7 @@ public PagedResult<Wikitty> findAllByLabel(String label, int firstIndex, int endIndex) { PagedResult<String> resultId = wikittyService.findAllByLabel(securityToken, label, firstIndex, endIndex); - List<Wikitty> wikitties = wikittyService.restore(securityToken, resultId.getAll()); - PagedResult<Wikitty> result = new PagedResult<Wikitty>( - resultId.getFirstIndice(), resultId.getNumFound(), - resultId.getQueryString(), resultId.getFacets(), wikitties); + PagedResult<Wikitty> result = resultId.cast(securityToken, wikittyService); return result; } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java 2010-06-11 17:01:31 UTC (rev 125) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ExportTask.java 2010-06-11 17:17:10 UTC (rev 126) @@ -53,12 +53,7 @@ log.info("Export started"); } // get Wikitty from Id - List<Wikitty> wikitties = ws.restore( - securityToken, pageResultId.getAll()); - PagedResult<Wikitty> pageResult = new PagedResult<Wikitty>( - pageResultId.getFirstIndice(), pageResultId.getNumFound(), - pageResultId.getQueryString(), pageResultId.getFacets(), - wikitties); + PagedResult<Wikitty> pageResult = pageResultId.cast(securityToken, ws); ImportExportMethod exporter = format.ieporter(); exporter.exportWriter(securityToken, writer, ws, transaction, pageResult); Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java =================================================================== --- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-06-11 17:01:31 UTC (rev 125) +++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/solr/WikittySearchEnginSolr.java 2010-06-11 17:17:10 UTC (rev 126) @@ -684,7 +684,6 @@ } int numFound = (int)resp.getResults().getNumFound(); - // FIXME null security token PagedResult<String> result = new PagedResult<String>( firstIndex, numFound, queryString, facets, ids);