blob: 01394e7202fbdf05caf8f5ac9b57c6c505c94304 [file] [log] [blame]
/**
* 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.pcs.listing;
//JDK imports
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Collections;
import java.util.List;
//OODT imports
import org.apache.oodt.pcs.input.PGEConfigFileException;
import org.apache.oodt.pcs.input.PGEConfigFileReader;
import org.apache.oodt.pcs.input.PGEConfigurationFile;
import org.apache.oodt.pcs.tools.PCSLongLister; //for javadoc
import static org.apache.oodt.pcs.listing.ListingConfKeys.*;
/**
*
* The configuration for the {@link PCSLongLister}.
*
* @author mattmann
* @version $Revision$
*
*/
public class ListingConf {
private PGEConfigurationFile conf;
/**
* Constructs a new ListingConf with the given {@link File}.
*
* @param file
* The configuration file.
* @throws FileNotFoundException
* If the config file cannot be found.
* @throws InstantiationException
* If there is some error reading the config file.
*/
public ListingConf(File file) throws FileNotFoundException,
InstantiationException {
try {
this.conf = new PGEConfigFileReader().read(new FileInputStream(file));
} catch (FileNotFoundException e) {
throw e;
} catch (PGEConfigFileException e) {
throw new InstantiationException(e.getMessage());
} finally {
if (this.conf == null)
throw new InstantiationException("Configuration is null!");
}
}
/**
* Returns the set of excluded product types.
*
* @return The set of excluded product types.
*/
public List<String> getExcludedTypes() {
if (this.conf.getPgeSpecificGroups().get(EXCLUDED_PRODUCT_TYPE_GROUP) == null) {
return Collections.EMPTY_LIST;
}
return (List<String>) (List<?>) this.conf.getPgeSpecificGroups().get(
EXCLUDED_PRODUCT_TYPE_GROUP).getVector(EXCLUDED_VECTOR).getElements();
}
/**
* Gets the set of Header column met key names for the long lister.
*
* @return The set of Header column met key names for the long lister.
*/
public List<String> getHeaderColKeys() {
if (this.conf.getPgeSpecificGroups().get(MET_FIELD_COLS_GROUP) == null) {
return Collections.EMPTY_LIST;
}
return (List<String>) (List<?>) this.conf.getPgeSpecificGroups().get(
MET_FIELD_COLS_GROUP).getVector(MET_FIELDS_ORDER_VECTOR).getElements();
}
/**
* Returns the display name for a particular header col key.
*
* @param headerColKey
* The header col met key to look up the display name for.
* @return The header col met key's display name.
*/
public String getHeaderColDisplayName(String headerColKey) {
if (this.conf.getPgeSpecificGroups().get(MET_FIELD_COLS_GROUP) == null) {
return "";
}
return this.conf.getPgeSpecificGroups().get(MET_FIELD_COLS_GROUP)
.getScalar(headerColKey).getValue();
}
/**
* Tester method to determine if an output field is a collection field, and
* needs special handling.
*
* @param colName
* The field name to check.
* @return True if it's a collection field, false if not, or if the collection
* fields group doesn't exist in the conf.
*/
public boolean isCollectionField(String colName) {
if (this.conf.getPgeSpecificGroups().get(COLLECTION_FIELDS_GROUP) == null) {
return false;
}
return this.conf.getPgeSpecificGroups().get(COLLECTION_FIELDS_GROUP)
.getVector(COLLECTION_FIELDS_NAMES).getElements().contains(colName);
}
}