
org.globus.rsl.NameValue Maven / Gradle / Ivy
The newest version!
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed 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.globus.rsl;
import java.util.*;
/**
* This class represents an attribute that is associated with multiple values.
*/
public abstract class NameValue {
protected String attribute;
protected List values;
public NameValue(String attribute) {
setAttribute(attribute);
}
/**
* Sets the attribute name.
*
* @param attrib the attribute name.
*/
public void setAttribute(String attrib) {
attribute = attrib;
}
/**
* Sets the list of values.
*
* @param values list of values.
*/
public void setValues(List values) {
this.values = values;
}
/**
* Returns the attribute name.
*
* @return the attribute name.
*/
public String getAttribute() {
return attribute;
}
/**
* Returns the list of values.
*
* @return list of values.
*/
public List getValues() {
return values;
}
/**
* Removes all values associated
* with the attribute.
*/
public void clear() {
if (values != null) values.clear();
}
/**
* Removes a specific value from the list of values.
* The value must be matched exactly to be removed
* from the list.
*
* @param value value to remove.
* @return true if the value was successfuly removed
* from the list of values. False, otherwise.
*/
public boolean remove(Object value) {
if (values == null) return false;
return values.remove(value);
}
/**
* Returns a RSL representation of this relation.
*
* @param explicitConcat if true explicit concatination will
* be used in RSL strings.
* @return RSL representation of this relation.
*/
public String toRSL(boolean explicitConcat) {
StringBuffer buf = new StringBuffer();
toRSL(buf, explicitConcat);
return buf.toString();
}
/**
* Produces a RSL representation of this relation.
*
* @param buf buffer to add the RSL representation to.
* @param explicitConcat if true explicit concatination will
* be used in RSL strings.
*/
public abstract void toRSL(StringBuffer buf, boolean explicitConcat);
/**
* Returns the first value (if any) in the
* list.
*
* @return the first value. Null, if there
* is no values at all.
*/
public Object getFirstValue() {
if (values == null || values.size() == 0) return null;
return values.get(0);
}
public boolean merge(NameValue nv) {
if (!getAttribute().equalsIgnoreCase(nv.getAttribute())) return false;
List nvValues = nv.getValues();
if (nvValues == null) return false;
if (values == null) values = new LinkedList();
Iterator iter = nvValues.iterator();
while( iter.hasNext() ) {
values.add( iter.next() );
}
return true;
}
public String toString() {
return toRSL(true);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy