/*
* Copyright 2000-2001,2004 The Apache Software Foundation.
*
* 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.apache.jetspeed.om.profile.psml;
import java.util.Vector;
import java.util.Iterator;
import org.apache.jetspeed.om.profile.*;
/**
* Base simple bean-like implementation of the ConfigElement interface
* suitable for Castor XML serialization.
*
* @author <a href="mailto:raphael@apache.org">Rapha謖 Luta</a>
* @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
* @version $Id: PsmlConfigElement.java,v 1.6 2004/02/23 03:02:54 jford Exp $
*/
public /*abstract*/ class PsmlConfigElement implements ConfigElement, java.io.Serializable
{
private String name = null;
private Vector parameters = new Vector();
public PsmlConfigElement()
{}
/** @see org.apache.jetspeed.om.registry.RegistryEntry#getName */
public String getName()
{
return this.name;
}
/** @see org.apache.jetspeed.om.registry.RegistryEntry#setName */
public void setName( String name )
{
this.name = name;
}
/** @return the parameters */
public Vector getParameters()
{
return this.parameters;
}
/** Sets the parameters for this element
* @param parameters
*/
public void setParameters(Vector parameters)
{
this.parameters = parameters;
}
public String getParameterValue(String name)
{
if (parameters == null)
return null;
for (int ix=0; ix < parameters.size(); ix++)
{
Parameter param = (Parameter)parameters.elementAt(ix);
if (param.getName().equals(name))
return param.getValue();
}
return null;
}
public Parameter getParameter(String name)
{
if (parameters == null)
return null;
for (int ix=0; ix < parameters.size(); ix++)
{
Parameter param = (Parameter)parameters.elementAt(ix);
if (param.getName().equals(name))
return param;
}
return null;
}
public Iterator getParameterIterator()
{
return parameters.iterator();
}
public Parameter getParameter(int index)
throws java.lang.IndexOutOfBoundsException
{
//-- check bounds for index
if ((index < 0) || (index > parameters.size())) {
throw new IndexOutOfBoundsException();
}
return (Parameter) parameters.elementAt(index);
} //-- Parameter getParameter(int)
public int getParameterCount()
{
return parameters.size();
} //-- int getParameterCount()
public void removeAllParameter()
{
parameters.removeAllElements();
} //-- void removeAllParameter()
public Parameter removeParameter(int index)
{
Object obj = parameters.elementAt(index);
parameters.removeElementAt(index);
return (Parameter) obj;
} //-- Parameter removeParameter(int)
public void setParameter(int index, Parameter vParameter)
throws java.lang.IndexOutOfBoundsException
{
//-- check bounds for index
if ((index < 0) || (index > parameters.size())) {
throw new IndexOutOfBoundsException();
}
parameters.setElementAt(vParameter, index);
} //-- void setParameter(int, Parameter)
public Parameter[] getParameter()
{
int size = parameters.size();
Parameter[] mArray = new Parameter[size];
for (int index = 0; index < size; index++) {
mArray[index] = (Parameter) parameters.elementAt(index);
}
return mArray;
} //-- Parameter[] getParameter()
public void addParameter(Parameter vParameter)
throws java.lang.IndexOutOfBoundsException
{
parameters.addElement(vParameter);
} //-- void addParameter(Parameter)
/**
* Create a clone of this object
*/
public Object clone()
throws java.lang.CloneNotSupportedException
{
Object cloned = super.clone();
// clone the vector's Parameter contents
if (this.parameters != null)
{
((PsmlConfigElement)cloned).parameters = new Vector(this.parameters.size());
Iterator it = this.parameters.iterator();
while (it.hasNext())
{
((PsmlConfigElement)cloned).parameters.add((Parameter) ((Parameter)it.next()).clone());
}
}
return cloned;
} // clone
}