public String getOclDerivedValue() { if (!hasOclDefaultValue()) { throw new IllegalStateException(String.format("Property %s does not have a default value", new Object[]{this.getName()})); } StringBuilder sb = new StringBuilder(); if (isQualified()) { // Find the derived property on the qualified context Property owner = (Property) getOwner(); Property derived = null; for (Element e : owner.getType().getOwnedElements()) { if (e instanceof Property && ((NamedElement) e).getName().equals(getName())) { derived = (Property) e; } } sb.append(PropertyWrapper.getOclDerivedValue(derived)); } else { sb.append(PropertyWrapper.getOclDerivedValue(this.property)); } return sb.toString(); }
public String getOclDefaultValue() { if (!hasOclDefaultValue()) { throw new IllegalStateException(String.format("Property %s does not have a default value", new Object[]{this.getName()})); } StringBuilder sb = new StringBuilder(); if (isQualified()) { // Find the derived property on the qualified context Property owner = (Property) getOwner(); Property derived = null; for (Element e : owner.getType().getOwnedElements()) { if (e instanceof Property && ((NamedElement) e).getName().equals(getName())) { derived = (Property) e; } } sb.append(getOclDefaultValue(derived)); } else { sb.append(getOclDefaultValue(this.property)); } return sb.toString(); }
/** * Validate that a qualifier has only one corresponding stereotyped property on its owning property's type */ public void validateQualifierCorrespondingQualifierStereotypedProperty() { if (!isQualifier()) { throw new IllegalStateException("getQualifierCorrespondingQualifierStereotypedProperty can only be called on a qualifier"); } Property correspondingProperty = null; Property owner = (Property) getOwner(); Stereotype qualifierVisitor = ModelLoader.INSTANCE.findStereotype("QualifierListener"); for (Element e : owner.getType().getOwnedElements()) { if (e instanceof Property) { Property p = (Property) e; if (p.isStereotypeApplied(qualifierVisitor)) { List<Property> qualifierTemps = (List<Property>) p.getValue(qualifierVisitor, "qualifier"); if (correspondingProperty != null && qualifierTemps.contains(this.property)) { throw new IllegalStateException(String.format("Qualifier %s has more than one corresponding QualifierVisitor stereotype. %s and %s ", new Object[]{this.getQualifiedName(), correspondingProperty.getQualifiedName(), p.getQualifiedName()})); } else if (qualifierTemps.contains(this.property)) { correspondingProperty = p; } } } } }