/*******************************************************************************
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* 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 hr.fer.zemris.vhdllab.applets.editor.schema2.model;
import hr.fer.zemris.vhdllab.applets.editor.schema2.exceptions.DuplicateParameterException;
import hr.fer.zemris.vhdllab.applets.editor.schema2.exceptions.InvalidParameterValueException;
import hr.fer.zemris.vhdllab.applets.editor.schema2.exceptions.ParameterNotFoundException;
import hr.fer.zemris.vhdllab.applets.editor.schema2.interfaces.IParameter;
import hr.fer.zemris.vhdllab.applets.editor.schema2.interfaces.IParameterCollection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class SchemaParameterCollection implements IParameterCollection {
protected class ParameterIterator implements Iterator<IParameter> {
private Iterator<Entry<String, IParameter>> pit = parameters.entrySet().iterator();
public boolean hasNext() {
return pit.hasNext();
}
public IParameter next() {
return pit.next().getValue();
}
public void remove() {
pit.remove();
}
}
/* private fields */
private Map<String, IParameter> parameters;
/* ctors */
public SchemaParameterCollection() {
parameters = new HashMap<String, IParameter>();
}
/* methods */
public void addParameter(IParameter parameter) throws DuplicateParameterException {
String key = parameter.getName();
if (parameters.containsKey(key)) throw new DuplicateParameterException("Key '" + key + "' is duplicate.");
parameters.put(key, parameter);
}
public int count() {
return parameters.size();
}
public IParameter getParameter(String key) throws ParameterNotFoundException {
if (!parameters.containsKey(key)) throw new ParameterNotFoundException("Key '" + key + "' is not found.");
return parameters.get(key);
}
public Object getValue(String key) throws ParameterNotFoundException {
if (!parameters.containsKey(key)) throw new ParameterNotFoundException("Key '" + key + "' is not found.");
return parameters.get(key).getValue();
}
public void removeParameter(String key) throws ParameterNotFoundException {
if (!parameters.containsKey(key)) throw new ParameterNotFoundException("Key '" + key + "' is not found.");
parameters.remove(key);
}
public void setValue(String key, Object value) throws ParameterNotFoundException, InvalidParameterValueException {
if (!parameters.containsKey(key)) throw new ParameterNotFoundException("Key '" + key + "' is not found.");
parameters.get(key).setValue(value);
}
public Iterator<IParameter> iterator() {
return new ParameterIterator();
}
public Set<String> getParameterNames() {
return parameters.keySet();
}
public void clear() {
parameters.clear();
}
}