Author: mfortun Date: 2011-04-14 10:23:15 +0200 (Thu, 14 Apr 2011) New Revision: 806 Url: http://nuiton.org/repositories/revision/wikitty/806 Log: * migrate static value and method to the correct class 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 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-13 16:59:23 UTC (rev 805) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-04-14 08:23:15 UTC (rev 806) @@ -70,39 +70,18 @@ * static string for allias, wrong named attribut TODO mfortun-2011-04-06 * need to set better name */ + - /* - * FIXME mfortun-2011-04-11 need to migrate static value to another class ? - */ + static public String WITTY_SERVICE_KEY = "wikitty.service.server.url"; - static public String NO_RECURSION_KEY = "norecursion"; + static public String DIRECTORY_KEY = "directory"; + + static public String HESSIAN_PROTOCOL_KEY = "hessian"; - static public String DEFAULT_PROPERTY_NAME_SEP = "."; + static public String NO_RECURSION_KEY = "norecursion"; - static public String PROPERTY_DIRECTORY = ".wp"; - static public String WIKITTYPUBLICATION_PROPERTIES_FILE = "ws.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() - */ - static public String WIKITTY_ID_PROPERTIES_FILE = "ids.properties"; - static public String WIKITTY_FILE_META_PROPERTIES_FILE = "meta.properties"; - - /* - * in the WIKITTY_FILE_META_PROP ERTIES_FILE the keys for version are: - * filename + META_SUFFIX_KEY_VERSION we save the id too because with this - * solution un case of delete we can easily read the id and make operation - * on the wikitty - */ - static public String META_SUFFIX_KEY_VERSION = "version"; - static public String META_SUFFIX_KEY_CHECKSUM = "checksum"; - static public String META_SUFFIX_KEY_ID = "id"; - - static public String META_CURRENT_LABEL = "current.label"; - /** * @param args * @throws ArgumentsParserException @@ -132,9 +111,9 @@ applicationConfig = new ApplicationConfig(); // allias for the url of the wikitty service - applicationConfig.addAlias("--ws", "--option", WITTY_SERVICE_KEY); + applicationConfig.addAlias("--ws", "--option", WikittyPublication.WITTY_SERVICE_KEY); - applicationConfig.addAlias("--dir", "--option", DIRECTORY_KEY); + applicationConfig.addAlias("--dir", "--option", WikittyPublication.DIRECTORY_KEY); /* * TODO mfortun-2011-04-05 once application fixed setdefault value and @@ -143,11 +122,11 @@ // allias for norecursion applicationConfig.addAlias("--norecursion", "--option", - NO_RECURSION_KEY, "true"); + WikittyPublication.NO_RECURSION_KEY, "true"); // allias for the protocole applicationConfig.addAlias("--hessian", "--option", - HESSIAN_PROTOCOL_KEY, "true"); + WikittyPublication.HESSIAN_PROTOCOL_KEY, "true"); // allias for all the action applicationConfig.addAlias("wp import", "--option", "import"); @@ -194,9 +173,9 @@ static public void importToWikitty() throws Exception { boolean noRecur = applicationConfig - .getOptionAsBoolean(NO_RECURSION_KEY); - File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY); - String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY); + .getOptionAsBoolean(WikittyPublication.NO_RECURSION_KEY); + File dir = applicationConfig.getOptionAsFile(WikittyPublication.DIRECTORY_KEY); + String wikittyService = applicationConfig.getOption(WikittyPublication.WITTY_SERVICE_KEY); log.info("import : wikittyservice: " + wikittyService + " noresursion=" + noRecur + " directory= " + dir.getAbsolutePath()); @@ -214,7 +193,7 @@ remoteWikittyService.clear(); // load the list of file - List<File> toTransfert = listFile(dir, !noRecur); + List<File> toTransfert = WikittyPublicationFileSystem.listFile(dir, !noRecur); List<Wikitty> listWikitty = new ArrayList<Wikitty>(); // transform file into wikitties @@ -238,7 +217,7 @@ System.out.println("<dir " + dir.getName() + ">"); for (File child : dir.listFiles()) { if (child.isDirectory() && recur - && !child.getName().equals(PROPERTY_DIRECTORY)) { + && !child.getName().equals(WikittyPublicationFileSystem.PROPERTY_DIRECTORY)) { printDirectory(child, recur); } else if (!child.isDirectory()) { System.out.println(child.getAbsolutePath()); @@ -248,45 +227,17 @@ } /** - * Method that create the list of file needed to commit, delete, update - * import. It harvest file in order to transform them into wikitties - * - * @param starts - * harvested directory - * @param recursivly - * boolean id the directory have to be harvest - * @return list of harvested file - */ - static protected List<File> listFile(File starts, boolean recursivly) { - List<File> result = new ArrayList<File>(); - if (!starts.isDirectory()) { - result.add(starts); - } - for (File child : starts.listFiles()) { - if (child.isDirectory() && recursivly - && !child.getName().equals(PROPERTY_DIRECTORY)) { - // Directory don't have to be harvest - // result.add(child); - result.addAll(listFile(child, recursivly)); - } else if (!child.isDirectory()) { - result.add(child); - } - } - return result; - } - - /** * Method that checkout a label recursivly or not into a local directory * from a wikitty service */ static public void checkoutFromWikitty(String label) throws Exception { boolean noRecur = applicationConfig - .getOptionAsBoolean(NO_RECURSION_KEY); - File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY); - String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY); + .getOptionAsBoolean(WikittyPublication.NO_RECURSION_KEY); + File dir = applicationConfig.getOptionAsFile(WikittyPublication.DIRECTORY_KEY); + String wikittyService = applicationConfig.getOption(WikittyPublication.WITTY_SERVICE_KEY); boolean hessianProtocole = applicationConfig - .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY); + .getOptionAsBoolean(WikittyPublication.HESSIAN_PROTOCOL_KEY); log.info("checkout : wikittyservice: " + wikittyService + " noresursion=" + noRecur + " directory= " @@ -335,7 +286,7 @@ List<Wikitty> wikittiesToWrite = pageResult.getAll(); // write the proper properties file! - writeHomePropertyFile(dir); + WikittyPublicationFileSystem.writeHomePropertyFile(dir); // write the wikities localWikittyService.store("", wikittiesToWrite, true); @@ -366,10 +317,10 @@ * +"Label a checkout " +label+ "HessianProtocol="+hessianProtocole); */ - File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY); - String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY); + File dir = applicationConfig.getOptionAsFile(WikittyPublication.DIRECTORY_KEY); + String wikittyService = applicationConfig.getOption(WikittyPublication.WITTY_SERVICE_KEY); boolean hessianProtocole = applicationConfig - .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY); + .getOptionAsBoolean(WikittyPublication.HESSIAN_PROTOCOL_KEY); File wpHomeDir; @@ -377,28 +328,28 @@ .println("search the directory of .wp file to write new properties file"); // search for the home directory if (null == dir || !dir.exists()) { - wpHomeDir = searchWikittyPublicationHomeDir(new File(".")); + wpHomeDir = WikittyPublicationFileSystem.searchWikittyPublicationHomeDir(new File(".")); } else { wpHomeDir = new File(dir.getCanonicalFile() + File.separator - + PROPERTY_DIRECTORY); + + WikittyPublicationFileSystem.PROPERTY_DIRECTORY); } Properties oldProperties = new Properties(); // TODO mfortun-2011-04-06 catch exception instead of throws File propertiesFile = new File(wpHomeDir + File.separator - + WIKITTYPUBLICATION_PROPERTIES_FILE); + + WikittyPublicationFileSystem.WIKITTYPUBLICATION_PROPERTIES_FILE); // load the old file just for loggin oldProperties.load(new FileReader(propertiesFile)); log.info("Try relocate :" + "wikitty service:" - + oldProperties.getProperty(WITTY_SERVICE_KEY) + " by " + + oldProperties.getProperty(WikittyPublication.WITTY_SERVICE_KEY) + " by " + wikittyService + " HessianProtocol: " + hessianProtocole + " File : " + propertiesFile.getCanonicalPath()); // Creation of the new properties file Properties props = new Properties(); - props.put(WITTY_SERVICE_KEY, wikittyService); + props.put(WikittyPublication.WITTY_SERVICE_KEY, wikittyService); if (hessianProtocole) { props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceHessianClient"); @@ -423,7 +374,7 @@ */ static public void commitToWikitty() throws Exception { - File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY); + File dir = applicationConfig.getOptionAsFile(WikittyPublication.DIRECTORY_KEY); File wpHomeDir; if (null == dir || !dir.exists()) { @@ -434,13 +385,13 @@ } // on va chercher le home dir - wpHomeDir = searchWikittyPublicationHomeDir(dir); + wpHomeDir = WikittyPublicationFileSystem.searchWikittyPublicationHomeDir(dir); Properties properties = new Properties(); // TODO mfortun-2011-04-06 catch exception instead of throws File propertiesFile = new File(wpHomeDir.getCanonicalPath() - + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE); + + File.separator + WikittyPublicationFileSystem.WIKITTYPUBLICATION_PROPERTIES_FILE); // load the old file just for loggin properties.load(new FileReader(propertiesFile)); @@ -448,11 +399,11 @@ applicationConfig.setOptions(properties); boolean noRecur = applicationConfig - .getOptionAsBoolean(NO_RECURSION_KEY); + .getOptionAsBoolean(WikittyPublication.NO_RECURSION_KEY); - String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY); + String wikittyService = applicationConfig.getOption(WikittyPublication.WITTY_SERVICE_KEY); boolean hessianProtocole = applicationConfig - .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY); + .getOptionAsBoolean(WikittyPublication.HESSIAN_PROTOCOL_KEY); if (hessianProtocole) { applicationConfig.setOption("wikitty.WikittyService.components", @@ -517,7 +468,7 @@ File currentDir = new File(FileUtil.getCurrentDirectory() .getAbsolutePath()); - File wpHomeDir = searchWikittyPublicationHomeDir(currentDir); + File wpHomeDir = WikittyPublicationFileSystem.searchWikittyPublicationHomeDir(currentDir); // search for the .wp home dir to load props // then load proxy @@ -525,13 +476,13 @@ // if toDelete is a directory do something different from usualy // recursivly remove labels - File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY); + File dir = applicationConfig.getOptionAsFile(WikittyPublication.DIRECTORY_KEY); Properties properties = new Properties(); // TODO mfortun-2011-04-06 catch exception instead of throws File propertiesFile = new File(wpHomeDir.getCanonicalPath() - + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE); + + File.separator + WikittyPublicationFileSystem.WIKITTYPUBLICATION_PROPERTIES_FILE); // load the old file just for loggin properties.load(new FileReader(propertiesFile)); @@ -539,9 +490,9 @@ applicationConfig.setOptions(properties); String wikittyService = applicationConfig - .getOption(WITTY_SERVICE_KEY); + .getOption(WikittyPublication.WITTY_SERVICE_KEY); boolean hessianProtocole = applicationConfig - .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY); + .getOptionAsBoolean(WikittyPublication.HESSIAN_PROTOCOL_KEY); if (hessianProtocole) { applicationConfig @@ -557,7 +508,7 @@ + " hessian Protocole :" + hessianProtocole + "file to delete : " + toDelete.getAbsolutePath()); // on va chercher le home dir - wpHomeDir = searchWikittyPublicationHomeDir(dir); + wpHomeDir = WikittyPublicationFileSystem.searchWikittyPublicationHomeDir(dir); WikittyProxy remoteWikittyService = new WikittyProxy( WikittyServiceFactory @@ -586,10 +537,10 @@ PropertiesExtended metaExtended = WikittyPublicationFileSystem .getWikittyPublicationProperties( wikittyFileParent, - WikittyPublication.WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE); String currentLabel = metaExtended - .getProperty(META_CURRENT_LABEL); + .getProperty(WikittyPublicationFileSystem.META_CURRENT_LABEL); // remove label WikittyLabelHelper.removeLabels(wd, currentLabel); // save the wikitty @@ -609,13 +560,13 @@ PropertiesExtended metaProps = WikittyPublicationFileSystem .getWikittyPublicationProperties( parentFile, - WikittyPublication.WIKITTY_FILE_META_PROPERTIES_FILE); + WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE); String id = metaProps.getProperty(name - + DEFAULT_PROPERTY_NAME_SEP + META_SUFFIX_KEY_ID); + + WikittyPublicationFileSystem.DEFAULT_PROPERTY_NAME_SEP + WikittyPublicationFileSystem.META_SUFFIX_KEY_ID); // his label String label = metaProps - .getProperty(WikittyPublication.META_CURRENT_LABEL); + .getProperty(WikittyPublicationFileSystem.META_CURRENT_LABEL); // restore wikitty remote @@ -649,7 +600,7 @@ */ static public void updateFromWikitty() throws Exception { - File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY); + File dir = applicationConfig.getOptionAsFile(WikittyPublication.DIRECTORY_KEY); File wpHomeDir; if (null == dir || !dir.exists()) { @@ -660,13 +611,13 @@ } // on va chercher le home dir - wpHomeDir = searchWikittyPublicationHomeDir(dir); + wpHomeDir = WikittyPublicationFileSystem.searchWikittyPublicationHomeDir(dir); Properties properties = new Properties(); // TODO mfortun-2011-04-06 catch exception instead of throws File propertiesFile = new File(wpHomeDir.getCanonicalPath() - + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE); + + File.separator + WikittyPublicationFileSystem.WIKITTYPUBLICATION_PROPERTIES_FILE); // load the old file just for loggin properties.load(new FileReader(propertiesFile)); @@ -674,11 +625,11 @@ applicationConfig.setOptions(properties); boolean noRecur = applicationConfig - .getOptionAsBoolean(NO_RECURSION_KEY); + .getOptionAsBoolean(WikittyPublication.NO_RECURSION_KEY); - String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY); + String wikittyService = applicationConfig.getOption(WikittyPublication.WITTY_SERVICE_KEY); boolean hessianProtocole = applicationConfig - .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY); + .getOptionAsBoolean(WikittyPublication.HESSIAN_PROTOCOL_KEY); if (hessianProtocole) { applicationConfig.setOption("wikitty.WikittyService.components", @@ -703,101 +654,7 @@ */ } - /** - * - * Use to search in the file system the directory that containt the .wp dir - * that containt the properties file for the wikitty service's adresse - * - * @param start - * @return File the directory container of the master property file - * @throws Exception - */ - static protected File searchWikittyPublicationHomeDir(File start) - throws Exception { - if (start != null && start.exists() && start.isDirectory()) { - // on va retourner le dossier .wp home - // method récursiv qui remonte dans les parents pour retrouver. - File propertyDirectory = new File(start.getCanonicalPath() - + File.separator + PROPERTY_DIRECTORY); - - if (propertyDirectory.exists()) { - File propertie = new File(propertyDirectory.getCanonicalPath() - + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE); - if (propertie.exists()) { - return propertyDirectory; - } - } - - return searchWikittyPublicationHomeDir(start.getParentFile()); - } else { - // Exception - /* - * TODO mfortun-2011-04-06 write/set the appropriate exception here - */ - return null; - } - } - - static protected void writeHomePropertyFile(File homeDir) throws Exception { - - if (homeDir.exists()) { - File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY); - String wikittyService = applicationConfig - .getOption(WITTY_SERVICE_KEY); - boolean hessianProtocole = applicationConfig - .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY); - - // TODO mfortun-2011-04-11 find a better way to manage component - // property - String propertyCompo = applicationConfig - .getOption("wikitty.WikittyService.components"); - // write the proper properties file! - Properties props = new Properties(); - props.put(WITTY_SERVICE_KEY, wikittyService); - - props.put("wikitty.WikittyService.components", propertyCompo); - - // create the properties directory - File wpDirectory = new File(homeDir.getCanonicalPath() - + File.separator + PROPERTY_DIRECTORY + File.separator); - if (!wpDirectory.exists()) { - wpDirectory.mkdir(); - } - - File propertiesFiles = new File(wpDirectory.getCanonicalPath() - + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE); - - props.store(new FileWriter(propertiesFiles), ""); - } - } - - /** - * Method that create a list of the properties directory - * - * @param starts - * harvested directory - * @param recursivly - * @return list of harvested file - */ - static public List<File> harvestPropertyDirectory(File starts, - boolean recursivly) { - - List<File> result = new ArrayList<File>(); - - for (File child : starts.listFiles()) { - - if (child.isDirectory() - && child.getName().equals(PROPERTY_DIRECTORY)) { - result.add(child); - } else if (child.isDirectory() && recursivly) { - result.addAll(harvestPropertyDirectory(child, recursivly)); - } - } - 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-13 16:59:23 UTC (rev 805) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-04-14 08:23:15 UTC (rev 806) @@ -31,12 +31,9 @@ import java.io.FileWriter; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Properties; import java.util.Set; - import org.apache.commons.collections.BidiMap; import org.apache.commons.collections.bidimap.DualHashBidiMap; import org.apache.commons.logging.Log; @@ -74,6 +71,34 @@ protected boolean recursion; protected String label; + static public String META_CURRENT_LABEL = "current.label"; + + static public String META_SUFFIX_KEY_ID = "id"; + + static public String META_SUFFIX_KEY_CHECKSUM = "checksum"; + + /* + * in the WIKITTY_FILE_META_PROP ERTIES_FILE the keys for version are: + * filename + META_SUFFIX_KEY_VERSION we save the id too because with this + * solution un case of delete we can easily read the id and make operation + * on the wikitty + */ + static public String META_SUFFIX_KEY_VERSION = "version"; + + 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() + */ + static public String WIKITTY_ID_PROPERTIES_FILE = "ids.properties"; + + static public String WIKITTYPUBLICATION_PROPERTIES_FILE = "ws.properties"; + + static public String PROPERTY_DIRECTORY = ".wp"; + + static public String DEFAULT_PROPERTY_NAME_SEP = "."; + /** * Constructor with the working directory * @@ -246,7 +271,7 @@ // create the propertie directory if necessary File propertieDirectory = new File(path + File.separator - + WikittyPublication.PROPERTY_DIRECTORY); + + WikittyPublicationFileSystem.PROPERTY_DIRECTORY); if (!propertieDirectory.exists() || !propertieDirectory.isDirectory()) { propertieDirectory.mkdir(); @@ -255,7 +280,7 @@ File propertieFile = new File( propertieDirectory.getCanonicalPath() + File.separator - + WikittyPublication.WIKITTY_FILE_META_PROPERTIES_FILE); + + WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE); if (!propertieFile.exists()) { propertieFile.createNewFile(); } @@ -264,7 +289,7 @@ File idPropertieFile = new File( propertieDirectory.getCanonicalPath() + File.separator - + WikittyPublication.WIKITTY_ID_PROPERTIES_FILE); + + WikittyPublicationFileSystem.WIKITTY_ID_PROPERTIES_FILE); if (!idPropertieFile.exists()) { idPropertieFile.createNewFile(); } @@ -317,7 +342,7 @@ metaProperties.load(new FileReader(propertieFile)); // update metaProperties.setProperty( - WikittyPublication.META_CURRENT_LABEL, ourDir); + WikittyPublicationFileSystem.META_CURRENT_LABEL, ourDir); metaProperties.setProperty(name + "." + extension + ".version", w.getVersion()); @@ -444,19 +469,19 @@ File propsFile = new File( path + File.separator - + WikittyPublication.PROPERTY_DIRECTORY + + WikittyPublicationFileSystem.PROPERTY_DIRECTORY + File.separator - + WikittyPublication.WIKITTY_FILE_META_PROPERTIES_FILE); + + WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE); props.load(new FileReader(propsFile)); // re set the id wikitty.setVersion(props.getProperty(completeName - + WikittyPublication.META_SUFFIX_KEY_ID)); + + WikittyPublicationFileSystem.META_SUFFIX_KEY_ID)); // set the current label WikittyLabelHelper .addLabels( wikitty, - props.getProperty(WikittyPublication.META_CURRENT_LABEL)); + props.getProperty(WikittyPublicationFileSystem.META_CURRENT_LABEL)); /* * TODO mfortun-2011-04-12 need to merge part of this code @@ -512,22 +537,22 @@ // load properties PropertiesExtended propsProperties = getWikittyPublicationProperties(new File( - path), WikittyPublication.WIKITTY_FILE_META_PROPERTIES_FILE); + path), WikittyPublicationFileSystem.WIKITTY_FILE_META_PROPERTIES_FILE); // update propsProperties.remove(fileName - + WikittyPublication.META_SUFFIX_KEY_CHECKSUM); + + WikittyPublicationFileSystem.META_SUFFIX_KEY_CHECKSUM); propsProperties.remove(fileName - + WikittyPublication.META_SUFFIX_KEY_ID); + + WikittyPublicationFileSystem.META_SUFFIX_KEY_ID); propsProperties.remove(fileName - + WikittyPublication.META_SUFFIX_KEY_VERSION); + + WikittyPublicationFileSystem.META_SUFFIX_KEY_VERSION); // resave propsProperties.store(); // load properties PropertiesExtended idProperties = getWikittyPublicationProperties(new File( - path), WikittyPublication.WIKITTY_ID_PROPERTIES_FILE); + path), WikittyPublicationFileSystem.WIKITTY_ID_PROPERTIES_FILE); // update idProperties.remove(id); // resave @@ -766,9 +791,146 @@ } /** + * Method that create the list of file needed to commit, delete, update + * import. It harvest file in order to transform them into wikitties * * @param starts + * harvested directory * @param recursivly + * boolean id the directory have to be harvest + * @return list of harvested file + */ + static public List<File> listFile(File starts, boolean recursivly) { + List<File> result = new ArrayList<File>(); + if (!starts.isDirectory()) { + result.add(starts); + } + for (File child : starts.listFiles()) { + if (child.isDirectory() && recursivly + && !child.getName().equals(PROPERTY_DIRECTORY)) { + // Directory don't have to be harvest + // result.add(child); + result.addAll(listFile(child, recursivly)); + } else if (!child.isDirectory()) { + result.add(child); + } + } + return result; + } + + + + + /** + * Method that create a list of the properties directory + * + * @param starts + * harvested directory + * @param recursivly + * @return list of harvested file + */ + static public List<File> harvestPropertyDirectory(File starts, + boolean recursivly) { + + List<File> result = new ArrayList<File>(); + + for (File child : starts.listFiles()) { + + if (child.isDirectory() + && child.getName().equals(PROPERTY_DIRECTORY)) { + result.add(child); + } else if (child.isDirectory() && recursivly) { + result.addAll(harvestPropertyDirectory(child, recursivly)); + } + } + return result; + + } + + + + + static protected void writeHomePropertyFile(File homeDir) throws Exception { + + if (homeDir.exists()) { + File dir = WikittyPublication.applicationConfig.getOptionAsFile(WikittyPublication.DIRECTORY_KEY); + String wikittyService = WikittyPublication.applicationConfig + .getOption(WikittyPublication.WITTY_SERVICE_KEY); + boolean hessianProtocole = WikittyPublication.applicationConfig + .getOptionAsBoolean(WikittyPublication.HESSIAN_PROTOCOL_KEY); + + // TODO mfortun-2011-04-11 find a better way to manage component + // property + String propertyCompo = WikittyPublication.applicationConfig + .getOption("wikitty.WikittyService.components"); + // write the proper properties file! + Properties props = new Properties(); + props.put(WikittyPublication.WITTY_SERVICE_KEY, wikittyService); + + props.put("wikitty.WikittyService.components", propertyCompo); + + // create the properties directory + File wpDirectory = new File(homeDir.getCanonicalPath() + + File.separator + PROPERTY_DIRECTORY + File.separator); + if (!wpDirectory.exists()) { + wpDirectory.mkdir(); + } + + File propertiesFiles = new File(wpDirectory.getCanonicalPath() + + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE); + + props.store(new FileWriter(propertiesFiles), ""); + } + } + + + + + /** + * + * Use to search in the file system the directory that containt the .wp dir + * that containt the properties file for the wikitty service's adresse + * + * @param start + * @return File the directory container of the master property file + * @throws Exception + */ + static protected File searchWikittyPublicationHomeDir(File start) + throws Exception { + + if (start != null && start.exists() && start.isDirectory()) { + // on va retourner le dossier .wp home + + // method récursiv qui remonte dans les parents pour retrouver. + + File propertyDirectory = new File(start.getCanonicalPath() + + File.separator + PROPERTY_DIRECTORY); + + if (propertyDirectory.exists()) { + File propertie = new File(propertyDirectory.getCanonicalPath() + + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE); + if (propertie.exists()) { + return propertyDirectory; + } + } + + return searchWikittyPublicationHomeDir(start.getParentFile()); + } else { + // Exception + /* + * TODO mfortun-2011-04-06 write/set the appropriate exception here + */ + return null; + } + } + + + + + /** + * + * @param starts + * @param recursivly * @return * @throws Exception */ @@ -776,14 +938,14 @@ throws Exception { BidiMap result = new DualHashBidiMap(); - List<File> propertiesDirectory = WikittyPublication + List<File> propertiesDirectory = WikittyPublicationFileSystem .harvestPropertyDirectory(starts, recursivly); for (File propsDir : propertiesDirectory) { Properties idProps = new Properties(); File idFile = new File(propsDir.getCanonicalPath() + File.separator - + WikittyPublication.WIKITTY_ID_PROPERTIES_FILE); + + WikittyPublicationFileSystem.WIKITTY_ID_PROPERTIES_FILE); if (idFile.exists()) { idProps.load(new FileReader(idFile)); } @@ -815,7 +977,7 @@ throws Exception { File propertieDirectory = new File(starts.getCanonicalPath() - + File.separator + WikittyPublication.PROPERTY_DIRECTORY); + + File.separator + WikittyPublicationFileSystem.PROPERTY_DIRECTORY); // load/create meta propertie file File propertieFile = new File(propertieDirectory.getCanonicalPath()