diff options
Diffstat (limited to 'tools/src/SitemapTool.java')
-rw-r--r-- | tools/src/SitemapTool.java | 363 |
1 files changed, 0 insertions, 363 deletions
diff --git a/tools/src/SitemapTool.java b/tools/src/SitemapTool.java deleted file mode 100644 index 23a5f7caca..0000000000 --- a/tools/src/SitemapTool.java +++ /dev/null @@ -1,363 +0,0 @@ - -/* ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2002 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Apache POI" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * "Apache POI", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - */ - -import java.io.*; - -import java.util.*; - -import org.apache.tools.ant.*; -import org.apache.tools.ant.taskdefs.*; -import org.apache.tools.ant.types.*; - -/** - * Add components to the sitemap - * - * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a> - * @version CVS $Revision$ $Date$ - */ - -public final class SitemapTool - extends Task -{ - private String sitemap; - private String directory; - private String extension; - - public void setSitemap(String sitemap) - { - this.sitemap = sitemap; - } - - public void setDirectory(String directory) - { - this.directory = directory; - } - - public void setExtension(String extension) - { - this.extension = extension; - } - - public void execute() - throws BuildException - { - if (this.sitemap == null) - { - throw new BuildException("sitemap attribute is required", - location); - } - if (this.extension == null) - { - throw new BuildException("extension attribute is required", - location); - } - if (this.directory == null) - { - throw new BuildException("directory attribute is required", - location); - } - try - { - - // process recursive - this.process(new File(this.directory), this.extension, - this.sitemap); - } - catch (IOException ioe) - { - throw new BuildException("IOException: " + ioe); - } - } - - /** - * Scan recursive - */ - - private void process(final File directoryFile, final String ext, - final String sitemapLocation) - throws IOException, BuildException - { - final File[] files = directoryFile.listFiles(); - - for (int i = 0; i < files.length; i++) - { - if (files[ i ].isDirectory() == true) - { - this.process(files[ i ], ext, sitemapLocation); - } - else - { - if (files[ i ].getName().endsWith("." + ext) == true) - { - System.out.println("Reading: " - + files[ i ].getAbsolutePath()); - final String data = - this.load(files[ i ].getAbsolutePath()); - - // separate the data by lines - final StringTokenizer st = new StringTokenizer(data); - - while (st.hasMoreElements() == true) - { - - // now get the properties of a line. These are separated by a "|" - final String line = - ( String ) st.nextElement(); - final StringTokenizer prop = - new StringTokenizer(line, "|"); - String category = null; - String componentName = null; - String className = null; - String configuration = null; - String label = null; - String mimeType = null; - - while (prop.hasMoreElements() == true) - { - final String property = - ( String ) prop.nextElement(); - final int pos = property.indexOf(":"); - final String propName = - property.substring(0, pos); - final String propVal = property.substring(pos - + 1); - - if (propName.equals("category")) - { - category = propVal; - } - else if (propName.equals("componentName")) - { - componentName = propVal; - } - else if (propName.equals("componentClass")) - { - className = propVal; - } - else if (propName.equals("configuration")) - { - configuration = propVal; - } - else if (propName.equals("label")) - { - label = propVal; - } - else if (propName.equals("mimeType")) - { - mimeType = propVal; - } - else - { - throw new BuildException( - "Unknown property " + propName - + " in file " - + files[ i ].getAbsolutePath()); - } - } - - // Test for required values - if (category == null) - { - throw new BuildException( - "category property is required in file " - + files[ i ].getAbsolutePath(), location); - } - if (componentName == null) - { - throw new BuildException( - "componentName property is required in file " - + files[ i ].getAbsolutePath(), location); - } - if (className == null) - { - throw new BuildException( - "componentClass property is required in file " - + files[ i ].getAbsolutePath(), location); - } - this.add(sitemapLocation, category, componentName, - className, configuration, label, mimeType); - } - } - } - } - } - - /** - * Add entry to sitemap - */ - - private void add(final String sitemapLocation, final String category, - final String componentName, final String className, - final String configuration, final String label, - final String mimeType) - throws IOException - { - final String data = load(sitemapLocation); - final String searchString = - new StringBuffer("</map:").append(category).append(">") - .toString(); - final int pos = data.indexOf(searchString); - int categoryStartPos = - data - .indexOf(new StringBuffer("<map:").append(category).append(">") - .toString()); - - if (categoryStartPos == -1) - { - categoryStartPos = - data - .indexOf(new StringBuffer("<map:").append(category) - .append(" ").toString()); - } - if ((categoryStartPos != -1) && (categoryStartPos < pos) - && (pos != -1)) - { - - // the category exists, now search if a component - // with the name already exists - int componentPos = - data.substring(categoryStartPos, pos) - .indexOf(new StringBuffer("name=\"").append(componentName) - .append("\"").toString()); - - if (componentPos == -1) - { - StringBuffer buffer = - new StringBuffer(data.substring(0, pos)).append("<map:") - .append(category.substring(0, category.length() - 1)) - .append(" name=\"").append(componentName) - .append("\" src=\"").append(className).append("\"") - .append(" logger=\"sitemap.") - .append(category.substring(0, category.length() - 1)) - .append('.').append(componentName).append('\"'); - - if ((null != mimeType) && (mimeType.length() > 0)) - { - buffer.append(" mime-type=\"").append(mimeType) - .append("\""); - } - if ((null != label) && (label.length() > 0)) - { - buffer.append(" label=\"").append(label).append("\""); - } - if (null != configuration) - { - buffer.append(">\n").append(configuration).append("\n") - .append("</map:") - .append(category.substring(0, category.length() - 1)) - .append(">\n"); - } - else - { - buffer.append("/>\n"); - } - buffer.append(data.substring(pos)).toString(); - this.save(sitemapLocation, buffer.toString()); - } - } - } - - /** - * Load a file and return the content as a string. - */ - - public String load(String filename) - throws IOException - { - FileInputStream fis; - - fis = new FileInputStream(filename); - int available; - byte[] data = null; - byte[] tempData; - byte[] copyData; - - do - { - available = 1024; - tempData = new byte[ available ]; - available = fis.read(tempData, 0, available); - if (available > 0) - { - copyData = new byte[ ((data == null) ? 0 - : data.length) + available ]; - if (data != null) - { - System.arraycopy(data, 0, copyData, 0, data.length); - } - System.arraycopy(tempData, 0, copyData, ((data == null) ? 0 - : data.length), available); - data = copyData; - } - } - while (available > 0); - fis.close(); - return ((data != null) ? new String(data) - : ""); - } - - /** - * Save the string to a file - */ - - public void save(String filename, String data) - throws IOException - { - FileWriter fw = new FileWriter(filename); - - fw.write(data); - fw.close(); - } -} |