Author: bpoussin Date: 2012-05-31 18:24:37 +0200 (Thu, 31 May 2012) New Revision: 1480 Url: http://nuiton.org/repositories/revision/wikitty/1480 Log: add new method restoreExtensionLastVersion with collection or array in argument that restore only asked extension in last version Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-05-31 15:51:17 UTC (rev 1479) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-05-31 16:24:37 UTC (rev 1480) @@ -31,11 +31,13 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; @@ -43,6 +45,7 @@ import java.util.Set; import java.util.regex.Pattern; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.nuiton.util.ApplicationConfig; import org.nuiton.util.TimeLog; @@ -1313,14 +1316,14 @@ /** * Search extension with name in last version. - * + * * @param extensionName extension name * @return the corresponding object, exception if no such object found. */ public WikittyExtension restoreExtensionLastVersion(String extensionName) { long start = TimeLog.getTime(); WikittyExtension extension = wikittyService.restoreExtensionLastVersion(securityToken, extensionName); - + timeLog.log(start, "restoreExtensionLastVersion"); return extension; } @@ -1328,7 +1331,84 @@ /** * Search extension with name in last version. * + * @param extensionName extension name + * @return the corresponding object, exception if no such object found. + */ + public Collection<WikittyExtension> restoreExtensionLastVersion(String extensionName1, String extensionName2, String ... extensionName) { + long start = TimeLog.getTime(); + + Collection<String> extName = new ArrayList<String>(extensionName.length + 2); + extName.add(extensionName1); + extName.add(extensionName2); + extName.addAll(Arrays.asList(extensionName)); + + Collection<WikittyExtension> result = restoreExtensionLastVersion(extName); + + timeLog.log(start, "restoreExtensionLastVersion[...]"); + return result; + } + + /** + * Search extension with name in last version. + * + * @param extensionName extension name + * @return the corresponding object, exception if no such object found. + */ + public Collection<WikittyExtension> restoreExtensionLastVersion(String[] extensionName) { + long start = TimeLog.getTime(); + Collection<String> extName = new ArrayList<String>(extensionName.length); + extName.addAll(Arrays.asList(extensionName)); + + Collection<WikittyExtension> result = restoreExtensionLastVersion(extName); + + timeLog.log(start, "restoreExtensionLastVersion[]"); + return result; + } + + /** + * Search extension with name in last version. If extensionNames is null or + * empty, return all extension + * * @param extensionNames extension name + * @return the corresponding object, exception if no such object found. + */ + // TODO poussin 20120531 l'implantation de cette methode devrait etre fait cote serveur, mais + // cela implique de modifier la signature de tous les WikittyService, donc pour l'instant + // l'implantation est cote client + public Collection<WikittyExtension> restoreExtensionLastVersion(Collection<String> extensionNames) { + long start = TimeLog.getTime(); + + if (CollectionUtils.isEmpty(extensionNames)) { + // recuperation de toutes les extensions + extensionNames = new LinkedHashSet<String>(); + Collection<String> extIds = getAllExtensionIds(); + for (String id : extIds) { + String name = WikittyExtension.computeName(id); + extensionNames.add(name); + } + } + + Map<String, WikittyExtension> extensionMaps = new LinkedHashMap<String, WikittyExtension>(); + // chargement de la definition de toutes les extensions + List<WikittyExtension> exts = restoreExtensionAndDependenciesLastVesion(extensionNames); + for (WikittyExtension ext : exts) { + extensionMaps.put(ext.getName(), ext); + } + + // suppression des extensions non souhaitee + // le mieux serait d'avoir une method sur le client 'restoreExtensionLastVesion' + extensionMaps.keySet().retainAll(extensionNames); + + Collection<WikittyExtension> result = extensionMaps.values(); + + timeLog.log(start, "restoreExtensionLastVersion"); + return result; + } + + /** + * Search extension with name in last version. + * + * @param extensionNames extension name * @return extension wanted with dependencies extensions at head of list */ public List<WikittyExtension> restoreExtensionAndDependenciesLastVesion(Collection<String> extensionNames) {