r1301 - in trunk: src/site/rst/user wikitty-api/src/main/java/org/nuiton/wikitty
Author: bpoussin Date: 2012-01-07 22:34:07 +0100 (Sat, 07 Jan 2012) New Revision: 1301 Url: http://nuiton.org/repositories/revision/wikitty/1301 Log: maj documentation migration et ajout de methode utile dans le client Modified: trunk/src/site/rst/user/migration.rst trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java Modified: trunk/src/site/rst/user/migration.rst =================================================================== --- trunk/src/site/rst/user/migration.rst 2012-01-07 20:40:21 UTC (rev 1300) +++ trunk/src/site/rst/user/migration.rst 2012-01-07 21:34:07 UTC (rev 1301) @@ -57,7 +57,7 @@ Si vous avez des migrations spécifiques à effectuer, ajoutez au registre toutes les migrations spécifiques des extensions:: - WikittyExtensionMigration.migrationRegistry.put("myExtension", myMigrationClass); + wikittyClient.getMigrationRegistry().put("myExtension", myMigrationClass); Vous pouvez maintenant utiliser vos données simplement, elles seront migrées au chargement. @@ -92,8 +92,35 @@ ou renommés (dans ce cas, il faut ajouter un tag renameFrom sur le champ). Pour toutes les autre migrations, vous devrez créer votre propre classe de -migration qui implémente WikittyExtensionMigration. Cette classe n'a besoin de +migration qui implante WikittyExtensionMigration. Cette classe n'a besoin de faire la migration d'une version à l'autre, par exemple de la version 1 à la version 2. Dans le cas d'une migration de la version 1 à la version 4, Wikitty appellera automatiquement les classes pour migrer de la version 1 à la version 2 -puis de la version 2 à la version 3 et ainsi de suite. \ No newline at end of file +puis de la version 2 à la version 3 et ainsi de suite. + +Le plus simple pour imlanter votre propre migration est le plus souvent d'étendre +la classe WikittyExtensionMigrationRename qui va permettre de géré le plus de +chose possible. Il ne vous restera ensuite que les modifications que vous +souhaitez réellement faire à implanter.:: + + public static class MyMigration extends WikittyExtensionMigrationRename { + public Wikitty migrate(WikittyService service, Wikitty wikitty, + WikittyExtension oldExt, WikittyExtension newExt) { + // ici le wikitty contient l'ancienne extension et les anciens champs + Wikitty result = super.migrate(service, wikitty, oldExt, newExt); + // ici result est la version migre de l'objet (nouvelle extension) + // Vous pouvez faire ici des traitement spécifique + return result; + } + } + +Utilisation du fichier de configuration +======================================= + +Pour simplifier l'enregistrement des classes de migration et évité de devoir +passer par de la programmation vous pouvez ajouter des entrées dans le fichier +de configuration, par exemple pour utilier la classe **monpackage.MyMigration** +pour la migration de l'extension **MyExtensionName**, ajoutez dans le fichier:: + + wikitty.migration.class.MyExtensionName=monpackage.MyMigration + Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-01-07 20:40:21 UTC (rev 1300) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-01-07 21:34:07 UTC (rev 1301) @@ -64,6 +64,7 @@ import org.nuiton.wikitty.query.WikittyQueryResultTreeNode; import org.nuiton.wikitty.query.conditions.ElementField; import org.nuiton.wikitty.query.conditions.Select; +import org.nuiton.wikitty.services.WikittyExtensionMigrationRegistry; /** * Wikitty client is object used in client side to access WikittyService. @@ -88,6 +89,7 @@ final static private Log log = LogFactory.getLog(WikittyClient.class); final static private TimeLog timeLog = new TimeLog(WikittyClient.class); + protected ApplicationConfig config = null; /** Delegated wikitty service. */ protected WikittyServiceEnhanced wikittyService; @@ -101,35 +103,39 @@ /** * Empty constructor (uninitialized wikittyService). */ - public WikittyClient() { + protected WikittyClient() { } + /** + * Creation du client, le wikittyService est instancier grace au information + * trouve dans la configuration. + * + * @param config + */ public WikittyClient(ApplicationConfig config) { + this(config, WikittyServiceFactory.buildWikittyService(config)); + } + + /** + * Creation du client en forcant le wikittyService + * + * @param config + * @param wikittyService + */ + public WikittyClient(ApplicationConfig config, WikittyService wikittyService) { if (config != null) { + this.config = config; long timeToLogInfo = config.getOptionAsInt(WikittyConfigOption. WIKITTY_CLIENT_TIME_TO_LOG_INFO.getKey()); long timeToLogWarn = config.getOptionAsInt(WikittyConfigOption. WIKITTY_CLIENT_TIME_TO_LOG_WARN.getKey()); timeLog.setTimeToLogInfo(timeToLogInfo); timeLog.setTimeToLogWarn(timeToLogWarn); + } - } - - /** - * Constructor with wikittyService. - * - * @param wikittyService wikitty service - */ - public WikittyClient(WikittyService wikittyService) { - this(); setWikittyService(wikittyService); } - public WikittyClient(ApplicationConfig config, WikittyService wikittyService) { - this(config); - setWikittyService(wikittyService); - } - static public TimeLog getTimeTrace() { return timeLog; } @@ -138,6 +144,12 @@ return timeLog.getCallCount(); } + public WikittyExtensionMigrationRegistry getMigrationRegistry() { + WikittyExtensionMigrationRegistry result = + config.getObject(WikittyExtensionMigrationRegistry.class); + return result; + } + public void login(String login, String password) { long start = TimeLog.getTime(); String result = wikittyService.login(login, password); @@ -198,6 +210,10 @@ this.wikittyService = new WikittyServiceEnhanced(wikittyService); } + public ApplicationConfig getConfig() { + return config; + } + //////////////////////////////////////////////////////////////////////////// // // STORE
participants (1)
-
bpoussin@users.nuiton.org