/**
* <copyright>
* </copyright>
*
*
*/
package org.dresdenocl.language.ocl.resource.ocl.mopp;
import java.util.Collections;
import java.util.Set;
import org.eclipse.emf.ecore.EStructuralFeature;
/**
* A representation for a range in a document where a structural feature (e.g., a
* reference) is expected.
*/
public class OclExpectedStructuralFeature extends org.dresdenocl.language.ocl.resource.ocl.mopp.OclAbstractExpectedElement {
private org.dresdenocl.language.ocl.resource.ocl.grammar.OclPlaceholder placeholder;
public OclExpectedStructuralFeature(org.dresdenocl.language.ocl.resource.ocl.grammar.OclPlaceholder placeholder) {
super(placeholder.getMetaclass());
this.placeholder = placeholder;
}
public EStructuralFeature getFeature() {
return placeholder.getFeature();
}
/**
* Returns the expected placeholder.
*/
public org.dresdenocl.language.ocl.resource.ocl.grammar.OclSyntaxElement getSymtaxElement() {
return placeholder;
}
public String getTokenName() {
return placeholder.getTokenName();
}
public Set<String> getTokenNames() {
return Collections.singleton(getTokenName());
}
public String toString() {
return "EFeature " + getFeature().getEContainingClass().getName() + "." + getFeature().getName();
}
public boolean equals(Object o) {
if (o instanceof OclExpectedStructuralFeature) {
return getFeature().equals(((OclExpectedStructuralFeature) o).getFeature());
}
return false;
}
@Override
public int hashCode() {
return getFeature().hashCode();
}
}