Author: mfortun Date: 2011-04-21 14:22:24 +0200 (Thu, 21 Apr 2011) New Revision: 828 Url: http://nuiton.org/repositories/revision/wikitty/828 Log: * add detection of deleted file, now it delete property from the local workspace Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-04-21 09:39:45 UTC (rev 827) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-04-21 12:22:24 UTC (rev 828) @@ -112,6 +112,8 @@ static public String META_PREFIX_KEY_CHECKSUM = "checksum."; + static public String META_PREFIX_KEY_ID = "id."; + static public String WIKITTY_FILE_META_PROPERTIES_FILE = "meta.properties"; static public String WIKITTY_FILE_SERVICE = "ws.properties"; @@ -928,7 +930,7 @@ File starts = new File(homeFile.getAbsolutePath() + File.separator + labelToDir); if (starts.exists()) { - harvestNewCheckModifications(starts, label); + harvestNewCheckModificationsAndDeleted(starts, label); } BidiMap map = harvestLocalWikitties(homeFile, true); @@ -946,7 +948,6 @@ e.printStackTrace(); } - List<PagedResult<String>> result = new ArrayList<PagedResult<String>>(); // for each criteria @@ -993,7 +994,7 @@ File starts = new File(homeFile.getAbsolutePath() + File.separator + labelToDir); if (starts.exists()) { - harvestNewCheckModifications(starts, label); + harvestNewCheckModificationsAndDeleted(starts, label); } BidiMap map = harvestLocalWikitties(homeFile, true); @@ -1220,8 +1221,8 @@ return result; } - protected void harvestNewCheckModifications(File starts, String label) - throws Exception { + protected void harvestNewCheckModificationsAndDeleted(File starts, + String label) throws Exception { File propertyFile = new File(starts + File.separator + PROPERTY_DIRECTORY); @@ -1238,13 +1239,17 @@ meta.put(META_CURRENT_LABEL, label); meta.store(); + + List<String> listChildFileNonDir = new ArrayList<String>(); + for (File child : starts.listFiles()) { if (child.isDirectory() && !child.getName().equals(PROPERTY_DIRECTORY)) { - harvestNewCheckModifications(child, label + harvestNewCheckModificationsAndDeleted(child, label + WIKITTYLABEL_SEPARATOR + child.getName()); } else if (!child.isDirectory()) { + listChildFileNonDir.add(child.getName()); // check if file is a wikitty by check if they is a id/file name // in the correct properties file List<String> filesWikitty = new ArrayList<String>(); @@ -1258,7 +1263,35 @@ } } } + // after the add of new file check for delete file + ids = getWikittyPublicationProperties(starts, + WIKITTY_ID_PROPERTIES_FILE); + List<String> filesWikitty = new ArrayList<String>(); + filesWikitty.addAll(CollectionUtil.toGenericCollection(ids.values(), + String.class)); + + //remove property of deleted wikitties + if (filesWikitty.size() != listChildFileNonDir.size()) { + + meta = getWikittyPublicationProperties(starts, + WIKITTY_FILE_META_PROPERTIES_FILE); + + filesWikitty.removeAll(listChildFileNonDir); + + for (String fileRemoved : filesWikitty) { + ids.remove(meta.get(META_PREFIX_KEY_ID + fileRemoved)); + + meta.remove(META_PREFIX_KEY_CHECKSUM + fileRemoved); + meta.remove(META_PREFIX_KEY_VERSION + fileRemoved); + meta.remove(META_PREFIX_KEY_ID + fileRemoved); + } + meta.store(); + + } + + ids.store(); + } protected void checkModifications(File child) throws Exception { @@ -1335,6 +1368,8 @@ wikitty.getVersion()); meta.put(META_PREFIX_KEY_CHECKSUM + towrite.getName(), localMd5); + meta.put(META_PREFIX_KEY_ID + towrite.getName(), wikitty.getId()); + id.store(); meta.store(); } else {