oodt-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mattm...@apache.org
Subject [23/88] [abbrv] [partial] oodt git commit: Record change for OODT-836, OODT-837.
Date Mon, 17 Jul 2017 23:05:38 GMT
http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileElementExtractor.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileElementExtractor.java b/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileElementExtractor.java
deleted file mode 100644
index 04f5089..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileElementExtractor.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oodt.opendapps;
-
-//OODT imports
-import org.apache.oodt.opendapps.config.OpendapConfig;
-import org.apache.oodt.profile.EnumeratedProfileElement;
-import org.apache.oodt.profile.Profile;
-import org.apache.oodt.profile.RangedProfileElement;
-
-//JDK imports
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-//OPeNDAP/THREDDS imports
-import opendap.dap.Attribute;
-import opendap.dap.AttributeTable;
-import opendap.dap.DAS;
-import opendap.dap.NoSuchAttributeException;
-
-import static org.apache.oodt.opendapps.DapNames.*;
-
-/**
- * 
- * 
- * This class is used to set custom functionality for scraping data into
- * different types of objects. The class looks at the {@link OpendapConfig} and
- * then tries to stuff what's in each <var> into
- * {@link RangedProfileElement} or {@link EnumeratedProfileElement}. The class
- * is designed with extensibility in mind in case new {@link org.apache.oodt.profile.ProfileElement}
- * types are created in the future.
- * 
- */
-public class OpendapProfileElementExtractor {
-
-  private static final Logger LOG = Logger
-      .getLogger(OpendapProfileElementExtractor.class.getName());
-
-  private OpendapConfig conf;
-
-  public OpendapProfileElementExtractor(OpendapConfig conf) {
-    this.conf = conf;
-  }
-
-  public RangedProfileElement extractRangedProfileElement(String elemName, String varname,
-      Profile profile, DAS das) throws NoSuchAttributeException {
-    RangedProfileElement elem = new RangedProfileElement(profile);
-    elem.setName(elemName);
-    AttributeTable attTable;
-    try {
-      attTable = das.getAttributeTable(varname);
-      
-      // make variable names case insensitive
-      if(attTable == null) {
-        attTable = das.getAttributeTable(varname.toLowerCase());
-      }
-      if(attTable == null) {
-        attTable = das.getAttributeTable(varname.toUpperCase());
-      }
-      if(attTable == null) {
-        throw new NoSuchAttributeException("Att table for [" + varname + "] is null!");
-      }
-    } catch (NoSuchAttributeException e) {
-      LOG.log(Level.SEVERE, e.getMessage());
-      LOG.log(Level.WARNING, "Error extracting attribute table for element: ["
-          + elemName + "]: Message: " + e.getMessage());
-      throw e;
-
-    }
-
-    Enumeration attributeNames = attTable.getNames();
-
-    while (attributeNames.hasMoreElements()) {
-      String attrName = (String) attributeNames.nextElement();
-      Attribute attr = attTable.getAttribute(attrName);
-     
-      if (!attr.isContainer()) {
-      	 Enumeration attrValues;
-        
-        	try {
-            attrValues = attr.getValues();
-          } catch (NoSuchAttributeException e) {
-            LOG.log(Level.SEVERE, e.getMessage());
-            LOG.log(Level.WARNING, "Attempt to resolve attribute: [" + attrName
-                + "] failed: Message: " + e.getMessage());
-            continue;
-         }
-  
-        while (attrValues.hasMoreElements()) {
-          String attrValue = (String) attrValues.nextElement();
-          if (attrName.equals(ACTUAL_RANGE)) {
-            elem.setMinValue(attrValue);
-            if (attrValues.hasMoreElements()) {
-              elem.setMaxValue((String) attrValues.nextElement());
-            }
-          } else if (attrName.equals(UNITS)) {
-            elem.setUnit(attrValue);
-          } else if (attrName.equals(START)) {
-            elem.setMinValue(attrValue);
-          } else if (attrName.equals(END)) {
-            elem.setMaxValue(attrValue);
-          }
-        }
-      }
-      
-    } // not a container attribute
-    
-    return elem;
-  }
-
-  @SuppressWarnings("unchecked")
-  public EnumeratedProfileElement extractEnumeratedProfileElement(String elemName, String varname,
-      Profile profile, DAS das)
-      throws NoSuchAttributeException {
-    EnumeratedProfileElement elem = new EnumeratedProfileElement(profile);
-    elem.setName(elemName);
-
-    AttributeTable attTable;
-    try {
-      attTable = das.getAttributeTable(elemName);
-    } catch (NoSuchAttributeException e) {
-      LOG.log(Level.WARNING, "Error extracting attribute table for element: ["
-          + elemName + "]: Message: " + e.getMessage());
-      throw e;
-
-    }
-
-    Enumeration attributeNames = attTable.getNames();
-    while (attributeNames.hasMoreElements()) {
-      String attrName = (String) attributeNames.nextElement();
-      Attribute attr = attTable.getAttribute(attrName);
-      Enumeration attrValues;
-      try {
-        attrValues = attr.getValues();
-      } catch (NoSuchAttributeException e) {
-        LOG.log(Level.WARNING, "Attempt to resolve attribute: [" + attrName
-            + "] failed: Message: " + e.getMessage());
-        continue;
-      }
-
-      while (attrValues.hasMoreElements()) {
-        String attrValue = (String) attrValues.nextElement();
-        if (attrName.equals(ACTUAL_RANGE)) {
-          String[] vals = attrValue.split(" ");
-          elem.getValues().addAll(Arrays.asList(vals));
-        } else if (attrName.equals(UNITS)) {
-          elem.setUnit(attrValue);
-        } else {
-          elem.getValues().add(attrValue);
-        }
-      }
-
-    }
-
-    return elem;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileHandler.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileHandler.java b/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileHandler.java
deleted file mode 100644
index 871cd0c..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/OpendapProfileHandler.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps;
-
-//JDK imports
-import java.io.FileNotFoundException;
-import java.net.MalformedURLException;
-import java.util.List;
-import java.util.Vector;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import opendap.dap.DConnect;
-
-import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.oodt.opendapps.config.DapRoot;
-import org.apache.oodt.opendapps.config.OpendapConfig;
-import org.apache.oodt.opendapps.config.OpendapConfigReader;
-import org.apache.oodt.opendapps.extractors.DasMetadataExtractor;
-import org.apache.oodt.opendapps.extractors.MetadataExtractor;
-import org.apache.oodt.opendapps.extractors.NcmlMetadataExtractor;
-import org.apache.oodt.opendapps.extractors.ThreddsMetadataExtractor;
-import org.apache.oodt.opendapps.util.ProfileUtils;
-import org.apache.oodt.profile.Profile;
-import org.apache.oodt.profile.ProfileException;
-import org.apache.oodt.profile.handlers.ProfileHandler;
-import org.apache.oodt.xmlquery.XMLQuery;
-
-/**
- * 
- * 
- * A generic reusable OODT {@link ProfileHandler} for use in extracting metadata
- * from OPeNDAP and THREDDS-accessible datasets.
- * 
- */
-public class OpendapProfileHandler implements ProfileHandler {
-
-  private static final String PROFILE_HANDLER_ID = "OODT OPeNDAP Profile Handler";
-
-  private static Logger LOG = Logger.getLogger(OpendapProfileHandler.class
-      .getName());
-
-  private OpendapConfig conf;
-
-  public OpendapProfileHandler(){
-  }
-
-  /**
-   * Implementation of interface method
-   */
-  public List<Profile> findProfiles(XMLQuery xmlQuery) throws ProfileException {
-    String configFileLoc = null;
-    String q = xmlQuery.getKwdQueryString();
-    if (q.contains("ConfigUrl=")){
-    	Pattern parameterPattern = Pattern.compile("ConfigUrl=(.+?)( .*)?$");
-    	Matcher fileMatch = parameterPattern.matcher(q);
-    	while (fileMatch.find()) {
-    		configFileLoc = fileMatch.group(1);
-    	}
-    } else {
-    	configFileLoc = System.getProperty("org.apache.oodt.opendap.config.filePath");
-    }
-    
-    if (configFileLoc.isEmpty()){
-    	throw new ProfileException(
-    		"Configuration file not found. Please specify in System property opendap.config.filePath or as URL parameter ConfigUrl");
-    } else {
-    	try {
-    		this.conf = OpendapConfigReader.read(configFileLoc);
-    	} catch (FileNotFoundException e) {
-    		throw new ProfileException("FileNotFoundException: File not found!");
-    	} catch (MalformedURLException e) {
-    		throw new ProfileException("MalformedURLException: please fix file URL");
-    	}
-    }
-    
-    List<Profile> profiles = new Vector<Profile>();
-    List<DapRoot> roots = this.conf.getRoots();
-	  
-    // loop over THREDDS catalogs
-    for (DapRoot root : roots) {
-    	LOG.log(Level.INFO,"Parsing DapRoot="+root.getDatasetUrl());
-
-      DatasetExtractor d = new DatasetExtractor(xmlQuery, root.getCatalogUrl()
-          .toExternalForm(), root.getDatasetUrl().toExternalForm(), conf);
-      if (d.getDapUrls() != null) {
-        for (String opendapUrl : d.getDapUrls()) {
-        	
-          // wrap the profile generation in try-catch to avoid stopping the whole harvesting process in case an exception is thrown
-          try {
-
-          	LOG.log(Level.FINE,"Connecting to opendapurl="+opendapUrl);
-  
-            Profile profile = new Profile();
-            DConnect dConn;
-            try {
-              dConn = new DConnect(opendapUrl, true);
-            } catch (FileNotFoundException e) {
-              LOG.log(Level.WARNING, "Opendap URL not found: [" + opendapUrl
-                  + "]: Message: " + e.getMessage());
-              throw new ProfileException("Opendap URL not found: [" + opendapUrl
-                  + "]: Message: " + e.getMessage());
-            }
-
-            // retrieve already extracted THREDDS metadata
-            Metadata datasetMet = d.getDatasetMet(opendapUrl);
-            
-            // extract DAS metadata
-            MetadataExtractor dasExtractor = new DasMetadataExtractor(dConn);
-            dasExtractor.extract(datasetMet, conf);
-            
-            // extract NcML metadata, if available
-           if (datasetMet.containsKey(ThreddsMetadataExtractor.SERVICE_TYPE_NCML)) {
-            	// retrieve URL of NcML document, previously stored
-            	final String ncmlUrl = datasetMet.getMetadata(ThreddsMetadataExtractor.SERVICE_TYPE_NCML);
-            	MetadataExtractor ncmlExtractor = new NcmlMetadataExtractor(ncmlUrl);
-            	ncmlExtractor.extract(datasetMet, conf);
-            }
-            
-            // debug: write out all metadata entries
-            for (String key : datasetMet.getAllKeys()) {
-          	  LOG.log(Level.FINER, "Metadata key="+key+" value="+datasetMet.getMetadata(key));
-            }
-         
-            // <resAttributes>
-            profile.setResourceAttributes(ProfileUtils.getResourceAttributes(
-                this.conf, opendapUrl, dConn, datasetMet));
-            
-            // <profAttributes>
-            profile.setProfileAttributes(ProfileUtils
-                .getProfileAttributes(this.conf, datasetMet));
-            // <profElement>
-            profile.getProfileElements().putAll(
-                ProfileUtils.getProfileElements(this.conf, dConn, datasetMet, profile));
-            profiles.add(profile);
-            LOG.log(Level.FINE, "Added profile id="+profile.getProfileAttributes().getID());
-            
-            
-          } catch(Exception e) {
-          	// in case of exception, don't harvest this dataset, but keep going
-          	LOG.log(Level.WARNING,"Error while building profile for opendapurl="+opendapUrl); 
-          	LOG.log(Level.WARNING,e.getMessage());
-          }
-
-        }
-      }
-    }
-    return profiles;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.oodt.profile.handlers.ProfileHandler#get(java.lang.String)
-   */
-  public Profile get(String id) throws ProfileException {
-    throw new ProfileException("method not implemented yet!");
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.apache.oodt.profile.handlers.ProfileHandler#getID()
-   */
-  public String getID() {
-    return PROFILE_HANDLER_ID;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/Profiler.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/Profiler.java b/opendapps/src/main/java/org/apache/oodt/opendapps/Profiler.java
deleted file mode 100644
index 8884db9..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/Profiler.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oodt.opendapps;
-
-//JDK imports
-import java.io.File;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-//OODT imports
-import org.apache.commons.io.FileUtils;
-import org.apache.oodt.opendapps.util.ProfileChecker;
-import org.apache.oodt.opendapps.util.ProfileSerializer;
-import org.apache.oodt.profile.Profile;
-import org.apache.oodt.profile.handlers.ProfileHandler;
-import org.apache.oodt.xmlquery.XMLQuery;
-import org.xml.sax.SAXException;
-
-/**
- * Command line class to drive the creation of OODT profiles from THREDDS
- * catalogs with OpenDAP endpoints.
- * <p/>
- * This class reads the list of THREDDS catalog URLs from the given opendapps
- * configuration file, parses the catalogs, and it writes the OODT profiles (one
- * for each THREDDS dataset) in the file "profiles.xml" in the specified
- * directory, or in the local execution directory if none is specified.
- * <p/>
- * Usage: java -classpath [path to opendapps-version-jar-with-dependencies.jar]
- * org.apache.oodt.opendapps.Profiler [config_file_location]
- * [optional_output_dir]
- * <p/>
- * Usage example: java -classpath
- * ./target/opendapps-0.4-SNAPSHOT-jar-with-dependencies.jar
- * org.apache.oodt.opendapps.Profiler /home/users/testuser/opendap.config.xml
- * /tmp
- * 
- * @author Luca Cinquini
- * 
- */
-public class Profiler {
-
-  private static Logger LOG = Logger.getLogger(Profiler.class.getName());
-  
-  /**
-   * Optional directory to serialize the profiles to.
-   */
-  private File outputDir;
-
-  /**
-   * Command line invocation method.
-   * 
-   * @param args
-   */
-  public static void main(String[] args) throws Exception {
-
-    // parse command line input
-    if (args.length != 1 && args.length != 2) {
-      usage();
-    }
-    File configFile = new File(args[0]);
-    Profiler profiler = new Profiler();
-    if (args.length == 2) {
-      profiler.setOutputDir( new File(args[1]) );
-    }
-    
-    // run profiler
-    profiler.makeProfiles(configFile);
-    
-  }
-  
-  /**
-   * No argument constructor.
-   */
-  public Profiler() {}
-  
-  /**
-   * Setter method for output directory.
-   * @param outputDir
-   */
-  public void setOutputDir(File outputDir) {
-		this.outputDir = outputDir;
-	}
-
-	/**
-   * Method to generate OODT profiles according to the specifications contained in a configuration file.
-   * 
-   * @param configFile 
-   * @return
-   */
-  public List<Profile> makeProfiles(final File configFile) throws Exception {
-
-    // parse THREDDS catalogs, create OODT profiles
-    ProfileHandler profileHandler = new OpendapProfileHandler();
-    XMLQuery xmlQuery = Profiler.buildXMLQuery(configFile);
-    @SuppressWarnings(value = "unchecked")
-    final List<Profile> profiles = profileHandler.findProfiles(xmlQuery);
-    
-    // check profiles
-    for (final Profile profile : profiles) {
-    	final StringBuilder sb = new StringBuilder();
-    	boolean ok = ProfileChecker.check(profile, sb);
-    	// print out the profile summary for quick review by the publisher
-    	System.out.println(sb.toString());
-    	if (!ok) {
-    		LOG.log(Level.SEVERE, "ERROR: invalid profile:"+profile.getResourceAttributes().getIdentifier());
-    	} 	
-    }
-
-    // serialize profiles to XML
-    String xml = ProfileSerializer.toXML(profiles);
-    LOG.log(Level.FINE, xml);
-
-    // write XML to disk
-    if (outputDir != null) {
-      final File file = new File(outputDir, "profiles.xml");
-      FileUtils.writeStringToFile(file, xml);
-    }
-
-    return profiles;
-    
-  }
-
-  private static XMLQuery buildXMLQuery(final File file) throws SAXException {
-
-    final String query = "<query><queryKWQString>"
-        + "PFunction=findall?ConfigUrl=" + file.getAbsolutePath()
-        + "</queryKWQString></query>";
-    return new XMLQuery(query);
-
-  }
-
-  private static void usage() {
-    System.out
-        .println("Usage: java -classpath [path to opendapps-version-jar-with-dependencies.jar] org.apache.oodt.opendapps.Profiler <config file location> [<output_dir>]");
-    System.out
-        .println("Example: java -classpath ./target/opendapps-0.4-SNAPSHOT-jar-with-dependencies.jar org.apache.oodt.opendapps.Profiler /home/users/testuser/opendap.config.xml /tmp");
-    System.exit(-1);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/ConstantSpec.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/ConstantSpec.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/ConstantSpec.java
deleted file mode 100644
index 118621e..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/ConstantSpec.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.config;
-
-/**
- * 
- * A specification of a constant field to flow through into either the generated
- * {@link org.apache.oodt.profile.Profile}s {@link org.apache.oodt.profile.ProfileAttributes} section or its
- * {@link org.apache.oodt.profile.ResourceAttributes} section. Part of the {@link OpendapConfig}.
- * 
- */
-public class ConstantSpec {
-
-  private String type;
-
-  private String name;
-
-  private String value;
-
-  public ConstantSpec() {
-    this.type = null;
-    this.name = null;
-    this.value = null;
-  }
-
-  /**
-   * @return the type
-   */
-  public String getType() {
-    return type;
-  }
-
-  /**
-   * @param type
-   *          the type to set
-   */
-  public void setType(String type) {
-    this.type = type;
-  }
-
-  /**
-   * @return the name
-   */
-  public String getName() {
-    return name;
-  }
-
-  /**
-   * @param name
-   *          the name to set
-   */
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  /**
-   * @return the value
-   */
-  public String getValue() {
-    return value;
-  }
-
-  /**
-   * @param value
-   *          the value to set
-   */
-  public void setValue(String value) {
-    this.value = value;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/DapRoot.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/DapRoot.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/DapRoot.java
deleted file mode 100644
index 2784368..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/DapRoot.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.config;
-
-//JDK imports
-import java.net.URL;
-
-/**
- * 
- * A set of root {@link URL} information for OPeNDAP/THREDDS catalogs to crawl
- * and obtain dataset metadata from.
- * 
- */
-public class DapRoot {
-
-  private URL datasetUrl;
-
-  private URL catalogUrl;
-
-  private String filter;
-
-  public DapRoot() {
-    this.datasetUrl = null;
-    this.catalogUrl = null;
-    this.filter = null;
-  }
-
-  /**
-   * @return the datasetUrl
-   */
-  public URL getDatasetUrl() {
-    return datasetUrl;
-  }
-
-  /**
-   * @param datasetUrl
-   *          the datasetUrl to set
-   */
-  public void setDatasetUrl(URL datasetUrl) {
-    this.datasetUrl = datasetUrl;
-  }
-
-  /**
-   * @return the catalogUrl
-   */
-  public URL getCatalogUrl() {
-    return catalogUrl;
-  }
-
-  /**
-   * @param catalogUrl
-   *          the catalogUrl to set
-   */
-  public void setCatalogUrl(URL catalogUrl) {
-    this.catalogUrl = catalogUrl;
-  }
-
-  /**
-   * @return the filter
-   */
-  public String getFilter() {
-    return filter;
-  }
-
-  /**
-   * @param filter
-   *          the filter to set
-   */
-  public void setFilter(String filter) {
-    this.filter = filter;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/DatasetMetElem.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/DatasetMetElem.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/DatasetMetElem.java
deleted file mode 100644
index 2c1f10a..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/DatasetMetElem.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.config;
-
-
-/**
- * 
- * Specification for the {@link OpendapConfig} that specifies what THREDDS
- * dataset met to use to create {@link org.apache.oodt.profile.EnumeratedProfileElement}s from.
- * 
- */
-public class DatasetMetElem {
-
-  private String profileElementName;
-
-  private String value;
-
-  public DatasetMetElem() {
-    this.profileElementName = null;
-    this.value = null;
-  }
-
-  /**
-   * @return the profileElementName
-   */
-  public String getProfileElementName() {
-    return profileElementName;
-  }
-
-  /**
-   * @param profileElementName
-   *          the profileElementName to set
-   */
-  public void setProfileElementName(String profileElementName) {
-    this.profileElementName = profileElementName;
-  }
-
-  /**
-   * @return the value
-   */
-  public String getValue() {
-    return value;
-  }
-
-  /**
-   * @param value
-   *          the value to set
-   */
-  public void setValue(String value) {
-    this.value = value;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfig.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfig.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfig.java
deleted file mode 100644
index 7d9dacb..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfig.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.config;
-
-//JDK imports
-import java.util.List;
-import java.util.Vector;
-
-/**
- * 
- * The configuration object for the {@link OpendapProfileHandler}.
- * 
- */
-public class OpendapConfig {
-
-  private List<DapRoot> roots;
-
-  private List<RewriteSpec> rewriteSpecs;
-
-  private List<ConstantSpec> constSpecs;
-
-  private List<DatasetMetElem> datasetMetSpecs;
-  
-  private ProcessingInstructions processingInstructions;
-
-  public OpendapConfig() {
-    this.roots = new Vector<DapRoot>();
-    this.rewriteSpecs = new Vector<RewriteSpec>();
-    this.constSpecs = new Vector<ConstantSpec>();
-    this.datasetMetSpecs = new Vector<DatasetMetElem>();
-    this.processingInstructions = new ProcessingInstructions();
-  }
-
-  /**
-   * @return the roots
-   */
-  public List<DapRoot> getRoots() {
-    return roots;
-  }
-
-  /**
-   * @param roots
-   *          the roots to set
-   */
-  public void setRoots(List<DapRoot> roots) {
-    this.roots = roots;
-  }
-
-  /**
-   * @return the rewriteSpecs
-   */
-  public List<RewriteSpec> getRewriteSpecs() {
-    return rewriteSpecs;
-  }
-
-  /**
-   * @param rewriteSpecs
-   *          the rewriteSpecs to set
-   */
-  public void setRewriteSpecs(List<RewriteSpec> rewriteSpecs) {
-    this.rewriteSpecs = rewriteSpecs;
-  }
-
-  /**
-   * @return the constSpecs
-   */
-  public List<ConstantSpec> getConstSpecs() {
-    return constSpecs;
-  }
-
-  /**
-   * @param constSpecs
-   *          the constSpecs to set
-   */
-  public void setConstSpecs(List<ConstantSpec> constSpecs) {
-    this.constSpecs = constSpecs;
-  }
-
-  /**
-   * @return the datasetMetSpecs
-   */
-  public List<DatasetMetElem> getDatasetMetSpecs() {
-    return datasetMetSpecs;
-  }
-
-  /**
-   * @param datasetMetSpecs
-   *          the datasetMetSpecs to set
-   */
-  public void setDatasetMetSpecs(List<DatasetMetElem> datasetMetSpecs) {
-    this.datasetMetSpecs = datasetMetSpecs;
-  }
-  
-  /**
-   * Returns all processing instructions.
-   * 
-   * @return the processingInstructions
-   */
-  public ProcessingInstructions getProcessingInstructions() {
-  	return this.processingInstructions;
-  }
-  
-  /**
-   * Adds a processing instruction.
-   * 
-   * @param key
-   * @param value
-   */
-  public void addProcessingInstruction(String key, String value) {
-  	this.processingInstructions.addInstruction(key, value);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigMetKeys.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigMetKeys.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigMetKeys.java
deleted file mode 100644
index cf68dab..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigMetKeys.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.config;
-
-/**
- * 
- * A set of metadata keys for reading the {@link OpendapConfig}.
- * 
- */
-public interface OpendapConfigMetKeys {
-
-  String RES_ATTR_SPEC_TYPE = "resAttr";
-
-  String PROF_ATTR_SPEC_TYPE = "profAttr";
-
-  String PROF_ELEM_SPEC_TYPE = "profElem";
-
-  String ENUM_ELEMENT_TYPE = "EnumeratedProfileElement";
-
-  String RANGED_ELEMENT_TYPE = "RangedProfileElement";
-
-  String DAP_ROOT_TAG = "root";
-
-  String DATASET_URL_ATTR = "datasetURL";
-
-  String CATALOG_URL_ATTR = "catalogURL";
-
-  String FILTER_ATTR = "filter";
-
-  String REWRITE_ROOT_TAG = "rewrite";
-
-  String REWRITE_VAR_TAG = "var";
-
-  String REWRITE_VAR_NAME_ATTR = "name";
-
-  String REWRITE_VAR_RENAME_ATTR = "rename";
-
-  String REWRITE_VAR_TYPE_ATTR = "type";
-
-  String CONSTANT_ROOT_TAG = "constants";
-
-  String CONSTANT_TAG = "const";
-
-  String CONSTANT_NAME_ATTR = "name";
-
-  String CONSTANT_TYPE_ATTR = "type";
-
-  String CONSTANT_VALUE_ATTR = "value";
-  
-  String DATASET_MET_ROOT_TAG = "datasetMetadata";
-  
-  String DATASET_MET_ELEM_TAG = "elem";
-  
-  String DATASET_MET_NAME_ATTR = "name";
-  
-  String DATASET_MET_VALUE_ATTR = "value";
-  
-  String RES_LOCATION_ATTR = "resLocation";
-  
-  String PROCESSING_INSTRUCTIONS_TAG = "processingInstructions";
-  
-  String PROCESSING_INSTRUCTION_TAG = "processingInstruction";
-  
-  String PROCESSING_INSTRUCTION_NAME_ATTR = "name";
-  
-  String PROCESSING_INSTRUCTION_VALUE_ATTR = "value";
-  
-  String EXCLUDE_VARIABLES_ATTR = "excludeVariables";
-  
-  String DATETIME_FORMAT_ATTR = "datetimeFormat";
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigReader.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigReader.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigReader.java
deleted file mode 100644
index 4137805..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapConfigReader.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.config;
-
-// OODT imports
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.CATALOG_URL_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.CONSTANT_NAME_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.CONSTANT_ROOT_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.CONSTANT_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.CONSTANT_TYPE_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.CONSTANT_VALUE_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.DAP_ROOT_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.DATASET_MET_ELEM_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.DATASET_MET_NAME_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.DATASET_MET_ROOT_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.DATASET_MET_VALUE_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.DATASET_URL_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.FILTER_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.PROCESSING_INSTRUCTIONS_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.PROCESSING_INSTRUCTION_NAME_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.PROCESSING_INSTRUCTION_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.PROCESSING_INSTRUCTION_VALUE_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.REWRITE_ROOT_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.REWRITE_VAR_NAME_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.REWRITE_VAR_RENAME_ATTR;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.REWRITE_VAR_TAG;
-import static org.apache.oodt.opendapps.config.OpendapConfigMetKeys.REWRITE_VAR_TYPE_ATTR;
-
-//JDK imports
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.oodt.commons.xml.XMLUtils;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * 
- * Reads the {@link OpendapConfig} from a provided file and returns it.
- * 
- */
-public class OpendapConfigReader {
-
-  public static OpendapConfig read(String confFilePath)
-      throws FileNotFoundException, MalformedURLException {
-    OpendapConfig conf = new OpendapConfig();
-    Document doc = XMLUtils.getDocumentRoot(new FileInputStream(new File(
-        confFilePath)));
-    Element rootElem = doc.getDocumentElement();
-
-    NodeList dapRootNodeList = rootElem.getElementsByTagName(DAP_ROOT_TAG);
-    for (int i = 0; i < dapRootNodeList.getLength(); i++) {
-      Element dapRootElem = (Element) dapRootNodeList.item(i);
-      DapRoot root = new DapRoot();
-      root.setCatalogUrl(new URL(dapRootElem.getAttribute(CATALOG_URL_ATTR)));
-      root.setDatasetUrl(new URL(dapRootElem.getAttribute(DATASET_URL_ATTR)));
-      root.setFilter(dapRootElem.getAttribute(FILTER_ATTR));
-      conf.getRoots().add(root);
-    }
-
-    Element rewriteRootElem = XMLUtils.getFirstElement(REWRITE_ROOT_TAG,
-        rootElem);
-    NodeList rewriteNodeList = rewriteRootElem
-        .getElementsByTagName(REWRITE_VAR_TAG);
-    for (int i = 0; i < rewriteNodeList.getLength(); i++) {
-      Element rewriteElem = (Element) rewriteNodeList.item(i);
-      RewriteSpec spec = new RewriteSpec();
-      spec.setOrigName(rewriteElem.getAttribute(REWRITE_VAR_NAME_ATTR));
-      spec.setRename(rewriteElem.getAttribute(REWRITE_VAR_RENAME_ATTR));
-      spec.setElementType(rewriteElem.getAttribute(REWRITE_VAR_TYPE_ATTR));
-      conf.getRewriteSpecs().add(spec);
-    }
-
-    Element datasetMetRootElem = XMLUtils.getFirstElement(DATASET_MET_ROOT_TAG,
-        rootElem);
-    NodeList datasetMetElemNodeList = datasetMetRootElem
-        .getElementsByTagName(DATASET_MET_ELEM_TAG);
-    for (int i = 0; i < datasetMetElemNodeList.getLength(); i++) {
-      Element datasetMetElem = (Element) datasetMetElemNodeList.item(i);
-      DatasetMetElem datasetMetSpec = new DatasetMetElem();
-      datasetMetSpec.setProfileElementName(datasetMetElem
-          .getAttribute(DATASET_MET_NAME_ATTR));
-      datasetMetSpec.setValue(datasetMetElem
-          .getAttribute(DATASET_MET_VALUE_ATTR));
-      conf.getDatasetMetSpecs().add(datasetMetSpec);
-    }
-
-    Element constRootElem = XMLUtils.getFirstElement(CONSTANT_ROOT_TAG,
-        rootElem);
-    NodeList constNodeList = constRootElem.getElementsByTagName(CONSTANT_TAG);
-    for (int i = 0; i < constNodeList.getLength(); i++) {
-      Element constElem = (Element) constNodeList.item(i);
-      ConstantSpec constSpec = new ConstantSpec();
-      constSpec.setName(constElem.getAttribute(CONSTANT_NAME_ATTR));
-      constSpec.setType(constElem.getAttribute(CONSTANT_TYPE_ATTR));
-      constSpec.setValue(constElem
-          .getAttribute(CONSTANT_VALUE_ATTR));
-      conf.getConstSpecs().add(constSpec);
-    }
-    
-    Element processingInstructionsElem = XMLUtils.getFirstElement(PROCESSING_INSTRUCTIONS_TAG, rootElem);
-    if (processingInstructionsElem!=null) {
-    	NodeList instNodeList = processingInstructionsElem.getElementsByTagName(PROCESSING_INSTRUCTION_TAG);
-    	for (int i = 0; i < instNodeList.getLength(); i++) {
-    		Element instElem = (Element) instNodeList.item(i);
-    		conf.addProcessingInstruction(instElem.getAttribute(PROCESSING_INSTRUCTION_NAME_ATTR), 
-    				                          instElem.getAttribute(PROCESSING_INSTRUCTION_VALUE_ATTR) );
-    	}
-    }
-
-    return conf;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapProfileMetKeys.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapProfileMetKeys.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapProfileMetKeys.java
deleted file mode 100644
index f833be8..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/OpendapProfileMetKeys.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oodt.opendapps.config;
-
-/**
- * Interface containing names for the metadata keys written to an OpenDAP profile document.
- * 
- * @author Luca Cinquini
- *
- */
-public interface OpendapProfileMetKeys {
-	
-	 String VARIABLES = "Variables";
-	 
-	 String COORDINATES = "Coordinates";
-	 
-	 String VARIABLES_LONG_NAMES = "Variable Long Names";
-	 
-	 String CF_STANDARD_NAMES = "CF Standard Names";
-	 
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/ProcessingInstructions.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/ProcessingInstructions.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/ProcessingInstructions.java
deleted file mode 100644
index 4e2e01f..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/ProcessingInstructions.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oodt.opendapps.config;
-
-import java.util.Collections;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.springframework.util.StringUtils;
-
-/**
- * Class that holds special configuration instructions for generating an Opendap profile.
- * Instructions are stored as (name, values) pairs: each named instruction can have multiple values.
- * An instructions may be specified in the Opendap XML configuration file as a single element with comma-separated values,
- * or as multiple elements with the same name (and one or more values each).
- * 
- * @author Luca Cinquini
- *
- */
-public class ProcessingInstructions {
-	
-	/**
-	 * Local storage for processing instructions.
-	 * Note that the order of the XML elements is not preserved (on purpose).
-	 */
-	private final Map<String, Set<String>> instructions = new ConcurrentHashMap<String, Set<String>>();
-	
-	/**
-	 * Returns all values for a named instruction,
-	 * or an empty set if the instruction was not specified.
-	 * @param key
-	 * @return
-	 */
-	public Set<String> getInstructionValues(String key) {
-		if (instructions.containsKey(key)) {
-			return Collections.unmodifiableSet( instructions.get(key) );
-		} else {
-			return Collections.unmodifiableSet( new HashSet<String>() );
-		}
-	}
-	
-	/**
-	 * If an instruction contains a single value, it is returned.
-	 * If the instruction has no values or multiple values, returns null instead.
-	 * @param key
-	 * @return
-	 */
-	public String getInstructionValue(String key) {
-		if (instructions.get(key)!=null &&  instructions.get(key).size()==1) {
-			for (String value : instructions.get(key)) {
-				return value;
-			}
-		}
-		return null;
-	}
-	
-	/**
-	 * Returns all instructions.
-	 * @return
-	 */
-	public Map<String, Set<String>> getInstructions() {
-		return Collections.unmodifiableMap(instructions);
-	}
-	
-	/**
-	 * Method to add a value to a named instruction.
-	 * Value can be a comma separated list of values.
-	 * Leading and trailing spaces for each value are removed.
-	 * @param key
-	 * @param value
-	 */
-	public void addInstruction(String key, String value) {
-		if (StringUtils.hasText(key)) {
-			if (!instructions.containsKey(key)) {
-				instructions.put(key, new HashSet<String>());
-			}
-			String[] vals = value.split(",");
-			for (String val : vals) {
-				if (StringUtils.hasText(val)) {
-					instructions.get(key).add(val.trim());
-				}
-			}
-		}
-	}
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/config/RewriteSpec.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/config/RewriteSpec.java b/opendapps/src/main/java/org/apache/oodt/opendapps/config/RewriteSpec.java
deleted file mode 100644
index fd8a0fe..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/config/RewriteSpec.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.config;
-
-/**
- * 
- * A specification for rewriting OPeNDAP element names and tags from their
- * original OPeNDAP/THREDDS names into OODT profile elements, and their names
- * and types. Part of the {@link OpendapConfig}.
- * 
- */
-public class RewriteSpec {
-
-  private String origName;
-
-  private String rename;
-
-  private String elementType;
-
-  public RewriteSpec() {
-    this.origName = null;
-    this.rename = null;
-    this.elementType = null;
-  }
-
-  /**
-   * @return the origName
-   */
-  public String getOrigName() {
-    return origName;
-  }
-
-  /**
-   * @param origName
-   *          the origName to set
-   */
-  public void setOrigName(String origName) {
-    this.origName = origName;
-  }
-
-  /**
-   * @return the rename
-   */
-  public String getRename() {
-    return rename;
-  }
-
-  /**
-   * @param rename
-   *          the rename to set
-   */
-  public void setRename(String rename) {
-    this.rename = rename;
-  }
-
-  /**
-   * @return the elementType
-   */
-  public String getElementType() {
-    return elementType;
-  }
-
-  /**
-   * @param elementType
-   *          the elementType to set
-   */
-  public void setElementType(String elementType) {
-    this.elementType = elementType;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/DasMetadataExtractor.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/DasMetadataExtractor.java b/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/DasMetadataExtractor.java
deleted file mode 100644
index 7b01ed1..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/DasMetadataExtractor.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.extractors;
-
-//JDK imports
-import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.oodt.opendapps.config.OpendapConfig;
-import org.apache.oodt.opendapps.config.OpendapConfigMetKeys;
-import org.apache.oodt.opendapps.config.OpendapProfileMetKeys;
-import org.apache.oodt.opendapps.config.ProcessingInstructions;
-import org.apache.oodt.opendapps.util.ProfileUtils;
-
-import org.springframework.util.StringUtils;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import opendap.dap.Attribute;
-import opendap.dap.AttributeTable;
-import opendap.dap.DAS;
-import opendap.dap.DConnect;
-
-//OPENDAP imports
-//OODT imports
-
-/**
- * Implementation of {@link MetadataExtractor} to extract metadata from an
- * OpenDAP DAS source. Currently this class only extracts metadata from the
- * NetCDF global attributes of type String, disregarding all others.
- * 
- * @author Luca Cinquini
- * 
- */
-public class DasMetadataExtractor implements MetadataExtractor {
-
-  // constants from NetCDF metadata convention
-  public static final String NC_GLOBAL = "NC_GLOBAL";
-  public static final String LONG_NAME = "long_name";
-  public static final String STANDARD_NAME = "standard_name";
-
-  // NetCDF data types
-  public static final int INT32_TYPE = 6;
-  public static final int INT64_TYPE = 7;
-  public static final int FLOAT32_TYPE = 8;
-  public static final int FLOAT64_TYPE = 9;
-  public static final int STRING_TYPE = 10;
-  
-  // output format for all global attributes interpreted as dates
-  private final static String OUTPUT_DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
-  private final static DateFormat outputDatetimeFormat = new SimpleDateFormat(OUTPUT_DATETIME_FORMAT);
-
-  private static Logger LOG = Logger.getLogger(DasMetadataExtractor.class
-      .getName());
-
-  /**
-   * The DAS stream which is the metadata source.
-   */
-  private final DConnect dConn;
-
-  public DasMetadataExtractor(DConnect dConn) {
-    this.dConn = dConn;
-  }
-
-  /**
-	 * The main metadata extraction method.
-	 * 
-	 * @param metadata
-	 *          : the metadata target, specifically the CAS metadata container.
-	 */
-	public void extract(Metadata metadata, OpendapConfig config) {
-	
-	  LOG.log(Level.INFO, "Parsing DAS metadata from: " + dConn.URL());
-	  
-	  // list of excluded variables
-	  Set<String> excludedVariables 
-	  	= config.getProcessingInstructions().getInstructionValues(OpendapConfigMetKeys.EXCLUDE_VARIABLES_ATTR);
-	
-	  try {
-	    DAS das = dConn.getDAS();
-	    @SuppressWarnings("unchecked")
-	    Enumeration<String> names = das.getNames();
-	    while (names.hasMoreElements()) {
-	      String attName = names.nextElement();
-	      LOG.log(Level.FINE, "Extracting DAS attribute: " + attName);
-	      AttributeTable at = das.getAttributeTable(attName);
-	      Enumeration<String> e = at.getNames();
-	      
-	      // NetCDF global attributes
-	      // store attribute name, all values for ALL attributes (strings and numerics)
-	      ProcessingInstructions processingInstructions = config.getProcessingInstructions();
-	      if (attName.equals(NC_GLOBAL)) {
-	      	while (e.hasMoreElements()) {
-	      		String key = e.nextElement();
-	      		Attribute att = at.getAttribute(key);
-	      		// convert all DAS attribute names to lower case
-	      		String lkey = key.toLowerCase();
-	      		
-	      		// look for global attribute name in date/time configuration specification
-	      		String dateTimeFormatKey = OpendapConfigMetKeys.DATETIME_FORMAT_ATTR + ":" + lkey;
-	      		String dateTimeFormatValue = processingInstructions.getInstructionValue(dateTimeFormatKey);
-	      		// add this attribute as properly formatted date/time
-	      		if (StringUtils.hasText(dateTimeFormatValue)) {
-	      			DateFormat inFormat = new SimpleDateFormat(dateTimeFormatValue);
-	      			Enumeration<String> edt = att.getValues();
-	      			while (edt.hasMoreElements()) {
-	      				String value = edt.nextElement();
-	      				try {
-  	      				Date date = inFormat.parse(value);
-  	      				ProfileUtils.addIfNotNull(metadata, lkey, outputDatetimeFormat.format(date));
-	      				} catch(ParseException pe) {
-	      					LOG.log(Level.WARNING, 
-	      							    "Error parsing date/time from DAS attribute: "+key+" value="+value+" error="+pe.getMessage());
-	      				}
-	      			}
-	      		// add this global attribute as string
-	      		} else {
-	      			ProfileUtils.addIfNotExisting(metadata, lkey, att.getValues());
-	      		}
-	      	}
-	        
-	      // NetCDF coordinates
-	      } else {
-	      	
-	      	if (   attName.equalsIgnoreCase("lat") || attName.equalsIgnoreCase("latitude")
-	      			|| attName.equalsIgnoreCase("lon") || attName.equalsIgnoreCase("longitude")
-	      			|| attName.equalsIgnoreCase("time")
-	      			|| attName.equalsIgnoreCase("alt") || attName.equalsIgnoreCase("altitude")
-	      			|| attName.equalsIgnoreCase("lev") || attName.equalsIgnoreCase("level")
-	      			|| attName.equalsIgnoreCase("depth")
-	      			) {
-	      		
-	      		if (!excludedVariables.contains(attName)) {
-	      			// store coordinate name
-	      			ProfileUtils.addIfNotNull(metadata, OpendapProfileMetKeys.COORDINATES, attName);
-	      		}
-	        	
-				} else {
-	      		
-	      		if (!excludedVariables.contains(attName)) {
-	          	// store variable name
-	          	ProfileUtils.addIfNotNull(metadata, OpendapProfileMetKeys.VARIABLES, attName);
-	          	// store "standard_name", "long_name"
-	          	while (e.hasMoreElements()) {
-	          		String key = e.nextElement();
-	          		Attribute att = at.getAttribute(key);
-	          		if (key.equalsIgnoreCase(STANDARD_NAME)) {
-	          			ProfileUtils.addIfNotNull(metadata, OpendapProfileMetKeys.CF_STANDARD_NAMES, att.getValueAt(0));
-	          		} else if (key.equalsIgnoreCase(LONG_NAME)) {
-	          			ProfileUtils.addIfNotNull(metadata, OpendapProfileMetKeys.VARIABLES_LONG_NAMES, att.getValueAt(0));
-	          		}       		
-	          	}	
-	      		}
-	        	
-	      	}
-	      }
-	
-	    }
-	    
-	  } catch (Exception e) {
-	    LOG.log(Level.WARNING, "Error parsing DAS metadata: " + e.getMessage());
-	  }
-	
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/MetadataExtractor.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/MetadataExtractor.java b/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/MetadataExtractor.java
deleted file mode 100644
index 1cf9805..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/MetadataExtractor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.extractors;
-
-//OODT imports
-import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.oodt.opendapps.config.OpendapConfig;
-
-/**
- * Interface for extracting metadata from a generic web accessible resource into
- * a CAS metadata container. Each implementation class must be responsible for
- * instantiating and accessing the specific metadata source as appropriate.
- * 
- * @author Luca Cinquini
- * 
- */
-public interface MetadataExtractor {
-
-  /**
-   * Method to (further) populate the metadata container. 
-   * Any extracted metadata is added to the current metadata content.
-   * 
-   * @param metadata
-   * @param config
-   */
-  void extract(Metadata metadata, OpendapConfig config);
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/NcmlMetadataExtractor.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/NcmlMetadataExtractor.java b/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/NcmlMetadataExtractor.java
deleted file mode 100644
index 9b40330..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/NcmlMetadataExtractor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.extractors;
-
-//JDK imports
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-//OODT imports
-import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.oodt.opendapps.config.OpendapConfig;
-
-/**
- * Implementation of {@link MetadataExtractor} that parses an NcML XML document.
- * Currently this class is simply a stub that doesn't do anything.
- * 
- * @author Luca Cinquini
- * 
- */
-public class NcmlMetadataExtractor implements MetadataExtractor {
-
-  private final String ncmlUrl;
-
-  private static Logger LOG = Logger.getLogger(NcmlMetadataExtractor.class
-      .getName());
-
-  public NcmlMetadataExtractor(String ncmlUrl) {
-    this.ncmlUrl = ncmlUrl;
-  }
-
-  /**
-   * Stub implementation of interface method.
-   */
-  public void extract(Metadata metadata, OpendapConfig config) {
-
-    LOG.log(Level.FINE, "Parsing NcML metadata from: " + ncmlUrl);
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/ThreddsMetadataExtractor.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/ThreddsMetadataExtractor.java b/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/ThreddsMetadataExtractor.java
deleted file mode 100644
index 406feb4..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/extractors/ThreddsMetadataExtractor.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.extractors;
-
-//JDK imports
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.UUID;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-//OODT imports
-import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.oodt.opendapps.config.OpendapConfig;
-import org.apache.oodt.opendapps.util.ProfileUtils;
-
-
-//Spring imports
-import org.springframework.util.StringUtils;
-
-//THREDDS imports
-import thredds.catalog.InvAccess;
-import thredds.catalog.InvDataset;
-import thredds.catalog.InvDocumentation;
-import thredds.catalog.InvProperty;
-import thredds.catalog.ServiceType;
-import thredds.catalog.ThreddsMetadata.Contributor;
-import thredds.catalog.ThreddsMetadata.GeospatialCoverage;
-import thredds.catalog.ThreddsMetadata.Range;
-import thredds.catalog.ThreddsMetadata.Source;
-import thredds.catalog.ThreddsMetadata.Vocab;
-import ucar.nc2.units.DateType;
-import ucar.unidata.geoloc.LatLonRect;
-
-/**
- * Implementation of {@link MetadataExtractor} that extracts metadata from a
- * Thredds dataset.
- * 
- * @author Luca Cinquini
- * 
- */
-public class ThreddsMetadataExtractor implements MetadataExtractor {
-
-  private static Logger LOG = Logger.getLogger(ThreddsMetadataExtractor.class
-      .getName());
-
-  // constant missing for 4.2 version of NetCDF library
-  public final static String SERVICE_TYPE_NCML = "NCML";
-  
-  /**
-   * The source of metadata to be extracted.
-   */
-  private final InvDataset dataset;
-
-  public ThreddsMetadataExtractor(final InvDataset dataset) {
-    this.dataset = dataset;
-  }
-
-  public void extract(Metadata met, OpendapConfig config) {
-
-    LOG.log(Level.INFO, "Crawling catalog URL=" + dataset.getCatalogUrl()
-        + " dataset ID=" + dataset.getID());
-
-    ProfileUtils.addIfNotNull(met, "Authority", dataset.getAuthority());
-    ProfileUtils.addIfNotNull(met, "CatalogUrl", dataset.getCatalogUrl());
-    try {
-    	ProfileUtils.addIfNotNull(met, "Host", (new URL(dataset.getCatalogUrl())).getHost() );
-    } catch(MalformedURLException e) {
-    	LOG.log(Level.WARNING, e.getMessage());
-    }
-    ProfileUtils.addIfNotNull(met, "DatasetFullName", dataset.getFullName());
-    if (dataset.getContributors() != null) {
-      for (Contributor contributor : dataset.getContributors()) {
-        ProfileUtils.addIfNotNull(met, "Contributor", contributor.getName());
-      }
-    }
-
-    if (dataset.getCreators() != null) {
-      for (Source source : dataset.getCreators()) {
-        ProfileUtils.addIfNotNull(met, "Creator", source.getName());
-      }
-    }
-
-    if (dataset.getDataFormatType() != null) {
-      ProfileUtils.addIfNotNull(met, "DataFormatType", dataset
-          .getDataFormatType().toString());
-    }
-
-    if (dataset.getDataType() != null) {
-      ProfileUtils.addIfNotNull(met, "DataType", dataset.getDataType()
-          .toString());
-    }
-
-    if (dataset.getDates() != null) {
-      for (DateType dateType : dataset.getDates()) {
-        String dateString = null;
-        try {
-          dateString = ProfileUtils.toISO8601(dateType.getDate());
-        } catch (Exception e) {
-          LOG.log(Level.WARNING,
-              "Error converting date: [" + dateType.getDate() + "]: Message: "
-                  + e.getMessage());
-        }
-        ProfileUtils.addIfNotNull(met, "Dates", dateString);
-      }
-    }
-
-    if (dataset.getDocumentation() != null) {
-      for (InvDocumentation doc : dataset.getDocumentation()) {
-      	// textual documentation
-      	if (StringUtils.hasText(doc.getInlineContent())) {
-      		if (StringUtils.hasText(doc.getType())) {
-      			// use specific documentation type, when available
-      			ProfileUtils.addIfNotNull(met, doc.getType(), doc.getInlineContent());
-      		} else {
-      			// otherwise use generic "Documentation" tag
-      			ProfileUtils.addIfNotNull(met, "Documentation", doc.getInlineContent());
-      		}
-      	}
-      	// hyperlinked documentation
-      	if (StringUtils.hasText(doc.getXlinkHref())) {
-      		String tuple = this.encodeXlinkTuple(doc.getXlinkHref(), doc.getXlinkTitle(), doc.getType());
-      		ProfileUtils.addIfNotNull(met, "Xlink", tuple);
-      	}
-      	
-      }
-    }
-
-    ProfileUtils.addIfNotNull(met, "FullName", dataset.getFullName());
-    GeospatialCoverage geoCoverage = dataset.getGeospatialCoverage();
-    
-    if (geoCoverage != null) {
-    	
-      LatLonRect bbox = geoCoverage.getBoundingBox();
-      if (bbox != null) {
-        ProfileUtils.addIfNotNull(met, "SouthwestBC", bbox.getLowerLeftPoint()
-            .toString());
-        ProfileUtils.addIfNotNull(met, "NorthwestBC", bbox.getUpperLeftPoint()
-            .toString());
-        ProfileUtils.addIfNotNull(met, "NortheastBC", bbox.getUpperRightPoint()
-            .toString());
-        ProfileUtils.addIfNotNull(met, "SoutheastBC", bbox.getLowerRightPoint()
-            .toString());
-      }
-      
-      // try north south, east west
-      if (geoCoverage.getNorthSouthRange() != null) {        	
-        Range nsRange = geoCoverage.getNorthSouthRange();
-        ProfileUtils.addIfNotNull(met, "NorthSouthRangeStart",
-            String.valueOf(nsRange.getStart()));
-        ProfileUtils.addIfNotNull(met, "NorthSouthRangeResolution",
-            String.valueOf(nsRange.getResolution()));
-        ProfileUtils.addIfNotNull(met, "NorthSouthRangeSize",
-            String.valueOf(nsRange.getSize()));
-        ProfileUtils.addIfNotNull(met, "NorthSouthRangeUnits",
-            nsRange.getUnits());
-        ProfileUtils.addIfNotNull(met, "NorthSouthRangeStop",
-            String.valueOf(nsRange.getStart()+nsRange.getSize()));
-      }
-
-      if (geoCoverage.getEastWestRange() != null) {
-        Range nsRange = geoCoverage.getEastWestRange();
-        ProfileUtils.addIfNotNull(met, "EastWestRangeStart",
-            String.valueOf(nsRange.getStart()));
-        ProfileUtils.addIfNotNull(met, "EastWestRangeResolution",
-            String.valueOf(nsRange.getResolution()));
-        ProfileUtils.addIfNotNull(met, "EastWestRangeSize",
-            String.valueOf(nsRange.getSize()));
-        ProfileUtils.addIfNotNull(met, "EastWestRangeUnits",
-            nsRange.getUnits());
-        ProfileUtils.addIfNotNull(met, "EastWestRangeStop",
-            String.valueOf(nsRange.getStart()+nsRange.getSize()));
-      }      
-
-      ProfileUtils.addIfNotNull(met, "GeospatialCoverageLatitudeResolution",
-          String.valueOf(dataset.getGeospatialCoverage().getLatResolution()));
-      ProfileUtils.addIfNotNull(met, "GeospatialCoverageLongitudeResolution",
-          String.valueOf(dataset.getGeospatialCoverage().getLonResolution()));
-      
-      // add geo-spatial coverage alternative form
-      ProfileUtils.addIfNotNull(met, "GeospatialCoverageLatSouth", String.valueOf(dataset.getGeospatialCoverage().getLatSouth()));
-      ProfileUtils.addIfNotNull(met, "GeospatialCoverageLatNorth", String.valueOf(dataset.getGeospatialCoverage().getLatNorth()));   
-      ProfileUtils.addIfNotNull(met, "GeospatialCoverageLonWest", String.valueOf(dataset.getGeospatialCoverage().getLonWest()));
-      ProfileUtils.addIfNotNull(met, "GeospatialCoverageLonEast", String.valueOf(dataset.getGeospatialCoverage().getLonEast()));
-      
-      if (dataset.getGeospatialCoverage().getNames() != null) {
-        for (Vocab gName : dataset.getGeospatialCoverage().getNames()) {
-          ProfileUtils.addIfNotNull(met, "GeospatialCoverage", gName.getText());
-        }
-      }
-
-    }
-
-    ProfileUtils.addIfNotNull(met, "History", dataset.getHistory());
-    if (dataset.getKeywords() != null) {
-      for (Vocab vocab : dataset.getKeywords()) {
-        ProfileUtils.addIfNotNull(met, "Keywords", vocab.getText());
-      }
-    }
-    ProfileUtils.addIfNotNull(met, "Name", dataset.getName());
-    ProfileUtils.addIfNotNull(met, "Processing", dataset.getProcessing());
-    if (dataset.getProjects() != null) {
-      for (Vocab vocab : dataset.getProjects()) {
-        ProfileUtils.addIfNotNull(met, "Projects", vocab.getText());
-      }
-    }
-
-    if (dataset.getProperties() != null) {
-      for (InvProperty prop : dataset.getProperties()) {
-        ProfileUtils.addIfNotNull(met, prop.getName(), prop.getValue());
-      }
-    }
-
-    if (dataset.getPublishers() != null) {
-      for (Source source : dataset.getPublishers()) {
-      	// Note: use "Publisher" (singular) as from the OODT profile specification
-        ProfileUtils.addIfNotNull(met, "Publisher", source.getName());
-      }
-    }
-
-    ProfileUtils.addIfNotNull(met, "RestrictAccess",
-        dataset.getRestrictAccess());
-    if (dataset.getTimeCoverage() != null) {
-      String startDateTimeStr = null, endDateTimeStr = null;
-      try {
-        startDateTimeStr = ProfileUtils.toISO8601(dataset.getTimeCoverage()
-            .getStart().getDate());
-        endDateTimeStr = ProfileUtils.toISO8601(dataset.getTimeCoverage()
-            .getEnd().getDate());
-      } catch (Exception e) {
-        LOG.log(
-            Level.WARNING,
-            "Error converting start/end date time strings: Message: "
-                + e.getMessage());
-      }
-
-      ProfileUtils.addIfNotNull(met, "StartDateTime", startDateTimeStr);
-      ProfileUtils.addIfNotNull(met, "EndDateTime", endDateTimeStr);
-    }
-
-    if (dataset.getTimeCoverage() != null
-        && dataset.getTimeCoverage().getResolution() != null) {
-      ProfileUtils.addIfNotNull(met, "TimeCoverageResolution", dataset
-          .getTimeCoverage().getResolution().getText());
-    }
-    // dataset unique ID
-    ProfileUtils.addIfNotNull(met, "UniqueID", dataset.getUniqueID());
-
-    // dataset ID is typically not null
-    ProfileUtils.addIfNotNull(met, "ID", dataset.getID());
-
-    // generate a UUID for each dataset, to be used as profile ID
-    ProfileUtils.addIfNotNull(met, "UUID", UUID.randomUUID().toString());
-
-    // store access services - only the OpenDAP endpoint for now
-    for (InvAccess access : dataset.getAccess()) {    	
-      String url = access.getStandardUri().toString();
-    	String type = access.getService().getServiceType().toString();
-    	String name = access.getService().getName();
-    	
-    	// add opendap access URL
-    	if (type.equalsIgnoreCase(ServiceType.OPENDAP.toString())) {
-    		// store opendap URL
-    		ProfileUtils.addIfNotNull(met,"OpendapUrl",url);
-    	  // note: special processing of opendap endpoints since URL in thredds catalog is unusable without a suffix
-    		ProfileUtils.addIfNotNull(met,"Access", this.encodeAccessTuple(url+".html", ProfileUtils.MIME_TYPE_OPENDAP_HTML, type));
-    	} 
-    }
-    // add TREDDS XML catalog URL
-    String url = dataset.getCatalogUrl(); // catalog_url.xml#dataset_id
-    ProfileUtils.addIfNotNull(met,"Access", this.encodeAccessTuple(url, ProfileUtils.MIME_TYPE_THREDDS, "Catalog/XML"));
-    ProfileUtils.addIfNotNull(met,"Access", this.encodeAccessTuple(url.replaceAll("\\.xml", ".html"), ProfileUtils.MIME_TYPE_HTML, "Catalog/HTML"));
-
-  }
-  
-	/**
-	 * Utility method that joins the parts of an xlink tuple (href, title, type) with a delimiting character.
-	 * @param href : the xlink URL, must be not null
-	 * @param title : the xlink title, may be null
-	 * @param type : the xlink type, may be null
-	 * @return
-	 */
-	private String encodeXlinkTuple(final String href, final String title, final String type) {
-      return href + ProfileUtils.CHAR + (StringUtils.hasText(title) ? title : "Reference") + ProfileUtils.CHAR + (
-          StringUtils.hasText(type) ? type : "HTML");
-	}
-	
-	/**
-	 * Utility method that joins the part of A THREDDS access point (url, service type, service name) with a delimiting character
-	 * @param url : the access URL
-	 * @param type : the service type, mapped to a mime type
-	 * @param name : the service name
-	 * @return
-	 */
-	private String encodeAccessTuple(final String url, final String type, final String name) {
-      return url + ProfileUtils.CHAR + (StringUtils.hasText(type) ? type : "") + ProfileUtils.CHAR + (
-          StringUtils.hasText(name) ? name : "");
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/util/OpendapURLEvaluator.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/util/OpendapURLEvaluator.java b/opendapps/src/main/java/org/apache/oodt/opendapps/util/OpendapURLEvaluator.java
deleted file mode 100644
index eeec45c..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/util/OpendapURLEvaluator.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.oodt.opendapps.util;
-
-//JDK imports
-import java.io.IOException;
-
-import org.apache.oodt.opendapps.DatasetExtractor;
-import org.apache.oodt.xmlquery.XMLQuery;
-
-/**
- * 
- * Evaluates the resultant OPeNDAP URLs returned from a THREDDS catalog by the
- * {@link DatasetExtractor}.
- * 
- */
-public class OpendapURLEvaluator {
-
-  public static void main(String[] args) throws IOException {
-    String datasetUrl = args[0];
-    String catalogUrl = args[1];
-
-    DatasetExtractor gen = new DatasetExtractor(getQuery(), catalogUrl,
-        datasetUrl, null);
-    System.out.println(gen.getDapUrls());
-  }
-
-  private static XMLQuery getQuery() {
-    return new XMLQuery("PFunction=findall", "cmdline", "cmdline", null, null,
-        null, null, null, XMLQuery.DEFAULT_MAX_RESULTS, true);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileChecker.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileChecker.java b/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileChecker.java
deleted file mode 100644
index 1996381..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileChecker.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oodt.opendapps.util;
-
-// JDK imports
-import java.util.List;
-
-// OODT imports
-import org.apache.oodt.profile.Profile;
-import org.apache.oodt.profile.ProfileElement;
-
-// Spring imports
-import org.springframework.util.StringUtils;
-
-/**
- * Utility class that checks an OODT Profile versus a list of required/optional elements,
- * and provides a validation summary for quick inspection by the publisher.
- * 
- * @author Luca Cinquini
- *
- */
-public class ProfileChecker {
-	
-	// list of mandatory profile elements
-	private final static String[] mandatoryProfileElements = new String[] {  };
-	
-	// list of optional profile elements
-	private final static String[] optionalProfileElements = new String[] { "mission_name", "sensor", "institute",
-		                                                                     "variable", "cf_standard_name", "variable_long_name",
-		                                                                     "spatial_coverage",
-		                                                                     "north_degrees", "east_degrees", "south_degrees", "west_degrees",
-		                                                                     "datetime_start", "datetime_stop" };
-		
-	/**
-	 * Main method to check an OODT profile.
-	 * 
-	 * @param profile : the OODT profile that needs validation.
-	 * @param sb : buffer to write the output to.
-	 * @return : true if the profile is valid, false otherwise.
-	 */
-	public static boolean check(final Profile profile, final StringBuilder sb) {
-		
-		// profile passes by default
-		boolean ok = true;
-		sb.append("\nChecking profile=").append(profile.getProfileAttributes().getID());
-		
-		ok = checkResourceAttribute("Identifier", profile.getResourceAttributes().getIdentifier(), true, sb);
-		
-		ok = ok && checkResourceAttribute("Title", profile.getResourceAttributes().getTitle(), true, sb);
-		
-		ok = ok && checkResourceAttribute("Description", profile.getResourceAttributes().getDescription(), false, sb);
-		
-		ok = ok && checkResourceAttribute("Location of type "+ProfileUtils.MIME_TYPE_OPENDAP_HTML, 
-				             selectResourceLocationByMimeType(profile.getResourceAttributes().getResLocations(), ProfileUtils.MIME_TYPE_OPENDAP_HTML), 
-				             true, sb);
-		
-		ok = ok && checkResourceAttribute("Location of type "+ProfileUtils.MIME_TYPE_THREDDS, 
-        selectResourceLocationByMimeType(profile.getResourceAttributes().getResLocations(), ProfileUtils.MIME_TYPE_THREDDS), 
-        true, sb);
-		
-		ok = ok && checkResourceAttribute("Location of type "+ProfileUtils.MIME_TYPE_HTML, 
-        selectResourceLocationByMimeType(profile.getResourceAttributes().getResLocations(), ProfileUtils.MIME_TYPE_HTML), 
-        true, sb);
-		
-		ok = ok && checkResourceAttribute("Location of type "+ProfileUtils.MIME_TYPE_GIS, 
-        selectResourceLocationByMimeType(profile.getResourceAttributes().getResLocations(), ProfileUtils.MIME_TYPE_GIS), 
-        true, sb);
-		
-		for (String name : mandatoryProfileElements) {
-			ok = ok && checkProfileElement(profile, name, true, sb);
-		}
-		for (String name : optionalProfileElements) {
-			ok = ok && checkProfileElement(profile, name, false, sb);
-		}
-		
-		return ok;
-	}
-	
-	/**
-	 * Method to check that a profile Resource Attribute has a valid value.
-	 * 
-	 * @param name
-	 * @param value
-	 * @param mandatory
-	 * @param sb
-	 * @return
-	 */
-	private static boolean checkResourceAttribute(String name, String value, boolean mandatory, StringBuilder sb) {
-		sb.append("\n\tResource Attribute '").append(name).append("' = ");
-		if (!StringUtils.hasText(value) || value.equalsIgnoreCase("null")) {
-				if (mandatory) {
-				  return false; // bad value
-				}
-		} else {
-			sb.append(value);
-		}
-		return true;
-	}
-	
-	/**
-	 * Method to check that the profile contains at least one valid value for of a specific element name.
-	 * 
-	 * @param profile
-	 * @param name
-	 * @param mandatory
-	 * @param sb
-	 * @return
-	 */
-	private static boolean checkProfileElement(Profile profile, String name, boolean mandatory, StringBuilder sb) {
-		
-		sb.append("\n\tProfile Element '").append(name).append("' = ");
-	  // profile element is valid by default
-		boolean ok = true; 
-	
-		if (profile.getProfileElements().containsKey(name)) {
-				ProfileElement profElement = (ProfileElement)profile.getProfileElements().get(name);
-			
-  			// profile element found
-  			List<String> values = profElement.getValues();
-  			if (values.size()>0) {
-  				boolean first = true;
-  				for (String value : values) {
-  					if (!StringUtils.hasText(value) || value.equalsIgnoreCase("null")) {
-  						if (mandatory) {
-						  ok = false; // invalid value for this profile element
-						}
-  					} else {
-  						if (!first) {
-						  sb.append(", ");
-						}
-  						sb.append(value);
-  						first = false;
-  					}
-  				}
-  			} else {
-  				if (mandatory) {
-				  ok = false; // no values found for this profile element
-				}
-  			}
-		
-		} else {
-			if (mandatory) {
-			  ok = false; // no profile element found
-			}
-		}
-		
-		return ok;
-		
-	}
-	
-	/**
-	 * Method to select the resource location of a specific mime type, if found.
-	 * 
-	 * @param resLocations
-	 * @param mimeType
-	 * @return
-	 */
-	private static String selectResourceLocationByMimeType(List<String> resLocations, String mimeType) {
-		
-		for (String resLocation : resLocations) {
-			String[] parts = resLocation.split("\\|"); // regular expression of ProfileUtils.CHAR
-			if (parts[1].equals(mimeType)) {
-			  return parts[0];
-			}
-		}
-		
-		// resource location not found
-		return null;
-		
-	}
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/oodt/blob/098cc4fa/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileSerializer.java
----------------------------------------------------------------------
diff --git a/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileSerializer.java b/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileSerializer.java
deleted file mode 100644
index 56de711..0000000
--- a/opendapps/src/main/java/org/apache/oodt/opendapps/util/ProfileSerializer.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.oodt.opendapps.util;
-
-//JDK imports
-import java.io.StringWriter;
-import java.util.List;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-//OODT imports
-import org.apache.oodt.profile.Profile;
-
-/**
- * Utility class to serialize a list of profiles to an XML document.
- * <p/>
- * Based on functionality already contained in the OODT grid ProfileQueryServlet
- * class, but separated as a stand alone utility to reduce dependencies.
- * 
- * @author Luca Cinquini
- * 
- */
-public class ProfileSerializer {
-
-  /**
-   * Function to serialize a list of {@link Profile}s to XML.
-   * 
-   * @param profiles
-   * @return
-   * @throws TransformerException
-   */
-  public static String toXML(final List<Profile> profiles)
-      throws TransformerException {
-
-    final StringWriter writer = new StringWriter();
-    writer.append("<?xml version='1.0' encoding='UTF-8'?>");
-    writer.append("<!DOCTYPE profiles PUBLIC '" + Profile.PROFILES_DTD_FPI + "' '").append(Profile.PROFILES_DTD_URL)
-          .append("'>");
-    writer.append("<profiles>");
-
-    final Transformer transformer = createTransformer();
-    final Document doc = Profile.createProfileDocument();
-    for (final Profile profile : profiles) {
-
-      Node profileNode = profile.toXML(doc);
-      DOMSource source = new DOMSource(profileNode);
-      StreamResult result = new StreamResult(writer);
-      transformer.transform(source, result);
-
-    }
-
-    writer.append("</profiles>");
-
-    return writer.toString();
-
-  }
-
-  /**
-   * Create a transformer, properly configured for XML text serialization.
-   * 
-   * @return a <code>Transformer</code> value.
-   * @throws TransformerException
-   *           if an error occurs.
-   */
-  private static Transformer createTransformer() throws TransformerException {
-
-    Transformer transformer;
-    synchronized (TRANSFORMER_FACTORY) {
-      transformer = TRANSFORMER_FACTORY.newTransformer();
-    }
-
-    transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-    transformer.setOutputProperty(OutputKeys.VERSION, "1.0");
-    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
-    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-    transformer.setOutputProperty(OutputKeys.STANDALONE, "no");
-    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-    transformer.setOutputProperty(OutputKeys.MEDIA_TYPE, "text/xml");
-    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount",
-        "4");
-
-    return transformer;
-  }
-
-  /** Sole transformer factory this class will ever need. */
-  private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory
-      .newInstance();
-
-}


Mime
View raw message