Author: mfortun Date: 2011-08-16 18:08:41 +0200 (Tue, 16 Aug 2011) New Revision: 1159 Url: http://nuiton.org/repositories/revision/wikitty/1159 Log: *change wikittyServiceJarLoader to allow multipleJarHandling, now load a directpry and search for the .jar * add log propertie for wikitty publication ui Added: trunk/wikitty-publication-ui/src/main/resources/log4j.properties trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPropertieIndex.java Modified: trunk/wikitty-publication-ui/src/main/java/org/nuiton/wikitty/publication/ui/action/PublicationActionEval.java trunk/wikitty-publication-ui/src/main/resources/wikitty-publication-ws-jar.properties trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPropertieIndex.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPropertieIndex.java (rev 0) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPropertieIndex.java 2011-08-16 16:08:41 UTC (rev 1159) @@ -0,0 +1,41 @@ +package org.nuiton.wikitty.publication; + +import java.util.Properties; +import java.util.Set; + +public class WikittyPropertieIndex { + + protected Properties wikittyIndex; + protected Properties wikittyMetadata; + + + + + public WikittyPropertieIndex(Properties wikittyIndex, + Properties wikittyMetadata) { + this.wikittyIndex = wikittyIndex; + this.wikittyMetadata = wikittyMetadata; + } + public Properties getWikittyIndex() { + return wikittyIndex; + } + public void setWikittyIndex(Properties wikittyIndex) { + this.wikittyIndex = wikittyIndex; + } + public Properties getWikittyMetadata() { + return wikittyMetadata; + } + public void setWikittyMetadata(Properties wikittyMetadata) { + this.wikittyMetadata = wikittyMetadata; + } + + public boolean containtId(String id){ + return wikittyIndex.containsKey(id); + } + + public Set<Object> getIds(){ + return wikittyIndex.keySet(); + } + + +} Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-08-16 14:26:22 UTC (rev 1158) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-08-16 16:08:41 UTC (rev 1159) @@ -1,16 +1,19 @@ package org.nuiton.wikitty.publication.externalize; import java.io.File; +import java.io.FileFilter; import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Properties; import java.util.jar.JarEntry; import java.util.jar.JarFile; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; @@ -24,6 +27,7 @@ import org.nuiton.wikitty.publication.AbstractWikittyFileService; import org.nuiton.wikitty.publication.MimeTypePubHelper; import org.nuiton.wikitty.publication.WikittyFileUtil; +import org.nuiton.wikitty.publication.WikittyPropertieIndex; import org.nuiton.wikitty.publication.entities.WikittyPubData; import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper; import org.nuiton.wikitty.publication.entities.WikittyPubDataImpl; @@ -48,35 +52,28 @@ public class WikittyServiceJarLoader extends AbstractWikittyFileService { public static String JAR_LOCATION_KEY = "wikitty.publication.repository.jar"; - public static String JARS_LOCATION_KEY = "wikitty.publication.repository.jars"; /** Class logger. */ private static Log log = LogFactory.getLog(WikittyServiceJarLoader.class); - protected JarFile wikittyJarRepository; + protected String dirLocation; + protected String MD5; + + protected FileFilter jarFilter = new FileFilter() { + @Override + public boolean accept(File pathname) { + return (!pathname.isDirectory())&&pathname.getName().endsWith(".jar"); + + } + }; - protected Properties wikittyIndex; - protected Properties wikittyMetadata; + + protected Map<JarFile, WikittyPropertieIndex> index; + protected MimeTypePubHelper mimeHelper; /* - * static public void main(String[] args) { * - * ApplicationConfig config = new ApplicationConfig(); - * config.setOption(JAR_LOCATION_KEY, - * "/home/User/testWP/pub-externalized.jar"); config.setOption( - * WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(), - * WikittyServiceJarLoader.class.getName()); WikittyProxy proxy = new - * WikittyProxy( WikittyServiceFactory.buildWikittyService(config)); - * - * System.out.println(proxy - * .restore("e443dbbe-b461-41bd-b5b6-b612e964cb0d")); - * - * } - */ - - /* - * * Possible d'uploader un diagramme uml * le mettre dedans un wikittypubdata * et généré le jar avec les sources en fonction de ce modèle @@ -85,31 +82,59 @@ */ public WikittyServiceJarLoader(ApplicationConfig config) { + mimeHelper = new MimeTypePubHelper(); + dirLocation = config.getOption(JAR_LOCATION_KEY); + MD5 = StringUtils.EMPTY; + constructIndex(); + } + + protected void constructIndex() { try { + // initialise location + File jarLocation = new File(dirLocation); + //found jar + File[] jarFiles = jarLocation.listFiles(jarFilter); + + String sumMd5 = StringUtils.EMPTY; + for (File jf : jarFiles){ + sumMd5+=jf.getAbsolutePath(); + } + sumMd5 = StringUtil.encodeMD5(sumMd5); + // check if md5 is equal to the last reindaxtion + // if not rebuilt the index + if (!sumMd5.equals(MD5)){ + index = new HashMap<JarFile, WikittyPropertieIndex>(); + // iterate over jar to load ids properties + // and meta properties to handle them + for (File jf : jarFiles) { + JarFile tempJF = new JarFile(jf); - File jarLocation = new File(config.getOption(JAR_LOCATION_KEY)); + JarEntry metaEntry = tempJF + .getJarEntry(WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); + JarEntry idEntry = tempJF + .getJarEntry(WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); - wikittyJarRepository = new JarFile(jarLocation); + Properties wikittyIndex = new Properties(); + wikittyIndex.load(tempJF.getInputStream(idEntry)); - JarEntry metaEntry = wikittyJarRepository - .getJarEntry(WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE); - JarEntry idEntry = wikittyJarRepository - .getJarEntry(WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE); + Properties wikittyMetadata = new Properties(); + wikittyMetadata.load(tempJF.getInputStream(metaEntry)); - wikittyIndex = new Properties(); - wikittyIndex.load(wikittyJarRepository.getInputStream(idEntry)); + WikittyPropertieIndex indexProps = new WikittyPropertieIndex( + wikittyIndex, wikittyMetadata); - wikittyMetadata = new Properties(); - wikittyMetadata - .load(wikittyJarRepository.getInputStream(metaEntry)); - mimeHelper = new MimeTypePubHelper(); + index.put(tempJF, indexProps); + } + } + } catch (IOException e) { // TODO mfortun-2011-08-12 Exception not really handled if (log.isErrorEnabled()){ - log.error("Error while reading jar:"+wikittyJarRepository.getName(), e ); + log.error("Error while loading jars:", e ); } } + } @Override @@ -176,7 +201,15 @@ } protected boolean exists(String wikittyId) { - return wikittyIndex.containsKey(wikittyId); + boolean result = false; + for (WikittyPropertieIndex in : index.values()) { + result = result || in.containtId(wikittyId); + if (result) { + break; + } + } + + return result; } @Override @@ -297,12 +330,17 @@ @Override protected Map<String, Wikitty> getAllWikitties() { + constructIndex(); + Map<String, Wikitty> result = new HashMap<String, Wikitty>(); - for (Object oId : wikittyIndex.keySet()) { - String id = oId.toString(); - result.put(id, restore(id)); + for (WikittyPropertieIndex in : index.values()) { + for (Object oId : in.getIds()) { + String id = oId.toString(); + result.put(id, restore(id)); + } } + return result; } @@ -348,6 +386,19 @@ return null; } + Properties wikittyMetadata = null; + Properties wikittyIndex = null; + JarFile wikittyJarRepository = null; + + for (Entry<JarFile, WikittyPropertieIndex> en :index.entrySet()){ + if (en.getValue().containtId(wikittyId)){ + wikittyJarRepository = en.getKey(); + wikittyIndex = en.getValue().getWikittyIndex(); + wikittyMetadata = en.getValue().getWikittyMetadata(); + } + } + + String mime = wikittyMetadata.getProperty(wikittyId + WikittyPublicationExternalize.MIME_SUFFIX); String fileExtension = mimeHelper.getExtensionForMime(mime); Modified: trunk/wikitty-publication-ui/src/main/java/org/nuiton/wikitty/publication/ui/action/PublicationActionEval.java =================================================================== --- trunk/wikitty-publication-ui/src/main/java/org/nuiton/wikitty/publication/ui/action/PublicationActionEval.java 2011-08-16 14:26:22 UTC (rev 1158) +++ trunk/wikitty-publication-ui/src/main/java/org/nuiton/wikitty/publication/ui/action/PublicationActionEval.java 2011-08-16 16:08:41 UTC (rev 1159) @@ -96,7 +96,7 @@ MimeTypePubHelper.JAR_TYPE); String jarRepoPath = FileUtils.getTempDirectory().getAbsolutePath() + File.separator + JAR_TEMP_DIR_NAME; - System.out.println(contextApps==null); + // initialiser directory etc if context set if (contextApps != null) { // if application context is set sub dir Added: trunk/wikitty-publication-ui/src/main/resources/log4j.properties =================================================================== --- trunk/wikitty-publication-ui/src/main/resources/log4j.properties (rev 0) +++ trunk/wikitty-publication-ui/src/main/resources/log4j.properties 2011-08-16 16:08:41 UTC (rev 1159) @@ -0,0 +1,12 @@ +# Global logging configuration +log4j.rootLogger=FATAL, stdout + +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) %M - %m%n + +# package level +log4j.logger.org.nuiton.wikitty.publication=DEBUG +#log4j.logger.org.nuiton.util.TimeLog=WARN +log4j.logger.org.apache.struts2.dispatcher.mapper=DEBUG Modified: trunk/wikitty-publication-ui/src/main/resources/wikitty-publication-ws-jar.properties =================================================================== --- trunk/wikitty-publication-ui/src/main/resources/wikitty-publication-ws-jar.properties 2011-08-16 14:26:22 UTC (rev 1158) +++ trunk/wikitty-publication-ui/src/main/resources/wikitty-publication-ws-jar.properties 2011-08-16 16:08:41 UTC (rev 1159) @@ -25,5 +25,5 @@ wikitty.WikittyService.components=org.nuiton.wikitty.publication.externalize.WikittyServiceJarLoader -wikitty.publication.repository.jar=/home/Manou/testWP/pub-externalized.jar +wikitty.publication.repository.jar=/home/Manou/testWP/