Index: src/java/org/apache/jetspeed/util/OverwriteProperties.java
===================================================================
RCS file: /home/cvspublic/jakarta-jetspeed/src/java/org/apache/jetspeed/util/OverwriteProperties.java,v
retrieving revision 1.1
diff -u -r1.1 OverwriteProperties.java
--- src/java/org/apache/jetspeed/util/OverwriteProperties.java 28 Oct 2002 18:44:46 -0000 1.1
+++ src/java/org/apache/jetspeed/util/OverwriteProperties.java 12 Feb 2003 15:10:24 -0000
@@ -1,130 +1,277 @@
-/* ====================================================================
- * The Apache Software License, Version 1.1
+/*
+ * ====================================================================
+ * The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
- * reserved.
+ * Copyright (c) 2000-2001 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:
+ * 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.
+ * 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.
+ * 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.
+ * 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 Jetspeed" 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.
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache Jetspeed" 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" or
- * "Apache Jetspeed", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
+ * 5. Products derived from this software may not be called "Apache" or
+ * "Apache Jetspeed", 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 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
- * .
+ * 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
+ * .
*/
-
package org.apache.jetspeed.util;
+import java.io.File;
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.StringTokenizer;
-import java.io.FileReader;
-import java.io.BufferedReader;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.FileOutputStream;
/**
* Task to overwrite Properties: used for JRP, TRP and Torque.properties
*
- * @author David Sean Taylor
- * @version $Id: OverwriteProperties.java,v 1.1 2002/10/28 18:44:46 taylor Exp $
+ * @author David Sean Taylor
+ * @author Eric Pugh
+ * @created January 29, 2003
+ * @version $Id: OverwriteProperties.java,v 1.1 2002/10/28 18:44:46 taylor Exp $
*/
-public class OverwriteProperties
-{
- protected static String baseProperties;
- protected static String properties;
- protected static String includeRoot;
-
- public static boolean verbose = false;
-
- protected static ArrayList baseArray = new ArrayList(1024);
- protected static ArrayList removeArray = new ArrayList(128);
- protected static HashMap baseMap = new HashMap();
- protected static String lineSeparator = System.getProperty("line.separator", "\r\n");
+public class OverwriteProperties {
+ /** The file to merge properties into */
+ protected File baseProperties;
+ /** The file to pull the properties from */
+ protected File properties;
+ /** The directory to look in for include files */
+ protected File includeRoot;
+
+ /** Description of the Field */
+ public boolean verbose = false;
+
+ /** An array of all the properties */
+ protected ArrayList baseArray = new ArrayList(1024);
+ /** An array of all the properties that will be removed */
+ protected ArrayList removeArray = new ArrayList(128);
+ /** Description of the Field */
+ protected HashMap baseMap = new HashMap();
+ /** What to use as a line seperator */
+ protected String lineSeparator = System.getProperty("line.separator", "\r\n");
+
+
+ /**
+ * Sets the file to merge properties into
+ *
+ * @param baseProperties The file path to merge properties into
+ */
+ public void setBaseProperties(File baseProperties)
+ {
+ this.baseProperties = baseProperties;
+ }
- public static void main(String[] args) throws Exception
+
+ /**
+ * Sets the file to pull properties from
+ *
+ * @param properties The file path to the pull the merge properties from
+ */
+ public void setProperties(File properties)
+ {
+ this.properties = properties;
+ }
+
+
+ /**
+ * Sets the directory to look for includes in.
+ *
+ * @param includeRoot the directory to look in.
+ */
+ public void setIncludeRoot(File includeRoot)
+ {
+ this.includeRoot = includeRoot;
+ }
+
+
+ /**
+ * Sets whether to output extra debugging info
+ *
+ * @param verbose The new verbose value
+ */
+ public void setVerbose(boolean verbose)
{
- OverwriteProperties main=new OverwriteProperties();
+ this.verbose = verbose;
+ }
+
+
+ /**
+ * Return the file to merge propertie into
+ *
+ * @return The baseProperties value
+ */
+ public File getBaseProperties()
+ {
+ return baseProperties;
+ }
+
+
+ /**
+ * Gets the properties attribute of the OverwriteProperties object
+ *
+ * @return The properties value
+ */
+ public File getProperties()
+ {
+ return properties;
+ }
+
+
+ /**
+ * Gets the includeRoot attribute of the OverwriteProperties object
+ *
+ * @return The includeRoot value
+ */
+ public File getIncludeRoot()
+ {
+ return includeRoot;
+ }
+
+
+ /**
+ * Gets the verbose attribute of the OverwriteProperties object
+ *
+ * @return The verbose value
+ */
+ public boolean getVerbose()
+ {
+ return verbose;
+ }
+
+
+ /**
+ * The main program for the OverwriteProperties class
+ *
+ * @param args The command line arguments
+ * @exception Exception Description of the Exception
+ */
+ public static void main(String[] args)
+ throws Exception
+ {
+ OverwriteProperties overwriteProperties = new OverwriteProperties();
try
{
- if(args.length < 3)
+ if (args.length < 3)
{
System.out.println("Usage: java OverwriteProperties c:/temp/File1.props c:/temp/File2.props c:/include-root/");
System.out.println("Usage: File1 will be modified, new parameters from File 2 will be added,");
System.out.println("Usage: and same parameters will be updated. The include-root is where include files are found.");
throw new Exception("Incorrect number of arguments supplied");
}
- baseProperties = args[0];
- properties = args[1];
- includeRoot = args[2];
+ overwriteProperties.setBaseProperties(new File(args[0]));
+ overwriteProperties.setProperties(new File(args[1]));
+ overwriteProperties.setIncludeRoot(new File(args[2]));
+
+ overwriteProperties.execute();
+
+ }
+ catch (FileNotFoundException ex)
+ {
+ System.err.println(ex.getMessage());
+ }
+ catch (IOException ex)
+ {
+ System.err.println(ex.getMessage());
+ }
+ catch (SecurityException ex)
+ {
+ System.err.println(ex.getMessage());
+ }
+ }
+
+
+ /** Description of the Method */
+ public void execute() throws FileNotFoundException, IOException, SecurityException
+ {
+
+ if (verbose)
+ {
+ System.out.println("Merging into file " + getBaseProperties() + " file " + getProperties());
+ }
+ if (!getBaseProperties().exists())
+ {
+ throw new FileNotFoundException("Could not find file:" + getBaseProperties());
+ }
+
+ if (!getProperties().exists())
+ {
+ throw new FileNotFoundException("Could not find file:" + getProperties());
+ }
+
+ if (!getIncludeRoot().exists() || !getIncludeRoot().isDirectory())
+ {
+ throw new FileNotFoundException("Could not find directory:" + getIncludeRoot());
+ }
- BufferedReader reader = new BufferedReader(new FileReader(baseProperties));
+ BufferedReader reader = new BufferedReader(new FileReader(baseProperties));
int index = 0;
String key = null;
String line = null;
- while((line = reader.readLine()) != null)
+ while ((line = reader.readLine()) != null)
{
StringTokenizer tokenizer = new StringTokenizer(line, "=");
baseArray.add(index, line);
if (verbose)
{
- System.out.println("While reading baseArray["+index+"] = "+line);
+ System.out.println("While reading baseArray[" + index + "] = " + line);
}
- if(tokenizer.countTokens() >= 1 &&
- !line.startsWith("#") &&
- !line.startsWith("include") &&
- !line.startsWith("module.packages"))
- {
+ if (tokenizer.countTokens() >= 1 &&
+ !line.startsWith("#") &&
+ !line.startsWith("include") &&
+ !line.startsWith("module.packages"))
+ {
key = tokenizer.nextToken().trim();
- if(key != null && key.length() > 0)
+ if (key != null && key.length() > 0)
{
baseMap.put(key, new Integer(index));
if (verbose)
{
- System.out.println("baseMap["+key+","+index+"]");
+ System.out.println("baseMap[" + key + "," + index + "]");
}
}
}
@@ -136,47 +283,44 @@
System.out.println("\nOverwrite with Delta\n");
}
- readProperties(properties,index);
+ readProperties(properties, index);
boolean flags[] = removeProperties();
baseArray.trimToSize();
- main.writeToFile(flags);
+ writeToFile(flags);
+
- }
- catch(FileNotFoundException ex)
- {
- System.err.println(ex.getMessage());
- }
- catch(IOException ex)
- {
- System.err.println(ex.getMessage());
- }
- catch(SecurityException ex)
- {
- System.err.println(ex.getMessage());
- }
}
- public void writeToFile(boolean [] flags) throws FileNotFoundException, IOException
- {
+
+ /**
+ * Description of the Method
+ *
+ * @param flags Description of the Parameter
+ * @exception FileNotFoundException Description of the Exception
+ * @exception IOException Description of the Exception
+ */
+ public void writeToFile(boolean[] flags)
+ throws FileNotFoundException, IOException
+ {
FileOutputStream writer = new FileOutputStream(baseProperties);
writer.flush();
- for(int i = 0; i < baseArray.size(); i++)
+ for (int i = 0; i < baseArray.size(); i++)
{
if (true == flags[i])
{
if (verbose)
{
- System.out.println("Skipping property["+i+"] = "+baseArray.get(i));
+ System.out.println("Skipping property[" + i + "] = " + baseArray.get(i));
}
continue;
}
if (verbose)
{
- System.out.println("Writing property["+i+"] = "+baseArray.get(i));
+ System.out.println("Writing property[" + i + "] = " + baseArray.get(i));
}
- writer.write(((String)baseArray.get(i)).getBytes());
+ writer.write(((String) baseArray.get(i)).getBytes());
writer.write(lineSeparator.getBytes());
writer.flush();
}
@@ -184,7 +328,13 @@
}
- public static boolean[] removeProperties()
+
+ /**
+ * Description of the Method
+ *
+ * @return Description of the Return Value
+ */
+ public boolean[] removeProperties()
{
boolean flags[] = new boolean[baseArray.size()];
@@ -195,10 +345,10 @@
}
for (int ix = 0; ix < removeArray.size(); ix++)
{
- String prefix = (String)removeArray.get(ix);
+ String prefix = (String) removeArray.get(ix);
for (int iy = 0; iy < baseArray.size(); iy++)
{
- String line = (String)baseArray.get(iy);
+ String line = (String) baseArray.get(iy);
if (line.startsWith(prefix))
{
flags[iy] = true;
@@ -212,14 +362,23 @@
return flags;
}
- public static void readProperties(String propFile, int index)
+
+ /**
+ * Reads in the properties from the specified file
+ *
+ * @param propFile Description of the Parameter
+ * @param index Description of the Parameter
+ * @exception FileNotFoundException Description of the Exception
+ * @exception IOException Description of the Exception
+ */
+ public void readProperties(File propFile, int index)
throws FileNotFoundException, IOException
- {
+ {
BufferedReader reader = new BufferedReader(new FileReader(propFile));
String key = null;
String line = null;
- while((line = reader.readLine()) != null)
+ while ((line = reader.readLine()) != null)
{
StringTokenizer tokenizer = new StringTokenizer(line, "=");
@@ -227,55 +386,60 @@
if (count == 2 && line.startsWith("include"))
{
key = tokenizer.nextToken().trim();
- String includeFile = includeRoot + tokenizer.nextToken().trim();
- System.out.println("include File = " + includeFile);
+ File includeFile = new File(includeRoot + tokenizer.nextToken().trim());
+ if (verbose)
+ {
+ System.out.println("include File = " + includeFile);
+ }
readProperties(includeFile, index);
continue;
- }
- if (count >= 1 && line.startsWith("module.packages"))
+ }
+ if (count >= 1 && line.startsWith("module.packages"))
{
baseArray.add(index, line);
if (verbose)
{
- System.out.println("Adding module.package to baseArray["+index+"] = "+line);
+ System.out.println("Adding module.package to baseArray[" + index + "] = " + line);
}
index++;
key = line.trim();
if (baseMap.containsKey(key))
{
- int ix = ((Integer)baseMap.get(key)).intValue();
- baseArray.set( ix, line);
- if(verbose)
+ int ix = ((Integer) baseMap.get(key)).intValue();
+ baseArray.set(ix, line);
+ if (verbose)
{
- System.out.println("Resetting baseArray["+ix+"] = "+line);
+ System.out.println("Resetting baseArray[" + ix + "] = " + line);
}
}
continue;
}
- if (count >= 1 && line.startsWith("-")) // remove from base
+ if (count >= 1 && line.startsWith("-"))
{
+ // remove from base
+
String prefix = line.trim().substring(1);
removeArray.add(prefix);
if (verbose)
{
- System.out.println("Flagging for removal = "+line);
+ System.out.println("Flagging for removal = " + line);
}
continue;
}
if (count >= 1 && !line.startsWith("#"))
{
key = tokenizer.nextToken().trim();
- if(key != null && key.length() > 0)
+ if (key != null && key.length() > 0)
{
- if(baseMap.containsKey(key))
+ if (baseMap.containsKey(key))
{
- int ix = ((Integer)baseMap.get(key)).intValue();
- baseArray.set( ix, line);
+ int ix = ((Integer) baseMap.get(key)).intValue();
+ baseArray.set(ix, line);
if (verbose)
{
- System.out.println("Resetting baseArray["+ix+"] = "+line);
+ System.out.println("Resetting baseArray[" + ix + "] = " + line);
}
}
else
@@ -283,12 +447,12 @@
baseArray.add(index, line);
if (verbose)
{
- System.out.println("Adding new entry to baseArray["+index+"] = "+line);
+ System.out.println("Adding new entry to baseArray[" + index + "] = " + line);
}
baseMap.put(key, new Integer(index));
if (verbose)
{
- System.out.println("baseMap["+key+","+index+"]");
+ System.out.println("baseMap[" + key + "," + index + "]");
}
index++;
}