diff --git a/README.md b/README.md index 53344c8..1448166 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -# DEVINSY Utils +# DEVINSY Strings -GeoNames is geographical database under a creative commons attribution license. +DEVINSY Strings is an util -FlatDB4GeoNames provides an easy, local and fast Java access to GeoNames data. +DEVINSY String provides an easy, local and fast Java String List management. ## Author Christian Pierre MOMON <christian.momon@devinsy.fr> @@ -13,7 +13,6 @@ This software is released under the GNU LGPL. ## Requirements -FlatDB4Geonames requires: - Java 1.6 - Eclipse Kepler @@ -22,5 +21,5 @@ Several useful Java classes. ## Conclusion -Enjoy and use FlatDB4GeoNames. For questions, improvement, issues: christian.momon@devinsy.fr - \ No newline at end of file +Enjoy and use DEVINSY Strings. For questions, improvement, issues: christian.momon@devinsy.fr + diff --git a/build.properties b/build.properties index 4297f9a..74dd2bc 100644 --- a/build.properties +++ b/build.properties @@ -1,3 +1,3 @@ -product.name=devinsy-utils +product.name=devinsy-strings product.revision.major=0 product.revision.minor=4 diff --git a/src/fr/devinsy/util/cmdexec/CmdExec.java b/src/fr/devinsy/util/cmdexec/CmdExec.java deleted file mode 100644 index 8465567..0000000 --- a/src/fr/devinsy/util/cmdexec/CmdExec.java +++ /dev/null @@ -1,500 +0,0 @@ -/** - * Copyright (C) 2005-2010, 2013, 2015-2016 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.cmdexec; - -import java.util.ArrayList; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import fr.devinsy.util.cmdexec.StreamGobbler.StreamWay; -import fr.devinsy.util.strings.StringListUtils; - -/** - * We must use the isOver method on Gobblers because with short tasks the - * waitFor ends before the Gobbler read. - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class CmdExec -{ - private static Logger logger = LoggerFactory.getLogger(CmdExec.class); - - private int exitValue; - private String out; - private String err; - - // //////////////////////////////////////////////////////////////////// - // - // //////////////////////////////////////////////////////////////////// - - /** - * - */ - public CmdExec(final String command) - { - run(command, StreamGobbler.StreamWay.BUFFER, StreamGobbler.StreamWay.BUFFER); - } - - /** - * - */ - public CmdExec(final String... command) - { - run(command, StreamGobbler.StreamWay.BUFFER, StreamGobbler.StreamWay.BUFFER); - } - - /** - * - */ - public CmdExec(final String command, final StreamGobbler outputGobbler, final StreamGobbler errorGobbler) - { - run(command, outputGobbler, errorGobbler); - } - - /** - * - */ - public CmdExec(final String command, final StreamGobbler.StreamWay stdout, final StreamGobbler.StreamWay stderr) - { - run(command, stdout, stderr); - } - - /** - * - */ - public CmdExec(final String[] command, final StreamGobbler outputGobbler, final StreamGobbler errorGobbler) - { - run(command, outputGobbler, errorGobbler); - } - - /** - * - */ - public CmdExec(final String[] command, final StreamGobbler.StreamWay stdout, final StreamGobbler.StreamWay stderr) - { - run(command, stdout, stderr); - } - - // //////////////////////////////////////////////////////////////////// - // - // //////////////////////////////////////////////////////////////////// - - /** - * - * @return - */ - public String getErrStream() - { - String result; - - result = this.err; - - // - return (result); - } - - /** - * - * @return - */ - public int getExitValue() - { - int result; - - result = this.exitValue; - - // - return (result); - } - - /** - * - * @return - */ - public String getOutStream() - { - String result; - - result = this.out; - - // - return (result); - } - - /** - * - * @param command - * : not a shell command, it must be a executable program. - * @param outputGobbler - * @param errorGobbler - * @return - */ - public int run(final String command, final StreamGobbler outputGobbler, final StreamGobbler errorGobbler) - { - int result; - - logger.info("CmdExec(command) = [" + command + "]"); - - String[] commands = command.split("[ \t\n\r\f]"); - - result = run(commands, outputGobbler, errorGobbler); - - // - return (result); - } - - /** - * - */ - public int run(final String command, final StreamWay stdout, final StreamWay stderr) - { - int result; - - result = run(command, new StreamGobbler("OUTPUT", stdout), new StreamGobbler("ERROR", stderr)); - - // - return (result); - } - - /** - * Note: this code is inspired by an article of Michael C. Daconta published - * in JavaWorld Dec 29, 2000 (http://www.javaworld.com/article/2071275 - * /core-java/when-runtime-exec---won-t.html?page=2). - * - * @param command - * not a shell command, it must be a executable program. - * @param outputGobbler - * @param errorGobbler - * @return - */ - public int run(final String[] command, final StreamGobbler outputGobbler, final StreamGobbler errorGobbler) - { - int result; - - logger.info("CmdExec(command[]) = [" + StringListUtils.toStringSeparatedBy(command, " ") + "]"); - logger.info("CmdExec(command[]) = [" + StringListUtils.toStringWithBrackets(command) + "]"); - - try - { - Runtime rt = Runtime.getRuntime(); - - Process process = rt.exec(command); - - // Set a collector for error message. - errorGobbler.setInputStream(process.getErrorStream()); - - // Set a collector for output message. - outputGobbler.setInputStream(process.getInputStream()); - - // Collect messages. - errorGobbler.start(); - outputGobbler.start(); - - // Wait and manage the exit value. - this.exitValue = process.waitFor(); - logger.info("ExitValue: {}", this.exitValue); - - // Sometimes, process ends before Gobblers read its outpout, so we - // must wait them. - while ((!outputGobbler.isOver()) || (!errorGobbler.isOver())) - { - Thread.sleep(1); - } - - // Store messages. - this.out = outputGobbler.getStream(); - this.err = errorGobbler.getStream(); - - result = this.exitValue; - } - catch (Exception exception) - { - this.err = exception.getMessage(); - this.exitValue = -77; - result = this.exitValue; - logger.error(exception.getMessage(), exception); - } - - // - return (result); - } - - /** - * - * @param command - * @param stdout - * @param stderr - * @return - */ - public int run(final String[] command, final StreamGobbler.StreamWay stdout, final StreamGobbler.StreamWay stderr) - { - int result; - - result = run(command, new StreamGobbler("OUTPUT", stdout), new StreamGobbler("ERROR", stderr)); - - // - return (result); - } - - /** - * - * @param commands - * @return - * @throws CmdExecException - */ - public static String multirun(final String... commands) throws CmdExecException - { - String result; - - ArrayList stdouts = new ArrayList(commands.length); - - boolean ended = false; - int commandCounter = 0; - while (!ended) - { - if (commandCounter < commands.length) - { - String command = commands[commandCounter]; - - if ((command == null) || (command.length() == 0)) - { - result = null; - commandCounter += 1; - } - else - { - stdouts.add(CmdExec.run(command)); - commandCounter += 1; - } - } - else - { - ended = true; - result = null; - } - } - - // - int resultLength = 0; - for (String stdout : stdouts) - { - resultLength += stdout.length(); - } - StringBuffer buffer = new StringBuffer(resultLength); - for (String stdout : stdouts) - { - buffer.append(stdout); - } - result = buffer.toString(); - - // - return (result); - } - - // //////////////////////////////////////////////////////////////////// - // - // //////////////////////////////////////////////////////////////////// - /** - * @throws CmdExecException - */ - public static String run(final String command) throws CmdExecException - { - String result; - - result = CmdExec.run(command.split("[ \t\n\r\f]")); - - // - return (result); - } - - /** - * @throws CmdExecException - * @throws Exception - */ - public static String run(final String... command) throws CmdExecException - { - String result; - - if ((command == null) || (command.length == 0)) - { - throw new IllegalArgumentException("Empty command"); - } - else - { - CmdExec cmd = new CmdExec(command, StreamGobbler.StreamWay.BUFFER, StreamGobbler.StreamWay.BUFFER); - - if (cmd.getExitValue() == 0) - { - result = cmd.getOutStream(); - } - else - { - logger.error("Command=\"" + StringListUtils.toStringWithBrackets(command)); - logger.error("Command=\"[" + StringListUtils.toString(command) + "]\n out => [" + cmd.getOutStream() + "]\n " + "err => (" + cmd.getErrStream().length() + ")[" + cmd.getErrStream() - + "]"); - throw new CmdExecException(cmd.getErrStream()); - } - } - - // - return (result); - } - - /** - * Examples: - * - * run("sudo", "setfacl", "-m", "g:cpm:rwX", "/tmp/toto"); - * - * run("sudo", "setfacl", "-R", "-m", "g:cpm:rwX", "/tmp/toto"); - * - * @throws CmdExecException - */ - public static String run(final String program1, final String program2, final String[] args, final int min, final int max) throws CmdExecException - { - String result; - - // - boolean nullArg = false; - boolean ended = false; - int argumentIndex = 0; - while (!ended) - { - if (argumentIndex >= args.length) - { - ended = true; - nullArg = false; - } - else - { - if (args[argumentIndex] == null) - { - ended = true; - nullArg = true; - } - else - { - argumentIndex += 1; - } - } - } - - // - if (program1 == null) - { - throw new IllegalArgumentException("Null program parameter 1 detected: [" + program1 + "]."); - } - else if (program2 == null) - { - throw new IllegalArgumentException("Null program parameter 2 detected: [" + program2 + "]."); - } - else if (nullArg) - { - throw new IllegalArgumentException("Null parameter detected in position " + argumentIndex + " for " + StringListUtils.toStringWithBrackets(args) + "."); - } - else if ((args.length < min) || (args.length > max)) - { - throw new IllegalArgumentException("Bad number of parameters: " + args.length + " for " + StringListUtils.toStringWithBrackets(args) + "."); - } - else - { - // - String[] command = new String[args.length + 2]; - command[0] = program1; - command[1] = program2; - for (argumentIndex = 0; argumentIndex < args.length; argumentIndex++) - { - command[argumentIndex + 2] = args[argumentIndex]; - } - - result = CmdExec.run(command); - } - - // - return (result); - } - - /** - * Examples: - * - * run("setfacl", "-m", "g:cpm:rwX", "/tmp/toto"); - * - * run("setfacl", "-R", "-m", "g:cpm:rwX", "/tmp/toto"); - * - * @throws CmdExecException - */ - public static String run(final String program, final String[] args, final int min, final int max) throws CmdExecException - { - String result; - - // - boolean nullArg = false; - boolean ended = false; - int argumentCounter = 0; - while (!ended) - { - if (argumentCounter >= args.length) - { - ended = true; - nullArg = false; - } - else - { - if (args[argumentCounter] == null) - { - ended = true; - nullArg = true; - } - else - { - argumentCounter += 1; - } - } - } - - // - if (program == null) - { - throw new IllegalArgumentException("Null program parameter detected: [" + program + "]."); - } - else if (nullArg) - { - throw new IllegalArgumentException("Null parameter detected in position " + argumentCounter + " for " + StringListUtils.toStringWithBrackets(args) + "."); - } - else if ((args.length < min) || (args.length > max)) - { - throw new IllegalArgumentException("Bad number of parameters: " + args.length + " for " + StringListUtils.toStringWithBrackets(args) + "."); - } - else - { - // - String[] command = new String[args.length + 1]; - command[0] = program; - for (argumentCounter = 0; argumentCounter < args.length; argumentCounter++) - { - command[argumentCounter + 1] = args[argumentCounter]; - } - - result = CmdExec.run(command); - } - - // - return (result); - } -} diff --git a/src/fr/devinsy/util/cmdexec/CmdExecException.java b/src/fr/devinsy/util/cmdexec/CmdExecException.java deleted file mode 100644 index e50dee6..0000000 --- a/src/fr/devinsy/util/cmdexec/CmdExecException.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright (C) 2016 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.cmdexec; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - * - */ -public class CmdExecException extends Exception -{ - private static final long serialVersionUID = 3264886426311529668L; - - /** - * - */ - public CmdExecException() - { - super(); - } - - /** - * - * @param message - */ - public CmdExecException(final String message) - { - super(message); - } - - /** - * - * @param message - * @param cause - */ - public CmdExecException(final String message, final Throwable cause) - { - super(message, cause); - } - - /** - * - * @param cause - */ - public CmdExecException(final Throwable cause) - { - super(cause); - } -} diff --git a/src/fr/devinsy/util/cmdexec/StreamGobbler.java b/src/fr/devinsy/util/cmdexec/StreamGobbler.java deleted file mode 100644 index a4739ae..0000000 --- a/src/fr/devinsy/util/cmdexec/StreamGobbler.java +++ /dev/null @@ -1,196 +0,0 @@ -/** - * Copyright (C) 2005-2008, 2010, 2013, 2016 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.cmdexec; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class StreamGobbler extends Thread -{ - public enum StreamWay - { - NONE, - PRINT, - BUFFER - } - - private static final Logger logger = LoggerFactory.getLogger(CmdExec.class); - - private InputStream is; - private String name; - private StreamWay streamWay; - private StringBuffer stream; - - // Important if the caller wants have complete stream in case of very short - // command. - private boolean isOverStatus; - - /** - * - */ - StreamGobbler() - { - this.is = null; - this.name = ""; - this.streamWay = StreamWay.NONE; - this.stream = new StringBuffer(); - this.isOverStatus = false; - } - - /** - * - * @param is - * @param name - */ - StreamGobbler(final InputStream is, final String name) - { - this.is = is; - this.name = name; - this.streamWay = StreamWay.NONE; - this.stream = new StringBuffer(); - this.isOverStatus = false; - } - - /** - * - * @param is - * @param name - * @param streamWay - */ - StreamGobbler(final InputStream is, final String name, final StreamWay streamWay) - { - this.is = is; - this.name = name; - this.streamWay = streamWay; - this.stream = new StringBuffer(); - this.isOverStatus = false; - } - - /** - * - * @param type - * @param streamWay - */ - StreamGobbler(final String type, final StreamWay streamWay) - { - this.name = type; - this.streamWay = streamWay; - this.stream = new StringBuffer(); - this.isOverStatus = false; - } - - /** - * - * @return - */ - public String getStream() - { - String result; - - if (this.stream != null) - { - result = this.stream.toString(); - } - else - { - result = null; - } - - // - return (result); - } - - /** - * - * @return - */ - public boolean isOver() - { - boolean result; - - result = this.isOverStatus; - - // - return (result); - } - - /** - * - */ - @Override - public void run() - { - try - { - InputStreamReader isr = new InputStreamReader(this.is); - BufferedReader buffer = new BufferedReader(isr); - String line = null; - switch (this.streamWay) - { - case NONE: - while ((line = buffer.readLine()) != null) - { - ; - } - break; - - case PRINT: - while ((line = buffer.readLine()) != null) - { - System.out.println(this.name + ">" + line); - } - break; - - case BUFFER: - while ((line = buffer.readLine()) != null) - { - this.stream.append(line + "\n"); - } - break; - - default: - logger.warn("unknow way for stream"); - } - } - catch (IOException exception) - { - logger.error(exception.getMessage(), exception); - } - - this.isOverStatus = true; - } - - /** - * - * @param is - */ - public void setInputStream(final InputStream is) - { - this.is = is; - } -} diff --git a/src/fr/devinsy/util/rss/RSSCache.java b/src/fr/devinsy/util/rss/RSSCache.java deleted file mode 100644 index 939398e..0000000 --- a/src/fr/devinsy/util/rss/RSSCache.java +++ /dev/null @@ -1,214 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.rss; - -import java.util.HashMap; -import java.util.Locale; - -import fr.devinsy.util.strings.StringList; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class RSSCache -{ - private static RSSCache instance = new RSSCache(); - private HashMap cache; - - /** - * - */ - private RSSCache() - { - this.cache = new HashMap(); - } - - /** - * - * @param key - * @param locale - * @return - */ - public String get(final String name) - { - return get(name, Locale.ROOT); - } - - /** - * - * @param name - * @param locale - * @return - */ - public String get(final String name, final Locale locale) - { - String result; - - if (name == null) - { - throw new NullPointerException("name is null."); - } - else if (locale == null) - { - result = get(name, Locale.ROOT); - } - else - { - result = this.cache.get(key(name, locale)); - - if (result == null) - { - result = this.cache.get(name); - } - } - - return result; - } - - /** - * - * @param name - * @param locale - * @return - */ - private String key(final String name, final Locale locale) - { - String result; - - if (locale.getLanguage().length() == 0) - { - result = name; - } - else - { - result = name + "_" + locale.getLanguage(); - } - - // - return result; - } - - /** - * - * @param key - * @param locale - * @param rss - */ - public void put(final String name, final Locale locale, final String rss) - { - if (name == null) - { - throw new NullPointerException("name is null."); - } - else if (locale == null) - { - put(name, Locale.ROOT, rss); - } - else - { - this.cache.put(key(name, locale), rss); - } - } - - /** - * - * @param name - * @param locale - * @param rss - */ - public void put(final String name, final String rss) - { - put(name, Locale.ROOT, rss); - } - - /** - * - * @param name - */ - public void remove(final String name) - { - remove(name, Locale.ROOT); - } - - /** - * - * @param name - */ - public void remove(final String name, final Locale locale) - { - if (name == null) - { - throw new NullPointerException("key is null."); - } - else - { - this.cache.remove(name + "-" + locale.getLanguage()); - } - } - - /** - * - * @param key - */ - public void setOudated(final String name) - { - for (String subkey : subkeys(name)) - { - if (subkey.startsWith(name)) - { - this.cache.remove(subkey); - } - } - } - - /** - * - * @param key - */ - public StringList subkeys(final String name) - { - StringList result; - - // - result = new StringList(); - - // - for (String key : this.cache.keySet()) - { - if (key.startsWith(name)) - { - result.add(key); - } - } - - // - return result; - } - - /** - * - * @return - */ - public static RSSCache instance() - { - return instance; - } - -} diff --git a/src/fr/devinsy/util/rss/RSSElement.java b/src/fr/devinsy/util/rss/RSSElement.java deleted file mode 100644 index 52e07d8..0000000 --- a/src/fr/devinsy/util/rss/RSSElement.java +++ /dev/null @@ -1,154 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.rss; - -import org.joda.time.DateTime; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class RSSElement -{ - public static final String DATE_PATTERN = "dd MMM YYYY hh:mm:ss Z"; - private String name; - private String value; - private String[] attributes; - - /** - * - * @param name - * @param value - */ - public RSSElement(final String name, final DateTime value) - { - setName(name); - if (value == null) - { - this.value = null; - } - else - { - this.value = value.toString(DATE_PATTERN); - } - this.attributes = null; - } - - /** - * - * @param name - * @param value - */ - public RSSElement(final String name, final long value) - { - setName(name); - this.value = String.valueOf(value); - this.attributes = null; - } - - /** - * - * @param name - * @param value - */ - public RSSElement(final String name, final long value, final String... attributes) - { - setName(name); - this.value = String.valueOf(value); - this.attributes = attributes; - } - - /** - * - * @param name - * @param value - */ - public RSSElement(final String name, final String value) - { - setName(name); - this.value = value; - this.attributes = null; - } - - /** - * - * @param name - * @param value - */ - public RSSElement(final String name, final String value, final String... attributes) - { - setName(name); - this.value = value; - this.attributes = attributes; - } - - public String[] getAttributes() - { - return this.attributes; - } - - /** - * - * @return - */ - public String getName() - { - return this.name; - } - - /** - * - * @return - */ - public String getValue() - { - return this.value; - } - - public void setAttributes(final String[] attributes) - { - this.attributes = attributes; - } - - /** - * - * @param name - */ - public void setName(final String name) - { - if (name == null) - { - throw new NullPointerException("name is null"); - } - else - { - this.name = name; - } - } - - /** - * - * @param value - */ - public void setValue(final String value) - { - this.value = value; - } - -} diff --git a/src/fr/devinsy/util/rss/RSSWriter.java b/src/fr/devinsy/util/rss/RSSWriter.java deleted file mode 100644 index 31610c7..0000000 --- a/src/fr/devinsy/util/rss/RSSWriter.java +++ /dev/null @@ -1,172 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.rss; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.io.Writer; - -import fr.devinsy.util.xml.XMLWriter; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class RSSWriter -{ - private XMLWriter out; - - /** - * - * @param file - * @throws FileNotFoundException - * @throws UnsupportedEncodingException - */ - public RSSWriter(final File file) throws UnsupportedEncodingException, FileNotFoundException - { - this.out = new XMLWriter(file); - writeRSSHeader(); - } - - /** - * - * @param target - * @throws UnsupportedEncodingException - */ - public RSSWriter(final OutputStream target) throws UnsupportedEncodingException - { - this.out = new XMLWriter(target); - writeRSSHeader(); - } - - /** - * - * @param target - * @throws UnsupportedEncodingException - */ - public RSSWriter(final Writer target) throws UnsupportedEncodingException - { - this.out = new XMLWriter(target); - writeRSSHeader(); - } - - /** - * - */ - public void close() throws IOException - { - if (this.out != null) - { - this.out.writeEndTag("channel"); - this.out.writeEndTag("rss"); - this.out.close(); - } - } - - /** - * - */ - public void flush() throws IOException - { - if (this.out != null) - { - this.out.flush(); - } - } - - /** - * - */ - public void writeChannel(final String title, final String link, final String description, final RSSElement... elements) - { - // - this.out.writeStartTag("channel"); - - // - this.out.writeTag("title", title); - this.out.writeTag("link", link); - this.out.writeTag("description", description); - - // - if ((elements != null) && (elements.length > 0)) - { - for (RSSElement element : elements) - { - this.out.writeTag(element.getName(), element.getValue(), element.getAttributes()); - } - } - } - - /** - * - * @param comment - */ - public void writeComment(final String comment) - { - this.out.writeComment(comment); - } - - /** - * - */ - public void writeItem(final String title, final String link, final String description, final RSSElement... elements) - { - // - this.out.writeStartTag("item"); - - // - this.out.writeTag("title", title); - if (link != null) - { - this.out.writeTag("link", link); - } - if (description == null) - { - this.out.writeTag("description", "n/a"); - } - else - { - this.out.writeTag("description", description); - } - - // - if ((elements != null) && (elements.length > 0)) - { - for (RSSElement element : elements) - { - this.out.writeTag(element.getName(), element.getValue(), element.getAttributes()); - } - } - - // - this.out.writeEndTag("item"); - } - - /** - * - */ - private void writeRSSHeader() - { - this.out.writeXMLHeader(); - this.out.writeStartTag("rss", "version", "2.0"); - } -} diff --git a/src/fr/devinsy/util/unix/CachedFile.java b/src/fr/devinsy/util/unix/CachedFile.java deleted file mode 100644 index ce1881f..0000000 --- a/src/fr/devinsy/util/unix/CachedFile.java +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.io.File; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class CachedFile -{ - public enum Status - { - NOT_LOAD, EXPIRED, UPDATED - } - - private static final Logger logger = LoggerFactory.getLogger(CachedFile.class); - - protected String sourceName; - protected long sourceTime; - protected Status status; - - /** - * - */ - public CachedFile(final String fileName) - { - this.sourceName = fileName; - this.sourceTime = 0; - this.status = Status.NOT_LOAD; - } - - /** - * - */ - protected File getSourceFile() - { - File result; - - if (this.sourceName == null) - { - result = null; - } - else - { - File source = new File(this.sourceName); - - if (!source.exists()) - { - logger.error("source file defined but not found"); - result = null; - } - else - { - result = source; - } - } - - // - return (result); - } - - /** - * - */ - protected Status getStatus() - { - Status result; - - File source = getSourceFile(); - - if (source == null) - { - this.status = Status.NOT_LOAD; - } - else if (this.sourceTime != source.lastModified()) - { - this.status = Status.EXPIRED; - } - - result = this.status; - - // - return (result); - } - - /** - * - */ - public void setNotLoad() - { - this.status = Status.NOT_LOAD; - } - - /** - * - */ - public void setUpdated() - { - File source = getSourceFile(); - - if (source == null) - { - this.status = Status.NOT_LOAD; - } - else - { - this.sourceTime = source.lastModified(); - this.status = Status.UPDATED; - } - } -} - -// //////////////////////////////////////////////////////////////////////// diff --git a/src/fr/devinsy/util/unix/EtcGroupFile.java b/src/fr/devinsy/util/unix/EtcGroupFile.java deleted file mode 100644 index ad1ccb5..0000000 --- a/src/fr/devinsy/util/unix/EtcGroupFile.java +++ /dev/null @@ -1,200 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.util.Vector; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class EtcGroupFile extends CachedFile -{ - // static private final Logger logger = - // LoggerFactory.getLogger(EtcGroupFile.class); - - private static EtcGroupFile instance = null; - protected Groups groups; - - /** - * - */ - protected EtcGroupFile() - { - super("/etc/group"); - this.groups = null; - } - - /* - * - */ - public boolean contains(final String name) - { - boolean result; - - Groups groups = updatedGroups(); - - if (groups == null) - { - result = false; - } - else - { - result = groups.contains(name); - } - - // - return (result); - } - - /** - * - */ - public Group get(final int gid) - { - Group result; - - Groups groups = updatedGroups(); - - if (groups == null) - { - result = null; - } - else - { - result = groups.getByGid(gid); - } - - // - return (result); - } - - /** - * - */ - public Group get(final String name) - { - Group result; - - Groups groups = updatedGroups(); - - if (groups == null) - { - result = null; - } - else - { - result = groups.getByName(name); - } - - // - return (result); - } - - /** - * - */ - public Vector getLoginGroups(final String login) - { - Vector result; - - Groups groups = updatedGroups(); - - result = groups.getLoginGroups(login); - - // - return (result); - } - - /** - * - */ - public String getLoginGroupsString(final String login) - { - String result; - - this.groups = updatedGroups(); - - result = this.groups.getLoginGroupsString(login); - - // - return (result); - } - - /** - * - */ - @Override - public String toString() - { - String result; - - result = this.groups.toString(); - - // - return (result); - } - - /** - * - */ - protected Groups updatedGroups() - { - Groups result; - - if (getStatus() != Status.UPDATED) - { - this.groups = EtcGroupFileReader.load(); - - if (this.groups == null) - { - setNotLoad(); - } - else - { - setUpdated(); - } - } - - result = this.groups; - - // - return (result); - } - - /** - * - */ - static public EtcGroupFile instance() - { - EtcGroupFile result; - - if (EtcGroupFile.instance == null) - { - EtcGroupFile.instance = new EtcGroupFile(); - } - - result = EtcGroupFile.instance; - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/EtcGroupFileReader.java b/src/fr/devinsy/util/unix/EtcGroupFileReader.java deleted file mode 100644 index 35ab71f..0000000 --- a/src/fr/devinsy/util/unix/EtcGroupFileReader.java +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class EtcGroupFileReader -{ - private static final Logger logger = LoggerFactory.getLogger(EtcGroupFileReader.class); - - /** - * - */ - public static Groups load() - { - Groups result; - - BufferedReader file; - - try - { - file = new BufferedReader(new FileReader("/etc/group")); - } - catch (FileNotFoundException exception) - { - logger.error("File not found"); - file = null; - } - - if (file == null) - { - result = null; - } - else - { - result = new Groups(); - - try - { - String line; - while ((line = file.readLine()) != null) - { - String[] tokens = line.split(":"); - - Group group = new Group(); - group.setName(tokens[0]); - group.setPassword(tokens[1]); - group.setGid((new Integer(tokens[2])).intValue()); - - // Manage the case of empty shell. - if (tokens.length == 4) - { - String[] tokensBis = tokens[3].split(","); - - for (int tokenCounter = 0; tokenCounter < tokensBis.length; tokenCounter++) - { - group.addMember(tokensBis[tokenCounter]); - } - } - result.add(group); - } - - file.close(); - } - catch (java.io.IOException exception) - { - logger.error("Exception here."); - result = null; - } - } - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/EtcPasswdFile.java b/src/fr/devinsy/util/unix/EtcPasswdFile.java deleted file mode 100644 index 2816e37..0000000 --- a/src/fr/devinsy/util/unix/EtcPasswdFile.java +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class EtcPasswdFile extends CachedFile -{ - private static final Logger logger = LoggerFactory.getLogger(EtcPasswdFile.class); - - private static EtcPasswdFile instance = null; - protected Users users; - - /** - * - */ - protected EtcPasswdFile() - { - super("/etc/passwd"); - this.users = null; - } - - /* - * - */ - public boolean contains(final String login) - { - boolean result; - - Users users = updatedUsers(); - - if (users == null) - { - result = false; - } - else - { - result = users.contains(login); - } - - // - return (result); - } - - /** - * - */ - public User get(final int uid) - { - User result; - - Users users = updatedUsers(); - - if (users == null) - { - result = null; - } - else - { - result = users.getByUid(uid); - } - - // - return (result); - } - - /** - * - */ - public User get(final String login) - { - User result; - - Users users = updatedUsers(); - - if (users == null) - { - result = null; - } - else - { - result = users.getByLogin(login); - } - - // - return (result); - } - - /** - * - */ - @Override - public String toString() - { - String result; - - result = this.users.toString(); - - // - return (result); - } - - /** - * - */ - protected Users update() - { - Users result; - - logger.debug("updating"); - this.users = EtcPasswdFileReader.load(); - - if (this.users == null) - { - setNotLoad(); - } - else - { - setUpdated(); - } - - result = this.users; - - // - return (result); - } - - /** - * - */ - protected Users updatedUsers() - { - Users result; - - if (getStatus() != Status.UPDATED) - { - update(); - } - - result = this.users; - - // - return (result); - } - - /** - * - */ - public static EtcPasswdFile instance() - { - EtcPasswdFile result; - - if (EtcPasswdFile.instance == null) - { - EtcPasswdFile.instance = new EtcPasswdFile(); - } - - result = EtcPasswdFile.instance; - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/EtcPasswdFileReader.java b/src/fr/devinsy/util/unix/EtcPasswdFileReader.java deleted file mode 100644 index 1467391..0000000 --- a/src/fr/devinsy/util/unix/EtcPasswdFileReader.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class EtcPasswdFileReader -{ - private static final Logger logger = LoggerFactory.getLogger(EtcPasswdFileReader.class); - - /** - * - */ - public static Users load() - { - Users result; - - BufferedReader file; - - try - { - file = new BufferedReader(new FileReader("/etc/passwd")); - } - catch (FileNotFoundException exception) - { - logger.error("File not found"); - file = null; - } - - if (file == null) - { - result = null; - } - else - { - result = new Users(); - - try - { - String line; - while ((line = file.readLine()) != null) - { - String[] tokens = line.split(":"); - - User user = new User(); - user.setLogin(tokens[0]); - user.setPassword(tokens[1]); - user.setUid((new Integer(tokens[2])).intValue()); - user.setGid((new Integer(tokens[3])).intValue()); - user.setRealName(tokens[4]); - user.setHomeDirectory(tokens[5]); - - // Manage the case of empty shell. - if (tokens.length == 7) - { - user.setShell(tokens[6]); - } - else - { - user.setShell(""); - } - - result.add(user); - } - - file.close(); - } - catch (java.io.IOException exception) - { - logger.error("Exception here."); - result = null; - } - } - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/Group.java b/src/fr/devinsy/util/unix/Group.java deleted file mode 100644 index 04eb687..0000000 --- a/src/fr/devinsy/util/unix/Group.java +++ /dev/null @@ -1,223 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.util.Vector; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class Group -{ - // static private final Logger logger = - // LoggerFactory.getLogger(Group.class); - - /* - * /usr/include/grp.h - * - * The group structure. - * struct group - * { - * char *gr_name; Group name. - * char *gr_passwd; Password. - * __gid_t gr_gid; Group ID. - * char **gr_mem; Member list. - * }; - */ - - protected String name; - protected String password; - protected int gid; - protected Vector members; - - /** - * - */ - public Group() - { - this.name = null; - this.password = null; - this.gid = -1; - this.members = new Vector(); - } - - /** - * - */ - public void addMember(final String login) - { - if ((login != null) && (login.length() != 0)) - { - this.members.add(login); - } - } - - /** - * - */ - public int getGid() - { - int result; - - result = this.gid; - - // - return (result); - } - - /** - * - */ - public Vector getMembers() - { - Vector result; - - result = this.members; - - // - return (result); - } - - /** - * - */ - public String getName() - { - String result; - - result = this.name; - - // - return (result); - } - - /** - * - */ - public String getPassword() - { - String result; - - result = this.password; - - // - return (result); - } - - /** - * - */ - public int gid() - { - int result; - - result = this.gid; - - // - return (result); - } - - /** - * - */ - public Vector members() - { - Vector result; - - result = this.members; - - // - return (result); - } - - /** - * - */ - public String name() - { - String result; - - result = this.name; - - // - return (result); - } - - /** - * - */ - public String passwd() - { - String result; - - result = this.password; - - // - return (result); - } - - /** - * - */ - public void setGid(final int gid) - { - this.gid = gid; - } - - /** - * - */ - public void setName(final String name) - { - this.name = name; - } - - /** - * - */ - public void setPasswd(final String password) - { - this.password = password; - } - - /** - * - */ - public void setPassword(final String password) - { - this.password = password; - } - - /** - * - */ - @Override - public String toString() - { - String result; - - result = "|" + this.name + "|" + this.password + "|" + this.gid + "|" + this.members + "|"; - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/Groups.java b/src/fr/devinsy/util/unix/Groups.java deleted file mode 100644 index 34e0e4d..0000000 --- a/src/fr/devinsy/util/unix/Groups.java +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.util.Iterator; -import java.util.Vector; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class Groups extends Vector -{ - - private static final long serialVersionUID = 5802487312198869603L; - - // static private final Logger logger = - // LoggerFactory.getLogger(Groups.class); - - /** - * - */ - public Groups() - { - super(); - } - - /* - * - */ - public boolean contains(final int gid) - { - boolean result; - - if (getByGid(gid) == null) - { - result = false; - } - else - { - result = true; - } - - // - return (result); - } - - /* - * - */ - public boolean contains(final String name) - { - boolean result; - - if (getByName(name) == null) - { - result = false; - } - else - { - result = true; - } - - // - return (result); - } - - /** - * - */ - public Group getByGid(final int gid) - { - Group result; - - result = null; - boolean ended = false; - Iterator iterator = this.iterator(); - while (!ended) - { - if (iterator.hasNext()) - { - Group group = iterator.next(); - if (group.getGid() == gid) - { - ended = true; - result = group; - } - } - else - { - ended = true; - result = null; - } - } - - // - return (result); - } - - /** - * - */ - public Group getByName(final String name) - { - Group result; - - if (name == null) - { - result = null; - } - else - { - result = null; - boolean ended = false; - Iterator iterator = this.iterator(); - while (!ended) - { - if (iterator.hasNext()) - { - Group group = iterator.next(); - if (group.getName().equals(name)) - { - ended = true; - result = group; - } - } - else - { - ended = true; - result = null; - } - } - } - - // - return (result); - } - - /** - * - */ - public Vector getLoginGroups(final String login) - { - Vector result; - - result = new Vector(); - Iterator iterator = this.iterator(); - - while (iterator.hasNext()) - { - Group group = iterator.next(); - - if (group.members().contains(login)) - { - result.add(group.getName()); - } - } - - // - return (result); - } - - /** - * - */ - public String getLoginGroupsString(final String login) - { - String result; - - Vector groups = getLoginGroups(login); - - StringBuffer string = new StringBuffer(); - - for (String group : groups) - { - if (string.length() == 0) - { - string.append(group); - } - else - { - string.append(","); - string.append(group); - } - } - - result = string.toString(); - - // - return (result); - } - - /** - * - */ - @Override - public String toString() - { - String result; - - StringBuffer out = new StringBuffer(); - - Iterator iterator = this.iterator(); - - while (iterator.hasNext()) - { - out.append(iterator.next().toString() + "\n"); - } - - result = out.toString(); - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/Unix.java b/src/fr/devinsy/util/unix/Unix.java deleted file mode 100644 index 5de7972..0000000 --- a/src/fr/devinsy/util/unix/Unix.java +++ /dev/null @@ -1,597 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2015 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.io.File; -import java.util.Vector; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import fr.devinsy.util.cmdexec.CmdExec; -import fr.devinsy.util.strings.StringListUtils; -import fr.devinsy.util.unix.acl.Acl; -import fr.devinsy.util.unix.acl.AclManager; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class Unix -{ - private static final Logger logger = LoggerFactory.getLogger(Unix.class); - public static final String SUDO = "/usr/bin/sudo"; - - /** - * - */ - public static void appendToFile(final String text, final String path) throws Exception - { - if ((text == null) || (text.length() == 0) || (path == null) || (path.length() == 0)) - { - throw new Exception("Parameter undefined: [" + text + "][" + path + "]."); - } - else - { - try - { - CmdExec.run(SUDO, "bash", "-c", "echo \"" + text + "\" >> " + path); - } - catch (Exception exception) - { - throw new Exception("Error detected appending text to file [" + path + "].", exception); - } - } - } - - /** - * - */ - public static void chmod(final String changes, final String path) throws Exception - { - if ((changes == null) || (changes.length() == 0) || (path == null) || (path.length() == 0)) - { - throw new Exception("Parameter undefined: [" + changes + "][" + path + "]."); - } - else if (!new File(path).exists()) - { - throw new Exception("Path not found: [" + path + "]."); - } - else - { - try - { - CmdExec.run(SUDO, "chmod", changes, path); - } - catch (Exception exception) - { - throw new Exception("Error running chmod command for [" + changes + "][" + path + "].", exception); - } - } - } - - /** - * - */ - public static void clearAcl(final String id, final String filePathName) throws Exception - { - AclManager.clearId(id, filePathName); - } - - /** - * - */ - public static void clearAclGroup(final String group, final String filePathName) throws Exception - { - AclManager.clearGroup(group, filePathName); - } - - /** - * - */ - public static void clearAclUser(final String login, final String filePathName) throws Exception - { - AclManager.clearUser(login, filePathName); - } - - /** - * - */ - public static void createUserAccount(final String login) throws Exception - { - if ((login == null) || (login.length() == 0)) - { - throw new Exception("Login parameter undefined."); - } - else - { - createUserAccount(login, login); - } - } - - /** - * - */ - public static void createUserAccount(final String login, final String name) throws Exception - { - if ((login == null) || (login.length() == 0)) - { - throw new Exception("Login parameter undefined."); - } - else if ((name == null) || (name.length() == 0)) - { - throw new Exception("Name parameter undefined."); - } - else - { - createUserAccount(login, name, "/home/" + login); - } - } - - /** - * - */ - public static void createUserAccount(final String login, final String name, final String home) throws Exception - { - if ((login == null) || (login.length() == 0)) - { - throw new Exception("Login parameter undefined."); - } - else if ((name == null) || (name.length() == 0)) - { - throw new Exception("Name parameter undefined."); - } - else if ((home == null) || (home.length() == 0)) - { - throw new Exception("Home parameter undefined."); - } - else - { - try - { - logger.info("Creating user account for [" + login + "]."); - CmdExec.run(SUDO, "/usr/sbin/useradd", "-m", "-c", name, "-d", home, login); - EtcPasswdFile.instance().update(); - logger.info("User account created for [" + login + "]."); - } - catch (Exception exception) - { - throw new Exception("Error detected creating user account [" + login + "].", exception); - } - } - } - - /** - * - */ - public static void createUserAccount(final String login, final String name, final String home, final String password) throws Exception - { - if ((password == null) || (password.length() == 0)) - { - throw new Exception("Password parameter undefined."); - } - else if (Unix.isLogin(login)) - { - throw new Exception("Login [" + login + "] already in use"); - } - else - { - createUserAccount(login, name, home); - setPassword(login, password); - } - } - - /** - * - */ - public static void deleteGroup(final String group) throws Exception - { - if ((group == null) || (group.length() == 0)) - { - throw new Exception("Group parameter undefined."); - } - else - { - try - { - logger.info("Deleting group for [" + group + "]."); - CmdExec.run(SUDO + " groupdel " + group); - logger.info("Group deleted for [" + group + "]."); - } - catch (Exception exception) - { - throw new Exception("Error running groupdel command for group [" + group + "].", exception); - } - } - } - - /** - * - */ - public static void deleteUserAccount(final String login) throws Exception - { - if ((login == null) || (login.length() == 0)) - { - throw new Exception("Login parameter undefined."); - } - else - { - try - { - logger.info("Deleting user account for [" + login + "]."); - CmdExec.run(SUDO + " /usr/sbin/userdel " + login); - logger.info("User account delted for [" + login + "]."); - } - catch (Exception exception) - { - throw new Exception("Error running userdel command for login [" + login + "].", exception); - } - } - } - - /** - * - */ - public static String getAclData(final String filePathName) throws Exception - { - String result; - - result = AclManager.getAclData(filePathName); - - // - return (result); - } - - /** - * - */ - public static String[] getAclUsers(final String filePathName) throws Exception - { - String[] result; - - Acl acl = AclManager.getAcl(filePathName); - - result = acl.currentAcl().getUserIds(); - - // - return (result); - } - - /** - * - */ - public static boolean isGroup(final String groupName) - { - boolean result; - - result = EtcGroupFile.instance().contains(groupName); - - // - return (result); - } - - /** - * - */ - public static boolean isLogin(final String login) - { - boolean result; - - result = EtcPasswdFile.instance().contains(login); - - // - return (result); - } - - /** - * - */ - public static void link(final String sourcePath, final String targetPath) throws Exception - { - logger.info("[" + sourcePath + "][" + targetPath + "]"); - if ((sourcePath == null) || (sourcePath.length() == 0) || (targetPath == null) || (targetPath.length() == 0)) - { - throw new Exception("Parameter undefined: [" + sourcePath + "][" + targetPath + "]."); - } - else - { - File sourceFile = new File(sourcePath); - File targetFile = new File(targetPath); - - if (!sourceFile.exists()) - { - throw new Exception("Source does not exist: [" + sourcePath + "]."); - } - else if ((targetFile.exists()) && (!targetFile.isDirectory())) - { - throw new Exception("Target already exists: [" + targetPath + "]."); - } - else - { - try - { - CmdExec.run(SUDO, "ln", "-s", sourcePath, targetPath); - } - catch (Exception exception) - { - throw new Exception("Error detected linking [" + sourcePath + "][" + targetPath + "].", exception); - } - } - } - } - - /** - * - */ - public static void modifyLogin(final String sourceLogin, final String targetLogin, final String sourceHomeDirectory) throws Exception - { - logger.info("Starting login modifying: [" + sourceLogin + "] -> [" + targetLogin + "]"); - if ((sourceLogin == null) || (sourceLogin.length() == 0)) - { - throw new Exception("Original login parameters undefined"); - } - else if ((targetLogin == null) || (targetLogin.length() == 0)) - { - throw new Exception("New login parameters undefined"); - } - else if (!Unix.isLogin(sourceLogin)) - { - throw new Exception("Original login unknow: [" + sourceLogin + "]."); - } - else if (Unix.isLogin(targetLogin)) - { - throw new Exception("New login unknow: [" + targetLogin + "]."); - } - else if (sourceHomeDirectory == null) - { - throw new Exception("sourceHomeDirectory parameter undefined, thus no home directory move."); - } - else if (!new File(sourceHomeDirectory).exists()) - { - throw new Exception("Source home directory does not exist: [" + sourceHomeDirectory + "]."); - } - else - { - String targetHomeDirectory = new File(sourceHomeDirectory).getParent().toString() + "/" + targetLogin; - if (new File(targetHomeDirectory).exists()) - { - throw new Exception("Target home directory already exists: [" + targetHomeDirectory + "]."); - } - else - { - try - { - logger.info("Login modifying: [" + sourceLogin + "] -> [" + targetLogin + "]"); - CmdExec.run(SUDO + " usermod -l " + targetLogin + " " + sourceLogin); - logger.info("Login modified: [" + sourceLogin + "] -> [" + targetLogin + "]"); - } - catch (Exception exception) - { - throw new Exception("Login modification failed for [" + sourceLogin + "].", exception); - } - - try - { - logger.info("Renaming home directory: [" + sourceHomeDirectory + "] -> [" + targetLogin + "]"); - CmdExec.run(SUDO + " mv " + sourceHomeDirectory + " " + targetHomeDirectory); - logger.info("Home directory renamed: [" + sourceHomeDirectory + "] -> [" + targetLogin + "]"); - } - catch (Exception exception) - { - throw new Exception("Home directory rename failed for [" + sourceHomeDirectory + "].", exception); - } - } - } - logger.info("Login modifying done: [" + sourceLogin + "] -> [" + targetLogin + "]"); - } - - /** - * - */ - public static void recursiveChmod(final String changes, final String path) throws Exception - { - if ((changes == null) || (changes.length() == 0) || (path == null) || (path.length() == 0)) - { - throw new Exception("Parameter undefined: [" + changes + "][" + path + "]."); - } - else if (!new File(path).exists()) - { - throw new Exception("Path not found: [" + path + "]."); - } - else - { - try - { - CmdExec.run(SUDO, "chmod", "-R", changes, path); - } - catch (Exception exception) - { - throw new Exception("Error running recursive chmod command for [" + changes + "][" + path + "].", exception); - } - } - } - - /** - * - */ - public static void renameGroup(final String sourceGroup, final String targetGroup) throws Exception - { - logger.info("Starting group renaming: [" + sourceGroup + "] -> [" + targetGroup + "]"); - if ((sourceGroup == null) || (sourceGroup.length() == 0)) - { - throw new Exception("Original group name parameters undefined"); - } - else if ((targetGroup == null) || (targetGroup.length() == 0)) - { - throw new Exception("New group name parameters undefined"); - } - else if (!Unix.isGroup(sourceGroup)) - { - throw new Exception("Original group unknow: [" + sourceGroup + "]."); - } - else if (Unix.isGroup(targetGroup)) - { - throw new Exception("New group unknow: [" + targetGroup + "]."); - } - else - { - try - { - logger.info("Login modifying: [" + sourceGroup + "] -> [" + targetGroup + "]"); - CmdExec.run(SUDO + " groupmod -n " + targetGroup + " " + sourceGroup); - logger.info("Login modified: [" + sourceGroup + "] -> [" + targetGroup + "]"); - } - catch (Exception exception) - { - throw new Exception("Group renaming failed for [" + sourceGroup + "].", exception); - } - } - logger.info("Group renaming done: [" + sourceGroup + "] -> [" + targetGroup + "]"); - } - - /** - * - */ - public static Group searchGroup(final String groupName) - { - Group result; - - result = EtcGroupFile.instance().get(groupName); - - // - return (result); - } - - /** - * - */ - public static User searchLogin(final String login) - { - User result; - - result = EtcPasswdFile.instance().get(login); - - // - return (result); - } - - /** - * - */ - public static Vector searchLoginGroups(final String login) - { - Vector result; - - result = EtcGroupFile.instance().getLoginGroups(login); - - // - return (result); - } - - /** - * - */ - public static void setfacl(final String... args) throws Exception - { - try - { - CmdExec.run(SUDO, "setfacl", args, 1, 6); - } - catch (Exception exception) - { - throw new Exception("Error running setfacl command for " + StringListUtils.toStringWithBrackets(args) + ":" + exception.getMessage() + ".", exception); - } - } - - /** - * As 'passwd' command has not the option '--stdin' in all systems (eg. - * Debian), this method uses the 'chpasswd' command. - */ - public static void setPassword(final String login, final String newPassword) throws Exception - { - if ((login == null) || (login.length() == 0)) - { - throw new Exception("Login parameter undefined."); - } - else if (newPassword == null) - { - throw new Exception("New password parameter undefined."); - } - else - { - try - { - logger.info("Password setting for [" + login + "]."); - CmdExec.run(SUDO, "bash", "-c", "echo \"" + login + ":" + newPassword + "\"| chpasswd "); - logger.info("Password set for [" + login + "]."); - } - catch (Exception exception) - { - throw new Exception("Error detected on setting of the new password for [" + login + "].", exception); - } - } - } - - /** - * chfn [ -f full-name ] [ username ] - */ - public static void setRealName(final String login, final String newRealName) throws Exception - { - if ((login == null) || (login.length() == 0)) - { - throw new Exception("Login parameter undefined."); - } - else if (newRealName == null) - { - throw new Exception("New real name parameter undefined."); - } - else - { - try - { - logger.info("Real name changing for user [" + login + "]."); - CmdExec.run(SUDO, "chfn", "-f", newRealName, login); - EtcPasswdFile.instance().update(); - logger.info("Real name changed for user [" + login + "]."); - } - catch (Exception exception) - { - throw new Exception("Error detected on setting of the new real name for [" + login + "].", exception); - } - } - } - - /** - * - */ - public static void unlink(final String filePathName) throws Exception - { - logger.info("[" + filePathName + "]"); - if (filePathName == null) - { - throw new Exception("Parameter undefined: [" + filePathName + "]."); - } - else - { - new File(filePathName).delete(); - } - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/User.java b/src/fr/devinsy/util/unix/User.java deleted file mode 100644 index 8942577..0000000 --- a/src/fr/devinsy/util/unix/User.java +++ /dev/null @@ -1,355 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class User -{ - // private static final Logger logger = LoggerFactory.getLogger(User.class); - - /* - * /usr/include/pwd.h - * - * The passwd structure. - * struct passwd - * { - * char *pw_name;D Username. - * char *pw_passwd; Password. - * __uid_t pw_uid; User ID. - * __gid_t pw_gid; Group ID. - * char *pw_gecos; Real name. - * char *pw_dir; Home directory. - * char *pw_shell; Shell program. - * }; - */ - - protected String login; - protected String password; - protected int uid; - protected int gid; - protected String realName; - protected String homeDirectory; - protected String shell; - - /** - * - */ - public User() - { - this.login = null; - this.password = null; - this.uid = -1; - this.gid = -1; - this.realName = null; - this.homeDirectory = null; - this.shell = null; - } - - /** - * - */ - public User(final User user) - { - this.login = user.login(); - this.password = user.passwd(); - this.uid = user.uid(); - this.gid = user.gid(); - this.realName = user.realName(); - this.homeDirectory = user.homeDirectory(); - this.shell = user.shell(); - } - - /** - * - */ - public int getGid() - { - int result; - - result = this.gid; - - // - return (result); - } - - /** - * - */ - public String getHomeDirectory() - { - String result; - - result = this.homeDirectory; - - // - return (result); - } - - /** - * - */ - public String getLogin() - { - String result; - - result = this.login; - - // - return (result); - } - - /** - * - */ - public String getPasswd() - { - String result; - - result = this.password; - - // - return (result); - } - - /** - * - */ - public String getPassword() - { - String result; - - result = this.password; - - // - return (result); - } - - /** - * - */ - public String getRealName() - { - String result; - - result = this.realName; - - // - return (result); - } - - /** - * - */ - public String getShell() - { - String result; - - result = this.shell; - - // - return (result); - } - - /** - * - */ - public int getUid() - { - int result; - - result = this.uid; - - // - return (result); - } - - /** - * - */ - public int gid() - { - int result; - - result = this.gid; - - // - return (result); - } - - /** - * - */ - public String homeDirectory() - { - String result; - - result = this.homeDirectory; - - // - return (result); - } - - /** - * - */ - public String login() - { - String result; - - result = this.login; - - // - return (result); - } - - /** - * - */ - public String passwd() - { - String result; - - result = this.password; - - // - return (result); - } - - /** - * - */ - public String realName() - { - String result; - - result = this.realName; - - // - return (result); - } - - /** - * - */ - public void setGid(final int gid) - { - this.gid = gid; - } - - /** - * - */ - public void setHomeDirectory(final String homeDirectory) - { - this.homeDirectory = homeDirectory; - } - - /** - * - */ - public void setLogin(final String login) - { - this.login = login; - } - - /** - * - */ - public void setPasswd(final String password) - { - this.password = password; - } - - /** - * - */ - public void setPassword(final String password) - { - this.password = password; - } - - /** - * - */ - public void setRealName(final String realName) - { - this.realName = realName; - } - - /** - * - */ - public void setShell(final String shell) - { - this.shell = shell; - } - - /** - * - */ - public void setUid(final int uid) - { - this.uid = uid; - } - - /** - * - */ - public String shell() - { - String result; - - result = this.shell; - - // - return (result); - } - - /** - * - */ - @Override - public String toString() - { - String result; - - result = "|" + this.login + "|" + this.password + "|" + this.uid + "|" + this.gid + "|" + this.realName + "|" + this.homeDirectory + "|" + this.shell + "|"; - - // - return (result); - } - - /** - * - */ - public int uid() - { - int result; - - result = this.uid; - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/Users.java b/src/fr/devinsy/util/unix/Users.java deleted file mode 100644 index f33160c..0000000 --- a/src/fr/devinsy/util/unix/Users.java +++ /dev/null @@ -1,179 +0,0 @@ -/** - * Copyright (C) 2006-2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix; - -import java.util.Iterator; -import java.util.Vector; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class Users extends Vector -{ - private static final long serialVersionUID = -7178304512851592399L; - - // private static final Logger logger = - // LoggerFactory.getLogger(Users.class); - - /** - * - */ - public Users() - { - super(); - } - - /* - * - */ - public boolean contains(final int uid) - { - boolean result; - - if (getByUid(uid) == null) - { - result = false; - } - else - { - result = true; - } - - // - return (result); - } - - /* - * - */ - public boolean contains(final String login) - { - boolean result; - - if (getByLogin(login) == null) - { - result = false; - } - else - { - result = true; - } - - // - return (result); - } - - /** - * - */ - public User getByLogin(final String login) - { - User result; - - if (login == null) - { - result = null; - } - else - { - result = null; - boolean ended = false; - Iterator iterator = this.iterator(); - while (!ended) - { - if (iterator.hasNext()) - { - User user = iterator.next(); - if (user.getLogin().equals(login)) - { - ended = true; - result = user; - } - } - else - { - ended = true; - result = null; - } - } - } - - // - return (result); - } - - /** - * - */ - public User getByUid(final int uid) - { - User result; - - result = null; - boolean ended = false; - Iterator iterator = this.iterator(); - while (!ended) - { - if (iterator.hasNext()) - { - User user = iterator.next(); - if (user.getUid() == uid) - { - ended = true; - result = user; - } - } - else - { - ended = true; - result = null; - } - } - - // - return (result); - } - - /** - * - */ - @Override - public String toString() - { - String result; - - StringBuffer out; - out = new StringBuffer(); - - Iterator iterator = this.iterator(); - - while (iterator.hasNext()) - { - out.append(iterator.next().toString() + "\n"); - } - - result = out.toString(); - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/acl/Acl.java b/src/fr/devinsy/util/unix/acl/Acl.java deleted file mode 100644 index 1f2f37c..0000000 --- a/src/fr/devinsy/util/unix/acl/Acl.java +++ /dev/null @@ -1,216 +0,0 @@ -/** - * Copyright (C) 2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix.acl; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class Acl -{ - // private static final Logger logger = LoggerFactory.getLogger(Acl.class); - - /* - # file: goo39 - # owner: goo39 - # group: goo39 - user::rwx - user:cpm:rwx #effective:rwx - user:goo39:rwx #effective:rwx - group::--- #effective:--- - group:goo40:rwx #effective:rwx - mask::rwx - other::--- - default:user::rwx - default:user:cpm:rwx #effective:rwx - default:group::--- #effective:--- - default:group:cpm:rwx #effective:rwx - default:group:goo40:rwx #effective:rwx - default:mask::rwx - default:other::--- - */ - - protected String filePathname; - protected String owner; - protected String group; - - protected AclEntries currentAcl; - protected AclEntries defaultAcl; - - /** - * - */ - public Acl(final String filePathname) - { - this.filePathname = filePathname; - this.owner = ""; - this.group = ""; - this.currentAcl = new AclEntries(); - this.defaultAcl = new AclEntries(); - } - - /** - * - */ - public boolean contains(final AclEntry.Type type, final String id) - { - boolean result; - - if ((this.currentAcl().contains(type, id)) || (this.defaultAcl().contains(type, id))) - { - result = true; - } - else - { - result = false; - } - - // - return (result); - } - - /** - * - */ - public boolean containsGroup(final String group) - { - boolean result; - - result = contains(AclEntry.Type.GROUP, group); - - // - return (result); - } - - /** - * - */ - public boolean containsId(final String id) - { - boolean result; - - if ((containsUser(id) || containsGroup(id))) - { - result = true; - } - else - { - result = false; - } - - // - return (result); - } - - /** - * - */ - public boolean containsUser(final String login) - { - boolean result; - - result = contains(AclEntry.Type.USER, login); - - // - return (result); - } - - /** - * - */ - public AclEntries currentAcl() - { - AclEntries result; - - result = this.currentAcl; - - // - return (result); - } - - /** - * - */ - public AclEntries defaultAcl() - { - AclEntries result; - - result = this.defaultAcl; - - // - return (result); - } - - /** - * - */ - public String filePathname() - { - String result; - - result = this.filePathname; - - // - return (result); - } - - /** - * - */ - public String group() - { - String result; - - result = this.group; - - // - return (result); - } - - /** - * - */ - public String owner() - { - String result; - - result = this.owner; - - // - return (result); - } - - /** - * - */ - public void setGroup(final String group) - { - this.group = group; - } - - /** - * - */ - public void setOwner(final String owner) - { - this.owner = owner; - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/acl/AclEntries.java b/src/fr/devinsy/util/unix/acl/AclEntries.java deleted file mode 100644 index 580ab6f..0000000 --- a/src/fr/devinsy/util/unix/acl/AclEntries.java +++ /dev/null @@ -1,216 +0,0 @@ -/** - * Copyright (C) 2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix.acl; - -import java.util.Iterator; -import java.util.Vector; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class AclEntries extends Vector -{ - private static final long serialVersionUID = 5802487312198869603L; - - // private static final Logger logger = - // LoggerFactory.getLogger(AclEntries.class); - - /** - * - */ - public AclEntries() - { - super(); - } - - /* - * - */ - public boolean contains(final AclEntry.Type type, final String id) - { - boolean result; - - if (this.get(type, id) == null) - { - result = false; - } - else - { - result = true; - } - - // - return (result); - } - - /** - * - */ - public boolean containsId(final String id) - { - boolean result; - - if ((this.get(AclEntry.Type.USER, id) == null) && (this.get(AclEntry.Type.GROUP, id) == null)) - { - result = false; - } - else - { - result = true; - } - - // - return (result); - } - - /** - * - */ - public AclEntry get(final AclEntry.Type type, final String id) - { - AclEntry result; - - result = null; - boolean ended = false; - Iterator iterator = this.iterator(); - while (!ended) - { - if (iterator.hasNext()) - { - AclEntry entry = iterator.next(); - if ((type == entry.type()) && (entry.id().equals(id))) - { - ended = true; - result = entry; - } - } - else - { - ended = true; - result = null; - } - } - - // - return (result); - } - - /** - * - */ - public String[] getGroupIds() - { - String[] result; - - Vector ids = new Vector(); - - for (AclEntry entry : this) - { - if ((entry.type == AclEntry.Type.GROUP) && (!ids.contains(entry.id()))) - { - ids.add(entry.id()); - } - } - - result = (String[]) ids.toArray(); - - // - return (result); - } - - /** - * - */ - public String[] getIds() - { - String[] result; - - Vector ids = new Vector(); - - for (AclEntry entry : this) - { - if (!ids.contains(entry.id())) - { - ids.add(entry.id()); - } - } - - result = (String[]) ids.toArray(); - - // - return (result); - } - - /** - * - */ - public String[] getUserIds() - { - String[] result; - - // - Vector ids = new Vector(); - - for (AclEntry entry : this) - { - if ((entry.type == AclEntry.Type.USER) && (!ids.contains(entry.id()))) - { - ids.add(entry.id()); - } - } - - // - result = new String[ids.size()]; - - for (int nId = 0; nId < ids.size(); nId++) - { - result[nId] = ids.get(nId); - } - - // - return (result); - } - - /** - * - */ - @Override - public String toString() - { - String result; - - StringBuffer out; - out = new StringBuffer(); - - Iterator iterator = this.iterator(); - - while (iterator.hasNext()) - { - out.append(iterator.next().toString() + "\n"); - } - - result = out.toString(); - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/acl/AclEntry.java b/src/fr/devinsy/util/unix/acl/AclEntry.java deleted file mode 100644 index 09e1eb3..0000000 --- a/src/fr/devinsy/util/unix/acl/AclEntry.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright (C) 2010, 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix.acl; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class AclEntry -{ - // private static final Logger logger = - // LoggerFactory.getLogger(AclEntry.class); - - /* - user::rwx - user:cpm:rwx #effective:rwx - user:goo39:rwx #effective:rwx - group::--- #effective:--- - group:goo40:rwx #effective:rwx - mask::rwx - other::--- - */ - - public enum Type - { - NONE, USER, GROUP, MASK, OTHER - }; - - protected Type type; - protected String id; - protected String permission; - - /** - * - */ - public AclEntry(final Type type, final String id, final String permission) - { - this.type = type; - this.id = id; - this.permission = permission; - } - - /** - * - */ - public String id() - { - String result; - - result = this.id; - - // - return (result); - } - - /** - * - */ - public String permission() - { - String result; - - result = this.type.toString() + ":" + this.id + ":" + this.permission; - - // - return (result); - } - - /** - * - */ - @Override - public String toString() - { - String result; - - result = this.permission; - - // - return (result); - } - - /** - * - */ - public Type type() - { - Type result; - - result = this.type; - - // - return (result); - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/unix/acl/AclManager.java b/src/fr/devinsy/util/unix/acl/AclManager.java deleted file mode 100644 index 7484141..0000000 --- a/src/fr/devinsy/util/unix/acl/AclManager.java +++ /dev/null @@ -1,424 +0,0 @@ -/** - * Copyright (C) 2010, 2013-2015 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.unix.acl; - -import java.io.File; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import fr.devinsy.util.cmdexec.CmdExec; -import fr.devinsy.util.strings.StringListUtils; -import fr.devinsy.util.unix.Unix; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class AclManager -{ - private static final Logger logger = LoggerFactory.getLogger(AclManager.class); - public static final String SUDO = "/usr/bin/sudo"; - - final static public Pattern USER_PATTERN = Pattern.compile("^user:(.*):(.*)$"); - final static public Pattern GROUP_PATTERN = Pattern.compile("^group:(.*):(.*)$"); - final static public Pattern MASK_PATTERN = Pattern.compile("^mask:(.*):(.*)$"); - final static public Pattern OTHER_PATTERN = Pattern.compile("^other:(.*):(.*)$"); - final static public Pattern DEFAULT_USER_PATTERN = Pattern.compile("^default:user:(.*):(.*)$"); - final static public Pattern DEFAULT_GROUP_PATTERN = Pattern.compile("^default:group:(.*):(.*)$"); - final static public Pattern DEFAULT_MASK_PATTERN = Pattern.compile("^default:mask:(.*):(.*)$"); - final static public Pattern DEFAULT_OTHER_PATTERN = Pattern.compile("^default:other:(.*):(.*)$"); - - /** - * - */ - public static void clearGroup(final String group, final String filePathName) throws Exception - { - if ((group == null) || (group.length() == 0) || (filePathName == null) || (filePathName.length() == 0)) - { - throw new Exception("Bad parameters [" + group + "][" + filePathName + "]."); - } - else - { - Unix.setfacl("-R", "-L", "-x", "group:" + group, filePathName); - Unix.setfacl("-R", "-L", "-d", "-x", "group:" + group, filePathName); - } - } - - /** - * - */ - public static void clearId(final String id, final String filePathName) throws Exception - { - clearUser(id, filePathName); - clearGroup(id, filePathName); - } - - /** - * - */ - public static void clearUser(final String login, final String filePathName) throws Exception - { - if ((login == null) || (login.length() == 0) || (filePathName == null) || (filePathName.length() == 0)) - { - throw new Exception("Bad parameters [" + login + "][" + filePathName + "]."); - } - else - { - Unix.setfacl("-R", "-L", "-x", "user:" + login, filePathName); - Unix.setfacl("-R", "-L", "-d", "-x", "user:" + login, filePathName); - } - } - - /** - * - */ - public static Acl getAcl(final String filePathName) throws Exception - { - Acl result; - - result = new Acl(filePathName); - - String[] entries = getAclEntryLines(filePathName); - - // Login pattern: "^[a-z_][a-z0-9_-]*$". - logger.debug("Line=[" + entries[1] + "]"); - Matcher matcher = Pattern.compile("^#\\sowner:\\s([a-z_][a-z0-9_-]*)$").matcher(entries[1]); - if (matcher.matches()) - { - logger.debug("group=[" + matcher.group(1) + "]"); - result.setOwner(matcher.group(1)); - } - - // Group pattern: "^[a-z_][a-z0-9_-]*$". - logger.debug("Line=[" + entries[2] + "]"); - matcher = Pattern.compile("^#\\sgroup:\\s([a-z_][a-z0-9_-]*)$").matcher(entries[2]); - if (matcher.matches()) - { - logger.debug("group=[" + matcher.group(1) + "]"); - result.setOwner(matcher.group(1)); - } - - for (int nEntry = 3; nEntry < entries.length; nEntry++) - { - String entryLine = entries[nEntry]; - logger.debug("Line=[" + entryLine + "]"); - - // - Matcher userMatcher = USER_PATTERN.matcher(entryLine); - Matcher groupMatcher = GROUP_PATTERN.matcher(entryLine); - Matcher maskMatcher = MASK_PATTERN.matcher(entryLine); - Matcher otherMatcher = OTHER_PATTERN.matcher(entryLine); - Matcher defaultUserMatcher = DEFAULT_USER_PATTERN.matcher(entryLine); - Matcher defaultGroupMatcher = DEFAULT_GROUP_PATTERN.matcher(entryLine); - Matcher defaultMaskMatcher = DEFAULT_MASK_PATTERN.matcher(entryLine); - Matcher defaultOtherMatcher = DEFAULT_OTHER_PATTERN.matcher(entryLine); - - AclEntry entry; - if (userMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.USER, userMatcher.group(1), userMatcher.group(2)); - result.currentAcl().add(entry); - } - else if (groupMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.GROUP, groupMatcher.group(1), groupMatcher.group(2)); - result.currentAcl().add(entry); - } - else if (maskMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.MASK, maskMatcher.group(1), maskMatcher.group(2)); - result.currentAcl().add(entry); - } - else if (otherMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.OTHER, otherMatcher.group(1), otherMatcher.group(2)); - result.currentAcl().add(entry); - } - else if (defaultUserMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.USER, defaultUserMatcher.group(1), defaultUserMatcher.group(2)); - result.defaultAcl().add(entry); - } - else if (defaultGroupMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.GROUP, defaultGroupMatcher.group(1), defaultGroupMatcher.group(2)); - result.defaultAcl().add(entry); - } - else if (defaultMaskMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.MASK, defaultMaskMatcher.group(1), defaultMaskMatcher.group(2)); - result.defaultAcl().add(entry); - } - else if (defaultOtherMatcher.matches()) - { - entry = new AclEntry(AclEntry.Type.OTHER, defaultOtherMatcher.group(1), defaultOtherMatcher.group(2)); - result.defaultAcl().add(entry); - } - else - { - throw new Exception("Unknow ACL entry line pattern for [" + entryLine + "]."); - } - - logger.debug("Acl entry decoded: [" + entry.toString() + "]"); - } - - // - return (result); - } - - /** - * - */ - public static String getAclData(final String filePathName) throws Exception - { - String result; - - try - { - logger.info("Getting Acl data for [" + filePathName + "]."); - result = CmdExec.run(SUDO, "/usr/bin/getfacl", "--no-effective", filePathName); - logger.info("Acl data got for [" + filePathName + "]."); - } - catch (Exception exception) - { - throw new Exception("Error getting ACL for [" + filePathName + "].", exception); - } - - // - return (result); - } - - /** - * - */ - public static String[] getAclEntryLines(final String filePathName) - { - String[] result; - - try - { - result = getAclData(filePathName).split("\n"); - } - catch (Exception exception) - { - result = new String[0]; - } - - // - return (result); - } - - /** - * - */ - public static boolean isUsed(final AclEntry.Type type, final String id, final String filePathName) throws Exception - { - boolean result; - - result = isUsed(type, id, filePathName, 0); - - // - return (result); - } - - /** - * - */ - public static boolean isUsed(final AclEntry.Type type, final String id, final String filePathName, final int depth) throws Exception - { - boolean result; - - if ((type == null) || (id == null) || (id.length() == 0) || (filePathName == null) || (filePathName.length() == 0) || (depth < 0)) - { - throw new Exception("Bad parameter: [" + type + "][" + id + "][" + filePathName + "][" + depth + "]."); - } - else - { - File file = new File(filePathName); - if (!file.exists()) - { - throw new Exception("File does not exist [" + filePathName + "]."); - } - else - { - Acl acl = getAcl(filePathName); - if (acl.contains(type, id)) - { - result = true; - } - else if ((file.isDirectory()) && (depth > 0)) - { - result = isUsed(type, id, filePathName, file.list(), depth - 1); - } - else - { - result = false; - } - } - } - - // - return (result); - } - - /** - * - */ - public static boolean isUsed(final AclEntry.Type type, final String id, final String filePath, final String[] filePathNames, final int depth) throws Exception - { - boolean result; - - result = false; - boolean ended = false; - int nLine = 0; - while (!ended) - { - if (nLine < filePathNames.length) - { - String filePathName = filePathNames[nLine]; - if (isUsed(type, id, filePath + "/" + filePathName, depth)) - { - ended = true; - result = true; - } - else - { - nLine += 1; - } - } - else - { - ended = true; - result = false; - } - } - - // - return (result); - } - - /** - * - */ - public static boolean isUsed(final String id, final String filePathName) throws Exception - { - boolean result; - - result = isUsed(id, filePathName, 0); - - // - return (result); - } - - /** - * - */ - public static boolean isUsed(final String id, final String filePathName, final int depth) throws Exception - { - boolean result; - - if ((id == null) || (id.length() == 0) || (filePathName == null) || (filePathName.length() == 0) || (depth < 0)) - { - throw new Exception("Bad parameter: [" + id + "][" + filePathName + "][" + depth + "]."); - } - else - { - File file = new File(filePathName); - if (!file.exists()) - { - throw new Exception("File does not exist [" + filePathName + "]."); - } - else - { - Acl acl = getAcl(filePathName); - if (acl.containsId(id)) - { - result = true; - } - else if ((file.isDirectory()) && (depth > 0)) - { - result = isUsed(id, file.list(), depth - 1); - } - else - { - result = false; - } - } - } - - // - return (result); - } - - /** - * - */ - public static boolean isUsed(final String id, final String[] filePathNames, final int depth) throws Exception - { - boolean result; - - result = false; - boolean ended = false; - int nLine = 0; - while (!ended) - { - if (nLine < filePathNames.length) - { - String filePathName = filePathNames[nLine]; - if (isUsed(id, filePathName, depth)) - { - ended = true; - result = true; - } - else - { - nLine += 1; - } - } - else - { - ended = true; - result = false; - } - } - - // - return (result); - } - - /** - * - */ - public static void setfacl(final String... args) throws Exception - { - try - { - CmdExec.run(SUDO, "setfacl", args, 1, 5); - } - catch (Exception exception) - { - throw new Exception("Error running setfacl command for " + StringListUtils.toStringWithBrackets(args) + ":" + exception.getMessage() + "."); - } - } -} - -// //////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/fr/devinsy/util/xml/XMLAttributes.java b/src/fr/devinsy/util/xml/XMLAttributes.java deleted file mode 100644 index 640185f..0000000 --- a/src/fr/devinsy/util/xml/XMLAttributes.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import javax.xml.stream.events.Attribute; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLAttributes extends HashMap implements Iterable -{ - - private static final long serialVersionUID = 8456469741805779474L; - - /** - * - */ - public XMLAttributes() - { - super(); - } - - /** - * - */ - public XMLAttributes(final int capacity) - { - super(capacity); - } - - /** - * - */ - public XMLAttributes(final Iterator source) - { - super(); - if (source != null) - { - while (source.hasNext()) - { - Attribute attribute = source.next(); - - add(attribute); - } - } - } - - /** - * - */ - public XMLAttributes(final XMLAttributes source) - { - super(); - addAll(source); - } - - /** - * - * @param attribute - */ - public void add(final Attribute attribute) - { - if (attribute != null) - { - put(attribute.getName().getLocalPart(), attribute); - } - } - - /** - * - * @param source - */ - public void addAll(final XMLAttributes source) - { - for (Attribute attribute : source) - { - this.add(attribute); - } - } - - /** - * - * @param label - * @return - */ - public Attribute getByLabel(final String label) - { - Attribute result; - - result = get(label); - - // - return result; - } - - /** - * - */ - @Override - public Iterator iterator() - { - Iterator result; - - result = this.values().iterator(); - - // - return result; - } - - /** - * - * @return - */ - public Set labels() - { - Set result; - - result = this.keySet(); - - // - return result; - } - - /** - * - * @return - */ - public List toList() - { - List result; - - result = new ArrayList(values()); - - // - return result; - } -} diff --git a/src/fr/devinsy/util/xml/XMLBadFormatException.java b/src/fr/devinsy/util/xml/XMLBadFormatException.java deleted file mode 100644 index 268c1f0..0000000 --- a/src/fr/devinsy/util/xml/XMLBadFormatException.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import org.slf4j.helpers.MessageFormatter; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLBadFormatException extends Exception -{ - - private static final long serialVersionUID = 768256303984176512L; - - /** - * - * @param code - * @param message - */ - public XMLBadFormatException(final String message) - { - super(message); - } - - /** - * - * @param code - * @param message - * @param exception - */ - public XMLBadFormatException(final String message, final Exception exception) - { - super(message, exception); - } - - /** - * - * @param format - * @param arguments - */ - public XMLBadFormatException(final String format, final Object... arguments) - { - this(MessageFormatter.arrayFormat(format, arguments).getMessage()); - } - - /** - * - * @param message - * @param cause - */ - public XMLBadFormatException(final String message, final Throwable cause) - { - super(message, cause); - } - - /** - * - * @param cause - */ - public XMLBadFormatException(final Throwable cause) - { - super(cause); - } -} diff --git a/src/fr/devinsy/util/xml/XMLReader.java b/src/fr/devinsy/util/xml/XMLReader.java deleted file mode 100644 index 57dd535..0000000 --- a/src/fr/devinsy/util/xml/XMLReader.java +++ /dev/null @@ -1,617 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * Copyright (C) 2017 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.InputStream; -import java.io.Reader; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.XMLEvent; - -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import fr.devinsy.util.strings.StringList; -import fr.devinsy.util.xml.XMLTag.TagType; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLReader -{ - private static final Logger logger = LoggerFactory.getLogger(XMLReader.class); - - protected XMLEventReader in; - private XMLEvent nextEvent; - - /** - * - */ - protected XMLReader() - { - this.in = null; - this.nextEvent = null; - } - - /** - * - * @param file - * @throws XMLStreamException - * @throws FileNotFoundException - */ - public XMLReader(final File file) throws FileNotFoundException, XMLStreamException - { - this.nextEvent = null; - XMLInputFactory factory = XMLInputFactory.newInstance(); - this.in = factory.createXMLEventReader(new FileInputStream(file), "UTF-8"); - } - - /** - * - * @param target - * @throws XMLStreamException - */ - public XMLReader(final InputStream source) throws XMLStreamException - { - this.nextEvent = null; - XMLInputFactory factory = XMLInputFactory.newInstance(); - this.in = factory.createXMLEventReader(source); - } - - /** - * - * @param target - * @throws XMLStreamException - */ - public XMLReader(final Reader source) throws XMLStreamException - { - this.nextEvent = null; - XMLInputFactory factory = XMLInputFactory.newInstance(); - this.in = factory.createXMLEventReader(source); - } - - /** - * @throws XMLStreamException - */ - public void close() throws XMLStreamException - { - if (this.in != null) - { - this.in.close(); - } - } - - /** - * This methods does a premonition act. Useful to detect end of a list. - * - * @param label - * @return - * @throws XMLStreamException - */ - public boolean hasNextStartTag(final String label) throws XMLStreamException - { - boolean result; - - // Load next event. - if (this.nextEvent == null) - { - if (this.in.hasNext()) - { - this.nextEvent = this.in.nextEvent(); - } - } - - // Analyze next event. - if (this.nextEvent == null) - { - result = false; - } - else if ((this.nextEvent.isStartElement()) && (StringUtils.equals(this.nextEvent.asStartElement().getName().getLocalPart(), label))) - { - result = true; - } - else - { - result = false; - } - - // - return result; - } - - /** - * - * @param label - * @return - * @throws XMLBadFormatException - * @throws XMLStreamException - */ - public XMLTag readContentTag(final String label) throws XMLBadFormatException, XMLStreamException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, content tag [" + label + "] is expected."); - } - else if (result.getType() != TagType.CONTENT) - { - throw new XMLBadFormatException("Content tag [" + label + "] is missing."); - } - else if (!StringUtils.equals(label, result.getLabel())) - { - throw new XMLBadFormatException("Tag with label [" + label + "] is missing."); - } - - // - return result; - } - - /** - * - * @param label - * @return - * @throws XMLStreamException - * @throws XMLBadFormatException - */ - public XMLTag readEndTag(final String label) throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, end tag [" + label + "] is expected."); - } - else if (result.getType() != TagType.END) - { - throw new XMLBadFormatException("End tag [" + label + "] is missing."); - } - else if (!StringUtils.equals(result.getLabel(), label)) - { - throw new XMLBadFormatException("Tag with label [" + label + "] is missing."); - } - - // - return result; - } - - /** - * - * @param label - * @return - * @throws XMLStreamException - * @throws XMLBadFormatException - * @throws Exception - */ - public XMLTag readListTag(final String label) throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, tag [" + label + "] is expected."); - } - else if ((result.getType() != TagType.START) && (result.getType() != TagType.EMPTY)) - { - throw new XMLBadFormatException("List tag [" + label + "] is missing."); - } - else if (!StringUtils.equals(label, result.getLabel())) - { - throw new XMLBadFormatException("Tag with label [" + label + "] is missing."); - } - - // - return result; - } - - /** - * - * @param label - * @return - * @throws XMLStreamException - * @throws XMLBadFormatException - * @throws Exception - */ - public XMLTag readNullableContentTag(final String label) throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, tag [" + label + "] is expected."); - } - else if (!StringUtils.equals(label, result.getLabel())) - { - throw new XMLBadFormatException("Nullable content tag [" + label + "] is missing."); - } - else if ((result.getType() != TagType.EMPTY) && (result.getType() != TagType.CONTENT)) - { - throw new XMLBadFormatException("Nullable content tag [" + label + "] is missing."); - } - - // - return result; - } - - /** - * - * @param label - * @return - * @throws XMLStreamException - * @throws XMLBadFormatException - * @throws Exception - */ - public XMLTag readNullableStartTag(final String label) throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, start tag [" + label + "] is expected."); - } - else if ((result.getType() != TagType.START) && (result.getType() != TagType.EMPTY)) - { - throw new XMLBadFormatException("Start tag [" + label + "] is missing."); - } - else if (!StringUtils.equals(result.getLabel(), label)) - { - throw new XMLBadFormatException("Tag with label [" + label + "] is missing."); - } - - // - return result; - } - - /** - * - * @param label - * @return - * @throws XMLStreamException - * @throws XMLBadFormatException - * @throws Exception - */ - public XMLTag readStartTag(final String label) throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, start tag [" + label + "] is expected."); - } - else if (result.getType() != TagType.START) - { - throw new XMLBadFormatException("Start tag [" + label + "] is missing."); - } - else if (!StringUtils.equals(result.getLabel(), label)) - { - throw new XMLBadFormatException("Tag with label [" + label + "] is missing."); - } - - // - return result; - } - - /** - * Transducer graph : - *
    - *
  • START_DOCUMENT => HEADER TAG - *
  • START_ELEMENT(X) + START_ELEMENT(Y) => => START TAG - *
  • START_ELEMENT(X) + CHARACTERS(C) + START_ELEMENT(Y) => SPACES=> - * START TAG - *
  • START_ELEMENT(X) + CHARACTERS(C) + END_ELEMENT(X) => C => - * CONTENT TAG - *
  • START_ELEMENT(X) + END_ELEMENT(X) => => => EMPTY - *
  • END_ELEMENT(X) => => END TAG - *
  • END_DOCUMENT => FOOTER TAG - *
