Author: mfortun Date: 2011-04-20 14:22:19 +0200 (Wed, 20 Apr 2011) New Revision: 822 Url: http://nuiton.org/repositories/revision/wikitty/822 Log: * #1475 add field for file's extension in wikittypub * change method to determine mimetype * correct static values 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/WikittyPublicationFileSystem.java trunk/wikitty-publication/src/main/xmi/wikitty-publication.zargo 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-20 08:53:21 UTC (rev 821) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-04-20 12:22:19 UTC (rev 822) @@ -59,6 +59,9 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ final static private Log log = LogFactory.getLog(WikittyPublication.class); + static public String WIKITTY_OPTION_URL = "wikitty.service.server.url"; + static public String WIKITTY_OPTION_COMPONENT = "wikitty.WikittyService.components"; + static protected ApplicationConfig applicationConfig; /* @@ -289,16 +292,16 @@ result.setOptions(applicationConfig.getFlatOptions()); String url = uri.toASCIIString(); if (uri.getScheme().equals("file")) { - result.setOption("wikitty.WikittyService.components", + result.setOption(WIKITTY_OPTION_COMPONENT, "org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem"); } else if (uri.getScheme().equals("cajo")) { - result.setOption("wikitty.WikittyService.components", + result.setOption(WIKITTY_OPTION_COMPONENT, "org.nuiton.wikitty.services.WikittyServiceCajoClient"); // remove fragment from the uri. url = url.replaceAll("\\#.*", ""); } else if (uri.getScheme().equals("hessian")) { - result.setOption("wikitty.WikittyService.components", + result.setOption(WIKITTY_OPTION_COMPONENT, "org.nuiton.wikitty.services.WikittyServiceHessianClient"); // remove fragment from the uri. url = url.replaceAll("\\#.*", ""); @@ -312,7 +315,7 @@ log.info("set url " + url + " with component :" + result.getOption("wikitty.WikittyService.components")); - result.setOption("wikitty.service.server.url", url); + result.setOption(WIKITTY_OPTION_URL, url); return result; 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-20 08:53:21 UTC (rev 821) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-04-20 12:22:19 UTC (rev 822) @@ -43,6 +43,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.activation.MimeType; +import javax.activation.MimetypesFileTypeMap; + import org.apache.commons.collections.BidiMap; import org.apache.commons.collections.bidimap.DualHashBidiMap; import org.apache.commons.logging.Log; @@ -52,6 +55,8 @@ import org.nuiton.util.FileUtil; import org.nuiton.util.MD5InputStream; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.WikittyConfig; +import org.nuiton.wikitty.WikittyConfigOption; import org.nuiton.wikitty.WikittyException; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyUtil; @@ -102,6 +107,7 @@ protected File homeFile; protected boolean recursion; protected String label; + protected List<String> pubTextMimeType; static public String META_CURRENT_LABEL = "current.label"; @@ -140,7 +146,16 @@ * this */ try { - String url = app.getOption("wikitty.service.server.url"); + + + this.pubTextMimeType = new ArrayList<String>(); + + //TODO create a property file to store and handle mimetype for pub text + pubTextMimeType.add("application/javascript"); + + + + String url = app.getOption(WikittyPublication.WIKITTY_OPTION_URL); URI uri = new URI(url); this.label = uri.getFragment(); @@ -279,8 +294,6 @@ public WikittyEvent store(String securityToken, Collection<Wikitty> wikitties, boolean force) { - - try { for (Wikitty w : wikitties) { @@ -327,7 +340,7 @@ String mime = WikittyPubDataHelper.getMimeType(w); byte[] content = WikittyPubDataHelper.getContent(w); - extension = extensionFormimeType(mime); + extension = WikittyPubDataHelper.getFileExtension(w); wikittyFile = new File(path + File.separator + name + "." + extension); @@ -342,7 +355,7 @@ String mime = WikittyPubTextHelper.getMimeType(w); String content = WikittyPubTextHelper.getContent(w); - extension = extensionFormimeType(mime); + extension = WikittyPubTextHelper.getFileExtension(w); wikittyFile = new File(path + File.separator + name + "." + extension); @@ -353,15 +366,8 @@ } if (wikittyFile != null) { - // prepare for checksum - BufferedInputStream input = new BufferedInputStream( - new FileInputStream(wikittyFile)); - byte[] byt = MD5InputStream.hash(input); - - String localMd5 = StringUtil.asHex(byt); - - // load meta properties + // write current label PropertiesExtended metaProperties = getWikittyPublicationProperties( wikittyParenFile, WIKITTY_FILE_META_PROPERTIES_FILE); @@ -370,22 +376,10 @@ .setProperty( WikittyPublicationFileSystem.META_CURRENT_LABEL, ourDir); - - metaProperties.setProperty(META_PREFIX_KEY_VERSION - + wikittyFile.getName(), w.getVersion()); - - metaProperties.setProperty(META_PREFIX_KEY_CHECKSUM - + wikittyFile.getName(), localMd5); - // save metaProperties.store(); - // load id properties - PropertiesExtended idProperties = getWikittyPublicationProperties( - wikittyParenFile, WIKITTY_ID_PROPERTIES_FILE); - // update - idProperties.setProperty(w.getId(), - wikittyFile.getName()); - // save - idProperties.store(); + + // write common properties + writeWikittyFileProperties(wikittyFile, w.getId()); } } } @@ -955,8 +949,6 @@ e.printStackTrace(); } - - List<PagedResult<String>> result = new ArrayList<PagedResult<String>>(); // for each criteria @@ -1064,133 +1056,18 @@ } - /** - * Transform an object into a wikitty object in this case a File into a - * wikittyPubText/Data - * - * @param fileToTransform - * the objet to transform - * @param starts - * the home directory of the fileToTransform use to contruct the - * label - * @return the wikitty - * @throws Exception - */ - /* - * TODO mfortun-2011-04-07 correct the Exception's type - */ - protected Wikitty fileToWikitty(File fileToTransform, File starts, - boolean writeProperties) throws Exception { - String completeName = fileToTransform.getName(); - // isolate extension and file name - String extension = FileUtil.extension(fileToTransform); - String name = FileUtil.basename(completeName, "." + extension); - // search for the mimetype - String mimeType = mimeTypeForExtension(extension); - // prepare wikitty basics - Wikitty result = new WikittyImpl(); - result.addExtension(WikittyLabelImpl.extensionWikittyLabel); - // creation of the label - /* - * TODO mfortun-2011-04-08 find a better way to do this ? - */ - String pathToFile = fileToTransform.getParent(); - String pathToStart = starts.getCanonicalPath(); - String startDirName = starts.getName(); - - /* - * remove path from root to start dir to have path from start to current - * working dir e.g.: if current file= - * /home/foo/bob/chaine.chaussette.tar.gz and starts dir = /home/foo/ - * then path will be = foo/bob - */ - String path = startDirName + pathToFile.replaceAll(pathToStart, ""); - - /* - * FIXME actually with a dot as a wikittylabel_separator, when - * restauring label to directory it destroy directory that containt dot - * in the name e.g.: /home/truc.machin/bob - */ - - String label = path.replaceAll(File.separator, WIKITTYLABEL_SEPARATOR); - - WikittyLabelHelper.addLabels(result, label); - - // complete with the correct extension with content - if (isMimeWikittyPubText(mimeType)) { - result.addExtension(WikittyPubTextImpl.extensionWikittyPubText); - WikittyPubTextHelper.setName(result, name); - WikittyPubTextHelper.setMimeType(result, mimeType); - WikittyPubTextHelper.setContent(result, - FileUtil.readAsString(fileToTransform)); - } else { - result.addExtension(WikittyPubDataImpl.extensionWikittyPubData); - WikittyPubDataHelper.setName(result, name); - WikittyPubDataHelper.setMimeType(result, mimeType); - WikittyPubDataHelper.setContent(result, - FileUtil.fileToByte(fileToTransform)); - } - - return result; - - } - /** - * Return the mime type for an extension name Extension - * - * @param ext - * @return - */ - static public String mimeTypeForExtension(String ext) { - /* - * TODO mfortun-2011-04-08 really implements this method create a double - * hashMap for this kind of key/value collection - */ - if (ext.equalsIgnoreCase("ws")) { - return "application/javascript"; - } else { - return "image/png"; - } - - } - - /** - * Return the extension for a mime type opposite to mimeTypeForExtension - * - * @param ext - * @return - */ - static public String extensionFormimeType(String mime) { - /* - * TODO mfortun-2011-04-11 really implements this method - */ - if (mime.equalsIgnoreCase("ws")) { - return "ws"; - } else { - return "ws"; - } - - } - - /** * return if the mime type is associate to a wikittypubtext * * @param mime * @return */ - static public boolean isMimeWikittyPubText(String mime) { - /* - * TODO mfortun-2011-04-08 really implements this method - */ - if (mime.equalsIgnoreCase("application/javascript")) { - return true; - } else { - return false; - } + public boolean isMimeWikittyPubText(String mime) { + return pubTextMimeType.contains(mime); } /** @@ -1300,8 +1177,10 @@ String extension = FileUtil.extension(fileToTransform); String name = FileUtil.basename(completeName, "." + extension); + + MimetypesFileTypeMap mapMime= new MimetypesFileTypeMap(); // search for the mimetype - String mimeType = mimeTypeForExtension(extension); + String mimeType = mapMime.getContentType(fileToTransform); // load properties File wikittyParentDir = new File(path); @@ -1319,12 +1198,14 @@ WikittyPubTextHelper.setMimeType(result, mimeType); WikittyPubTextHelper.setContent(result, FileUtil.readAsString(fileToTransform)); + WikittyPubTextHelper.setFileExtension(result, extension); } else { result.addExtension(WikittyPubDataImpl.extensionWikittyPubData); WikittyPubDataHelper.setName(result, name); WikittyPubDataHelper.setMimeType(result, mimeType); WikittyPubDataHelper.setContent(result, FileUtil.fileToByte(fileToTransform)); + WikittyPubDataHelper.setFileExtension(result, extension); } // re set the version @@ -1336,10 +1217,14 @@ } protected void harvestNew(File starts, String label) throws Exception { - System.out.println(homeFile + "harvestn new"); + File propertyFile = new File(starts + File.separator + PROPERTY_DIRECTORY); + // TODO mfortun-2011-04-18 have to work on labels + // actually starts + label have to be the same. + // first starts and label. + if (!propertyFile.exists() || !propertyFile.isDirectory()) { propertyFile.mkdir(); Modified: trunk/wikitty-publication/src/main/xmi/wikitty-publication.zargo =================================================================== (Binary files differ)