Author: mfortun Date: 2011-07-07 16:27:10 +0200 (Thu, 07 Jul 2011) New Revision: 1068 Url: http://nuiton.org/repositories/revision/wikitty/1068 Log: * Util Class for wikitty stored as file * WikittyPubData correctly handled in externalization Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 12:30:41 UTC (rev 1067) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-07 14:27:10 UTC (rev 1068) @@ -4,6 +4,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.List; +import java.util.Set; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.JarOutputStream; @@ -17,8 +18,14 @@ import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyServiceFactory; import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyLabel; +import org.nuiton.wikitty.entities.WikittyLabelHelper; import org.nuiton.wikitty.publication.entities.WikittyPubData; +import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper; import org.nuiton.wikitty.publication.entities.WikittyPubText; +import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper; +import org.nuiton.wikitty.publication.synchro.PropertiesExtended; +import org.nuiton.wikitty.publication.synchro.WikittyFileUtil; import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; @@ -35,13 +42,17 @@ public static String TEMPORARY_FILE_NAME = "tempBeforeJar"; public static String DEFAULT_JAR_NAME = "pub-externalized"; + public static String VERSION_SUFFIX = ".version"; + public static String EXTENSION_SUFFIX = ".extension"; + /* * Class don't have to be instantiate */ private WikittyPublicationExternalize() { } - static public void main(String[] args) throws ArgumentsParserException, IOException { + static public void main(String[] args) throws ArgumentsParserException, + IOException { ApplicationConfig appconfig = new ApplicationConfig(); appconfig.parse(args); @@ -60,8 +71,6 @@ String urlFileSystem = "file:///home/Manou/testWP#wp"; // String urlFileSystem = currentFile.getParent() + "#" + Label; - System.out.println(urlFileSystem); - appconfig.setOption(WikittyConfigOption.WIKITTY_SERVER_URL.getKey(), urlFileSystem); @@ -77,34 +86,85 @@ File tempDirectory = new File(currentFile + File.separator + TEMPORARY_FILE_NAME); tempDirectory.mkdir(); - - - + + File filePropertiesId = new File(tempDirectory + File.separator + + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); + filePropertiesId.createNewFile(); + PropertiesExtended idProperties = new PropertiesExtended( + filePropertiesId); + + File filePropertiesMeta = new File(tempDirectory + File.separator + + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); + filePropertiesMeta.createNewFile(); + PropertiesExtended metaProperties = new PropertiesExtended( + filePropertiesMeta); + // iterate wikitty // - write file // - write property // - write for (Wikitty wikit : allWikittyOnFS) { + if (!wikit.hasExtension(WikittyLabel.EXT_WIKITTYLABEL)) { + // non usable wikitty + continue; + } - - + // construct directory with labels + + Set<String> labeles = WikittyLabelHelper.getLabels(wikit); + if (labeles.size() == 0) { + continue; + } + + String label = labeles.toArray()[0].toString(); + + WikittyFileUtil.createFilesFromLabelPath(tempDirectory, label); + + // preparation for properties + String labelPath = WikittyFileUtil.labelToPath(label); + labelPath += File.separator; + + String id = wikit.getId(); + metaProperties.put(id + VERSION_SUFFIX, wikit.getVersion()); + + String extension; + File wikittyFile; + String name; + if (wikit.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT)) { + name = WikittyPubTextHelper.getName(wikit); + idProperties.put(id, labelPath + name); + metaProperties.put(id + EXTENSION_SUFFIX, + WikittyPubTextHelper.getFileExtension(wikit)); + } - } else if (wikit.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) { + if (wikit.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) { + byte[] content = WikittyPubDataHelper.getContent(wikit); + extension = WikittyPubDataHelper.getFileExtension(wikit); + name = WikittyPubDataHelper.getName(wikit); + // write file on the temporary directory + wikittyFile = new File( + tempDirectory.getAbsolutePath()+File.separator+ + labelPath + name + "." + extension); + wikittyFile.createNewFile(); + FileUtil.byteToFile(content, wikittyFile); + + // write properties + metaProperties.put(id + EXTENSION_SUFFIX, extension); + idProperties.put(id, labelPath + name); } } - - - - - - + + metaProperties.store(); + idProperties.store(); + // construct jar - File jarFile = new File(currentFile + File.separator+DEFAULT_JAR_NAME+".jar"); - //JarUtil.compressFiles(jarFile, tempDirectory ); - JarUtil.compressFiles(jarFile, new File("/home/Manou/testWP/wp/") ); - + File jarFile = new File(currentFile + File.separator + DEFAULT_JAR_NAME + + ".jar"); + JarUtil.compressFiles(jarFile, tempDirectory); + // JarUtil.compressFiles(jarFile, new File("/home/Manou/testWP/wp/") ); + // delete tempfile FileUtil.deleteRecursively(tempDirectory); } @@ -138,8 +198,4 @@ * metadata 18114-1811-181-18.version=1.0 18114-1811-181-18.exention=js */ - public static String getWikittyPubLocalName(Wikitty w) { - return null; - } - } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-07 12:30:41 UTC (rev 1067) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-07 14:27:10 UTC (rev 1068) @@ -1,5 +1,6 @@ package org.nuiton.wikitty.publication.synchro; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -7,6 +8,11 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.FileUtil; +import org.nuiton.util.StringUtil; import org.nuiton.wikitty.WikittyException; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyUtil; @@ -33,6 +39,9 @@ public abstract class AbstractWikittyFileService implements WikittyService{ + + final static Log log = LogFactory.getLog(AbstractWikittyFileService.class); + public AbstractWikittyFileService() { super(); } @@ -420,4 +429,5 @@ } } + } \ No newline at end of file Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java 2011-07-07 14:27:10 UTC (rev 1068) @@ -0,0 +1,88 @@ +package org.nuiton.wikitty.publication.synchro; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.FileUtil; +import org.nuiton.util.StringUtil; + +public class WikittyFileUtil { + + /** + * The file name of the meta property file + */ + static public String WIKITTY_FILE_META_PROPERTIES_FILE = "meta.properties"; + + /* + * Need a different file for id and meta information about wikittiesFiles + * because with this solution we can simply read the ids with props.keySet() + */ + /** + * The file Name of the id property file + */ + static public String WIKITTY_ID_PROPERTIES_FILE = "ids.properties"; + + + + final static Log log = LogFactory.getLog(WikittyFileUtil.class); + + /** + * Construct correctly the path from a label + * + * @param label + * the label + * @return the correct path + */ + public static String labelToPath(String label) { + + String result = label; + + result = result.replace(".", File.separator); + + // correct the pb with directory name begin by . + result = result.replace(File.separator + File.separator, File.separator + + "."); + + log.info("Convert label to path: " + label + " path:" + result); + + return result; + } + + /** + * Creates all the file system require from a label path in the working + * directory + * + * @param label + * the path string + * @return if all the path was created + * @throws IOException + */ + public static boolean createFilesFromLabelPath(File homeFile, String label) throws IOException + { + + label = labelToPath(label); + + log.info("Create directory from path:" + label); + + String[] pathElements = StringUtil.split(label, File.separator); + + boolean result = false; + + if (homeFile.exists() && homeFile.isDirectory()) { + String path = homeFile.getCanonicalPath(); + result = true; + for (int i = 0; i < pathElements.length; i++) { + + path = path + File.separator + pathElements[i]; + File temp = new File(path); + FileUtil.createDirectoryIfNecessary(temp); + result = result && temp.exists(); + } + } + + return result; + } + +} Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java ___________________________________________________________________ Added: svn:mime-type + text/plain 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-07-07 12:30:41 UTC (rev 1067) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-07-07 14:27:10 UTC (rev 1068) @@ -566,7 +566,7 @@ PropertiesExtended metaPropertiesExtended = WikittyPublicationFileSystem .getWikittyPublicationProperties( currentDir, - WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); String labelCurrent = metaPropertiesExtended .getProperty(WikittyPublicationFileSystem.META_CURRENT_LABEL); 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-07-07 12:30:41 UTC (rev 1067) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-07 14:27:10 UTC (rev 1068) @@ -68,7 +68,9 @@ import org.nuiton.wikitty.search.operators.Restriction; import org.nuiton.wikitty.services.WikittyEvent; import org.nuiton.wikitty.services.WikittyListener; +import org.nuiton.wikitty.publication.synchro.WikittyFileUtil; + public class WikittyPublicationFileSystem extends AbstractWikittyFileService { /** to use log facility, just put in your code: log.info(\"...\"); */ @@ -121,21 +123,8 @@ */ static public String META_PREFIX_KEY_ID = "id."; - /** - * The file name of the meta property file - */ - static public String WIKITTY_FILE_META_PROPERTIES_FILE = "meta.properties"; - /* - * Need a different file for id and meta information about wikittiesFiles - * because with this solution we can simply read the ids with props.keySet() - */ /** - * The file Name of the id property file - */ - static public String WIKITTY_ID_PROPERTIES_FILE = "ids.properties"; - - /** * The file name of the wikitty service property */ static public String WIKITTY_FILE_SERVICE = "ws.properties"; @@ -410,7 +399,7 @@ } // create the directories from the label - boolean pathFilecreated = createFilesFromLabelPath(ourDir); + boolean pathFilecreated = WikittyFileUtil.createFilesFromLabelPath(homeFile,ourDir); if (pathFilecreated) { // create the path with the label @@ -478,7 +467,7 @@ // write current label PropertiesExtended metaProperties = getWikittyPublicationProperties( wikittyParenFile, - WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); // update metaProperties .setProperty( @@ -565,7 +554,7 @@ try { // construct the starts file from the label and the working // directory - String labelToDir = this.labelToPath(label); + String labelToDir = WikittyFileUtil.labelToPath(label); File starts = new File(homeFile.getAbsolutePath() + File.separator + labelToDir); @@ -620,7 +609,7 @@ // load properties PropertiesExtended propsProperties = getWikittyPublicationProperties( new File(path), - WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); // update remove properties propsProperties.remove(META_PREFIX_KEY_CHECKSUM + fileName); @@ -633,7 +622,7 @@ // load properties PropertiesExtended idProperties = getWikittyPublicationProperties( new File(path), - WikittyPublicationFileSystem.WIKITTY_ID_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); // update idProperties.remove(id); // resave @@ -665,7 +654,7 @@ try { // construct properly with the working directory and the label // the starts directory - String labelToDir = this.labelToPath(label); + String labelToDir = WikittyFileUtil.labelToPath(label); File starts = new File(homeFile.getAbsolutePath() + File.separator + labelToDir); if (starts.exists()) { @@ -739,7 +728,7 @@ try { // construct properly with the working directory and the label // the starts directory - String labelToDir = this.labelToPath(label); + String labelToDir = WikittyFileUtil.labelToPath(label); File starts = new File(homeFile.getAbsolutePath() + File.separator + labelToDir); if (starts.exists()) { @@ -882,7 +871,7 @@ Properties idProps = new Properties(); File idFile = new File(propsDir.getCanonicalPath() + File.separator - + WikittyPublicationFileSystem.WIKITTY_ID_PROPERTIES_FILE); + + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); if (idFile.exists()) { idProps.load(new FileReader(idFile)); } @@ -988,7 +977,7 @@ // load properties File wikittyParentDir = new File(path); PropertiesExtended props = getWikittyPublicationProperties( - wikittyParentDir, WIKITTY_FILE_META_PROPERTIES_FILE); + wikittyParentDir, WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); // set the current label WikittyLabelHelper.addLabels(result, props @@ -1052,9 +1041,9 @@ // create/load property file PropertiesExtended ids = getWikittyPublicationProperties(starts, - WIKITTY_ID_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); PropertiesExtended meta = getWikittyPublicationProperties(starts, - WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); // set label meta.put(META_CURRENT_LABEL, label); @@ -1087,7 +1076,7 @@ } // after adding all new file, check for deleted wikitty ids = getWikittyPublicationProperties(starts, - WIKITTY_ID_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); List<String> filesWikitty = new ArrayList<String>(); filesWikitty.addAll(CollectionUtil.toGenericCollection(ids.values(), @@ -1100,7 +1089,7 @@ log.info("remove wikitty informations for deleted file"); meta = getWikittyPublicationProperties(starts, - WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); filesWikitty.removeAll(listChildFileNonDir); @@ -1144,7 +1133,7 @@ String localMd5 = StringUtil.asHex(byt); PropertiesExtended meta = getWikittyPublicationProperties( - child.getParentFile(), WIKITTY_FILE_META_PROPERTIES_FILE); + child.getParentFile(),WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); String registeredMD5 = meta.getProperty(META_PREFIX_KEY_CHECKSUM + child.getName()); @@ -1193,9 +1182,9 @@ File parent = towrite.getParentFile(); PropertiesExtended id = getWikittyPublicationProperties(parent, - WIKITTY_ID_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); PropertiesExtended meta = getWikittyPublicationProperties(parent, - WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); id.put(wikitty.getId(), towrite.getName()); @@ -1221,63 +1210,11 @@ } - /** - * Creates all the file system require from a label path in the working - * directory - * - * @param label - * the path string - * @return if all the path was created - * @throws Exception - */ - protected boolean createFilesFromLabelPath(String label) throws Exception { - label = labelToPath(label); - log.info("Create directory from path:" + label); - String[] pathElements = StringUtil.split(label, File.separator); - boolean result = false; - - if (homeFile.exists() && homeFile.isDirectory()) { - String path = homeFile.getCanonicalPath(); - result = true; - for (int i = 0; i < pathElements.length; i++) { - - path = path + File.separator + pathElements[i]; - File temp = new File(path); - FileUtil.createDirectoryIfNecessary(temp); - result = result && temp.exists(); - } - } - - return result; - } - /** - * Construct correctly the path from a label - * - * @param label - * the label - * @return the correct path - */ - public String labelToPath(String label) { - - String result = label; - - result = result.replace(".", File.separator); - - // correct the pb with directory name begin by . - result = result.replace(File.separator + File.separator, File.separator - + "."); - - log.info("Convert label to path: " + label + " path:" + result); - - return result; - } - - /** * Use to search and return the home property that containt informations * about wikitty service use to synchronise a wikitty publication file * system
participants (1)
-
mfortun@users.nuiton.org