Author: mfortun Date: 2011-04-21 17:18:04 +0200 (Thu, 21 Apr 2011) New Revision: 830 Url: http://nuiton.org/repositories/revision/wikitty/830 Log: * add correction for label manipulation Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-04-21 13:07:49 UTC (rev 829) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-04-21 15:18:04 UTC (rev 830) @@ -26,6 +26,7 @@ import java.net.URI; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -197,10 +198,45 @@ if (isUpdate) { List<Wikitty> newWikitties = proxyOrigin.restore(existOnlyOnOrigin); - proxyTarget.storeWikitty(newWikitties); - // we re store on the origin to ensure wikitty version - proxyOrigin.storeWikitty(newWikitties); + for (Wikitty wikittyNew : newWikitties) { + + Set<String> saveLabelOrigin = WikittyLabelHelper + .getLabels(wikittyNew); + + Set<String> targetLabels = new HashSet<String>(); + + // prepare set of target label + // we save all the label except the one corresponding + // to origin, determine by isRecur + for (String labels : saveLabelOrigin) { + + if (isRecur && labels.startsWith(labelOrigin)) { + String finalLabelTarge = labels.replace(labelOrigin, + labelTarget); + targetLabels.add(finalLabelTarge); + } else if (!isRecur && labels.equals(labelOrigin)) { + targetLabels.add(labelTarget); + } else { + targetLabels.add(labels); + } + + } + + WikittyLabelHelper.setLabels(wikittyNew, targetLabels); + + proxyTarget.store(wikittyNew); + + String versionSave = wikittyNew.getVersion(); + + WikittyLabelHelper.setLabels(wikittyNew, saveLabelOrigin); + wikittyNew.setVersion(versionSave); + + // we re store on the origin to ensure wikitty version + proxyOrigin.store(wikittyNew); + + } + } /* * if option delete remove those who are on the target but not on origin @@ -236,11 +272,25 @@ .versionGreaterThan(versionOrigin, versionTarget)) { Set<String> setLabelTarget = WikittyLabelHelper .getLabels(fromTarget); + + Set<String> setLabelOrigin = WikittyLabelHelper + .getLabels(fromOrigin); + // replace labels origins, by targets label WikittyLabelHelper.setLabels(fromOrigin, setLabelTarget); // send modified origin to target wikitty service proxyTarget.store(fromOrigin); // re store on origin to ensure version is the same on both + + // save the version case re set labels increment version + String saveVersion = fromOrigin.getVersion(); + // re set correctly labels + WikittyLabelHelper.setLabels(fromOrigin, setLabelOrigin); + // re set the version + fromOrigin.setVersion(saveVersion); + + // re store the wikitty with the correct version + // and labels proxyOrigin.store(fromOrigin); } }
participants (1)
-
mfortun@users.nuiton.org