- * - * @throws XMLStreamException - * @throws XMLBadFormatException - * - */ - public XMLTag readTag() throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - int level = 1; - boolean ended = false; - result = null; - XMLAttributes attributesBuffer = null; - QName nameBuffer = null; - StringList contentBuffer = null; - while (!ended) - { - // - XMLEvent event; - if (this.nextEvent != null) - { - event = this.nextEvent; - this.nextEvent = null; - } - else if (this.in.hasNext()) - { - event = this.in.nextEvent(); - } - else - { - event = null; - } - - if (event == null) - { - ended = true; - result = null; - } - else - { - logger.debug("eventType=" + XMLTools.toString(event)); - switch (level) - { - case 1: - switch (event.getEventType()) - { - case XMLEvent.START_DOCUMENT: - // START_DOCUMENT => START DOCUMENT TAG - ended = true; - result = new XMLTag(null, TagType.HEADER, null); - break; - case XMLEvent.START_ELEMENT: - // START_ELEMENT(X) => ... - nameBuffer = event.asStartElement().getName(); - attributesBuffer = new XMLAttributes(event.asStartElement().getAttributes()); - level += 1; - break; - case XMLEvent.END_ELEMENT: - // END_ELEMENT(X) => => END TAG - ended = true; - result = new XMLTag(event.asEndElement().getName(), TagType.END, null); - break; - case XMLEvent.END_DOCUMENT: - // END_DOCUMENT => END DOCUMENT TAG - ended = true; - result = new XMLTag(null, TagType.FOOTER, null); - break; - } - break; - case 2: - switch (event.getEventType()) - { - case XMLEvent.START_ELEMENT: - // START_ELEMENT(X) + START_ELEMENT(Y) => - // => START TAG - ended = true; - result = new XMLTag(nameBuffer, TagType.START, attributesBuffer); - this.nextEvent = event; - break; - case XMLEvent.CHARACTERS: - // START_ELEMENT(X) + CHARACTERS(C) => ... - contentBuffer = new StringList(50); - contentBuffer.append(event.asCharacters().getData()); - level += 1; - break; - case XMLEvent.END_ELEMENT: - // START_ELEMENT(X) + END_ELEMENT(X) => - // => => EMPTY - ended = true; - result = new XMLTag(nameBuffer, TagType.EMPTY, attributesBuffer); - break; - default: - throw new XMLBadFormatException("Unexpected XMLEvent [" + event.getEventType() + "]."); - } - break; - case 3: - switch (event.getEventType()) - { - case XMLEvent.START_ELEMENT: - // START_ELEMENT(X) + CHARACTERS(C) + - // START_ELEMENT(Y) => - // SPACES => START TAG - ended = true; - result = new XMLTag(nameBuffer, TagType.START, attributesBuffer); - this.nextEvent = event; - break; - case XMLEvent.CHARACTERS: - // START_ELEMENT(X) + CHARACTERS(C1) + - // CHARACTERS(C2)=> ... - contentBuffer.append(event.asCharacters().getData()); - break; - case XMLEvent.END_ELEMENT: - // START_ELEMENT(X) + CHARACTERS(C) + - // END_ELEMENT(X) => C - // => CONTENT TAG - ended = true; - result = new XMLTag(nameBuffer, TagType.CONTENT, attributesBuffer); - result.setContent(contentBuffer.toString()); - break; - default: - throw new XMLBadFormatException("Unexpected XMLEvent [" + event.getEventType() + "]."); - } - break; - default: - throw new XMLBadFormatException("Unexpected level [" + level + "]."); - } - } - } - - logger.debug("=> " + XMLTools.toString(result)); - - // - return result; - } - - /** - * - * @param label - * @return - * @throws XMLStreamException - * @throws XMLBadFormatException - */ - public XMLTag readXMLFooter() throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, end document event is expected."); - } - else if (result.getType() != TagType.FOOTER) - { - throw new XMLBadFormatException("End document tag is missing."); - } - - // - return result; - } - - /** - * - * @return - * @throws XMLException - * @throws XMLStreamException - * @throws XMLBadFormatException - */ - public XMLTag readXMLHeader() throws XMLStreamException, XMLBadFormatException - { - XMLTag result; - - // - result = readTag(); - - // - if (result == null) - { - throw new XMLBadFormatException("XML file ends prematurely, start document event is expected."); - } - else if (result.getType() != TagType.HEADER) - { - throw new XMLBadFormatException("XML header is missing."); - } - - // - return result; - } - - /** - * - * @param args - * @throws Exception - */ - public static void main(final String args[]) throws Exception - { - - XMLInputFactory factory = XMLInputFactory.newInstance(); - XMLEventReader in = factory.createXMLEventReader(new FileReader("/home/cpm/C/Puck/Dev/Puck/test/TT/t3.puc")); - - XMLEvent event; - while (in.hasNext()) - { - event = in.nextEvent(); - - switch (event.getEventType()) - { - case XMLEvent.ATTRIBUTE: - System.out.println("ATTRIBUTE "); - break; - case XMLEvent.CDATA: - System.out.println("CDATA"); - break; - case XMLEvent.CHARACTERS: - System.out.println("CHARACTERS [" + event.asCharacters().getData() + "]"); - break; - case XMLEvent.COMMENT: - System.out.println("COMMENT"); - break; - case XMLEvent.DTD: - System.out.println("DTD"); - break; - case XMLEvent.END_DOCUMENT: - System.out.println("END_DOCUMENT"); - break; - case XMLEvent.END_ELEMENT: - System.out.println("END_ELEMENT " + event.asEndElement().getName()); - break; - case XMLEvent.ENTITY_DECLARATION: - System.out.println("ENTITY_DECLARATION"); - break; - case XMLEvent.ENTITY_REFERENCE: - System.out.println("ENTITY_REFERENCE"); - break; - case XMLEvent.NAMESPACE: - System.out.println("NAMESPACE"); - break; - case XMLEvent.NOTATION_DECLARATION: - System.out.println("NOTATION_DECLARATION"); - break; - case XMLEvent.PROCESSING_INSTRUCTION: - System.out.println("PROCESSING_INSTRUCTION"); - break; - case XMLEvent.SPACE: - System.out.println("SPACE"); - break; - case XMLEvent.START_DOCUMENT: - System.out.println("START_DOCUMENT"); - break; - case XMLEvent.START_ELEMENT: - System.out.println("START_ELEMENT [name=" + event.asStartElement().getName() + "][namespaceURI=" + event.asStartElement().getName().getNamespaceURI() + "][prefix=" - + event.asStartElement().getName().getPrefix() + "][localPart=" + event.asStartElement().getName().getLocalPart() + "]"); - break; - default: - System.out.println("DEFAULT"); - } - } - } -} diff --git a/src/fr/devinsy/util/xml/XMLTag.java b/src/fr/devinsy/util/xml/XMLTag.java deleted file mode 100644 index 806f754..0000000 --- a/src/fr/devinsy/util/xml/XMLTag.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import javax.xml.namespace.QName; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLTag -{ - - public enum TagType - { - HEADER, START, END, EMPTY, CONTENT, FOOTER - } - - private QName name; - private TagType type; - private XMLAttributes attributes; - private String content; - - /** - * - */ - public XMLTag(final QName name, final TagType type, final XMLAttributes attributes) - { - this.name = name; - this.type = type; - this.attributes = attributes; - this.content = null; - } - - public XMLAttributes attributes() - { - return this.attributes; - } - - public String getContent() - { - return this.content; - } - - /** - * - * @return - */ - public String getLabel() - { - String result; - - if (this.name == null) - { - result = ""; - } - else - { - result = this.name.getLocalPart(); - } - - // - return result; - } - - public QName getName() - { - return this.name; - } - - /** - * - * @return - */ - public String getNamespaceURI() - { - String result; - - if (this.name == null) - { - result = ""; - } - else - { - result = this.name.getNamespaceURI(); - } - - // - return result; - } - - /** - * - * @return - */ - public String getPrefix() - { - String result; - - if (this.name == null) - { - result = ""; - } - else - { - result = this.name.getPrefix(); - } - - // - return result; - } - - public TagType getType() - { - return this.type; - } - - public void setContent(final String content) - { - this.content = content; - } - - public void setName(final QName name) - { - this.name = name; - } - - public void setType(final TagType type) - { - this.type = type; - } -} diff --git a/src/fr/devinsy/util/xml/XMLTools.java b/src/fr/devinsy/util/xml/XMLTools.java deleted file mode 100644 index a7de117..0000000 --- a/src/fr/devinsy/util/xml/XMLTools.java +++ /dev/null @@ -1,389 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.zip.ZipInputStream; - -import javax.xml.stream.events.XMLEvent; -import javax.xml.transform.sax.SAXSource; -import javax.xml.transform.stream.StreamSource; -import javax.xml.validation.Schema; -import javax.xml.validation.SchemaFactory; -import javax.xml.validation.Validator; - -import org.apache.commons.lang3.StringEscapeUtils; -import org.apache.commons.lang3.StringUtils; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLTools -{ - /** - * - * @param source - * @return - */ - public static String escapeXmlBlank(final String source) - { - String result; - - if (StringUtils.isBlank(source)) - { - result = ""; - } - else - { - result = StringEscapeUtils.escapeXml(source); - } - - // - return result; - } - - /** - * - * - * @param source - * @throws SAXException - * @throws IOException - * @throws PuckException - */ - public static boolean isValid(final File xmlFile, final File xsdFile) throws SAXException, IOException - { - boolean result; - - // - InputStream xmlSource; - if (isZipFile(xmlFile)) - { - ZipInputStream zin = new ZipInputStream(new FileInputStream(xmlFile)); - zin.getNextEntry(); - xmlSource = zin; - } - else - { - xmlSource = new FileInputStream(xmlFile); - } - - // - result = isValid(xmlSource, new FileInputStream(xsdFile)); - - // - return result; - } - - /** - * - * - * @param source - * @throws SAXException - * @throws IOException - * @throws PuckException - */ - public static boolean isValid(final File xmlFile, final InputStream xsdSource) throws SAXException, IOException - { - boolean result; - - // - InputStream xmlSource; - if (isZipFile(xmlFile)) - { - ZipInputStream zin = new ZipInputStream(new FileInputStream(xmlFile)); - zin.getNextEntry(); - xmlSource = zin; - } - else - { - xmlSource = new FileInputStream(xmlFile); - } - - // - result = isValid(xmlSource, xsdSource); - - // - return result; - } - - /** - * - * - * @param source - * @throws SAXException - * @throws IOException - * @throws PuckException - */ - public static boolean isValid(final InputStream xmlSource, final InputStream xsdSource) throws SAXException, IOException - { - boolean result; - - if (xmlSource == null) - { - result = false; - } - else - { - try - { - // - SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); - InputSource sourceentree = new InputSource(xsdSource); - SAXSource sourceXSD = new SAXSource(sourceentree); - Schema schema = factory.newSchema(sourceXSD); - Validator validator = schema.newValidator(); - - // - validator.validate(new StreamSource(xmlSource)); - result = true; - - } - catch (final IllegalArgumentException exception) - { - exception.printStackTrace(); - result = false; - } - } - - // - return result; - } - - /** - * - * @param file - * @return - * @throws IOException - */ - public static boolean isZipFile(final File file) throws IOException - { - boolean result; - - // - byte[] buffer = new byte[4]; - FileInputStream is = null; - try - { - is = new FileInputStream(file); - is.read(buffer); - } - finally - { - if (is != null) - { - is.close(); - } - } - - // 50 4B 3 4 - if ((buffer[0] == 0x50) && (buffer[1] == 0x4B) && (buffer[2] == 0x03) && (buffer[3] == 0x04)) - { - result = true; - } - else - { - result = false; - } - - // - return result; - } - - /** - * - */ - public static String readTag(final BufferedReader in) throws Exception - { - String result; - - Pattern TAG_PATTERN = Pattern.compile("^<([\\w-_\\.]+)>.*$"); - Pattern SHORT_TAG_PATTERN = Pattern.compile("^<.+/>$"); - - result = in.readLine(); - boolean ended = false; - while (!ended) - { - /* - * DEBUG Matcher tagMatcher2 = TAG_PATTERN.matcher(result); if - * (tagMatcher2.find()) { logger.info("group count,0,1,2 = [" + - * tagMatcher2.groupCount() + "][" + tagMatcher2.group(0) + "][" + - * tagMatcher2.group(1) + "][" + tagMatcher2.group(2) + "]"); } - */ - - Matcher tagMatcher = TAG_PATTERN.matcher(result); - Matcher shortTagMatcher = SHORT_TAG_PATTERN.matcher(result); - - if ((tagMatcher.find()) && (tagMatcher.groupCount() == 2) && (tagMatcher.group(1).equals(tagMatcher.group(2)))) - { - ended = true; - } - else if (shortTagMatcher.matches()) - { - ended = true; - } - else - { - result += in.readLine(); - } - } - - // - return (result); - } - - /** - * - * @param source - * @return - */ - public static String toHTLM5(final String source) - { - String result; - - if (StringUtils.isBlank(source)) - { - result = ""; - } - else - { - result = source.replace(" ", " "); - } - - // - return result; - } - - /** - * - * @param value - * @return - */ - public static String toString(final XMLEvent source) - { - String result; - - switch (source.getEventType()) - { - case XMLEvent.ATTRIBUTE: - result = "ATTRIBUTE "; - break; - case XMLEvent.CDATA: - result = "CDATA"; - break; - case XMLEvent.CHARACTERS: - result = "CHARACTERS [" + source.asCharacters().getData() + "]"; - break; - case XMLEvent.COMMENT: - result = "COMMENT"; - break; - case XMLEvent.DTD: - result = "DTD"; - break; - case XMLEvent.END_DOCUMENT: - result = "END_DOCUMENT"; - break; - case XMLEvent.END_ELEMENT: - result = "END_ELEMENT " + source.asEndElement().getName(); - break; - case XMLEvent.ENTITY_DECLARATION: - result = "ENTITY_DECLARATION"; - break; - case XMLEvent.ENTITY_REFERENCE: - result = "ENTITY_REFERENCE"; - break; - case XMLEvent.NAMESPACE: - result = "NAMESPACE"; - break; - case XMLEvent.NOTATION_DECLARATION: - result = "NOTATION_DECLARATION"; - break; - case XMLEvent.PROCESSING_INSTRUCTION: - result = "PROCESSING_INSTRUCTION"; - break; - case XMLEvent.SPACE: - result = "SPACE"; - break; - case XMLEvent.START_DOCUMENT: - result = "START_DOCUMENT"; - break; - case XMLEvent.START_ELEMENT: - result = "START_ELEMENT [name=" + source.asStartElement().getName() + "][namespaceURI=" + source.asStartElement().getName().getNamespaceURI() + "][prefix=" - + source.asStartElement().getName().getPrefix() + "][localPart=" + source.asStartElement().getName().getLocalPart() + "]"; - break; - default: - result = null; - } - - // - return result; - } - - /** - * - * @param event - * @return - */ - public static String toString(final XMLTag source) - { - String result; - - if (source == null) - { - result = "null"; - } - else - { - result = "[label=" + source.getLabel() + "][type=" + source.getType().toString() + "][content=" + source.getContent() + "]"; - } - - // - return result; - } - - /** - * - * @param source - * @return - */ - public static String unescapeXmlBlank(final String source) - { - String result; - - if (StringUtils.isBlank(source)) - { - result = null; - } - else - { - result = StringEscapeUtils.unescapeXml(source); - } - - // - return result; - } -} diff --git a/src/fr/devinsy/util/xml/XMLWriter.java b/src/fr/devinsy/util/xml/XMLWriter.java deleted file mode 100644 index d5b41ec..0000000 --- a/src/fr/devinsy/util/xml/XMLWriter.java +++ /dev/null @@ -1,315 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; -import java.io.Writer; - -import org.apache.commons.lang3.ArrayUtils; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLWriter -{ - - protected PrintWriter out; - - /** - * Default constructor (useful for extend this class). - */ - protected XMLWriter() - { - this.out = null; - } - - /** - * Initialize a XML Writer to a file. - * - * @param file - * Where write the XML data. - * - * @throws FileNotFoundException - * @throws UnsupportedEncodingException - */ - public XMLWriter(final File file) throws UnsupportedEncodingException, FileNotFoundException - { - this.out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); - } - - /** - * Initialize a XML Writer to a OutputStream. - * - * @param target - * Where write the XML data. - * - * @throws UnsupportedEncodingException - */ - public XMLWriter(final OutputStream target) throws UnsupportedEncodingException - { - this.out = new PrintWriter(new OutputStreamWriter(target, "UTF-8")); - } - - /** - * Initialize a XML Writer to a Writer. - * - * @param target - * Where write the XML data. - * - * @throws UnsupportedEncodingException - */ - public XMLWriter(final Writer target) throws UnsupportedEncodingException - { - this.out = new PrintWriter(target); - } - - /** - * This method closes the target stream. - */ - public void close() throws IOException - { - if (this.out != null) - { - this.out.flush(); - this.out.close(); - } - } - - /** - * This method flushes the target stream. - */ - public void flush() throws IOException - { - if (this.out != null) - { - this.out.flush(); - } - } - - /** - * This method writes a XML comment. - * - * @param comment - * The comment to write. - */ - public void writeComment(final String comment) - { - this.out.print(""); - } - - /** - * This method writes a XML tag with no content. - */ - public void writeEmptyTag(final String label, final String... attributes) - { - this.out.print("<"); - this.out.print(label); - writeTagAttributes(attributes); - this.out.print("/>"); - } - - /** - * This method writes a XML ender tag. - */ - public void writeEndTag(final String label) - { - this.out.print(""); - } - - /** - * This method writes a XML start tag. - */ - public void writeStartTag(final String label, final String... attributes) - { - this.out.print("<"); - this.out.print(label); - writeTagAttributes(attributes); - this.out.print(">"); - } - - /** - * This method write a XML tag with attributes and boolean content data. - * - * @param label - * @param content - * @param attributes - */ - public void writeTag(final String label, final boolean content, final String... attributes) - { - writeStartTag(label, attributes); - writeTagContent(String.valueOf(content)); - writeEndTag(label); - } - - /** - * This method write a XML tag with attributes and long content data. - * - * @param label - * @param content - * @param attributes - */ - public void writeTag(final String label, final long content, final String... attributes) - { - writeStartTag(label, attributes); - writeTagContent(String.valueOf(content)); - writeEndTag(label); - } - - /** - * This method write a XML tag with attributes and content data. Content - * data are converted in XML format. - * - * @param label - * @param content - * @param attributes - */ - public void writeTag(final String label, final String content, final String... attributes) - { - if (content == null) - { - writeEmptyTag(label, attributes); - } - else - { - writeStartTag(label, attributes); - writeTagContent(content); - writeEndTag(label); - } - } - - /** - * This method writes attributes of a tag. - * - * @param attributes - */ - private void writeTagAttributes(final String... attributes) - { - // - if ((attributes != null) && (attributes.length > 0)) - { - for (int count = 0; count < attributes.length; count += 2) - { - this.out.print(" "); - this.out.print(attributes[count]); - this.out.print("=\""); - this.out.print(attributes[count + 1]); - this.out.print("\""); - } - } - } - - /** - * This method writes content using XML escape. - * - * @param content - * data to write in XML format. - */ - private void writeTagContent(final String content) - { - // - for (int count = 0; count < content.length(); count++) - { - // - char car = content.charAt(count); - - switch (car) - { - case '<': - this.out.print("<"); - break; - case '>': - this.out.print(">"); - break; - case '&': - this.out.print("&"); - break; - case '"': - this.out.print("""); - break; - case '\'': - this.out.print("'"); - break; - default: - this.out.print(car); - } - } - } - - /** - * This method writes a XML header with attributes. - * - * @param attributes - */ - public void writeXMLHeader(final String... attributes) - { - - // - this.out.print(""); - } -} diff --git a/src/fr/devinsy/util/xml/XMLZipReader.java b/src/fr/devinsy/util/xml/XMLZipReader.java deleted file mode 100644 index a988c32..0000000 --- a/src/fr/devinsy/util/xml/XMLZipReader.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.zip.ZipInputStream; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLZipReader extends XMLReader -{ - - /** - * - * @param file - * @throws IOException - * @throws XMLStreamException - */ - public XMLZipReader(final File file) throws IOException, XMLStreamException - { - super(); - - XMLInputFactory factory = XMLInputFactory.newInstance(); - ZipInputStream zis = new ZipInputStream(new FileInputStream(file)); - zis.getNextEntry(); - this.in = factory.createXMLEventReader(zis, "UTF-8"); - } - - /** - * - * @param target - * @throws IOException - * @throws XMLStreamException - */ - public XMLZipReader(final InputStream source) throws IOException, XMLStreamException - { - super(); - - XMLInputFactory factory = XMLInputFactory.newInstance(); - ZipInputStream zis = new ZipInputStream(source); - zis.getNextEntry(); - this.in = factory.createXMLEventReader(zis, "UTF-8"); - } -} diff --git a/src/fr/devinsy/util/xml/XMLZipWriter.java b/src/fr/devinsy/util/xml/XMLZipWriter.java deleted file mode 100644 index 515ccf2..0000000 --- a/src/fr/devinsy/util/xml/XMLZipWriter.java +++ /dev/null @@ -1,149 +0,0 @@ -/** - * Copyright (C) 2013-2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.util.zip.Deflater; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -import fr.devinsy.util.FileTools; - -/** - * - * @author Christian Pierre MOMON (christian.momon@devinsy.fr) - */ -public class XMLZipWriter extends XMLWriter -{ - private ZipOutputStream zos; - - /** - * - * @param file - * @throws IOException - */ - public XMLZipWriter(final File file) throws IOException - { - super(); - - this.zos = new ZipOutputStream(new FileOutputStream(file)); - this.zos.setLevel(Deflater.BEST_COMPRESSION); - this.zos.setMethod(ZipOutputStream.DEFLATED); - this.zos.setComment("Generated by XMLZipWriter"); - this.zos.putNextEntry(new ZipEntry(FileTools.setExtension(file, ".xml").getName())); - this.out = new PrintWriter(new OutputStreamWriter(this.zos, "UTF-8")); - } - - /** - * - * @param file - * @throws IOException - */ - public XMLZipWriter(final File file, final String generator) throws IOException - { - super(); - - this.zos = new ZipOutputStream(new FileOutputStream(file)); - this.zos.setLevel(Deflater.BEST_COMPRESSION); - this.zos.setMethod(ZipOutputStream.DEFLATED); - this.zos.setComment(generator); - this.zos.putNextEntry(new ZipEntry(FileTools.setExtension(file, ".xml").getName())); - this.out = new PrintWriter(new OutputStreamWriter(this.zos, "UTF-8")); - } - - /** - * - * @param target - * @throws IOException - */ - public XMLZipWriter(final OutputStream target, final String generator) throws IOException - { - super(); - this.zos = new ZipOutputStream(target); - this.zos.setLevel(Deflater.BEST_COMPRESSION); - this.zos.setMethod(ZipOutputStream.DEFLATED); - if (generator != null) - { - this.zos.setComment(generator); - } - this.out = new PrintWriter(new OutputStreamWriter(this.zos, "UTF-8")); - } - - /** - * - * @param target - * @throws IOException - */ - public XMLZipWriter(final OutputStream target, final String fileName, final String generator) throws IOException - { - super(); - this.zos = new ZipOutputStream(target); - this.zos.setLevel(Deflater.BEST_COMPRESSION); - this.zos.setMethod(ZipOutputStream.DEFLATED); - if (generator != null) - { - this.zos.setComment(generator); - } - openEntry(fileName); - this.out = new PrintWriter(new OutputStreamWriter(this.zos, "UTF-8")); - } - - /** - * @throws IOException - * - */ - @Override - public void close() throws IOException - { - closeEntry(); - super.close(); - } - - /** - * @throws IOException - * - */ - public void closeEntry() throws IOException - { - flush(); - this.zos.closeEntry(); - } - - /** - * - * @param fileName - * @throws IOException - */ - public void openEntry(final String fileName) throws IOException - { - if (fileName == null) - { - throw new NullPointerException("fileName is null."); - } - else - { - this.zos.putNextEntry(new ZipEntry(FileTools.setExtension(fileName, ".xml"))); - } - } -} diff --git a/src/org/apache/jackrabbit/util/ISO8601.java b/src/org/apache/jackrabbit/util/ISO8601.java deleted file mode 100644 index 3f3c85a..0000000 --- a/src/org/apache/jackrabbit/util/ISO8601.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jackrabbit.util; - -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.TimeZone; - -/** - * The ISO8601 utility class provides helper methods - * to deal with date/time formatting using a specific ISO8601-compliant - * format (see ISO 8601). - *

- * The currently supported format is: - *

- *   ±YYYY-MM-DDThh:mm:ss.SSSTZD
- * 
- * where: - *
- *   ±YYYY = four-digit year with optional sign where values <= 0 are
- *           denoting years BCE and values > 0 are denoting years CE,
- *           e.g. -0001 denotes the year 2 BCE, 0000 denotes the year 1 BCE,
- *           0001 denotes the year 1 CE, and so on...
- *   MM    = two-digit month (01=January, etc.)
- *   DD    = two-digit day of month (01 through 31)
- *   hh    = two digits of hour (00 through 23) (am/pm NOT allowed)
- *   mm    = two digits of minute (00 through 59)
- *   ss    = two digits of second (00 through 59)
- *   SSS   = three digits of milliseconds (000 through 999)
- *   TZD   = time zone designator, Z for Zulu (i.e. UTC) or an offset from UTC
- *           in the form of +hh:mm or -hh:mm
- * 
- */ -public final class ISO8601 { - /** - * Parses an ISO8601-compliant date/time string. - * - * @param text the date/time string to be parsed - * @return a Calendar, or null if the input could - * not be parsed - * @throws IllegalArgumentException if a null argument is passed - */ - public static Calendar parse(String text) { - if (text == null) { - throw new IllegalArgumentException("argument can not be null"); - } - - // check optional leading sign - char sign; - int start; - if (text.startsWith("-")) { - sign = '-'; - start = 1; - } else if (text.startsWith("+")) { - sign = '+'; - start = 1; - } else { - sign = '+'; // no sign specified, implied '+' - start = 0; - } - - /** - * the expected format of the remainder of the string is: - * YYYY-MM-DDThh:mm:ss.SSSTZD - * - * note that we cannot use java.text.SimpleDateFormat for - * parsing because it can't handle years <= 0 and TZD's - */ - - int year, month, day, hour, min, sec, ms; - String tzID; - try { - // year (YYYY) - year = Integer.parseInt(text.substring(start, start + 4)); - start += 4; - // delimiter '-' - if (text.charAt(start) != '-') { - return null; - } - start++; - // month (MM) - month = Integer.parseInt(text.substring(start, start + 2)); - start += 2; - // delimiter '-' - if (text.charAt(start) != '-') { - return null; - } - start++; - // day (DD) - day = Integer.parseInt(text.substring(start, start + 2)); - start += 2; - // delimiter 'T' - if (text.charAt(start) != 'T') { - return null; - } - start++; - // hour (hh) - hour = Integer.parseInt(text.substring(start, start + 2)); - start += 2; - // delimiter ':' - if (text.charAt(start) != ':') { - return null; - } - start++; - // minute (mm) - min = Integer.parseInt(text.substring(start, start + 2)); - start += 2; - // delimiter ':' - if (text.charAt(start) != ':') { - return null; - } - start++; - // second (ss) - sec = Integer.parseInt(text.substring(start, start + 2)); - start += 2; - // delimiter '.' - if (text.charAt(start) != '.') { - return null; - } - start++; - // millisecond (SSS) - ms = Integer.parseInt(text.substring(start, start + 3)); - start += 3; - // time zone designator (Z or +00:00 or -00:00) - if (text.charAt(start) == '+' || text.charAt(start) == '-') { - // offset to UTC specified in the format +00:00/-00:00 - tzID = "GMT" + text.substring(start); - } else if (text.substring(start).equals("Z")) { - tzID = "GMT"; - } else { - // invalid time zone designator - return null; - } - } catch (IndexOutOfBoundsException e) { - return null; - } catch (NumberFormatException e) { - return null; - } - - TimeZone tz = TimeZone.getTimeZone(tzID); - // verify id of returned time zone (getTimeZone defaults to "GMT") - if (!tz.getID().equals(tzID)) { - // invalid time zone - return null; - } - - // initialize Calendar object - Calendar cal = Calendar.getInstance(tz); - cal.setLenient(false); - // year and era - if (sign == '-' || year == 0) { - // not CE, need to set era (BCE) and adjust year - cal.set(Calendar.YEAR, year + 1); - cal.set(Calendar.ERA, GregorianCalendar.BC); - } else { - cal.set(Calendar.YEAR, year); - cal.set(Calendar.ERA, GregorianCalendar.AD); - } - // month (0-based!) - cal.set(Calendar.MONTH, month - 1); - // day of month - cal.set(Calendar.DAY_OF_MONTH, day); - // hour - cal.set(Calendar.HOUR_OF_DAY, hour); - // minute - cal.set(Calendar.MINUTE, min); - // second - cal.set(Calendar.SECOND, sec); - // millisecond - cal.set(Calendar.MILLISECOND, ms); - - try { - /** - * the following call will trigger an IllegalArgumentException - * if any of the set values are illegal or out of range - */ - cal.getTime(); - /** - * in addition check the validity of the year - */ - getYear(cal); - } catch (IllegalArgumentException e) { - return null; - } - - return cal; - } - - /** - * Formats a Calendar value into an ISO8601-compliant - * date/time string. - * - * @param cal the time value to be formatted into a date/time string. - * @return the formatted date/time string. - * @throws IllegalArgumentException if a null argument is passed - * or the calendar cannot be represented as defined by ISO 8601 (i.e. year - * with more than four digits). - */ - public static String format(Calendar cal) throws IllegalArgumentException { - if (cal == null) { - throw new IllegalArgumentException("argument can not be null"); - } - - /** - * the format of the date/time string is: - * YYYY-MM-DDThh:mm:ss.SSSTZD - * - * note that we cannot use java.text.SimpleDateFormat for - * formatting because it can't handle years <= 0 and TZD's - */ - StringBuffer buf = new StringBuffer(); - // year ([-]YYYY) - appendZeroPaddedInt(buf, getYear(cal), 4); - buf.append('-'); - // month (MM) - appendZeroPaddedInt(buf, cal.get(Calendar.MONTH) + 1, 2); - buf.append('-'); - // day (DD) - appendZeroPaddedInt(buf, cal.get(Calendar.DAY_OF_MONTH), 2); - buf.append('T'); - // hour (hh) - appendZeroPaddedInt(buf, cal.get(Calendar.HOUR_OF_DAY), 2); - buf.append(':'); - // minute (mm) - appendZeroPaddedInt(buf, cal.get(Calendar.MINUTE), 2); - buf.append(':'); - // second (ss) - appendZeroPaddedInt(buf, cal.get(Calendar.SECOND), 2); - buf.append('.'); - // millisecond (SSS) - appendZeroPaddedInt(buf, cal.get(Calendar.MILLISECOND), 3); - // time zone designator (Z or +00:00 or -00:00) - TimeZone tz = cal.getTimeZone(); - // determine offset of timezone from UTC (incl. daylight saving) - int offset = tz.getOffset(cal.getTimeInMillis()); - if (offset != 0) { - int hours = Math.abs((offset / (60 * 1000)) / 60); - int minutes = Math.abs((offset / (60 * 1000)) % 60); - buf.append(offset < 0 ? '-' : '+'); - appendZeroPaddedInt(buf, hours, 2); - buf.append(':'); - appendZeroPaddedInt(buf, minutes, 2); - } else { - buf.append('Z'); - } - return buf.toString(); - } - - /** - * Returns the astronomical year of the given calendar. - * - * @param cal a calendar instance. - * @return the astronomical year. - * @throws IllegalArgumentException if calendar cannot be represented as - * defined by ISO 8601 (i.e. year with more - * than four digits). - */ - public static int getYear(Calendar cal) throws IllegalArgumentException { - // determine era and adjust year if necessary - int year = cal.get(Calendar.YEAR); - if (cal.isSet(Calendar.ERA) - && cal.get(Calendar.ERA) == GregorianCalendar.BC) { - /** - * calculate year using astronomical system: - * year n BCE => astronomical year -n + 1 - */ - year = 0 - year + 1; - } - - if (year > 9999 || year < -9999) { - throw new IllegalArgumentException("Calendar has more than four " + - "year digits, cannot be formatted as ISO8601: " + year); - } - return year; - } - - /** - * Appends a zero-padded number to the given string buffer. - *

- * This is an internal helper method which doesn't perform any - * validation on the given arguments. - * - * @param buf String buffer to append to - * @param n number to append - * @param precision number of digits to append - */ - private static void appendZeroPaddedInt(StringBuffer buf, int n, int precision) { - if (n < 0) { - buf.append('-'); - n = -n; - } - - for (int exp = precision - 1; exp > 0; exp--) { - if (n < Math.pow(10, exp)) { - buf.append('0'); - } else { - break; - } - } - buf.append(n); - } -} diff --git a/src/org/apache/jackrabbit/util/note b/src/org/apache/jackrabbit/util/note deleted file mode 100644 index 558093b..0000000 --- a/src/org/apache/jackrabbit/util/note +++ /dev/null @@ -1 +0,0 @@ -Extract from jackrabbit-2.1.1-src.zip \ No newline at end of file diff --git a/test/FileIteratorSandbox.java b/test/FileIteratorSandbox.java deleted file mode 100644 index 08452c6..0000000 --- a/test/FileIteratorSandbox.java +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright (C) 2013 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -import java.io.File; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.PatternLayout; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import fr.devinsy.util.FileIterator; - -/** - * - */ -public class FileIteratorSandbox -{ - private static final Logger logger; - - static - { - // Initialize logger. - org.apache.log4j.BasicConfigurator.configure(); - org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.DEBUG); - - logger = LoggerFactory.getLogger(FileIteratorSandbox.class); - - // - org.apache.log4j.Logger defaultLogger = org.apache.log4j.Logger.getRootLogger(); - defaultLogger.removeAllAppenders(); - defaultLogger.addAppender(new ConsoleAppender(new PatternLayout("%d{ISO8601} - dutils [%-5p] %34.34c.%-25M - %m%n"))); - - // - logger.debug("Log initialized."); - } - - /** - * - */ - public static void main(final String[] args) - { - test(); - } - - /** - * - */ - protected static void test() - { - System.out.println("user.dir=" + System.getProperty("user.dir")); - - try - { - // File f = new File("TestTree/DirectoryOne/titi2"); - // File f = new File("/home/cpm/.kde//cache-cpmstar"); - File f = new File("tests/TestTree/xine.jpg"); - System.out.println("exists=" + f.exists()); - System.out.println("canonical path = " + f.getCanonicalPath()); - System.out.println("absolute path = " + f.getAbsolutePath()); - System.out.println("name = " + f.getName()); - System.out.println("parent = " + f.getParent()); - System.out.println("path = " + f.getPath()); - System.out.println("path = " + f.lastModified()); - System.out.println("path = " + f.length()); - System.out.println("path = " + f.isFile()); - System.out.println("path = " + f.isDirectory()); - System.out.println("list = " + f.list()); - - System.out.println("----"); - // FileIterator i = new FileIterator(new File("tests/TestTree")); - FileIterator i = new FileIterator(new File("tests/TestTree/xine.jpg"), null, true); - // FileIterator i = new FileIterator(new - // File("/home/cpm/.kde/cache-cpmstar"), ".*cache.*", false); - // FileIterator i = new FileIterator(new File("tests/TestTree"), - // ".*dsc.*", false); - // FileIterator i = new FileIterator(new - // File("/home/cpm/Images/Photos/")); - // FileIterator i = new FileIterator(new - // File("/home/cpm/Images/Photos/"), ".*\\.(JPG|jpg)", false); - // FileIterator i = new FileIterator(new - // File("/home/cpm/Images/Photos/"), ".*anni_moi.*", false); - - while (i.hasNext()) - { - // System.out.println(i.toString()); - System.out.println("File=[" + i.next().getPath() + "]"); - } - i.reset(); - System.out.println("Cardinal=" + i.finalCountdown()); - } - catch (Exception exception) - { - System.out.println("ERROR:" + exception.getMessage()); - } - } -} diff --git a/test/Foot1Test.java b/test/Foot1Test.java deleted file mode 100644 index dda5c6a..0000000 --- a/test/Foot1Test.java +++ /dev/null @@ -1,19 +0,0 @@ -import org.junit.Test; - -public class Foot1Test -{ - // private Logger logger = - // LoggerFactory.getLogger(PdfGenerationAmqpServiceInjectedTest.class); - - /** - * - */ - @Test - public void test1a() - { - // logger.debug("===== test starting..."); - - // logger.debug("===== test done."); - } - -} diff --git a/test/TestTree/.test/arf b/test/TestTree/.test/arf deleted file mode 100644 index 613a3f5..0000000 --- a/test/TestTree/.test/arf +++ /dev/null @@ -1 +0,0 @@ -test sioux diff --git a/test/TestTree/20081111-nouvelle_voiture/dsc01469.jpg b/test/TestTree/20081111-nouvelle_voiture/dsc01469.jpg deleted file mode 100755 index 49b1665..0000000 Binary files a/test/TestTree/20081111-nouvelle_voiture/dsc01469.jpg and /dev/null differ diff --git a/test/TestTree/20081111-nouvelle_voiture/dsc01470.jpg b/test/TestTree/20081111-nouvelle_voiture/dsc01470.jpg deleted file mode 100755 index 88a4027..0000000 Binary files a/test/TestTree/20081111-nouvelle_voiture/dsc01470.jpg and /dev/null differ diff --git a/test/TestTree/20081111-nouvelle_voiture/dsc01472.jpg b/test/TestTree/20081111-nouvelle_voiture/dsc01472.jpg deleted file mode 100755 index 8fff0e5..0000000 Binary files a/test/TestTree/20081111-nouvelle_voiture/dsc01472.jpg and /dev/null differ diff --git a/test/TestTree/20081111-nouvelle_voiture/dsc01474.jpg b/test/TestTree/20081111-nouvelle_voiture/dsc01474.jpg deleted file mode 100755 index 0e662f1..0000000 Binary files a/test/TestTree/20081111-nouvelle_voiture/dsc01474.jpg and /dev/null differ diff --git a/test/TestTree/DirectoryOne/titi b/test/TestTree/DirectoryOne/titi deleted file mode 100644 index cbd38df..0000000 --- a/test/TestTree/DirectoryOne/titi +++ /dev/null @@ -1 +0,0 @@ -azertyuiop diff --git a/test/TestTree/DirectoryOne/toto b/test/TestTree/DirectoryOne/toto deleted file mode 100644 index 388a530..0000000 --- a/test/TestTree/DirectoryOne/toto +++ /dev/null @@ -1 +0,0 @@ -good weather today diff --git a/test/TestTree/DirectoryOne/tu tu b/test/TestTree/DirectoryOne/tu tu deleted file mode 100644 index 20b7025..0000000 --- a/test/TestTree/DirectoryOne/tu tu +++ /dev/null @@ -1 +0,0 @@ -Ceci est un test. diff --git a/test/TestTree/P/dsc01469.jpg b/test/TestTree/P/dsc01469.jpg deleted file mode 100755 index 49b1665..0000000 Binary files a/test/TestTree/P/dsc01469.jpg and /dev/null differ diff --git a/test/TestTree/P/dsc01470.jpg b/test/TestTree/P/dsc01470.jpg deleted file mode 100755 index 88a4027..0000000 Binary files a/test/TestTree/P/dsc01470.jpg and /dev/null differ diff --git a/test/TestTree/P/dsc01472.jpg b/test/TestTree/P/dsc01472.jpg deleted file mode 100755 index 8fff0e5..0000000 Binary files a/test/TestTree/P/dsc01472.jpg and /dev/null differ diff --git a/test/TestTree/P/dsc01474.jpg b/test/TestTree/P/dsc01474.jpg deleted file mode 100755 index 0e662f1..0000000 Binary files a/test/TestTree/P/dsc01474.jpg and /dev/null differ diff --git a/test/TestTree/xine.jpg b/test/TestTree/xine.jpg deleted file mode 100644 index a89443b..0000000 Binary files a/test/TestTree/xine.jpg and /dev/null differ diff --git a/test/TestTree/xine_snapshot-4.jpg b/test/TestTree/xine_snapshot-4.jpg deleted file mode 100644 index a89443b..0000000 Binary files a/test/TestTree/xine_snapshot-4.jpg and /dev/null differ diff --git a/test/TestTree/xine_snapshot-9.jpg b/test/TestTree/xine_snapshot-9.jpg deleted file mode 100644 index 5ef999b..0000000 Binary files a/test/TestTree/xine_snapshot-9.jpg and /dev/null differ diff --git a/test/fr/devinsy/util/cmdexec/CmdExecSandbox.java b/test/fr/devinsy/util/cmdexec/CmdExecSandbox.java deleted file mode 100644 index d0c6418..0000000 --- a/test/fr/devinsy/util/cmdexec/CmdExecSandbox.java +++ /dev/null @@ -1,108 +0,0 @@ -package fr.devinsy.util.cmdexec; - -/** - * Copyright (C) 2013 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.PatternLayout; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - */ -class CmdExecSandbox -{ - static private final Logger logger; - - static - { - // Initialize logger. - org.apache.log4j.BasicConfigurator.configure(); - org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.INFO); - - logger = LoggerFactory.getLogger(CmdExecSandbox.class); - logger.info("Enter"); - - // - logger.info("Set the log file format…"); - org.apache.log4j.Logger defaultLogger = org.apache.log4j.Logger.getRootLogger(); - defaultLogger.removeAllAppenders(); - defaultLogger.addAppender(new ConsoleAppender(new PatternLayout("%d{ISO8601} - dutils [%-5p] %34.34c.%-25M - %m%n"))); - - logger.info("… done."); - - logger.debug("Exit"); - } - - /** - * - */ - public static String check(final String title, final StringBuffer source, final String model) - { - String result; - - if (source.indexOf(model) == -1) - { - result = String.format("%-40s -> KO <-", title) + "\nGet:\n" + source + "\nWaiting:\n" + model; - - } - else - { - result = String.format("%-40s [ OK ] ", title); - } - - // - return (result); - } - - /** - * - */ - public static void main(final String[] args) - { - System.out.println("Automatic test action for CmdExec!"); - - test1(); - - } - - /** - * - */ - public static void test1() - { - try - { - System.out.println("Launch…s"); - - // String command = "/bin/sort -r /etc/passwd"; - String[] command = { "/usr/bin/sort", "-r", "/etc/passwd" }; - - CmdExec cmd = new CmdExec(command, StreamGobbler.StreamWay.BUFFER, StreamGobbler.StreamWay.BUFFER); - System.out.println("exitVal=[" + cmd.getExitValue() + "]"); - System.out.println("out=[" + cmd.getOutStream() + "]"); - System.out.println("err=[" + cmd.getErrStream() + "]"); - } - catch (Exception exception) - { - exception.printStackTrace(); - logger.info("ERRRO=" + exception); - } - } -} diff --git a/test/fr/devinsy/util/strings/StringListTest.java b/test/fr/devinsy/util/strings/StringListTest.java index 9afe379..7983764 100644 --- a/test/fr/devinsy/util/strings/StringListTest.java +++ b/test/fr/devinsy/util/strings/StringListTest.java @@ -27,10 +27,6 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import fr.devinsy.util.strings.StringList; -import fr.devinsy.util.strings.StringListCharIterator; -import fr.devinsy.util.strings.StringListCharPosition; - /** * * @author Christian P. Momon diff --git a/test/fr/devinsy/util/util/rss/RSSCacheTest.java b/test/fr/devinsy/util/util/rss/RSSCacheTest.java deleted file mode 100644 index dd3aa8a..0000000 --- a/test/fr/devinsy/util/util/rss/RSSCacheTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (C) 2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.util.rss; - -import org.apache.log4j.BasicConfigurator; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.junit.Before; -import org.junit.Test; - -import fr.devinsy.util.rss.RSSCache; - -/** - * - * @author Christian P. Momon - */ -public class RSSCacheTest -{ - static protected org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(RSSCacheTest.class); - - /** - * - */ - @Before - public void before() - { - BasicConfigurator.configure(); - Logger.getRootLogger().setLevel(Level.ERROR); - } - - /** - * - */ - @Test - public void test01() - { - // - logger.debug("===== test starting..."); - - RSSCache cache = RSSCache.instance(); - - cache.put("ALPHA", "Mignonne, allons voir si la rose"); - cache.put("BRAVO", "Qui ce matin avoit desclose"); - cache.put("CHARLIE", "Sa robe de pourpre au Soleil,"); - - cache.setOudated("CHARLIE"); - - // - logger.debug("===== test done."); - } -} diff --git a/test/fr/devinsy/util/xml/XMLReaderTest.java b/test/fr/devinsy/util/xml/XMLReaderTest.java deleted file mode 100644 index 02e4f1a..0000000 --- a/test/fr/devinsy/util/xml/XMLReaderTest.java +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Copyright (C) 2014 Christian Pierre MOMON - * - * This file is part of Devinsy-utils. - * - * Devinsy-utils is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Devinsy-utils is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Devinsy-utils. If not, see - */ -package fr.devinsy.util.xml; - -import java.io.File; -import java.io.FileNotFoundException; - -import javax.xml.stream.XMLStreamException; - -import org.apache.log4j.BasicConfigurator; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.junit.Before; - -import fr.devinsy.util.strings.StringList; - -/** - * - * @author Christian P. Momon - */ -public class XMLReaderTest -{ - static private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(XMLReaderTest.class); - - /** - * - */ - @Before - public void before() - { - BasicConfigurator.configure(); - Logger.getRootLogger().setLevel(Level.ERROR); - } - - /** - * @throws XMLStreamException - * @throws FileNotFoundException - * @throws XMLBadFormatException - * - */ - // @Test - public void testFoo01() throws FileNotFoundException, XMLStreamException, XMLBadFormatException - { - // - logger.debug("===== test starting..."); - - // XMLReader in = new XMLReader(new - // File("/home/cpm/C/Puck/TY/Ebrei 08.puc")); - // XMLReader in = new XMLReader(new - // File("/home/cpm/C/Puck/TY/T/kidarep.xml")); - XMLReader in = new XMLReader(new File("/home/cpm/C/Puck/TY/T2/sikevadb-2014-06-08-17h55mn49s.xml")); - - boolean ended = false; - while (!ended) - { - XMLTag tag = in.readTag(); - - if (tag == null) - { - ended = true; - } - else - { - // System.out.println(String.format("tag %s", tag.getLabel())); - } - - // - logger.debug("===== test done."); - } - System.out.println("over"); - } - - /** - * @throws XMLStreamException - * @throws FileNotFoundException - * @throws XMLBadFormatException - * - */ - // @Test - public void testFoo02() throws FileNotFoundException, XMLStreamException, XMLBadFormatException - { - // - logger.debug("===== test starting..."); - - // XMLReader in = new XMLReader(new - // File("/home/cpm/C/Puck/TY/Ebrei 08.puc")); - XMLReader in = new XMLReader(new File("/home/cpm/C/Puck/TY/T/accounts.xml")); - // XMLReader in = new XMLReader(new - // File("/home/cpm/C/Puck/TY/T2/sikevadb-2014-06-08-17h55mn49s.xml")); - - boolean ended = false; - StringList buffer = new StringList(); - while (!ended) - { - XMLTag tag = in.readTag(); - - if (tag == null) - { - ended = true; - } - else - { - if (tag.getContent() != null) - { - System.out.println(buffer.append(tag.getContent())); - } - } - - // - logger.debug("===== test done."); - } - System.out.println("over"); - } - -} diff --git a/test/one/Foo2Test.java b/test/one/Foo2Test.java deleted file mode 100644 index 07ebac5..0000000 --- a/test/one/Foo2Test.java +++ /dev/null @@ -1,19 +0,0 @@ -package one; - -import org.junit.Assert; -import org.junit.Test; - -public class Foo2Test -{ - /** - * - */ - @Test - public void test2a() - { - // logger.debug("===== test starting..."); - Assert.assertEquals(true, true); - // logger.debug("===== test done."); - } - -}