/**
* <copyright>
* </copyright>
*
*
*/
package org.dresdenocl.language.ocl.resource.ocl.mopp;
import java.util.LinkedHashSet;
import java.util.Set;
import org.eclipse.emf.ecore.EStructuralFeature;
/**
* A representation for a range in a document where a boolean attribute is
* expected.
*/
public class OclExpectedBooleanTerminal extends org.dresdenocl.language.ocl.resource.ocl.mopp.OclAbstractExpectedElement {
private org.dresdenocl.language.ocl.resource.ocl.grammar.OclBooleanTerminal booleanTerminal;
public OclExpectedBooleanTerminal(org.dresdenocl.language.ocl.resource.ocl.grammar.OclBooleanTerminal booleanTerminal) {
super(booleanTerminal.getMetaclass());
this.booleanTerminal = booleanTerminal;
}
public org.dresdenocl.language.ocl.resource.ocl.grammar.OclBooleanTerminal getBooleanTerminal() {
return booleanTerminal;
}
/**
* Returns the expected boolean terminal.
*/
public org.dresdenocl.language.ocl.resource.ocl.grammar.OclSyntaxElement getSymtaxElement() {
return booleanTerminal;
}
private EStructuralFeature getFeature() {
return booleanTerminal.getFeature();
}
public String toString() {
return "EFeature " + getFeature().getEContainingClass().getName() + "." + getFeature().getName();
}
public boolean equals(Object o) {
if (o instanceof OclExpectedBooleanTerminal) {
return getFeature().equals(((OclExpectedBooleanTerminal) o).getFeature());
}
return false;
}
@Override
public int hashCode() {
return getFeature().hashCode();
}
public Set<String> getTokenNames() {
// BooleanTerminals are associated with two or one token(s)
Set<String> tokenNames = new LinkedHashSet<String>(2);
String trueLiteral = booleanTerminal.getTrueLiteral();
if (!"".equals(trueLiteral)) {
tokenNames.add("'" + trueLiteral + "'");
}
String falseLiteral = booleanTerminal.getFalseLiteral();
if (!"".equals(falseLiteral)) {
tokenNames.add("'" + falseLiteral + "'");
}
return tokenNames;
}
}