/** * <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; } }