package org.openflexo.foundation.viewpoint.binding; import java.lang.reflect.Type; import java.util.Hashtable; import java.util.Vector; import java.util.logging.Logger; import org.openflexo.antar.binding.AbstractBinding.BindingEvaluationContext; import org.openflexo.antar.binding.Bindable; import org.openflexo.antar.binding.BindingPathElement; import org.openflexo.antar.binding.BindingVariable; import org.openflexo.foundation.ontology.EditionPatternInstance; import org.openflexo.foundation.viewpoint.EditionPattern; import org.openflexo.foundation.viewpoint.PatternRole; public class EditionPatternInstancePathElement<E extends Bindable> implements BindingVariable<EditionPatternInstance> { static final Logger logger = Logger.getLogger(EditionPatternInstancePathElement.class.getPackage().getName()); private EditionPattern editionPattern; private int index; private Hashtable<PatternRole, BindingPathElement> elements; private Vector<BindingPathElement> allElements; private Class<E> declaringClass; public EditionPatternInstancePathElement(EditionPattern anEditionPattern, int index, Class<E> declaringClass) { this.editionPattern = anEditionPattern; this.declaringClass = declaringClass; this.index = index; elements = new Hashtable<PatternRole, BindingPathElement>(); allElements = new Vector<BindingPathElement>(); for (PatternRole pr : editionPattern.getPatternRoles()) { BindingPathElement<?> newPathElement = null; newPathElement = PatternRolePathElement.makePatternRolePathElement(pr, anEditionPattern); elements.put(pr, newPathElement); } } public Vector<BindingPathElement> getAllElements() { return allElements; } public BindingPathElement getPathElement(PatternRole pr) { return elements.get(pr); } @Override public Class<E> getDeclaringClass() { return declaringClass; } @Override public Type getType() { return EditionPatternInstance.class; } @Override public String getSerializationRepresentation() { return editionPattern.getViewPoint().getName() + "_" + editionPattern.getName() + "_" + index; } @Override public boolean isBindingValid() { return true; } @Override public String getLabel() { return getSerializationRepresentation(); } @Override public String getTooltipText(Type resultingType) { return editionPattern.getDescription(); } @Override public boolean isSettable() { return false; } @Override public E getContainer() { // return patternRole.getEditionPattern(); return null; } @Override public String getVariableName() { return getSerializationRepresentation(); } @Override public EditionPatternInstance getBindingValue(Object target, BindingEvaluationContext context) { if (target != null) { logger.info("TODO: evaluateBinding EditionPatternPathElement with target=" + target + " context=" + context); } return null; } @Override public void setBindingValue(EditionPatternInstance value, Object target, BindingEvaluationContext context) { // Not settable } public EditionPattern getEditionPattern() { return editionPattern; } public int getIndex() { return index; } }