001: package org.andromda.metafacades.uml14;
002:
003: import java.util.List;
004:
005: import org.andromda.core.translation.Expression;
006: import org.andromda.core.translation.ExpressionTranslator;
007: import org.andromda.metafacades.uml.UMLMetafacadeUtils;
008: import org.andromda.translation.ocl.ExpressionKinds;
009: import org.apache.commons.lang.StringEscapeUtils;
010: import org.apache.commons.lang.StringUtils;
011:
012: /**
013: * Metafacade implementation for org.andromda.metafacades.uml.ConstraintFacade.
014: *
015: * @see org.andromda.metafacades.uml.ConstraintFacade
016: */
017: public class ConstraintFacadeLogicImpl extends ConstraintFacadeLogic {
018: public ConstraintFacadeLogicImpl(
019: org.omg.uml.foundation.core.Constraint metaObject,
020: java.lang.String context) {
021: super (metaObject, context);
022: }
023:
024: /**
025: * @see org.andromda.metafacades.uml.ConstraintFacade#getBody()
026: */
027: public java.lang.String handleGetBody() {
028: String body = null;
029: if (this .metaObject.getBody() != null) {
030: body = this .metaObject.getBody().getBody();
031: }
032: return body;
033: }
034:
035: /**
036: * @see org.andromda.metafacades.uml.ConstraintFacade#getContextElement()
037: */
038: public java.lang.Object handleGetContextElement() {
039: Object element = null;
040: final List elements = this .metaObject.getConstrainedElement();
041: if (elements != null && !elements.isEmpty()) {
042: element = elements.get(0);
043: }
044: return element;
045: }
046:
047: /**
048: * @see org.andromda.metafacades.uml.ConstraintFacade#isInvariant()
049: */
050: public boolean handleIsInvariant() {
051: return UMLMetafacadeUtils.isConstraintKind(this .getBody(),
052: ExpressionKinds.INV);
053: }
054:
055: /**
056: * @see org.andromda.metafacades.uml.ConstraintFacade#isPreCondition()
057: */
058: public boolean handleIsPreCondition() {
059: return UMLMetafacadeUtils.isConstraintKind(this .getBody(),
060: ExpressionKinds.PRE);
061: }
062:
063: /**
064: * @see org.andromda.metafacades.uml.ConstraintFacade#isPostCondition()
065: */
066: public boolean handleIsPostCondition() {
067: return UMLMetafacadeUtils.isConstraintKind(this .getBody(),
068: ExpressionKinds.POST);
069: }
070:
071: /**
072: * @see org.andromda.metafacades.uml.ConstraintFacade#isDefinition()
073: */
074: public boolean handleIsDefinition() {
075: return UMLMetafacadeUtils.isConstraintKind(this .getBody(),
076: ExpressionKinds.DEF);
077: }
078:
079: /**
080: * @see org.andromda.metafacades.uml.ConstraintFacade#isBodyExpression()
081: */
082: public boolean handleIsBodyExpression() {
083: return UMLMetafacadeUtils.isConstraintKind(this .getBody(),
084: ExpressionKinds.BODY);
085: }
086:
087: /**
088: * @see org.andromda.metafacades.uml.ConstraintFacade#getTranslation(java.lang.String)
089: */
090: public String handleGetTranslation(String language) {
091: final Expression expression = ExpressionTranslator.instance()
092: .translate(language, this .getBody(),
093: this .getContextElement());
094: return expression == null ? null : expression
095: .getTranslatedExpression();
096: }
097:
098: /**
099: * @see org.andromda.metafacades.uml.ModelElementFacade#getDocumentation(java.lang.String, int, boolean)
100: */
101: public String getDocumentation(String indent, int lineLength,
102: boolean htmlStyle) {
103: String documentation = super .getDocumentation(indent,
104: lineLength, htmlStyle);
105: boolean isBlank;
106:
107: if (htmlStyle) {
108: final String plainDocumentation = super .getDocumentation(
109: indent, lineLength, false);
110: isBlank = StringUtils.isBlank(plainDocumentation);
111: } else {
112: isBlank = StringUtils.isBlank(documentation);
113: }
114:
115: if (isBlank) {
116: documentation = "An undocumented constraint has been violated: "
117: + StringEscapeUtils.escapeJava(getBody());
118: }
119: return documentation;
120: }
121: }
|