[kepler-dev] consolidating org.ecoinformatics with org.kepler

Christopher Brooks cxh at eecs.berkeley.edu
Wed Aug 26 10:50:11 PDT 2009


I hate to be picky, but we don't own the kepler.org domain name,
so technically, this is not right.  That said, I'm not opposed.
However, if someone gets kepler.org and starts writing Java
code, then we are technically squatting on their java classpath
and a person would not be able to use their code with our code.

I don't think this is a huge issue, and we could probably go
ahead with using org.kepler, but I would not personally do it.

Comments?

_Christopher

Chad Berkley wrote:
> Hi,
> 
> In an effort to simplify the code base, I'm merging some classes in the 
> org.ecoinformatics.* package to the org.kepler.* package.  I've changed 
> the files below.  I noticed that the three files I moved 
> (org.ecoinformatics.util.Config, DBConnectionFactory and 
> DelimitedReader) were overridden in at least one module.  I did not 
> change this override, so if you are overriding these files, you may need 
>  to move your files.
> 
> Let me know if anyone sees any problems related to this.
> 
> chad
> 
> 
> -------- Original Message --------
> Subject: [kepler-code] r20471 - in trunk/modules: 
> actors/src/org/ecoinformatics/seek/datasource/darwincore 
> actors/src/org/ecoinformatics/seek/datasource/eml/eml2 
> actors/src/org/geon actors/src/org/kepler/dataproxy/datasource/geon 
> actors/src/org/kepler/dataproxy/metadata/ADN actors/src/org/sdm/spa 
> actors/src/org/srb cacheviewer/src/org/daks/cacheviewer/gui 
> component-library/src/org/kepler/objectmanager/library 
> core/src/org/ecoinformatics/util core/src/org/kepler/kar 
> core/src/org/kepler/objectmanager/cache 
> core/src/org/kepler/objectmanager/data 
> core/src/org/kepler/objectmanager/data/text 
> core/src/org/kepler/objectmanager/lsid core/src/org/kepler/util 
> data-handling/src/org/ecoinformatics/seek/dataquery 
> ecogrid/src/org/ecoinformatics/seek/datasource 
> ecogrid/src/org/ecoinformatics/seek/ecogrid 
> ecogrid/src/org/ecoinformatics/seek/ecogrid/quicksearch 
> ecogrid/src/org/kepler/authentication/gui gui/src/org/kepler/gui 
> loader/src/org/kepler/gui module-manager/src/org/kepler/modulemanager 
> ppod-gui/src/ org/daks/ppod/gui ppod-gui/src/org/kepler/gui 
> ppod-gui-1.0/src/org/daks/ppod/gui ppod-gui-1.0/src/org/kepler/gui 
> reporting/src/org/kepler/kar/handlers 
> reporting/src/org/kepler/reporting/rio/util util/src/util
> Date: Wed, 26 Aug 2009 10:38:15 -0700 (PDT)
> From: berkley at ecoinformatics.org
> To: kepler-cvs at kepler-project.org
> 
> Author: berkley
> Date: 2009-08-26 10:38:14 -0700 (Wed, 26 Aug 2009)
> New Revision: 20471
> 
> Added:
>    trunk/modules/core/src/org/kepler/util/Config.java
>    trunk/modules/core/src/org/kepler/util/DBConnectionFactory.java
>    trunk/modules/core/src/org/kepler/util/DelimitedReader.java
> Removed:
>    trunk/modules/core/src/org/ecoinformatics/util/Config.java
>    trunk/modules/core/src/org/ecoinformatics/util/DBConnectionFactory.java
>    trunk/modules/core/src/org/ecoinformatics/util/DelimitedReader.java
> Modified:
> 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreSchema.java 
> 
> 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/EML2MetadataSpecification.java 
> 
> 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/Eml200DataSource.java 
> 
>    trunk/modules/actors/src/org/geon/FilterUI.java
> 
> trunk/modules/actors/src/org/kepler/dataproxy/datasource/geon/GEONDatabaseResource.java 
> 
> 
> trunk/modules/actors/src/org/kepler/dataproxy/metadata/ADN/ADNMetadataSpecification.java 
> 
>    trunk/modules/actors/src/org/sdm/spa/BrowserUI.java
>    trunk/modules/actors/src/org/srb/SRBCreateQueryInterface.java
>    trunk/modules/cacheviewer/src/org/daks/cacheviewer/gui/MenuActions.java
> 
> trunk/modules/component-library/src/org/kepler/objectmanager/library/LibraryManager.java 
> 
>    trunk/modules/core/src/org/kepler/kar/KARBuilder.java
>    trunk/modules/core/src/org/kepler/kar/KARCacheManager.java
>    trunk/modules/core/src/org/kepler/objectmanager/cache/CacheManager.java
>    trunk/modules/core/src/org/kepler/objectmanager/cache/CacheUtil.java
> 
> trunk/modules/core/src/org/kepler/objectmanager/cache/LocalRepositoryManager.java 
> 
> 
> trunk/modules/core/src/org/kepler/objectmanager/data/DataTypeResolver.java
> 
> trunk/modules/core/src/org/kepler/objectmanager/data/text/TextComplexFormatDataReader.java 
> 
>    trunk/modules/core/src/org/kepler/objectmanager/lsid/LSIDGenerator.java
>    trunk/modules/core/src/org/kepler/util/AuthNamespace.java
>    trunk/modules/core/src/org/kepler/util/DotKeplerManager.java
> 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBDataTypeResolver.java 
> 
> 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTableExistenceChecker.java 
> 
> 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTablesGenerator.java 
> 
> 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DelimiterResolver.java 
> 
> 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/HsqlDataQueryAction.java 
> 
> 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/datasource/EcogridDataCacheItem.java 
> 
> 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/DocumentType.java
> 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/EcoGridServicesController.java 
> 
> 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/SearchRegistryAction.java 
> 
> 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/quicksearch/SearchQueryGenerator.java 
> 
> 
> trunk/modules/ecogrid/src/org/kepler/authentication/gui/LDAPLoginGUI.java
>    trunk/modules/gui/src/org/kepler/gui/KeplerApplication.java
>    trunk/modules/gui/src/org/kepler/gui/ViewManager.java
>    trunk/modules/loader/src/org/kepler/gui/KeplerInitializer.java
>    trunk/modules/module-manager/src/org/kepler/modulemanager/Restarter.java
>    trunk/modules/ppod-gui-1.0/src/org/daks/ppod/gui/WorkspacePane.java
>    trunk/modules/ppod-gui-1.0/src/org/kepler/gui/KeplerInitializer.java
>    trunk/modules/ppod-gui-1.0/src/org/kepler/gui/TabbedLibraryPane.java
>    trunk/modules/ppod-gui/src/org/daks/ppod/gui/WorkspacePane.java
>    trunk/modules/ppod-gui/src/org/kepler/gui/KeplerInitializer.java
> 
> trunk/modules/reporting/src/org/kepler/kar/handlers/ReportInstanceKAREntryHandler.java 
> 
>    trunk/modules/reporting/src/org/kepler/reporting/rio/util/ImageUtil.java
>    trunk/modules/util/src/util/StaticUtil.java
> Log:
> removing the org.ecoinformatics.util package and moving the member 
> classes to org.kepler.util.  just trying to simplify the packages and 
> consolidate classes into more easy-to-find packages.
> 
> Modified: 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreSchema.java 
> 
> ===================================================================
> --- 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreSchema.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreSchema.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -39,7 +39,7 @@
>  import org.ecoinformatics.ecogrid.EcogridUtils;
>  import org.ecoinformatics.ecogrid.EcogridUtilsNamedNodeIterator;
>  import org.ecoinformatics.seek.datasource.EcogridDataCacheItem;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.objectmanager.cache.DataCacheListener;
>  import org.kepler.objectmanager.cache.DataCacheManager;
>  import org.kepler.objectmanager.cache.DataCacheObject;
> 
> Modified: 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/EML2MetadataSpecification.java 
> 
> ===================================================================
> --- 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/EML2MetadataSpecification.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/EML2MetadataSpecification.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -54,7 +54,7 @@
>  import org.ecoinformatics.seek.ecogrid.quicksearch.SearchQueryGenerator;
>  import org.ecoinformatics.seek.ecogrid.quicksearch.SortableResultRecord;
>  import 
> org.ecoinformatics.seek.ecogrid.quicksearch.SortableResultRecordComparator;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.xml.sax.SAXException;
> 
>  import ptolemy.kernel.CompositeEntity;
> 
> Modified: 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/Eml200DataSource.java 
> 
> ===================================================================
> --- 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/Eml200DataSource.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/actors/src/org/ecoinformatics/seek/datasource/eml/eml2/Eml200DataSource.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -75,7 +75,7 @@
>  import org.ecoinformatics.seek.querybuilder.DBQueryDef;
>  import org.ecoinformatics.seek.querybuilder.DBQueryDefParserEmitter;
>  import org.ecoinformatics.seek.querybuilder.DBSchemaParserEmitter;
> -import org.ecoinformatics.util.DelimitedReader;
> +import org.kepler.util.DelimitedReader;
>  import org.kepler.actor.preview.Previewable;
>  import org.kepler.objectmanager.ActorMetadata;
>  import org.kepler.objectmanager.cache.ActorCacheObject;
> 
> Modified: trunk/modules/actors/src/org/geon/FilterUI.java
> ===================================================================
> --- trunk/modules/actors/src/org/geon/FilterUI.java    2009-08-26 
> 17:28:04 UTC (rev 20470)
> +++ trunk/modules/actors/src/org/geon/FilterUI.java    2009-08-26 
> 17:38:14 UTC (rev 20471)
> @@ -37,7 +37,7 @@
>  import java.net.URL;
>  import java.util.Vector;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  import ptolemy.actor.TypedAtomicActor;
>  import ptolemy.actor.TypedIOPort;
> 
> Modified: 
> trunk/modules/actors/src/org/kepler/dataproxy/datasource/geon/GEONDatabaseResource.java 
> 
> ===================================================================
> --- 
> trunk/modules/actors/src/org/kepler/dataproxy/datasource/geon/GEONDatabaseResource.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/actors/src/org/kepler/dataproxy/datasource/geon/GEONDatabaseResource.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -47,7 +47,7 @@
>  import org.ecoinformatics.seek.datasource.EcogridMetaDataCacheItem;
>  import org.ecoinformatics.seek.ecogrid.quicksearch.ResultTreeRoot;
>  import org.ecoinformatics.seek.querybuilder.DBQueryDef;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.geon.DatabaseQuery;
>  import org.kepler.dataproxy.datasource.DataSourceInterface;
>  import org.kepler.dataproxy.metadata.ADN.ADNMetadataSpecification;
> 
> Modified: 
> trunk/modules/actors/src/org/kepler/dataproxy/metadata/ADN/ADNMetadataSpecification.java 
> 
> ===================================================================
> --- 
> trunk/modules/actors/src/org/kepler/dataproxy/metadata/ADN/ADNMetadataSpecification.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/actors/src/org/kepler/dataproxy/metadata/ADN/ADNMetadataSpecification.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -56,7 +56,7 @@
>  import org.ecoinformatics.seek.ecogrid.quicksearch.SearchQueryGenerator;
>  import org.ecoinformatics.seek.ecogrid.quicksearch.SortableResultRecord;
>  import 
> org.ecoinformatics.seek.ecogrid.quicksearch.SortableResultRecordComparator;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.dataproxy.datasource.geon.GEONDatabaseResource;
>  import org.kepler.dataproxy.datasource.geon.GEONShpResource;
>  import org.xml.sax.SAXException;
> 
> Modified: trunk/modules/actors/src/org/sdm/spa/BrowserUI.java
> ===================================================================
> --- trunk/modules/actors/src/org/sdm/spa/BrowserUI.java    2009-08-26 
> 17:28:04 UTC (rev 20470)
> +++ trunk/modules/actors/src/org/sdm/spa/BrowserUI.java    2009-08-26 
> 17:38:14 UTC (rev 20471)
> @@ -45,7 +45,7 @@
>  import java.util.Set;
>  import java.util.TreeSet;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  import ptolemy.actor.IOPort;
>  import ptolemy.actor.TypedAtomicActor;
> 
> Modified: trunk/modules/actors/src/org/srb/SRBCreateQueryInterface.java
> ===================================================================
> --- trunk/modules/actors/src/org/srb/SRBCreateQueryInterface.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/actors/src/org/srb/SRBCreateQueryInterface.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -28,7 +28,7 @@
>  import java.util.Set;
>  import java.util.TreeSet;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  import ptolemy.actor.NoTokenException;
>  import ptolemy.actor.TypedAtomicActor;
> 
> Modified: 
> trunk/modules/cacheviewer/src/org/daks/cacheviewer/gui/MenuActions.java
> ===================================================================
> --- 
> trunk/modules/cacheviewer/src/org/daks/cacheviewer/gui/MenuActions.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/cacheviewer/src/org/daks/cacheviewer/gui/MenuActions.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -1,8 +1,8 @@
>  package org.daks.cacheviewer.gui;
> 
>  import org.daks.cacheviewer.util.DataModel;
> -import org.ecoinformatics.util.DBConnection;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnection;
> +import org.kepler.util.DBConnectionFactory;
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> 
> 
> Modified: 
> trunk/modules/component-library/src/org/kepler/objectmanager/library/LibraryManager.java 
> 
> ===================================================================
> --- 
> trunk/modules/component-library/src/org/kepler/objectmanager/library/LibraryManager.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/component-library/src/org/kepler/objectmanager/library/LibraryManager.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -18,7 +18,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
>  import org.kepler.icon.ComponentEntityConfig;
>  import org.kepler.kar.KARCacheManager;
>  import org.kepler.kar.KARFile;
> 
> Deleted: trunk/modules/core/src/org/ecoinformatics/util/Config.java
> ===================================================================
> --- trunk/modules/core/src/org/ecoinformatics/util/Config.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/core/src/org/ecoinformatics/util/Config.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -1,515 +0,0 @@
> -/**
> - *    '$RCSfile$'
> - *
> - *     '$Author$'
> - *       '$Date$'
> - *   '$Revision$'
> - *
> - *  For Details: http://kepler.ecoinformatics.org
> - *
> - * Copyright (c) 2003 The Regents of the University of California.
> - * All rights reserved.
> - *
> - * Permission is hereby granted, without written agreement and without
> - * license or royalty fees, to use, copy, modify, and distribute this
> - * software and its documentation for any purpose, provided that the
> - * above copyright notice and the following two paragraphs appear in
> - * all copies of this software.
> - *
> - * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
> - * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
> - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
> - * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
> - * OF SUCH DAMAGE.
> - *
> - * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
> - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
> - * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY
> - * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
> - * UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
> - */
> -
> -package org.ecoinformatics.util;
> -
> -import java.io.File;
> -import java.io.FileInputStream;
> -import java.io.FileNotFoundException;
> -import java.io.IOException;
> -import java.io.InputStream;
> -import java.net.URI;
> -import java.net.URL;
> -import java.util.Collections;
> -import java.util.Hashtable;
> -import java.util.Iterator;
> -import java.util.List;
> -import java.util.Map;
> -import java.util.StringTokenizer;
> -import java.util.Vector;
> -import java.util.jar.Attributes;
> -import java.util.jar.JarInputStream;
> -import java.util.jar.Manifest;
> -
> -import javax.xml.transform.TransformerException;
> -
> -import org.apache.commons.logging.Log;
> -import org.apache.commons.logging.LogFactory;
> -import org.apache.xpath.XPathAPI;
> -import org.w3c.dom.Node;
> -import org.w3c.dom.NodeList;
> -
> -import edu.ucsb.nceas.configxml.ConfigXML;
> -import edu.ucsb.nceas.configxml.exception.ElementNotFoundException;
> -import edu.ucsb.nceas.configxml.exception.IndexTooLargeException;
> -
> -/**
> - *
> - * configuration file routines
> - *
> - */
> -public class Config {
> -    private static final Log log = 
> LogFactory.getLog(Config.class.getName());
> -    private static final boolean isDebugging = log.isDebugEnabled();
> -   
> -    private static final String configfilename = 
> "configurations/config.xml";
> -
> -    private static final String settingsdir = ".kepler";
> -
> -    // Define useful static strings. At some point in time, these could 
> be moved
> -    // into the config.xml file, environment variable, or something else
> -    // which could move this directory to another location.
> -
> -    // KEPLER_USER_DIR is returned by Config.getUserDirPath().
> -    private static final String KEPLER_USER_DIR = System
> -            .getProperty("user.home")
> -            + File.separator + settingsdir + File.separator;
> -
> -    // KEPLER_CACHE_DIR is returned by Config.getCacheDirPath().
> -    private static final String KEPLER_CACHE_DIR = KEPLER_USER_DIR + 
> "cache"
> -            + File.separator;
> -
> -    /**
> -     * The singleton instance.
> -     */
> -    private static Config configure;
> -    static {
> -        try {
> -            configure = new Config();
> -        } catch (FileNotFoundException ex) {
> -            throw new ExceptionInInitializerError(ex);
> -        }
> -    }
> -
> -    // Instance variables.
> -
> -    /**
> -     * The underlying ConfigXML object.
> -     */
> -    private ConfigXML config;
> -
> -    /**
> -     * Error indicator. Set to true if ConfigXML has problems.
> -     */
> -    private boolean error = false;
> -
> -    /**
> -     * Method for get object as a singleton class
> -     *
> -     * @return Config
> -     */
> -    public static Config getInstance() {
> -        return configure;
> -    }
> -
> -    /*
> -     * Constructor for ConfigDatasource.
> -     *
> -     * @throws FileNotFoundException
> -     *
> -     * @throws Exception
> -     */
> -    private Config() throws FileNotFoundException {
> -
> -        InputStream is = null;
> -
> -    URL kernelConfigURL = ClassLoader.getSystemClassLoader()
> -                        .getResource(configfilename);
> -                       
> -    File kernelConfigFile = null;
> -    try
> -    {
> -      kernelConfigFile = new File(new URI(kernelConfigURL.toString()));
> -    }
> -    catch(Exception e)
> -    {
> -      throw new FileNotFoundException("Error getting config file from " +
> -        "classpath: " + e.getMessage());
> -    }
> -
> -        //if (kernelConfig == null) {
> -    if (!kernelConfigFile.exists()) {
> -            throw new FileNotFoundException("Failed to find " + 
> configfilename + " in the classpath: "
> -                            + _classpath());
> -        }
> -        log.debug("Opening config.xml file found at: " + 
> kernelConfigFile.getAbsolutePath());
> -        try {
> -            is = (InputStream) new FileInputStream(kernelConfigFile);
> -            if (is == null) {
> -                throw new FileNotFoundException("Failed to find \""
> -                        + configfilename + "\" as a resource in the 
> classpath: "
> -                            + _classpath());
> -            }
> -            config = new ConfigXML(is, 
> kernelConfigFile.getAbsolutePath());
> -        } catch (FileNotFoundException fnfe) {
> -            error = true;
> -            FileNotFoundException exception = new FileNotFoundException(
> -                                            "Config file not found at \""
> -                                            + configfilename
> -                                            + "\" in the classpath: "
> -                                            + _classpath());
> -            exception.initCause(fnfe);
> -            throw exception;
> -        } catch (Exception e) {
> -            error = true;
> -            throw new RuntimeException("Unspecified error creating 
> config "
> -                    + "object from \"" + configfilename + "\"", e);
> -        } finally {
> -            if (is != null) {
> -                try {
> -                    is.close();
> -                } catch (IOException ex) {
> -                    throw new RuntimeException("Failed to close \""
> -                            + configfilename + "\"", ex);
> -                }
> -            }
> -        }
> -
> -    }
> -
> -  /**
> -   * get the classpath from a manifest file
> -   */
> -  private String processManifestClasspath(String classpath) throws 
> IOException
> -  {
> -    File f = new File(classpath);
> -    JarInputStream jar = new JarInputStream(new FileInputStream(f));
> -    Manifest m = jar.getManifest();
> -    Attributes mainAtts = m.getMainAttributes();
> -    Iterator itt = mainAtts.entrySet().iterator();
> -    while(itt.hasNext())
> -    { //find the classpath in the manifest
> -      Map.Entry entry = (Map.Entry)itt.next();
> -      if((((Object)entry.getKey()).toString()).equals("Class-Path"))
> -      {
> -        classpath = (String)entry.getValue();
> -        break;
> -      }
> -      //System.out.println("name: " + 
> ((Object)entry.getKey()).toString());
> -      //System.out.println("val: " + 
> ((Object)entry.getValue()).toString());
> -    }
> -
> -    //change the manifest classpath into a normal looking classpath
> -    classpath = classpath.replaceAll("\\s", 
> System.getProperty("path.separator"));
> -    //System.out.println("classpath: " + classpath);
> -    return classpath;
> -  }
> -
> -    /**
> -     * Method to get a string value from config.xml base on given 
> element path
> -     *
> -     * @param path
> -     *            String
> -     * @return String
> -     */
> -    public static String getValue(String path) {
> -        Config configInstance = Config.getInstance();
> -        return configInstance.getValueFromPath(path);
> -    }
> -
> -    private String getValueFromPath(String path) {
> -        if (isDebugging) {
> -            log.debug(path);
> -        }
> -        String value = null;
> -        if (error) {
> -            return value;
> -        }
> -        if (path == null) {
> -            return value;
> -        }
> -        try {
> -            Vector valueVector = config.getValuesForPath(path);
> -            value = (String) valueVector.elementAt(0);
> -        } catch (ElementNotFoundException e1) {
> -            log.debug("Element " + path + " not found");
> -        } catch (Exception e2) {
> -            log.error("Exception occurred:", e2);
> -        }
> -        if (isDebugging) {
> -            log.debug(value);
> -        }
> -        return value;
> -    }// getValues
> -
> -    /**
> -     * Method returns an unmodifiable list of values from config.xml 
> base on
> -     * given path. If the argument is null or not found in config.xml, 
> return
> -     * EMPTY_LIST.
> -     *
> -     * @param path
> -     *            String
> -     * @return Vector
> -     */
> -    public static List getList(String path) {
> -        Config configInstance = Config.getInstance();
> -        return configInstance.getListFromPath(path);
> -    }
> -
> -    private List getListFromPath(String path) {
> -        List value = Collections.EMPTY_LIST;
> -        if (error) {
> -            return value;
> -        }
> -        if (path == null) {
> -            return value;
> -        }
> -        try {
> -            value = 
> Collections.unmodifiableList(config.getValuesForPath(path));
> -        } catch (ElementNotFoundException e1) {
> -            log.debug("Element " + path + " not found");
> -        } catch (Exception e2) {
> -            log.error("Exception occurred:", e2);
> -        }
> -
> -        return value;
> -    }// getList
> -
> -    /**
> -     * Method to get unmodifiable map for some given pathes in 
> config.xml. If
> -     * the arguments are invalid (either null) or not found, return an 
> empty
> -     * map. Here is the segment of config.xml: <parenetElement>
> -     * <keyElement>key1</keyElement> <valueElement>value1</valueElement>
> -     * </parentElement> <parentElement> <keyElement>key2</keyElement>
> -     * <valueElement>value2</valueElement> </parentElement> The 
> parentPath can
> -     * be "//parentElement", keyPath should be "./keyElement", and 
> valuePath
> -     * should be "./valuePath".
> -     *
> -     * @param parentPath
> -     *            String
> -     * @param keyPath
> -     *            String
> -     * @param valuePath
> -     *            String
> -     * @throws ElementNotFoundException
> -     * @throws Exception
> -     * @return Hashtable
> -     */
> -    public static Map getMap(String parentPath, String keyPath, String 
> valuePath) {
> -        Config configInstance = Config.getInstance();
> -        return configInstance.getMapFromPath(parentPath, keyPath, 
> valuePath);
> -    }
> -
> -    private Map getMapFromPath(String parentPath, String keyPath,
> -            String valuePath) {
> -        Map map = Collections.EMPTY_MAP;
> -        if (error) {
> -            return map;
> -        }
> -        if (parentPath == null || keyPath == null || valuePath == null) {
> -            return map;
> -        }
> -        NodeList nl = null;
> -        try {
> -            nl = config.getPathContent(parentPath);
> -        } catch (ElementNotFoundException e1) {
> -            log.debug("Element " + parentPath + " not found");
> -            return map;
> -        } catch (TransformerException e2) {
> -            log.error("Transfomer Exception when reading parentPath "
> -                    + parentPath, e2);
> -            return map;
> -        }
> -        // At this point nl != null because we didn't get an
> -        // ElementNotFoundException
> -        map = new Hashtable();
> -        try {
> -            for (int i = 0; i < nl.getLength(); i++) {
> -                Node n = nl.item(i);
> -                Node keyNode = XPathAPI.selectSingleNode(n, keyPath);
> -                Node valueNode = XPathAPI.selectSingleNode(n, valuePath);
> -                if (keyNode == null || valueNode == null) {
> -                    log.debug("keyNode or valueNode not found at 
> iteration "
> -                            + i);
> -                    continue;
> -                }
> -
> -                String keyNodeValue = 
> keyNode.getFirstChild().getNodeValue();
> -                String valueNodeValue = valueNode.getFirstChild()
> -                        .getNodeValue();
> -                if (keyNodeValue == null || valueNodeValue == null) {
> -                    log
> -                            .debug("keyNodeValue or valueNodeValue is 
> null at iteration "
> -                                    + i);
> -                    continue;
> -                }
> -                log.debug("The value of " + keyPath + " " + keyNodeValue
> -                        + " and " + " the value of " + valuePath + " "
> -                        + valueNodeValue + " are put into mapping");
> -
> -                map.put(keyNodeValue, valueNodeValue);
> -            } // for
> -        } catch (TransformerException e) {
> -            log.error("Transfomer Exception in loop ", e);
> -        }
> -        return Collections.unmodifiableMap(map);
> -    }// getMap
> -
> -    /**
> -     * Get a node list base on the given xpath in config file
> -     *
> -     * @param path
> -     *            String the xpath
> -     * @return NodeList
> -     */
> -    public static NodeList getNodeListFromPath(String path) {
> -        Config configInstance = Config.getInstance();
> -        return configInstance.getNodeListFromXPath(path);
> -    }
> -
> -    /*
> -     * This method will get a node list from config file
> -     */
> -    private NodeList getNodeListFromXPath(String xpath) {
> -        NodeList list = null;
> -        if (error) {
> -            return list;
> -        }
> -        try {
> -            list = config.getPathContent(xpath);
> -        } catch (ElementNotFoundException e) {
> -            log.debug("Element Not found for " + xpath);
> -        } catch (TransformerException e2) {
> -            log.error("Transformer Exception for " + xpath);
> -        }
> -        return list;
> -    }
> -
> -    /**
> -     * Method to get error state
> -     */
> -    public boolean getErrorState() {
> -        return error;
> -    }
> -
> -    /**
> -     * Returns the path of the Kepler hidden working directory 
> terminated with
> -     * File.seperator. This directory is current coded to be
> -     * ${system.home}/.kepler.
> -     *
> -     * @return the path to the .kepler directory.
> -     * @deprecated use DotKeplerManager.getDotKeplerPath() instead.
> -     */
> -    public static String getUserDirPath() {
> -        return KEPLER_USER_DIR;
> -    }
> -
> -    /**
> -     * Returns the path to a subdirectory of the working directory. The 
> pathname
> -     * is normalized to use the system style File.separator.
> -     *
> -     *
> -     * @param path
> -     *            a subdirectory of the working directory
> -     * @return normalized pathname of the subdirectory.
> -     * @deprecated use DotKeplerManager.getDotKeplerPath(String) instead.
> -     */
> -    public static String getUserDirPath(String path) {
> -        String pdir = KEPLER_USER_DIR + path;
> -        if (pdir.endsWith(File.separator)) {
> -            return pdir;
> -        } else {
> -            return pdir + File.separator;
> -        }
> -    }
> -
> -    /**
> -     * Returns the path to the Cache working directory terminated with
> -     * File.seperator. This directory is currently in getUserDirPath() +
> -     * "cache".
> -     *
> -     * @return the path to the cache directory
> -     * @deprecated use DotKeplerManager.getCacheDirPath()
> -     */
> -    public static String getCacheDirPath() {
> -        return KEPLER_CACHE_DIR;
> -    }
> -
> -    /**
> -     * Method save. - pass through to ConfigXML member
> -     *
> -     * @throws Exception
> -     */
> -    public void save() throws Exception {
> -        config.save();
> -    }
> -
> -    /**
> -     * Method set. - pass through to ConfigXML member
> -     *
> -     * @param arg1
> -     * @param arg2
> -     * @param arg3
> -     * @throws ElementNotFoundException
> -     */
> -    public void set(String arg1, int arg2, String arg3)
> -            throws ElementNotFoundException {
> -        config.set(arg1, arg2, arg3);
> -    }
> -
> -    /**
> -     * Method deleteSubFields. - pass through to ConfigXML member
> -     *
> -     * @param parentName
> -     * @param i
> -     * @throws IndexTooLargeException
> -     */
> -    public void deleteSubFields(String parentName, int i)
> -            throws IndexTooLargeException {
> -        config.deleteSubFields(parentName, i);
> -    }
> -
> -    /**
> -     * Method addSubFields. - pass through to ConfigXML member
> -     *
> -     * @param parentName
> -     * @param i
> -     * @param childName
> -     * @param value
> -     * @throws IndexTooLargeException
> -     */
> -    public void addSubField(String parentName, int i, String childName,
> -            String value) throws IndexTooLargeException {
> -        config.addSubField(parentName, i, childName, value);
> -    }
> -
> -    /** Return the classpath as a string.
> -     *  @return the classpath
> -     */
> -    private String _classpath() {
> -        StringBuffer classpath = new StringBuffer();
> -        try {
> -        String cp = System.getProperty("java.class.path");
> -        StringTokenizer st = new StringTokenizer(cp, System
> -                             .getProperty("path.separator"));
> -        while (st.hasMoreTokens()) {
> -            if (classpath.length() > 0) {
> -            classpath.append(System.getProperty("path.separator"));
> -            }
> -            classpath.append((String)st.nextToken());
> -        }
> -        } catch (Exception ex) {
> -        classpath.append(ex.toString());
> -        }
> -        return classpath.toString();
> -    }
> -}
> 
> Deleted: 
> trunk/modules/core/src/org/ecoinformatics/util/DBConnectionFactory.java
> ===================================================================
> --- 
> trunk/modules/core/src/org/ecoinformatics/util/DBConnectionFactory.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/core/src/org/ecoinformatics/util/DBConnectionFactory.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -1,173 +0,0 @@
> -/**
> - *    '$RCSfile$'
> - *
> - *     '$Author$'
> - *       '$Date$'
> - *   '$Revision$'
> - *
> - *  For Details: http://kepler.ecoinformatics.org
> - *
> - * Copyright (c) 2003 The Regents of the University of California.
> - * All rights reserved.
> - *
> - * Permission is hereby granted, without written agreement and without
> - * license or royalty fees, to use, copy, modify, and distribute this
> - * software and its documentation for any purpose, provided that the
> - * above copyright notice and the following two paragraphs appear in
> - * all copies of this software.
> - *
> - * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
> - * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
> - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
> - * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
> - * OF SUCH DAMAGE.
> - *
> - * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
> - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
> - * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY
> - * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
> - * UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
> - */
> -
> -package org.ecoinformatics.util;
> -
> -import java.io.File;
> -import java.sql.Connection;
> -import java.sql.SQLException;
> -
> -import javax.sql.DataSource;
> -
> -import org.apache.commons.logging.Log;
> -import org.apache.commons.logging.LogFactory;
> -import org.hsqldb.Server;
> -import org.hsqldb.jdbc.jdbcDataSource;
> -import org.kepler.util.DotKeplerManager;
> -
> -/**
> - * DBConnectionFactory creates connections to the hsql database.
> - * It launches HSQL in "Server" mode and creates a DataSource using the 
> configured
> - * username, password, and jdbc connection string.
> - * While it does not provide database connection pooling, it does allow
> - * multiple simultaneous connections to be made from different JVMs.
> - *
> - * @author Kevin Ruland
> - * @author Ben Leinfelder
> - *
> - */
> -public class DBConnectionFactory {
> -
> -    private static final String USERNAMEPATH = 
> "//sqlEngine[sqlEngineName=\"hsql\"]/userName";
> -    private static final String PASSWORDPATH = 
> "//sqlEngine[sqlEngineName=\"hsql\"]/password";
> -
> -    private static String username;
> -    private static String password;
> -    private static String dbName;
> -    private static String dbNamePath;
> -    private static String url;
> -    private static DataSource dataSource;
> -    private static Server server;
> -   
> -    private static Log log = LogFactory.getLog(DBConnectionFactory.class);
> -
> -    static {
> -        username = Config.getValue(USERNAMEPATH);
> -        password = Config.getValue(PASSWORDPATH);
> -        dbName = "hsqldb";
> -        dbNamePath = DotKeplerManager.getInstance().getCacheDirPath()
> -                + "cachedata" + File.separator + dbName;
> -       
> -        //using the "server" mode to allow multiple JVMs simultaneous 
> access
> -        url = "jdbc:hsqldb:hsql://localhost/" + dbName;
> -        //url = "jdbc:hsqldb:" + dbNamePath;
> -       
> -        server = new Server();
> -    }
> -
> -    /**
> -     * Method to get a connection to the internal DB.
> -     *
> -     * @throws SQLException
> -     *             If there is a problem creating the connection. One 
> possible
> -     *             solution is to remove the directory named by
> -     *             Config.getCacheDirPath().
> -     * @throws ClassNotFoundException
> -     * @return Connection
> -     */
> -    public static Connection getDBConnection() throws SQLException,
> -            ClassNotFoundException {
> -        return getDBConnection(username, password);
> -    }
> -
> -    /** Stop the HSQL Server. */
> -    public static void shutdownDBServer() {
> -        server.stop();
> -    }
> -
> -    private static Connection getDBConnection(String userName, String 
> password)
> -            throws SQLException, ClassNotFoundException {
> -
> -        Connection conn = null;
> -        try {
> -            conn = dataSource.getConnection();
> -        } catch (Exception e) {
> -            //start the server
> -            launchDBServer();
> -            initDataSource();
> -        }
> -        if (conn != null) {
> -            return conn;
> -        }
> -        //or try again
> -        try {
> -            conn = dataSource.getConnection();
> -            return conn;
> -        } catch (SQLException ex) {
> -            SQLException sqlException = new SQLException(
> -                    "Failed to connect to url \""
> -                            + url
> -                            + "\" as user \""
> -                            + userName
> -                            + ". Perhaps there was an error launching 
> the db server. "
> -                            + "In addition, sometimes the database "
> -                            + "cache can become corrupt, so another "
> -                            + "solution is to remove the \"" + dbNamePath
> -                            + "\" directory.");
> -            sqlException.setNextException(ex);
> -            throw sqlException;
> -        }
> -    }
> -   
> -    /**
> -     * DataSources are "preferred" over DriverManagers..
> -     * @see http://hsqldb.org/doc/src/org/hsqldb/jdbc/jdbcDataSource.html
> -     */
> -    private static void initDataSource() {
> -        //use the simple datasource provided by HSQL
> -        jdbcDataSource ds = new jdbcDataSource();
> -        ds.setDatabase(url);
> -        ds.setUser(username);
> -        ds.setPassword(password);
> -        dataSource = ds;
> -    }
> -   
> -    /**
> -     * Starts the HSQL Server in the first Kepler JVM
> -     * Subsequent JVMs will encounter a non-fatal BindException
> -     * and will carry on, connecting with the first Server
> -     * @see http://hsqldb.org/doc/src/org/hsqldb/Server.html
> -     *
> -     */
> -    private static void launchDBServer() {
> -        if (!log.isDebugEnabled()) {
> -            server.setLogWriter(null);
> -            server.setErrWriter(null);
> -        }
> -        server.setDatabasePath(0, dbNamePath);
> -        server.setDatabaseName(0, dbName);
> -        server.setSilent(true);
> -        server.setTrace(false);
> -        server.setNoSystemExit(true);
> -        server.start();
> -    }
> -}
> 
> Deleted: 
> trunk/modules/core/src/org/ecoinformatics/util/DelimitedReader.java
> ===================================================================
> --- trunk/modules/core/src/org/ecoinformatics/util/DelimitedReader.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/core/src/org/ecoinformatics/util/DelimitedReader.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -1,517 +0,0 @@
> -/**
> - *    '$RCSfile$'
> - *
> - *     '$Author$'
> - *       '$Date$'
> - *   '$Revision$'
> - *
> - *  For Details: http://kepler.ecoinformatics.org
> - *
> - * Copyright (c) 2003 The Regents of the University of California.
> - * All rights reserved.
> - *
> - * Permission is hereby granted, without written agreement and without
> - * license or royalty fees, to use, copy, modify, and distribute this
> - * software and its documentation for any purpose, provided that the
> - * above copyright notice and the following two paragraphs appear in
> - * all copies of this software.
> - *
> - * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
> - * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
> - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
> - * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
> - * OF SUCH DAMAGE.
> - *
> - * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
> - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
> - * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY
> - * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
> - * UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
> - */
> -
> -package org.ecoinformatics.util;
> -
> -import java.io.InputStream;
> -import java.io.InputStreamReader;
> -import java.util.Vector;
> -
> -import org.apache.commons.logging.Log;
> -import org.apache.commons.logging.LogFactory;
> -
> -/**
> - * tokenizes a delimited file. This reader assumes that one record is 
> on one
> - * line which ends with the line
> - */
> -public class DelimitedReader {
> -    private InputStreamReader dataReader;
> -    private Vector[] lines;
> -    private Vector linesVector;
> -    private int numHeaderLines;
> -    private int numRecords;
> -    private boolean stripHeader = false;
> -    private int numCols;
> -    private String delimiter;
> -    private String lineEnding;
> -    private boolean collapseDilimiter = false;
> -    private int numFooterLines = 0;
> -    private Vector footerBuffer = new Vector();
> -    private boolean initializedFooterBuffer = false;
> -    private int headLineNumberCount = 0;
> -    private boolean isLenient = false;
> -    private String discoveredLineEnding = null;
> -    private static Vector possibleLineEndings = null;
> -
> -    private static Log log;
> -    static {
> -        log = 
> LogFactory.getLog("org.ecoinformatics.util.DelimitedReader");
> -        possibleLineEndings = new Vector();
> -        possibleLineEndings.add("\n");
> -        possibleLineEndings.add("\r");
> -        possibleLineEndings.add("\r\n");
> -    }
> -
> -    /**
> -     * constructor. reads the csv stream.
> -     *
> -     * @param delimString
> -     *            the delimited stream to read
> -     * @param numCols
> -     *            the number of columns in the stream
> -     * @param delimiter
> -     *            the delimiter to tokenize on
> -     * @param numHeaderLines
> -     *            the number of lines to skip at the top of the file
> -     * @param lineEnding
> -     *            the line ending char(s)...either "\n"lo (unix),
> -     * @param isLenient
> -     *            specifies if extra columns should be ignored "\r\n" 
> (windoze)
> -     *            or "\r" (mac)
> -     */
> -    public DelimitedReader(String data, int numCols, String delimiter,
> -            int numHeaderLines, String lineEnding, int numRecords,
> -            boolean isLenient) throws Exception {
> -        this.numHeaderLines = numHeaderLines;
> -        this.numCols = numCols;
> -        this.numRecords = numRecords;
> -        log.debug("Delimiter is: " + delimiter);
> -        this.delimiter = unescapeDelimiter(delimiter);
> -        log.debug("LineEnding is: " + lineEnding);
> -        this.lineEnding = unescapeDelimiter(lineEnding);
> -        this.isLenient = isLenient;
> -
> -        // lines = new Vector[numRecords + numHeaderLines + 1];
> -        linesVector = new Vector();
> -
> -        int begin = 0;
> -        int end = 0;
> -        // int i = 0;
> -        while (end < data.length()) { // add each line of the string as an
> -                                        // element in a vector
> -            end = data.indexOf(this.lineEnding, begin); // DFH 'this.' 
> added
> -            if (end == -1) {
> -                end = data.length();
> -            }
> -            String line = data.substring(begin, end);
> -            if (!line.trim().equals("")) {
> -                // take off the line ending
> -                // MBJ: I commented out the next line as it was improperly
> -                // truncating lines
> -                // I'm not sure why it was there in the first place, as 
> the
> -                // previous substring
> -                // removed the delimiter
> -                // line = line.substring(0, line.length() -
> -                // lineEnding.length());
> -
> -                // split the line based on the delimiter
> -                Vector v = splitDelimitedRowStringIntoVector(line);
> -                /*
> -                 * String[] s = line.split(delimiter.trim(), numCols); 
> Vector v
> -                 * = new Vector(); for(int j=0; j<s.length; j++) {
> -                 * v.addElement(s[j]); }
> -                 *
> -                 * if(v.size() < numCols) { int vsize = v.size(); 
> for(int j=0;
> -                 * j<numCols - vsize; j++) { //add any elements that 
> aren't
> -                 * there so that all the records have the //same number 
> of cols
> -                 * v.addElement(""); } }
> -                 */
> -                // lines[i] = v;
> -                linesVector.add(v);
> -                // i++;
> -            }
> -            // go to the next line
> -            begin = end + this.lineEnding.length(); // DFH 'this.' added
> -        }
> -
> -        int records = linesVector.size();
> -        if (records != this.numRecords) {
> -            this.numRecords = records;
> -            log
> -                    .warn("Metadata disagrees with actual data. 
> Changing number of records to: "
> -                            + records);
> -        }
> -        lines = new Vector[records];
> -        for (int k = 0; k < records; k++) {
> -            lines[k] = (Vector) linesVector.get(k);
> -        }
> -        /*
> -         * for(int j=0; j<lines.length; j++) { if(lines[j] == null) { 
> lines[j] =
> -         * new Vector(); } }
> -         */
> -
> -    }
> -
> -    /**
> -     * This constructor will read delimitered data from stream rather a 
> string
> -     *
> -     * @param dataStream
> -     *            InputStream The input stream
> -     * @param numCols
> -     *            int the number of columns
> -     * @param delimiter
> -     *            String delimiter the delimiter to tokenize on
> -     * @param numHeaderLines
> -     *            int numHeaderLines the number of lines to skip at the 
> top of
> -     *            the file
> -     * @param lineEnding
> -     *            String lineEnding the line ending char(s)...either "\n"
> -     *            (unix),"\r\n" (windoze) or "\r" (mac)
> -     * @param numRecords
> -     *            int number of rows in the input stream
> -     */
> -    public DelimitedReader(InputStream dataStream, int numCols,
> -            String delimiter, int numHeaderLines, String lineEnding,
> -            int numRecords, boolean stripHeader) {
> -        this.dataReader = new InputStreamReader(dataStream);
> -        this.numHeaderLines = numHeaderLines;
> -        this.numCols = numCols;
> -        this.numRecords = numRecords;
> -        log.debug("Delimiter is: " + delimiter);
> -        this.delimiter = unescapeDelimiter(delimiter);
> -        log.debug("LineEnding is: " + lineEnding);
> -        this.lineEnding = unescapeDelimiter(lineEnding);
> -        this.stripHeader = stripHeader;
> -
> -    }
> -
> -    /**
> -     * Method to set up data stream as source
> -     *
> -     * @param dataStream
> -     *            InputStream
> -     */
> -    public void setInputStream(InputStream dataStream) {
> -        this.dataReader = new InputStreamReader(dataStream);
> -    }
> -
> -    /**
> -     * Method to set up collapseDelimiter. If it is yes, consecutive 
> dilimiters
> -     * will be consider as single dilimiter.
> -     *
> -     * @param collapseDelimiter
> -     */
> -    public void setCollapseDelimiter(boolean collapseDelimiter) {
> -        this.collapseDilimiter = collapseDelimiter;
> -    }
> -
> -    /**
> -     * Set up the footer line number.
> -     *
> -     * @param numFooterLines
> -     */
> -    public void setNumFooterLines(int numFooterLines) {
> -        this.numFooterLines = numFooterLines;
> -    }
> -
> -    public boolean isLenient() {
> -        return isLenient;
> -    }
> -
> -    public void setLenient(boolean isLenient) {
> -        this.isLenient = isLenient;
> -    }
> -
> -    /**
> -     * This method is from data source as a input stream This method 
> will read
> -     * one row from and return a data vector which element is String 
> and the
> -     * value is field data. After reach the end of stream, empty vector 
> will be
> -     * returned. So this method can be iterated by a while loop until a 
> empty
> -     * vector hited. During the iteration, every data in the stream 
> will be
> -     * pulled out.
> -     *
> -     * @return Vector
> -     */
> -    public Vector getRowDataVectorFromStream() throws Exception {
> -        // System.out.println("the numFootLines is "+numFooterLines);
> -        if (!initializedFooterBuffer) {
> -            for (int i = 0; i < numFooterLines; i++) {
> -                // System.out.println("the initialize with footer lines");
> -                String rowData = readOneRowDataString();
> -                // System.out.println("the data vector in initailize is 
> "+rowData.toString());
> -                footerBuffer.add(rowData);
> -            }
> -            // this is for no footer lines
> -            if (numFooterLines == 0) {
> -                // System.out.println("the initialize without footer 
> lines");
> -                String rowData = readOneRowDataString();
> -                // System.out.println("The initial buffere vector is 
> "+rowData.toString());
> -                footerBuffer.add(rowData);
> -            }
> -            initializedFooterBuffer = true;
> -        }
> -        String nextRowData = readOneRowDataString();
> -        // System.out.println("the row string data from next row 
> "+nextRowData.toString());
> -        String oneRowDataString = null;
> -        Vector oneRowDataVector = new Vector();
> -
> -        if (nextRowData != null) {
> -            // System.out.println("before nextRowData is empty and 
> nextRowData is "+nextRowData.toString());
> -            oneRowDataString = (String) footerBuffer.remove(0);
> -            reIndexFooterBufferVector();
> -            footerBuffer.add(nextRowData);
> -        } else if (numFooterLines == 0 && !footerBuffer.isEmpty()) {
> -            // System.out.println("find the last line in fottlines num 
> is 0!!!!!!!!");
> -            oneRowDataString = (String) footerBuffer.remove(0);
> -        }
> -        // System.out.println("helere!!!");
> -        if (oneRowDataString != null) {
> -            log.debug("in dataReader is not null");
> -            oneRowDataVector = 
> splitDelimitedRowStringIntoVector(oneRowDataString);
> -        }
> -        // System.out.println("the row data from buffer 
> "+oneRowDataVector.toString());
> -        return oneRowDataVector;
> -    }
> -
> -    /*
> -     * This method will read a row data from vector. It discard the 
> head lines.
> -     * but it doesn't dsicard footer lines This method will be called by
> -     * getRowDataVectorFromStream
> -     */
> -    private String readOneRowDataString() {
> -        // Vector oneRowDataVector = new Vector();
> -        StringBuffer rowData = new StringBuffer();
> -        String rowDataString = null;
> -        int singleCharactor = -2;
> -
> -        if (dataReader != null) {
> -            // log.debug("in dataReader is not null");
> -            try {
> -                while (singleCharactor != -1) {
> -                    // log.debug("in singleCharactor is not null");
> -                    singleCharactor = dataReader.read();
> -                    char charactor = (char) singleCharactor;
> -                    rowData.append(charactor);
> -                    // find string - line ending in the row data
> -                    boolean foundLineEnding = 
> (rowData.indexOf(lineEnding) != -1);
> -
> -                    // if we are being lenient, try some other line 
> endings for
> -                    // parsing the data
> -                    if (!foundLineEnding && this.isLenient()) {
> -                        // have we discovered the ending already in 
> this data?
> -                        if (this.discoveredLineEnding != null) {
> -                            foundLineEnding = (rowData
> -                                    .indexOf(this.discoveredLineEnding) 
> != -1);
> -                        }
> -                        // otherwise we need to try a few of them out
> -                        else {
> -                            for (int i = 0; i < 
> possibleLineEndings.size(); i++) {
> -                                String possibleLineEnding = (String) 
> possibleLineEndings
> -                                        .get(i);
> -                                foundLineEnding = (rowData
> -                                        .indexOf(possibleLineEnding) != 
> -1);
> -                                if (foundLineEnding) {
> -                                    this.discoveredLineEnding = 
> possibleLineEnding;
> -                                    break;
> -                                }
> -                            }
> -                        }
> -                    }
> -                    // finally see if we found the end of the line
> -                    if (foundLineEnding) {
> -                        log.debug("found line ending");
> -                        // strip the header lines
> -                        if (stripHeader && numHeaderLines > 0
> -                                && headLineNumberCount < numHeaderLines) {
> -                            // reset string buffer(descard the header 
> line)
> -                            rowData = null;
> -                            rowData = new StringBuffer();
> -
> -                        } else {
> -                            rowDataString = rowData.toString();
> -                            log.debug("The row data is " + rowDataString);
> -                            break;
> -                        }
> -                        headLineNumberCount++;
> -                    }
> -                }
> -            } catch (Exception e) {
> -                log.debug("Couldn't read data from input stream");
> -            }
> -        }
> -        // System.out.println("the row data before reutrn is 
> "+rowDataString);
> -        return rowDataString;
> -    }
> -
> -    /*
> -     * This method will forward one index for every element, 1 -> 0, 2->1
> -     */
> -    private void reIndexFooterBufferVector() {
> -        for (int i = 0; i < numFooterLines - 2; i++) {
> -            Vector element = (Vector) footerBuffer.elementAt(i + 1);
> -            footerBuffer.add(i, element);
> -        }
> -    }
> -
> -    /*
> -     * This method will read a delimitered string and put a delimitered 
> part
> -     * into an element in a vector. If the vector size is less than the 
> column
> -     * number empty string will be added.
> -     */
> -    private Vector splitDelimitedRowStringIntoVector(String data)
> -            throws Exception {
> -        Vector result = new Vector();
> -        if (data == null) {
> -            return result;
> -        }
> -        String[] s = null;
> -        if (!collapseDilimiter) {
> -            s = data.split(delimiter);
> -        } else {
> -            String newDelimiterWithRegExpress = delimiter + "+";
> -            s = data.split(newDelimiterWithRegExpress);
> -
> -        }
> -
> -        if (s != null) {
> -            if (!isLenient && s.length > numCols) {
> -                throw new Exception("Metadata sees data has " + numCols
> -                        + " columns but actually data has " + s.length
> -                        + " columns. Please make sure metadata is 
> correct!");
> -            }
> -            int columnCount = Math.min(s.length, numCols);
> -            for (int j = 0; j < columnCount; j++) {
> -
> -                if (s[j] != null) {
> -                    result.addElement(s[j].trim());
> -                } else {
> -                    result.addElement("");
> -                }
> -            }
> -            // add any elements that aren't there so that all the 
> records have
> -            // the
> -            // same number of cols
> -            if (result.size() < numCols) {
> -                int vsize = result.size();
> -                for (int j = 0; j < numCols - vsize; j++) {
> -                    result.addElement("");
> -                }
> -            }
> -        }
> -        return result;
> -    }
> -
> -    /**
> -     * returns the data as an array of vectors. each vector will have 
> the same
> -     * number of elements as there are columns in the data.
> -     *
> -     * @param stripHeaderLines
> -     *            true if the header lines should not be included in the
> -     *            returned data, false otherwise
> -     */
> -    public Vector[] getTokenizedData(boolean stripHeaderLines) {
> -        if (stripHeaderLines) {
> -            Vector[] strip = null;
> -            if (numRecords > numHeaderLines) {
> -                strip = new Vector[numRecords - numHeaderLines];
> -                for (int i = numHeaderLines; i < lines.length; i++) {
> -                    strip[i - numHeaderLines] = lines[i];
> -                }
> -            }
> -            return strip;
> -        } else {
> -            return lines;
> -        }
> -    }
> -
> -    /**
> -     * returns a string representation of the data
> -     */
> -    public String toString() {
> -        StringBuffer sb = new StringBuffer();
> -        for (int i = 0; i < lines.length; i++) {
> -            log.debug("line[" + (i + 1) + "]: " + lines[i].toString());
> -            for (int j = 0; j < lines[i].size(); j++) {
> -                sb.append((String) lines[i].elementAt(j));
> -                if (j != lines[i].size() - 1) {
> -                    sb.append(" || ");
> -                }
> -            }
> -            sb.append(lineEnding);
> -        }
> -        return sb.toString();
> -    }
> -
> -    /**
> -     * Convert a string escaped representation of a delimiter character 
> into an
> -     * the actual String for that delimiter. This is used for translating
> -     * escaped versions of tab, newline, and carriage return characters 
> to their
> -     * real character values.
> -     *
> -     * @param delimiter
> -     *            the String representing the delimiter
> -     * @return the actual String for the delimiter
> -     */
> -    public static String unescapeDelimiter(String delimiter) {
> -        String newDelimiter = delimiter;
> -
> -        if (delimiter == null) {
> -            log.debug("Delimiter is null and we set up to \n.");
> -            newDelimiter = "\n";
> -        } else if (delimiter.equals("\\t")) {
> -            log.debug("Tab interpreted incorrectly as string.");
> -            newDelimiter = "\t";
> -        } else if (delimiter.equals("\\n")) {
> -            log.debug("Newline interpreted incorrectly as string.");
> -            newDelimiter = "\n";
> -        } else if (delimiter.equals("\\r")) {
> -            log.debug("CR interpreted incorrectly as string.");
> -            newDelimiter = "\r";
> -        } else if (delimiter.equals("\\r\\n")) {
> -            log.debug("CRNL interpreted incorrectly as string.");
> -            newDelimiter = "\r\n";
> -        } else if (delimiter.startsWith("#")) {
> -            log.debug("XML entity charactor.");
> -            String digits = delimiter.substring(1, delimiter.length());
> -            int radix = 10;
> -            if (digits.startsWith("x")) {
> -                log.debug("Radix is " + 16);
> -                radix = 16;
> -                digits = digits.substring(1, digits.length());
> -            }
> -            log.debug("Int value of  delimiter is " + digits);
> -
> -            newDelimiter = transferDigitsToCharString(radix, digits);
> -
> -        } else if (delimiter.startsWith("0x") || 
> delimiter.startsWith("0X")) {
> -            int radix = 16;
> -            String digits = delimiter.substring(2, delimiter.length());
> -            log.debug("Int value of  delimiter is " + digits);
> -            newDelimiter = transferDigitsToCharString(radix, digits);
> -        }
> -
> -        return newDelimiter;
> -    }
> -
> -    private static String transferDigitsToCharString(int radix, String 
> digits) {
> -        if (digits == null) {
> -            return null;
> -        }
> -        Integer integer = Integer.valueOf(digits, radix);
> -        int inter = integer.intValue();
> -        log.debug("The decimal value of char is " + inter);
> -        char charactor = (char) inter;
> -        String newDelimiter = Character.toString(charactor);
> -        log.debug("The new delimter is " + newDelimiter);
> -        return newDelimiter;
> -    }
> -}
> 
> Modified: trunk/modules/core/src/org/kepler/kar/KARBuilder.java
> ===================================================================
> --- trunk/modules/core/src/org/kepler/kar/KARBuilder.java    2009-08-26 
> 17:28:04 UTC (rev 20470)
> +++ trunk/modules/core/src/org/kepler/kar/KARBuilder.java    2009-08-26 
> 17:38:14 UTC (rev 20471)
> @@ -43,7 +43,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
>  import org.kepler.moml.NamedObjId;
>  import org.kepler.objectmanager.ActorMetadata;
>  import org.kepler.objectmanager.ObjectManager;
> 
> Modified: trunk/modules/core/src/org/kepler/kar/KARCacheManager.java
> ===================================================================
> --- trunk/modules/core/src/org/kepler/kar/KARCacheManager.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/core/src/org/kepler/kar/KARCacheManager.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -10,7 +10,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
>  import org.kepler.objectmanager.ObjectManager;
>  import org.kepler.objectmanager.cache.CacheManager;
>  import org.kepler.objectmanager.cache.CacheObject;
> 
> Modified: 
> trunk/modules/core/src/org/kepler/objectmanager/cache/CacheManager.java
> ===================================================================
> --- 
> trunk/modules/core/src/org/kepler/objectmanager/cache/CacheManager.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/core/src/org/kepler/objectmanager/cache/CacheManager.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -50,7 +50,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
>  import org.kepler.kar.KAREntryHandler;
>  import org.kepler.kar.KAREntryHandlerFactory;
>  import org.kepler.objectmanager.lsid.KeplerLSID;
> 
> Modified: 
> trunk/modules/core/src/org/kepler/objectmanager/cache/CacheUtil.java
> ===================================================================
> --- trunk/modules/core/src/org/kepler/objectmanager/cache/CacheUtil.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/core/src/org/kepler/objectmanager/cache/CacheUtil.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -42,7 +42,7 @@
>  import java.sql.SQLException;
>  import java.sql.Statement;
> 
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
> 
>  /**
>   * Class that represents an object in the ObjectCache. This class 
> should be
> 
> Modified: 
> trunk/modules/core/src/org/kepler/objectmanager/cache/LocalRepositoryManager.java 
> 
> ===================================================================
> --- 
> trunk/modules/core/src/org/kepler/objectmanager/cache/LocalRepositoryManager.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/core/src/org/kepler/objectmanager/cache/LocalRepositoryManager.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -56,7 +56,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
>  import org.kepler.build.modules.Module;
>  import org.kepler.build.modules.ModuleTree;
>  import org.kepler.build.project.ProjectLocator;
> 
> Modified: 
> trunk/modules/core/src/org/kepler/objectmanager/data/DataTypeResolver.java
> ===================================================================
> --- 
> trunk/modules/core/src/org/kepler/objectmanager/data/DataTypeResolver.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/core/src/org/kepler/objectmanager/data/DataTypeResolver.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -33,7 +33,7 @@
>  package org.kepler.objectmanager.data;
> 
>  import org.apache.xpath.CachedXPathAPI;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.w3c.dom.Node;
>  import org.w3c.dom.NodeList;
> 
> 
> Modified: 
> trunk/modules/core/src/org/kepler/objectmanager/data/text/TextComplexFormatDataReader.java 
> 
> ===================================================================
> --- 
> trunk/modules/core/src/org/kepler/objectmanager/data/text/TextComplexFormatDataReader.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/core/src/org/kepler/objectmanager/data/text/TextComplexFormatDataReader.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -36,7 +36,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DelimitedReader;
> +import org.kepler.util.DelimitedReader;
>  import org.kepler.objectmanager.data.db.Attribute;
>  import org.kepler.objectmanager.data.db.Entity;
> 
> 
> Modified: 
> trunk/modules/core/src/org/kepler/objectmanager/lsid/LSIDGenerator.java
> ===================================================================
> --- 
> trunk/modules/core/src/org/kepler/objectmanager/lsid/LSIDGenerator.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/core/src/org/kepler/objectmanager/lsid/LSIDGenerator.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -44,7 +44,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
>  import org.kepler.build.project.ProjectLocator;
>  import org.kepler.objectmanager.cache.CacheException;
>  import org.kepler.objectmanager.cache.CacheManager;
> 
> Modified: trunk/modules/core/src/org/kepler/util/AuthNamespace.java
> ===================================================================
> --- trunk/modules/core/src/org/kepler/util/AuthNamespace.java    
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/core/src/org/kepler/util/AuthNamespace.java    
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -25,7 +25,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.build.project.ProjectLocator;
>  import org.w3c.dom.Node;
>  import org.w3c.dom.NodeList;
> 
> Copied: trunk/modules/core/src/org/kepler/util/Config.java (from rev 
> 20445, trunk/modules/core/src/org/ecoinformatics/util/Config.java)
> ===================================================================
> --- trunk/modules/core/src/org/kepler/util/Config.java            (rev 0)
> +++ trunk/modules/core/src/org/kepler/util/Config.java    2009-08-26 
> 17:38:14 UTC (rev 20471)
> @@ -0,0 +1,515 @@
> +/**
> + *    '$RCSfile$'
> + *
> + *     '$Author$'
> + *       '$Date$'
> + *   '$Revision$'
> + *
> + *  For Details: http://kepler.ecoinformatics.org
> + *
> + * Copyright (c) 2003 The Regents of the University of California.
> + * All rights reserved.
> + *
> + * Permission is hereby granted, without written agreement and without
> + * license or royalty fees, to use, copy, modify, and distribute this
> + * software and its documentation for any purpose, provided that the
> + * above copyright notice and the following two paragraphs appear in
> + * all copies of this software.
> + *
> + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
> + * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
> + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
> + * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
> + * OF SUCH DAMAGE.
> + *
> + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
> + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
> + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY
> + * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
> + * UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
> + */
> +
> +package org.kepler.util;
> +
> +import java.io.File;
> +import java.io.FileInputStream;
> +import java.io.FileNotFoundException;
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.net.URI;
> +import java.net.URL;
> +import java.util.Collections;
> +import java.util.Hashtable;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Map;
> +import java.util.StringTokenizer;
> +import java.util.Vector;
> +import java.util.jar.Attributes;
> +import java.util.jar.JarInputStream;
> +import java.util.jar.Manifest;
> +
> +import javax.xml.transform.TransformerException;
> +
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +import org.apache.xpath.XPathAPI;
> +import org.w3c.dom.Node;
> +import org.w3c.dom.NodeList;
> +
> +import edu.ucsb.nceas.configxml.ConfigXML;
> +import edu.ucsb.nceas.configxml.exception.ElementNotFoundException;
> +import edu.ucsb.nceas.configxml.exception.IndexTooLargeException;
> +
> +/**
> + *
> + * configuration file routines
> + *
> + */
> +public class Config {
> +    private static final Log log = 
> LogFactory.getLog(Config.class.getName());
> +    private static final boolean isDebugging = log.isDebugEnabled();
> +   
> +    private static final String configfilename = 
> "configurations/config.xml";
> +
> +    private static final String settingsdir = ".kepler";
> +
> +    // Define useful static strings. At some point in time, these could 
> be moved
> +    // into the config.xml file, environment variable, or something else
> +    // which could move this directory to another location.
> +
> +    // KEPLER_USER_DIR is returned by Config.getUserDirPath().
> +    private static final String KEPLER_USER_DIR = System
> +            .getProperty("user.home")
> +            + File.separator + settingsdir + File.separator;
> +
> +    // KEPLER_CACHE_DIR is returned by Config.getCacheDirPath().
> +    private static final String KEPLER_CACHE_DIR = KEPLER_USER_DIR + 
> "cache"
> +            + File.separator;
> +
> +    /**
> +     * The singleton instance.
> +     */
> +    private static Config configure;
> +    static {
> +        try {
> +            configure = new Config();
> +        } catch (FileNotFoundException ex) {
> +            throw new ExceptionInInitializerError(ex);
> +        }
> +    }
> +
> +    // Instance variables.
> +
> +    /**
> +     * The underlying ConfigXML object.
> +     */
> +    private ConfigXML config;
> +
> +    /**
> +     * Error indicator. Set to true if ConfigXML has problems.
> +     */
> +    private boolean error = false;
> +
> +    /**
> +     * Method for get object as a singleton class
> +     *
> +     * @return Config
> +     */
> +    public static Config getInstance() {
> +        return configure;
> +    }
> +
> +    /*
> +     * Constructor for ConfigDatasource.
> +     *
> +     * @throws FileNotFoundException
> +     *
> +     * @throws Exception
> +     */
> +    private Config() throws FileNotFoundException {
> +
> +        InputStream is = null;
> +
> +    URL kernelConfigURL = ClassLoader.getSystemClassLoader()
> +                        .getResource(configfilename);
> +                       
> +    File kernelConfigFile = null;
> +    try
> +    {
> +      kernelConfigFile = new File(new URI(kernelConfigURL.toString()));
> +    }
> +    catch(Exception e)
> +    {
> +      throw new FileNotFoundException("Error getting config file from " +
> +        "classpath: " + e.getMessage());
> +    }
> +
> +        //if (kernelConfig == null) {
> +    if (!kernelConfigFile.exists()) {
> +            throw new FileNotFoundException("Failed to find " + 
> configfilename + " in the classpath: "
> +                            + _classpath());
> +        }
> +        log.debug("Opening config.xml file found at: " + 
> kernelConfigFile.getAbsolutePath());
> +        try {
> +            is = (InputStream) new FileInputStream(kernelConfigFile);
> +            if (is == null) {
> +                throw new FileNotFoundException("Failed to find \""
> +                        + configfilename + "\" as a resource in the 
> classpath: "
> +                            + _classpath());
> +            }
> +            config = new ConfigXML(is, 
> kernelConfigFile.getAbsolutePath());
> +        } catch (FileNotFoundException fnfe) {
> +            error = true;
> +            FileNotFoundException exception = new FileNotFoundException(
> +                                            "Config file not found at \""
> +                                            + configfilename
> +                                            + "\" in the classpath: "
> +                                            + _classpath());
> +            exception.initCause(fnfe);
> +            throw exception;
> +        } catch (Exception e) {
> +            error = true;
> +            throw new RuntimeException("Unspecified error creating 
> config "
> +                    + "object from \"" + configfilename + "\"", e);
> +        } finally {
> +            if (is != null) {
> +                try {
> +                    is.close();
> +                } catch (IOException ex) {
> +                    throw new RuntimeException("Failed to close \""
> +                            + configfilename + "\"", ex);
> +                }
> +            }
> +        }
> +
> +    }
> +
> +  /**
> +   * get the classpath from a manifest file
> +   */
> +  private String processManifestClasspath(String classpath) throws 
> IOException
> +  {
> +    File f = new File(classpath);
> +    JarInputStream jar = new JarInputStream(new FileInputStream(f));
> +    Manifest m = jar.getManifest();
> +    Attributes mainAtts = m.getMainAttributes();
> +    Iterator itt = mainAtts.entrySet().iterator();
> +    while(itt.hasNext())
> +    { //find the classpath in the manifest
> +      Map.Entry entry = (Map.Entry)itt.next();
> +      if((((Object)entry.getKey()).toString()).equals("Class-Path"))
> +      {
> +        classpath = (String)entry.getValue();
> +        break;
> +      }
> +      //System.out.println("name: " + 
> ((Object)entry.getKey()).toString());
> +      //System.out.println("val: " + 
> ((Object)entry.getValue()).toString());
> +    }
> +
> +    //change the manifest classpath into a normal looking classpath
> +    classpath = classpath.replaceAll("\\s", 
> System.getProperty("path.separator"));
> +    //System.out.println("classpath: " + classpath);
> +    return classpath;
> +  }
> +
> +    /**
> +     * Method to get a string value from config.xml base on given 
> element path
> +     *
> +     * @param path
> +     *            String
> +     * @return String
> +     */
> +    public static String getValue(String path) {
> +        Config configInstance = Config.getInstance();
> +        return configInstance.getValueFromPath(path);
> +    }
> +
> +    private String getValueFromPath(String path) {
> +        if (isDebugging) {
> +            log.debug(path);
> +        }
> +        String value = null;
> +        if (error) {
> +            return value;
> +        }
> +        if (path == null) {
> +            return value;
> +        }
> +        try {
> +            Vector valueVector = config.getValuesForPath(path);
> +            value = (String) valueVector.elementAt(0);
> +        } catch (ElementNotFoundException e1) {
> +            log.debug("Element " + path + " not found");
> +        } catch (Exception e2) {
> +            log.error("Exception occurred:", e2);
> +        }
> +        if (isDebugging) {
> +            log.debug(value);
> +        }
> +        return value;
> +    }// getValues
> +
> +    /**
> +     * Method returns an unmodifiable list of values from config.xml 
> base on
> +     * given path. If the argument is null or not found in config.xml, 
> return
> +     * EMPTY_LIST.
> +     *
> +     * @param path
> +     *            String
> +     * @return Vector
> +     */
> +    public static List getList(String path) {
> +        Config configInstance = Config.getInstance();
> +        return configInstance.getListFromPath(path);
> +    }
> +
> +    private List getListFromPath(String path) {
> +        List value = Collections.EMPTY_LIST;
> +        if (error) {
> +            return value;
> +        }
> +        if (path == null) {
> +            return value;
> +        }
> +        try {
> +            value = 
> Collections.unmodifiableList(config.getValuesForPath(path));
> +        } catch (ElementNotFoundException e1) {
> +            log.debug("Element " + path + " not found");
> +        } catch (Exception e2) {
> +            log.error("Exception occurred:", e2);
> +        }
> +
> +        return value;
> +    }// getList
> +
> +    /**
> +     * Method to get unmodifiable map for some given pathes in 
> config.xml. If
> +     * the arguments are invalid (either null) or not found, return an 
> empty
> +     * map. Here is the segment of config.xml: <parenetElement>
> +     * <keyElement>key1</keyElement> <valueElement>value1</valueElement>
> +     * </parentElement> <parentElement> <keyElement>key2</keyElement>
> +     * <valueElement>value2</valueElement> </parentElement> The 
> parentPath can
> +     * be "//parentElement", keyPath should be "./keyElement", and 
> valuePath
> +     * should be "./valuePath".
> +     *
> +     * @param parentPath
> +     *            String
> +     * @param keyPath
> +     *            String
> +     * @param valuePath
> +     *            String
> +     * @throws ElementNotFoundException
> +     * @throws Exception
> +     * @return Hashtable
> +     */
> +    public static Map getMap(String parentPath, String keyPath, String 
> valuePath) {
> +        Config configInstance = Config.getInstance();
> +        return configInstance.getMapFromPath(parentPath, keyPath, 
> valuePath);
> +    }
> +
> +    private Map getMapFromPath(String parentPath, String keyPath,
> +            String valuePath) {
> +        Map map = Collections.EMPTY_MAP;
> +        if (error) {
> +            return map;
> +        }
> +        if (parentPath == null || keyPath == null || valuePath == null) {
> +            return map;
> +        }
> +        NodeList nl = null;
> +        try {
> +            nl = config.getPathContent(parentPath);
> +        } catch (ElementNotFoundException e1) {
> +            log.debug("Element " + parentPath + " not found");
> +            return map;
> +        } catch (TransformerException e2) {
> +            log.error("Transfomer Exception when reading parentPath "
> +                    + parentPath, e2);
> +            return map;
> +        }
> +        // At this point nl != null because we didn't get an
> +        // ElementNotFoundException
> +        map = new Hashtable();
> +        try {
> +            for (int i = 0; i < nl.getLength(); i++) {
> +                Node n = nl.item(i);
> +                Node keyNode = XPathAPI.selectSingleNode(n, keyPath);
> +                Node valueNode = XPathAPI.selectSingleNode(n, valuePath);
> +                if (keyNode == null || valueNode == null) {
> +                    log.debug("keyNode or valueNode not found at 
> iteration "
> +                            + i);
> +                    continue;
> +                }
> +
> +                String keyNodeValue = 
> keyNode.getFirstChild().getNodeValue();
> +                String valueNodeValue = valueNode.getFirstChild()
> +                        .getNodeValue();
> +                if (keyNodeValue == null || valueNodeValue == null) {
> +                    log
> +                            .debug("keyNodeValue or valueNodeValue is 
> null at iteration "
> +                                    + i);
> +                    continue;
> +                }
> +                log.debug("The value of " + keyPath + " " + keyNodeValue
> +                        + " and " + " the value of " + valuePath + " "
> +                        + valueNodeValue + " are put into mapping");
> +
> +                map.put(keyNodeValue, valueNodeValue);
> +            } // for
> +        } catch (TransformerException e) {
> +            log.error("Transfomer Exception in loop ", e);
> +        }
> +        return Collections.unmodifiableMap(map);
> +    }// getMap
> +
> +    /**
> +     * Get a node list base on the given xpath in config file
> +     *
> +     * @param path
> +     *            String the xpath
> +     * @return NodeList
> +     */
> +    public static NodeList getNodeListFromPath(String path) {
> +        Config configInstance = Config.getInstance();
> +        return configInstance.getNodeListFromXPath(path);
> +    }
> +
> +    /*
> +     * This method will get a node list from config file
> +     */
> +    private NodeList getNodeListFromXPath(String xpath) {
> +        NodeList list = null;
> +        if (error) {
> +            return list;
> +        }
> +        try {
> +            list = config.getPathContent(xpath);
> +        } catch (ElementNotFoundException e) {
> +            log.debug("Element Not found for " + xpath);
> +        } catch (TransformerException e2) {
> +            log.error("Transformer Exception for " + xpath);
> +        }
> +        return list;
> +    }
> +
> +    /**
> +     * Method to get error state
> +     */
> +    public boolean getErrorState() {
> +        return error;
> +    }
> +
> +    /**
> +     * Returns the path of the Kepler hidden working directory 
> terminated with
> +     * File.seperator. This directory is current coded to be
> +     * ${system.home}/.kepler.
> +     *
> +     * @return the path to the .kepler directory.
> +     * @deprecated use DotKeplerManager.getDotKeplerPath() instead.
> +     */
> +    public static String getUserDirPath() {
> +        return KEPLER_USER_DIR;
> +    }
> +
> +    /**
> +     * Returns the path to a subdirectory of the working directory. The 
> pathname
> +     * is normalized to use the system style File.separator.
> +     *
> +     *
> +     * @param path
> +     *            a subdirectory of the working directory
> +     * @return normalized pathname of the subdirectory.
> +     * @deprecated use DotKeplerManager.getDotKeplerPath(String) instead.
> +     */
> +    public static String getUserDirPath(String path) {
> +        String pdir = KEPLER_USER_DIR + path;
> +        if (pdir.endsWith(File.separator)) {
> +            return pdir;
> +        } else {
> +            return pdir + File.separator;
> +        }
> +    }
> +
> +    /**
> +     * Returns the path to the Cache working directory terminated with
> +     * File.seperator. This directory is currently in getUserDirPath() +
> +     * "cache".
> +     *
> +     * @return the path to the cache directory
> +     * @deprecated use DotKeplerManager.getCacheDirPath()
> +     */
> +    public static String getCacheDirPath() {
> +        return KEPLER_CACHE_DIR;
> +    }
> +
> +    /**
> +     * Method save. - pass through to ConfigXML member
> +     *
> +     * @throws Exception
> +     */
> +    public void save() throws Exception {
> +        config.save();
> +    }
> +
> +    /**
> +     * Method set. - pass through to ConfigXML member
> +     *
> +     * @param arg1
> +     * @param arg2
> +     * @param arg3
> +     * @throws ElementNotFoundException
> +     */
> +    public void set(String arg1, int arg2, String arg3)
> +            throws ElementNotFoundException {
> +        config.set(arg1, arg2, arg3);
> +    }
> +
> +    /**
> +     * Method deleteSubFields. - pass through to ConfigXML member
> +     *
> +     * @param parentName
> +     * @param i
> +     * @throws IndexTooLargeException
> +     */
> +    public void deleteSubFields(String parentName, int i)
> +            throws IndexTooLargeException {
> +        config.deleteSubFields(parentName, i);
> +    }
> +
> +    /**
> +     * Method addSubFields. - pass through to ConfigXML member
> +     *
> +     * @param parentName
> +     * @param i
> +     * @param childName
> +     * @param value
> +     * @throws IndexTooLargeException
> +     */
> +    public void addSubField(String parentName, int i, String childName,
> +            String value) throws IndexTooLargeException {
> +        config.addSubField(parentName, i, childName, value);
> +    }
> +
> +    /** Return the classpath as a string.
> +     *  @return the classpath
> +     */
> +    private String _classpath() {
> +        StringBuffer classpath = new StringBuffer();
> +        try {
> +        String cp = System.getProperty("java.class.path");
> +        StringTokenizer st = new StringTokenizer(cp, System
> +                             .getProperty("path.separator"));
> +        while (st.hasMoreTokens()) {
> +            if (classpath.length() > 0) {
> +            classpath.append(System.getProperty("path.separator"));
> +            }
> +            classpath.append((String)st.nextToken());
> +        }
> +        } catch (Exception ex) {
> +        classpath.append(ex.toString());
> +        }
> +        return classpath.toString();
> +    }
> +}
> 
> Copied: trunk/modules/core/src/org/kepler/util/DBConnectionFactory.java 
> (from rev 20445, 
> trunk/modules/core/src/org/ecoinformatics/util/DBConnectionFactory.java)
> ===================================================================
> --- trunk/modules/core/src/org/kepler/util/DBConnectionFactory.java     
>                     (rev 0)
> +++ trunk/modules/core/src/org/kepler/util/DBConnectionFactory.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -0,0 +1,173 @@
> +/**
> + *    '$RCSfile$'
> + *
> + *     '$Author$'
> + *       '$Date$'
> + *   '$Revision$'
> + *
> + *  For Details: http://kepler.ecoinformatics.org
> + *
> + * Copyright (c) 2003 The Regents of the University of California.
> + * All rights reserved.
> + *
> + * Permission is hereby granted, without written agreement and without
> + * license or royalty fees, to use, copy, modify, and distribute this
> + * software and its documentation for any purpose, provided that the
> + * above copyright notice and the following two paragraphs appear in
> + * all copies of this software.
> + *
> + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
> + * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
> + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
> + * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
> + * OF SUCH DAMAGE.
> + *
> + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
> + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
> + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY
> + * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
> + * UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
> + */
> +
> +package org.kepler.util;
> +
> +import java.io.File;
> +import java.sql.Connection;
> +import java.sql.SQLException;
> +
> +import javax.sql.DataSource;
> +
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +import org.hsqldb.Server;
> +import org.hsqldb.jdbc.jdbcDataSource;
> +import org.kepler.util.DotKeplerManager;
> +
> +/**
> + * DBConnectionFactory creates connections to the hsql database.
> + * It launches HSQL in "Server" mode and creates a DataSource using the 
> configured
> + * username, password, and jdbc connection string.
> + * While it does not provide database connection pooling, it does allow
> + * multiple simultaneous connections to be made from different JVMs.
> + *
> + * @author Kevin Ruland
> + * @author Ben Leinfelder
> + *
> + */
> +public class DBConnectionFactory {
> +
> +    private static final String USERNAMEPATH = 
> "//sqlEngine[sqlEngineName=\"hsql\"]/userName";
> +    private static final String PASSWORDPATH = 
> "//sqlEngine[sqlEngineName=\"hsql\"]/password";
> +
> +    private static String username;
> +    private static String password;
> +    private static String dbName;
> +    private static String dbNamePath;
> +    private static String url;
> +    private static DataSource dataSource;
> +    private static Server server;
> +   
> +    private static Log log = LogFactory.getLog(DBConnectionFactory.class);
> +
> +    static {
> +        username = Config.getValue(USERNAMEPATH);
> +        password = Config.getValue(PASSWORDPATH);
> +        dbName = "hsqldb";
> +        dbNamePath = DotKeplerManager.getInstance().getCacheDirPath()
> +                + "cachedata" + File.separator + dbName;
> +       
> +        //using the "server" mode to allow multiple JVMs simultaneous 
> access
> +        url = "jdbc:hsqldb:hsql://localhost/" + dbName;
> +        //url = "jdbc:hsqldb:" + dbNamePath;
> +       
> +        server = new Server();
> +    }
> +
> +    /**
> +     * Method to get a connection to the internal DB.
> +     *
> +     * @throws SQLException
> +     *             If there is a problem creating the connection. One 
> possible
> +     *             solution is to remove the directory named by
> +     *             Config.getCacheDirPath().
> +     * @throws ClassNotFoundException
> +     * @return Connection
> +     */
> +    public static Connection getDBConnection() throws SQLException,
> +            ClassNotFoundException {
> +        return getDBConnection(username, password);
> +    }
> +
> +    /** Stop the HSQL Server. */
> +    public static void shutdownDBServer() {
> +        server.stop();
> +    }
> +
> +    private static Connection getDBConnection(String userName, String 
> password)
> +            throws SQLException, ClassNotFoundException {
> +
> +        Connection conn = null;
> +        try {
> +            conn = dataSource.getConnection();
> +        } catch (Exception e) {
> +            //start the server
> +            launchDBServer();
> +            initDataSource();
> +        }
> +        if (conn != null) {
> +            return conn;
> +        }
> +        //or try again
> +        try {
> +            conn = dataSource.getConnection();
> +            return conn;
> +        } catch (SQLException ex) {
> +            SQLException sqlException = new SQLException(
> +                    "Failed to connect to url \""
> +                            + url
> +                            + "\" as user \""
> +                            + userName
> +                            + ". Perhaps there was an error launching 
> the db server. "
> +                            + "In addition, sometimes the database "
> +                            + "cache can become corrupt, so another "
> +                            + "solution is to remove the \"" + dbNamePath
> +                            + "\" directory.");
> +            sqlException.setNextException(ex);
> +            throw sqlException;
> +        }
> +    }
> +   
> +    /**
> +     * DataSources are "preferred" over DriverManagers..
> +     * @see http://hsqldb.org/doc/src/org/hsqldb/jdbc/jdbcDataSource.html
> +     */
> +    private static void initDataSource() {
> +        //use the simple datasource provided by HSQL
> +        jdbcDataSource ds = new jdbcDataSource();
> +        ds.setDatabase(url);
> +        ds.setUser(username);
> +        ds.setPassword(password);
> +        dataSource = ds;
> +    }
> +   
> +    /**
> +     * Starts the HSQL Server in the first Kepler JVM
> +     * Subsequent JVMs will encounter a non-fatal BindException
> +     * and will carry on, connecting with the first Server
> +     * @see http://hsqldb.org/doc/src/org/hsqldb/Server.html
> +     *
> +     */
> +    private static void launchDBServer() {
> +        if (!log.isDebugEnabled()) {
> +            server.setLogWriter(null);
> +            server.setErrWriter(null);
> +        }
> +        server.setDatabasePath(0, dbNamePath);
> +        server.setDatabaseName(0, dbName);
> +        server.setSilent(true);
> +        server.setTrace(false);
> +        server.setNoSystemExit(true);
> +        server.start();
> +    }
> +}
> 
> Copied: trunk/modules/core/src/org/kepler/util/DelimitedReader.java 
> (from rev 20445, 
> trunk/modules/core/src/org/ecoinformatics/util/DelimitedReader.java)
> ===================================================================
> --- trunk/modules/core/src/org/kepler/util/DelimitedReader.java     
>                 (rev 0)
> +++ trunk/modules/core/src/org/kepler/util/DelimitedReader.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -0,0 +1,517 @@
> +/**
> + *    '$RCSfile$'
> + *
> + *     '$Author$'
> + *       '$Date$'
> + *   '$Revision$'
> + *
> + *  For Details: http://kepler.ecoinformatics.org
> + *
> + * Copyright (c) 2003 The Regents of the University of California.
> + * All rights reserved.
> + *
> + * Permission is hereby granted, without written agreement and without
> + * license or royalty fees, to use, copy, modify, and distribute this
> + * software and its documentation for any purpose, provided that the
> + * above copyright notice and the following two paragraphs appear in
> + * all copies of this software.
> + *
> + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
> + * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
> + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
> + * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
> + * OF SUCH DAMAGE.
> + *
> + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
> + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
> + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY
> + * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
> + * UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
> + */
> +
> +package org.kepler.util;
> +
> +import java.io.InputStream;
> +import java.io.InputStreamReader;
> +import java.util.Vector;
> +
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +
> +/**
> + * tokenizes a delimited file. This reader assumes that one record is 
> on one
> + * line which ends with the line
> + */
> +public class DelimitedReader {
> +    private InputStreamReader dataReader;
> +    private Vector[] lines;
> +    private Vector linesVector;
> +    private int numHeaderLines;
> +    private int numRecords;
> +    private boolean stripHeader = false;
> +    private int numCols;
> +    private String delimiter;
> +    private String lineEnding;
> +    private boolean collapseDilimiter = false;
> +    private int numFooterLines = 0;
> +    private Vector footerBuffer = new Vector();
> +    private boolean initializedFooterBuffer = false;
> +    private int headLineNumberCount = 0;
> +    private boolean isLenient = false;
> +    private String discoveredLineEnding = null;
> +    private static Vector possibleLineEndings = null;
> +
> +    private static Log log;
> +    static {
> +        log = LogFactory.getLog("org.kepler.util.DelimitedReader");
> +        possibleLineEndings = new Vector();
> +        possibleLineEndings.add("\n");
> +        possibleLineEndings.add("\r");
> +        possibleLineEndings.add("\r\n");
> +    }
> +
> +    /**
> +     * constructor. reads the csv stream.
> +     *
> +     * @param delimString
> +     *            the delimited stream to read
> +     * @param numCols
> +     *            the number of columns in the stream
> +     * @param delimiter
> +     *            the delimiter to tokenize on
> +     * @param numHeaderLines
> +     *            the number of lines to skip at the top of the file
> +     * @param lineEnding
> +     *            the line ending char(s)...either "\n"lo (unix),
> +     * @param isLenient
> +     *            specifies if extra columns should be ignored "\r\n" 
> (windoze)
> +     *            or "\r" (mac)
> +     */
> +    public DelimitedReader(String data, int numCols, String delimiter,
> +            int numHeaderLines, String lineEnding, int numRecords,
> +            boolean isLenient) throws Exception {
> +        this.numHeaderLines = numHeaderLines;
> +        this.numCols = numCols;
> +        this.numRecords = numRecords;
> +        log.debug("Delimiter is: " + delimiter);
> +        this.delimiter = unescapeDelimiter(delimiter);
> +        log.debug("LineEnding is: " + lineEnding);
> +        this.lineEnding = unescapeDelimiter(lineEnding);
> +        this.isLenient = isLenient;
> +
> +        // lines = new Vector[numRecords + numHeaderLines + 1];
> +        linesVector = new Vector();
> +
> +        int begin = 0;
> +        int end = 0;
> +        // int i = 0;
> +        while (end < data.length()) { // add each line of the string as an
> +                                        // element in a vector
> +            end = data.indexOf(this.lineEnding, begin); // DFH 'this.' 
> added
> +            if (end == -1) {
> +                end = data.length();
> +            }
> +            String line = data.substring(begin, end);
> +            if (!line.trim().equals("")) {
> +                // take off the line ending
> +                // MBJ: I commented out the next line as it was improperly
> +                // truncating lines
> +                // I'm not sure why it was there in the first place, as 
> the
> +                // previous substring
> +                // removed the delimiter
> +                // line = line.substring(0, line.length() -
> +                // lineEnding.length());
> +
> +                // split the line based on the delimiter
> +                Vector v = splitDelimitedRowStringIntoVector(line);
> +                /*
> +                 * String[] s = line.split(delimiter.trim(), numCols); 
> Vector v
> +                 * = new Vector(); for(int j=0; j<s.length; j++) {
> +                 * v.addElement(s[j]); }
> +                 *
> +                 * if(v.size() < numCols) { int vsize = v.size(); 
> for(int j=0;
> +                 * j<numCols - vsize; j++) { //add any elements that 
> aren't
> +                 * there so that all the records have the //same number 
> of cols
> +                 * v.addElement(""); } }
> +                 */
> +                // lines[i] = v;
> +                linesVector.add(v);
> +                // i++;
> +            }
> +            // go to the next line
> +            begin = end + this.lineEnding.length(); // DFH 'this.' added
> +        }
> +
> +        int records = linesVector.size();
> +        if (records != this.numRecords) {
> +            this.numRecords = records;
> +            log
> +                    .warn("Metadata disagrees with actual data. 
> Changing number of records to: "
> +                            + records);
> +        }
> +        lines = new Vector[records];
> +        for (int k = 0; k < records; k++) {
> +            lines[k] = (Vector) linesVector.get(k);
> +        }
> +        /*
> +         * for(int j=0; j<lines.length; j++) { if(lines[j] == null) { 
> lines[j] =
> +         * new Vector(); } }
> +         */
> +
> +    }
> +
> +    /**
> +     * This constructor will read delimitered data from stream rather a 
> string
> +     *
> +     * @param dataStream
> +     *            InputStream The input stream
> +     * @param numCols
> +     *            int the number of columns
> +     * @param delimiter
> +     *            String delimiter the delimiter to tokenize on
> +     * @param numHeaderLines
> +     *            int numHeaderLines the number of lines to skip at the 
> top of
> +     *            the file
> +     * @param lineEnding
> +     *            String lineEnding the line ending char(s)...either "\n"
> +     *            (unix),"\r\n" (windoze) or "\r" (mac)
> +     * @param numRecords
> +     *            int number of rows in the input stream
> +     */
> +    public DelimitedReader(InputStream dataStream, int numCols,
> +            String delimiter, int numHeaderLines, String lineEnding,
> +            int numRecords, boolean stripHeader) {
> +        this.dataReader = new InputStreamReader(dataStream);
> +        this.numHeaderLines = numHeaderLines;
> +        this.numCols = numCols;
> +        this.numRecords = numRecords;
> +        log.debug("Delimiter is: " + delimiter);
> +        this.delimiter = unescapeDelimiter(delimiter);
> +        log.debug("LineEnding is: " + lineEnding);
> +        this.lineEnding = unescapeDelimiter(lineEnding);
> +        this.stripHeader = stripHeader;
> +
> +    }
> +
> +    /**
> +     * Method to set up data stream as source
> +     *
> +     * @param dataStream
> +     *            InputStream
> +     */
> +    public void setInputStream(InputStream dataStream) {
> +        this.dataReader = new InputStreamReader(dataStream);
> +    }
> +
> +    /**
> +     * Method to set up collapseDelimiter. If it is yes, consecutive 
> dilimiters
> +     * will be consider as single dilimiter.
> +     *
> +     * @param collapseDelimiter
> +     */
> +    public void setCollapseDelimiter(boolean collapseDelimiter) {
> +        this.collapseDilimiter = collapseDelimiter;
> +    }
> +
> +    /**
> +     * Set up the footer line number.
> +     *
> +     * @param numFooterLines
> +     */
> +    public void setNumFooterLines(int numFooterLines) {
> +        this.numFooterLines = numFooterLines;
> +    }
> +
> +    public boolean isLenient() {
> +        return isLenient;
> +    }
> +
> +    public void setLenient(boolean isLenient) {
> +        this.isLenient = isLenient;
> +    }
> +
> +    /**
> +     * This method is from data source as a input stream This method 
> will read
> +     * one row from and return a data vector which element is String 
> and the
> +     * value is field data. After reach the end of stream, empty vector 
> will be
> +     * returned. So this method can be iterated by a while loop until a 
> empty
> +     * vector hited. During the iteration, every data in the stream 
> will be
> +     * pulled out.
> +     *
> +     * @return Vector
> +     */
> +    public Vector getRowDataVectorFromStream() throws Exception {
> +        // System.out.println("the numFootLines is "+numFooterLines);
> +        if (!initializedFooterBuffer) {
> +            for (int i = 0; i < numFooterLines; i++) {
> +                // System.out.println("the initialize with footer lines");
> +                String rowData = readOneRowDataString();
> +                // System.out.println("the data vector in initailize is 
> "+rowData.toString());
> +                footerBuffer.add(rowData);
> +            }
> +            // this is for no footer lines
> +            if (numFooterLines == 0) {
> +                // System.out.println("the initialize without footer 
> lines");
> +                String rowData = readOneRowDataString();
> +                // System.out.println("The initial buffere vector is 
> "+rowData.toString());
> +                footerBuffer.add(rowData);
> +            }
> +            initializedFooterBuffer = true;
> +        }
> +        String nextRowData = readOneRowDataString();
> +        // System.out.println("the row string data from next row 
> "+nextRowData.toString());
> +        String oneRowDataString = null;
> +        Vector oneRowDataVector = new Vector();
> +
> +        if (nextRowData != null) {
> +            // System.out.println("before nextRowData is empty and 
> nextRowData is "+nextRowData.toString());
> +            oneRowDataString = (String) footerBuffer.remove(0);
> +            reIndexFooterBufferVector();
> +            footerBuffer.add(nextRowData);
> +        } else if (numFooterLines == 0 && !footerBuffer.isEmpty()) {
> +            // System.out.println("find the last line in fottlines num 
> is 0!!!!!!!!");
> +            oneRowDataString = (String) footerBuffer.remove(0);
> +        }
> +        // System.out.println("helere!!!");
> +        if (oneRowDataString != null) {
> +            log.debug("in dataReader is not null");
> +            oneRowDataVector = 
> splitDelimitedRowStringIntoVector(oneRowDataString);
> +        }
> +        // System.out.println("the row data from buffer 
> "+oneRowDataVector.toString());
> +        return oneRowDataVector;
> +    }
> +
> +    /*
> +     * This method will read a row data from vector. It discard the 
> head lines.
> +     * but it doesn't dsicard footer lines This method will be called by
> +     * getRowDataVectorFromStream
> +     */
> +    private String readOneRowDataString() {
> +        // Vector oneRowDataVector = new Vector();
> +        StringBuffer rowData = new StringBuffer();
> +        String rowDataString = null;
> +        int singleCharactor = -2;
> +
> +        if (dataReader != null) {
> +            // log.debug("in dataReader is not null");
> +            try {
> +                while (singleCharactor != -1) {
> +                    // log.debug("in singleCharactor is not null");
> +                    singleCharactor = dataReader.read();
> +                    char charactor = (char) singleCharactor;
> +                    rowData.append(charactor);
> +                    // find string - line ending in the row data
> +                    boolean foundLineEnding = 
> (rowData.indexOf(lineEnding) != -1);
> +
> +                    // if we are being lenient, try some other line 
> endings for
> +                    // parsing the data
> +                    if (!foundLineEnding && this.isLenient()) {
> +                        // have we discovered the ending already in 
> this data?
> +                        if (this.discoveredLineEnding != null) {
> +                            foundLineEnding = (rowData
> +                                    .indexOf(this.discoveredLineEnding) 
> != -1);
> +                        }
> +                        // otherwise we need to try a few of them out
> +                        else {
> +                            for (int i = 0; i < 
> possibleLineEndings.size(); i++) {
> +                                String possibleLineEnding = (String) 
> possibleLineEndings
> +                                        .get(i);
> +                                foundLineEnding = (rowData
> +                                        .indexOf(possibleLineEnding) != 
> -1);
> +                                if (foundLineEnding) {
> +                                    this.discoveredLineEnding = 
> possibleLineEnding;
> +                                    break;
> +                                }
> +                            }
> +                        }
> +                    }
> +                    // finally see if we found the end of the line
> +                    if (foundLineEnding) {
> +                        log.debug("found line ending");
> +                        // strip the header lines
> +                        if (stripHeader && numHeaderLines > 0
> +                                && headLineNumberCount < numHeaderLines) {
> +                            // reset string buffer(descard the header 
> line)
> +                            rowData = null;
> +                            rowData = new StringBuffer();
> +
> +                        } else {
> +                            rowDataString = rowData.toString();
> +                            log.debug("The row data is " + rowDataString);
> +                            break;
> +                        }
> +                        headLineNumberCount++;
> +                    }
> +                }
> +            } catch (Exception e) {
> +                log.debug("Couldn't read data from input stream");
> +            }
> +        }
> +        // System.out.println("the row data before reutrn is 
> "+rowDataString);
> +        return rowDataString;
> +    }
> +
> +    /*
> +     * This method will forward one index for every element, 1 -> 0, 2->1
> +     */
> +    private void reIndexFooterBufferVector() {
> +        for (int i = 0; i < numFooterLines - 2; i++) {
> +            Vector element = (Vector) footerBuffer.elementAt(i + 1);
> +            footerBuffer.add(i, element);
> +        }
> +    }
> +
> +    /*
> +     * This method will read a delimitered string and put a delimitered 
> part
> +     * into an element in a vector. If the vector size is less than the 
> column
> +     * number empty string will be added.
> +     */
> +    private Vector splitDelimitedRowStringIntoVector(String data)
> +            throws Exception {
> +        Vector result = new Vector();
> +        if (data == null) {
> +            return result;
> +        }
> +        String[] s = null;
> +        if (!collapseDilimiter) {
> +            s = data.split(delimiter);
> +        } else {
> +            String newDelimiterWithRegExpress = delimiter + "+";
> +            s = data.split(newDelimiterWithRegExpress);
> +
> +        }
> +
> +        if (s != null) {
> +            if (!isLenient && s.length > numCols) {
> +                throw new Exception("Metadata sees data has " + numCols
> +                        + " columns but actually data has " + s.length
> +                        + " columns. Please make sure metadata is 
> correct!");
> +            }
> +            int columnCount = Math.min(s.length, numCols);
> +            for (int j = 0; j < columnCount; j++) {
> +
> +                if (s[j] != null) {
> +                    result.addElement(s[j].trim());
> +                } else {
> +                    result.addElement("");
> +                }
> +            }
> +            // add any elements that aren't there so that all the 
> records have
> +            // the
> +            // same number of cols
> +            if (result.size() < numCols) {
> +                int vsize = result.size();
> +                for (int j = 0; j < numCols - vsize; j++) {
> +                    result.addElement("");
> +                }
> +            }
> +        }
> +        return result;
> +    }
> +
> +    /**
> +     * returns the data as an array of vectors. each vector will have 
> the same
> +     * number of elements as there are columns in the data.
> +     *
> +     * @param stripHeaderLines
> +     *            true if the header lines should not be included in the
> +     *            returned data, false otherwise
> +     */
> +    public Vector[] getTokenizedData(boolean stripHeaderLines) {
> +        if (stripHeaderLines) {
> +            Vector[] strip = null;
> +            if (numRecords > numHeaderLines) {
> +                strip = new Vector[numRecords - numHeaderLines];
> +                for (int i = numHeaderLines; i < lines.length; i++) {
> +                    strip[i - numHeaderLines] = lines[i];
> +                }
> +            }
> +            return strip;
> +        } else {
> +            return lines;
> +        }
> +    }
> +
> +    /**
> +     * returns a string representation of the data
> +     */
> +    public String toString() {
> +        StringBuffer sb = new StringBuffer();
> +        for (int i = 0; i < lines.length; i++) {
> +            log.debug("line[" + (i + 1) + "]: " + lines[i].toString());
> +            for (int j = 0; j < lines[i].size(); j++) {
> +                sb.append((String) lines[i].elementAt(j));
> +                if (j != lines[i].size() - 1) {
> +                    sb.append(" || ");
> +                }
> +            }
> +            sb.append(lineEnding);
> +        }
> +        return sb.toString();
> +    }
> +
> +    /**
> +     * Convert a string escaped representation of a delimiter character 
> into an
> +     * the actual String for that delimiter. This is used for translating
> +     * escaped versions of tab, newline, and carriage return characters 
> to their
> +     * real character values.
> +     *
> +     * @param delimiter
> +     *            the String representing the delimiter
> +     * @return the actual String for the delimiter
> +     */
> +    public static String unescapeDelimiter(String delimiter) {
> +        String newDelimiter = delimiter;
> +
> +        if (delimiter == null) {
> +            log.debug("Delimiter is null and we set up to \n.");
> +            newDelimiter = "\n";
> +        } else if (delimiter.equals("\\t")) {
> +            log.debug("Tab interpreted incorrectly as string.");
> +            newDelimiter = "\t";
> +        } else if (delimiter.equals("\\n")) {
> +            log.debug("Newline interpreted incorrectly as string.");
> +            newDelimiter = "\n";
> +        } else if (delimiter.equals("\\r")) {
> +            log.debug("CR interpreted incorrectly as string.");
> +            newDelimiter = "\r";
> +        } else if (delimiter.equals("\\r\\n")) {
> +            log.debug("CRNL interpreted incorrectly as string.");
> +            newDelimiter = "\r\n";
> +        } else if (delimiter.startsWith("#")) {
> +            log.debug("XML entity charactor.");
> +            String digits = delimiter.substring(1, delimiter.length());
> +            int radix = 10;
> +            if (digits.startsWith("x")) {
> +                log.debug("Radix is " + 16);
> +                radix = 16;
> +                digits = digits.substring(1, digits.length());
> +            }
> +            log.debug("Int value of  delimiter is " + digits);
> +
> +            newDelimiter = transferDigitsToCharString(radix, digits);
> +
> +        } else if (delimiter.startsWith("0x") || 
> delimiter.startsWith("0X")) {
> +            int radix = 16;
> +            String digits = delimiter.substring(2, delimiter.length());
> +            log.debug("Int value of  delimiter is " + digits);
> +            newDelimiter = transferDigitsToCharString(radix, digits);
> +        }
> +
> +        return newDelimiter;
> +    }
> +
> +    private static String transferDigitsToCharString(int radix, String 
> digits) {
> +        if (digits == null) {
> +            return null;
> +        }
> +        Integer integer = Integer.valueOf(digits, radix);
> +        int inter = integer.intValue();
> +        log.debug("The decimal value of char is " + inter);
> +        char charactor = (char) inter;
> +        String newDelimiter = Character.toString(charactor);
> +        log.debug("The new delimter is " + newDelimiter);
> +        return newDelimiter;
> +    }
> +}
> 
> Modified: trunk/modules/core/src/org/kepler/util/DotKeplerManager.java
> ===================================================================
> --- trunk/modules/core/src/org/kepler/util/DotKeplerManager.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/core/src/org/kepler/util/DotKeplerManager.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -7,7 +7,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.build.modules.Module;
>  import org.kepler.build.modules.ModuleTree;
>  import org.kepler.build.project.ProjectLocator;
> 
> Modified: 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBDataTypeResolver.java 
> 
> ===================================================================
> --- 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBDataTypeResolver.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBDataTypeResolver.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -35,7 +35,7 @@
>  import java.util.Hashtable;
>  import java.util.Map;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.objectmanager.data.UnresolvableTypeException;
> 
>  /**
> 
> Modified: 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTableExistenceChecker.java 
> 
> ===================================================================
> --- 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTableExistenceChecker.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTableExistenceChecker.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -39,7 +39,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
> 
>  /**
>   * This class will check if a given table name already existed in db. 
> This class
> 
> Modified: 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTablesGenerator.java 
> 
> ===================================================================
> --- 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTablesGenerator.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DBTablesGenerator.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -41,9 +41,9 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.Config;
> -import org.ecoinformatics.util.DBConnectionFactory;
> -import org.ecoinformatics.util.DelimitedReader;
> +import org.kepler.util.Config;
> +import org.kepler.util.DBConnectionFactory;
> +import org.kepler.util.DelimitedReader;
>  import org.kepler.objectmanager.data.UnresolvableTypeException;
>  import org.kepler.objectmanager.data.db.Attribute;
>  import org.kepler.objectmanager.data.db.Entity;
> 
> Modified: 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DelimiterResolver.java 
> 
> ===================================================================
> --- 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DelimiterResolver.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/DelimiterResolver.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -37,7 +37,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  /**
>   * This class will map delimter format in metadata (e.g eml documents) 
> to the
> 
> Modified: 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/HsqlDataQueryAction.java 
> 
> ===================================================================
> --- 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/HsqlDataQueryAction.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/data-handling/src/org/ecoinformatics/seek/dataquery/HsqlDataQueryAction.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -41,7 +41,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.DBConnectionFactory;
> 
>  /**
>   * This class will handle data query action base on Hsql sql engine
> 
> Modified: 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/datasource/EcogridDataCacheItem.java 
> 
> ===================================================================
> --- 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/datasource/EcogridDataCacheItem.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/datasource/EcogridDataCacheItem.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -46,7 +46,7 @@
>  import 
> org.ecoinformatics.ecogrid.queryservice.QueryServiceGetToStreamClient;
>  import org.ecoinformatics.seek.ecogrid.EcoGridService;
>  import org.ecoinformatics.seek.ecogrid.EcoGridServicesController;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.objectmanager.cache.BufferedDataCacheObject;
>  import org.kepler.objectmanager.cache.CacheManager;
> 
> 
> Modified: 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/DocumentType.java
> ===================================================================
> --- 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/DocumentType.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/DocumentType.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -38,7 +38,7 @@
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
>  import 
> org.ecoinformatics.seek.ecogrid.exception.UnrecognizedDocumentTypeException; 
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  /**
>   * This class express a DocumentType object. It has three filed. The 
> namespace -
> 
> Modified: 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/EcoGridServicesController.java 
> 
> ===================================================================
> --- 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/EcoGridServicesController.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/EcoGridServicesController.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -41,7 +41,7 @@
>  import org.ecoinformatics.ecogrid.registry.stub.RegistryEntryType;
>  import 
> org.ecoinformatics.ecogrid.registry.stub.RegistryEntryTypeDocumentType;
>  import 
> org.ecoinformatics.seek.ecogrid.exception.InvalidEcoGridServiceException;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.authentication.AuthenticationException;
>  import org.kepler.authentication.AuthenticationManager;
>  import org.kepler.authentication.Domain;
> 
> Modified: 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/SearchRegistryAction.java 
> 
> ===================================================================
> --- 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/SearchRegistryAction.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/SearchRegistryAction.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -42,7 +42,7 @@
>  import org.apache.commons.logging.LogFactory;
>  import org.ecoinformatics.ecogrid.client.RegistryServiceClient;
>  import org.ecoinformatics.ecogrid.registry.stub.RegistryEntryType;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  import ptolemy.util.MessageHandler;
> 
> 
> Modified: 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/quicksearch/SearchQueryGenerator.java 
> 
> ===================================================================
> --- 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/quicksearch/SearchQueryGenerator.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/ecogrid/src/org/ecoinformatics/seek/ecogrid/quicksearch/SearchQueryGenerator.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -43,7 +43,7 @@
>  import org.ecoinformatics.ecogrid.queryservice.query.QueryType;
>  import org.ecoinformatics.ecogrid.queryservice.util.EcogridQueryParser;
>  import 
> org.ecoinformatics.seek.ecogrid.exception.InvalidEcogridQueryException;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.w3c.dom.Node;
>  import org.w3c.dom.NodeList;
> 
> 
> Modified: 
> trunk/modules/ecogrid/src/org/kepler/authentication/gui/LDAPLoginGUI.java
> ===================================================================
> --- 
> trunk/modules/ecogrid/src/org/kepler/authentication/gui/LDAPLoginGUI.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/ecogrid/src/org/kepler/authentication/gui/LDAPLoginGUI.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -57,7 +57,7 @@
>  import javax.swing.UIManager;
> 
>  import org.ecoinformatics.seek.ecogrid.MetadataSpecificationInterface;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.authentication.ProxyRepository;
>  import org.kepler.gui.KeplerGraphFrame;
> 
> 
> Modified: trunk/modules/gui/src/org/kepler/gui/KeplerApplication.java
> ===================================================================
> --- trunk/modules/gui/src/org/kepler/gui/KeplerApplication.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/gui/src/org/kepler/gui/KeplerApplication.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -29,7 +29,7 @@
>  import java.io.File;
>  import java.net.URL;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  /**
>   * Main entry point for Kepler. This class reads the configuration
> 
> Modified: trunk/modules/gui/src/org/kepler/gui/ViewManager.java
> ===================================================================
> --- trunk/modules/gui/src/org/kepler/gui/ViewManager.java    2009-08-26 
> 17:28:04 UTC (rev 20470)
> +++ trunk/modules/gui/src/org/kepler/gui/ViewManager.java    2009-08-26 
> 17:38:14 UTC (rev 20471)
> @@ -14,7 +14,7 @@
>  import javax.swing.JLabel;
>  import javax.swing.JPanel;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.gui.state.StateChangeMonitor;
>  import org.kepler.gui.state.ViewStateChangeEvent;
>  import org.w3c.dom.Node;
> 
> Modified: trunk/modules/loader/src/org/kepler/gui/KeplerInitializer.java
> ===================================================================
> --- trunk/modules/loader/src/org/kepler/gui/KeplerInitializer.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/loader/src/org/kepler/gui/KeplerInitializer.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -44,8 +44,8 @@
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
>  import org.ecoinformatics.seek.ecogrid.SearchRegistryAction;
> -import org.ecoinformatics.util.Config;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.Config;
> +import org.kepler.util.DBConnectionFactory;
>  import org.geon.DBConnectionToken;
>  import org.kepler.util.DotKeplerManager;
> 
> 
> Modified: 
> trunk/modules/module-manager/src/org/kepler/modulemanager/Restarter.java
> ===================================================================
> --- 
> trunk/modules/module-manager/src/org/kepler/modulemanager/Restarter.java    
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/module-manager/src/org/kepler/modulemanager/Restarter.java    
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -175,7 +175,7 @@
>          //Shutdown the database if 
> org.ecoinformatics.util.DBConnectionFactory is present.
>          try
>          {
> -            Class dbConnectionFactory = 
> Class.forName("org.ecoinformatics.util.DBConnectionFactory");
> +            Class dbConnectionFactory = 
> Class.forName("org.kepler.util.DBConnectionFactory");
>              dbConnectionFactory.getMethod("shutdownDBServer", new 
> Class[0]).invoke(null, new Object[0]);
>          }
>          catch (ClassNotFoundException e)
> @@ -184,19 +184,19 @@
>          }
>          catch (NoSuchMethodException e)
>          {
> -            System.out.println("The method 
> org.ecoinformatics.util.DBConnectionFactory.shutdownDBServer() is 
> missing!");
> +            System.out.println("The method 
> org.kepler.util.DBConnectionFactory.shutdownDBServer() is missing!");
>              e.printStackTrace();
>              return null;
>          }
>          catch (IllegalAccessException e)
>          {
> -            System.out.println("Cannot access 
> org.ecoinformatics.util.DBConnectionFactory.shutdownDBServer()");
> +            System.out.println("Cannot access 
> org.kepler.util.DBConnectionFactory.shutdownDBServer()");
>              e.printStackTrace();
>              return null;
>          }
>          catch (InvocationTargetException e)
>          {
> -            System.out.println("Cannot invoke 
> org.ecoinformatics.util.DBConnectionFactory.shutdownDBServer()");
> +            System.out.println("Cannot invoke 
> org.kepler.util.DBConnectionFactory.shutdownDBServer()");
>              e.printStackTrace();
>              return null;
>          }
> 
> Modified: trunk/modules/ppod-gui/src/org/daks/ppod/gui/WorkspacePane.java
> ===================================================================
> --- trunk/modules/ppod-gui/src/org/daks/ppod/gui/WorkspacePane.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/ppod-gui/src/org/daks/ppod/gui/WorkspacePane.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -66,7 +66,7 @@
> 
>  import javax.swing.event.ChangeEvent;
>  import javax.swing.event.ChangeListener;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.core.loader.ProjectLocator;
>  import org.kepler.gui.TabPane;
>  import org.kepler.gui.TabPaneExtensionExample;
> 
> Modified: trunk/modules/ppod-gui/src/org/kepler/gui/KeplerInitializer.java
> ===================================================================
> --- trunk/modules/ppod-gui/src/org/kepler/gui/KeplerInitializer.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/ppod-gui/src/org/kepler/gui/KeplerInitializer.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -39,9 +39,9 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.Config;
> -import org.ecoinformatics.util.DBConnection;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.Config;
> +import org.kepler.util.DBConnection;
> +import org.kepler.util.DBConnectionFactory;
>  import org.geon.DBConnectionToken;
> 
>  import ptolemy.actor.gui.Configuration;
> 
> Modified: 
> trunk/modules/ppod-gui-1.0/src/org/daks/ppod/gui/WorkspacePane.java
> ===================================================================
> --- trunk/modules/ppod-gui-1.0/src/org/daks/ppod/gui/WorkspacePane.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/ppod-gui-1.0/src/org/daks/ppod/gui/WorkspacePane.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -64,7 +64,7 @@
> 
>  import javax.swing.event.ChangeEvent;
>  import javax.swing.event.ChangeListener;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  /**
>   * A simple pane used to display the workspace.
> 
> Modified: 
> trunk/modules/ppod-gui-1.0/src/org/kepler/gui/KeplerInitializer.java
> ===================================================================
> --- trunk/modules/ppod-gui-1.0/src/org/kepler/gui/KeplerInitializer.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/ppod-gui-1.0/src/org/kepler/gui/KeplerInitializer.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -39,9 +39,9 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.Config;
> -import org.ecoinformatics.util.DBConnection;
> -import org.ecoinformatics.util.DBConnectionFactory;
> +import org.kepler.util.Config;
> +import org.kepler.util.DBConnection;
> +import org.kepler.util.DBConnectionFactory;
>  import org.geon.DBConnectionToken;
> 
>  import ptolemy.actor.gui.Configuration;
> 
> Modified: 
> trunk/modules/ppod-gui-1.0/src/org/kepler/gui/TabbedLibraryPane.java
> ===================================================================
> --- trunk/modules/ppod-gui-1.0/src/org/kepler/gui/TabbedLibraryPane.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ trunk/modules/ppod-gui-1.0/src/org/kepler/gui/TabbedLibraryPane.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -46,7 +46,7 @@
>  import javax.swing.event.ChangeEvent;
>  import javax.swing.event.ChangeListener;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.ecoinformatics.seek.ecogrid.SearchRegistryAction;
> 
> 
> 
> Modified: 
> trunk/modules/reporting/src/org/kepler/kar/handlers/ReportInstanceKAREntryHandler.java 
> 
> ===================================================================
> --- 
> trunk/modules/reporting/src/org/kepler/kar/handlers/ReportInstanceKAREntryHandler.java 
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/reporting/src/org/kepler/kar/handlers/ReportInstanceKAREntryHandler.java 
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -15,7 +15,7 @@
> 
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.kepler.kar.KAREntry;
>  import org.kepler.kar.KAREntryHandler;
>  import org.kepler.kar.KAREntryHandlerFactory;
> 
> Modified: 
> trunk/modules/reporting/src/org/kepler/reporting/rio/util/ImageUtil.java
> ===================================================================
> --- 
> trunk/modules/reporting/src/org/kepler/reporting/rio/util/ImageUtil.java    
> 2009-08-26 17:28:04 UTC (rev 20470)
> +++ 
> trunk/modules/reporting/src/org/kepler/reporting/rio/util/ImageUtil.java    
> 2009-08-26 17:38:14 UTC (rev 20471)
> @@ -47,7 +47,7 @@
>  import multivalent.std.adaptor.pdf.PDF;
>  import net.sourceforge.iharder.Base64;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
>  import org.jpedal.PdfDecoder;
> 
>  public class ImageUtil {
> 
> Modified: trunk/modules/util/src/util/StaticUtil.java
> ===================================================================
> --- trunk/modules/util/src/util/StaticUtil.java    2009-08-26 17:28:04 
> UTC (rev 20470)
> +++ trunk/modules/util/src/util/StaticUtil.java    2009-08-26 17:38:14 
> UTC (rev 20471)
> @@ -70,7 +70,7 @@
>  import org.xml.sax.InputSource;
>  import org.xml.sax.SAXException;
> 
> -import org.ecoinformatics.util.Config;
> +import org.kepler.util.Config;
> 
>  /**
>   * This is a utility class. Any static methods that may be needed by 
> multiple
> 
> _______________________________________________
> Kepler-cvs mailing list
> Kepler-cvs at kepler-project.org
> http://mercury.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-cvs
> _______________________________________________
> Kepler-dev mailing list
> Kepler-dev at kepler-project.org
> http://mercury.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev

-- 
Christopher Brooks (cxh at eecs berkeley edu) University of California
CHESS Executive Director                      US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
ph: 510.643.9841 fax:510.642.2718	      (Office: 545Q Cory)
home: (F-Tu) 707.665.0131 (W-F) 510.655.5480


More information about the Kepler-dev mailing list