package org.uva.student.calinwouter.qlqls.ql.model;
import org.uva.student.calinwouter.qlqls.ql.exceptions.FieldNotFoundException;
import org.uva.student.calinwouter.qlqls.ql.interfaces.ITypeDescriptor;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class StaticFields implements Iterable<AbstractStaticFormField> {
private final List<AbstractStaticFormField> staticFormFields;
public void addStaticField(AbstractStaticFormField staticFieldElement) {
staticFormFields.add(staticFieldElement);
}
public ITypeDescriptor getTypeOfField(String identifier) {
for (AbstractStaticFormField staticFormField : staticFormFields) {
final String iteratedVariableName = staticFormField.getVariable();
if (iteratedVariableName.equals(identifier)) {
return staticFormField.getTypeDescriptor();
}
}
throw new FieldNotFoundException(identifier);
}
public String getLabelForField(String identifier) {
for(AbstractStaticFormField field : staticFormFields){
final String iteratedVariableName = field.getVariable();
if (iteratedVariableName.equals(identifier)) {
return field.getLabel();
}
}
throw new FieldNotFoundException(identifier);
}
public StaticFields() {
this.staticFormFields = new LinkedList<AbstractStaticFormField>();
}
public Iterator<AbstractStaticFormField> iterator() {
return staticFormFields.iterator();
}
public boolean containsField(String variableName) {
for (AbstractStaticFormField staticFormField : staticFormFields) {
final String iteratedVariableName = staticFormField.getVariable();
if (iteratedVariableName.equals(variableName)) {
return true;
}
}
return false;
}
}