| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html><head> |
| <title></title> |
| <style type="text/css"> |
| <!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--> |
| </style> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
| </head><body> |
| |
| |
| <!-- ======================================================== --> |
| <!-- = Java Sourcecode to HTML automatically converted code = --> |
| <!-- = Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard markus@jave.de = --> |
| <!-- = Further information: http://www.java2html.de = --> |
| <div align="left" class="java"> |
| <table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"> |
| <tr> |
| <!-- start source code --> |
| <td nowrap="nowrap" valign="top" align="left"> |
| <code> |
| <font color="#7f0055"><b>package </b></font><font color="#000000">oclastview.visitors;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">java.util.List;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EClass;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EClassifier;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EEnumLiteral;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EObject;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EOperation;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EPackage;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EParameter;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.emf.ecore.EStructuralFeature;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.Environment;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.ecore.CallOperationAction;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.ecore.Constraint;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.ecore.EcoreEnvironmentFactory;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.ecore.SendSignalAction;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.AssociationClassCallExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.BooleanLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.CollectionItem;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.CollectionLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.CollectionRange;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.EnumLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.IfExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.IntegerLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.InvalidLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.IterateExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.IteratorExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.LetExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.MessageExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.NullLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.OperationCallExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.PropertyCallExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.RealLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.StateExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.StringLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.TupleLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.TupleLiteralPart;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.TypeExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.UnlimitedNaturalLiteralExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.UnspecifiedValueExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.Variable;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.expressions.VariableExp;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.types.CollectionType;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.utilities.AbstractVisitor;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.utilities.ExpressionInOCL;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.utilities.PredefinedType;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.utilities.TypedElement;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.ocl.utilities.UMLReflection;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.Class;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.Classifier;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.EnumerationLiteral;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.Operation;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.Package;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.Parameter;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.Property;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.eclipse.uml2.uml.State;</font><br /> |
| <font color="#7f0055"><b>import </b></font><font color="#000000">org.jdom.Element;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#7f0055"><b>public class </b></font><font color="#000000">XMLforOCL<C, O, P, EL, PM, S, COA, SSA, CT> </font><font color="#7f0055"><b>extends</b></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">AbstractVisitor<org.jdom.Element, C, O, P, EL, PM, S, COA, SSA, CT> </font><font color="#000000">{</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Environment<?, C, O, P, EL, PM, S, COA, SSA, CT, ?, ?> _env = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#000000">XMLforOCL<EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint> getEcoreVersion</font><font color="#000000">() {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Environment<EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint, EClass, EObject> auxEnv = EcoreEnvironmentFactory.INSTANCE</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">.createEnvironment</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">XMLforOCL<EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint> res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">XMLforOCL<EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint></font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">auxEnv</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#000000">XMLforOCL<Classifier, Operation, Property, EnumerationLiteral, Parameter, State, CallOperationAction, SendSignalAction, Constraint> getUML2Version</font><font color="#000000">() {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">org.eclipse.ocl.uml.OCL umlocl = org.eclipse.ocl.uml.OCL.newInstance</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Environment<Package, Classifier, Operation, Property, EnumerationLiteral, Parameter, State, org.eclipse.uml2.uml.CallOperationAction, org.eclipse.uml2.uml.SendSignalAction, org.eclipse.uml2.uml.Constraint, Class, EObject> auxEnv = umlocl</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">.getEnvironment</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">XMLforOCL<Classifier, Operation, Property, EnumerationLiteral, Parameter, State, CallOperationAction, SendSignalAction, Constraint> res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">XMLforOCL</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">auxEnv</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private final </b></font><font color="#000000">UMLReflection<?, C, O, P, EL, PM, S, COA, SSA, CT> uml;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* Initializes me with my environment.</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">env</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* my environment</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">XMLforOCL</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Environment<?, C, O, P, EL, PM, S, COA, SSA, CT, ?, ?> env</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">_env = env;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.uml = </font><font color="#000000">(</font><font color="#000000">env == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) </font><font color="#000000">? </font><font color="#7f0055"><b>null </b></font><font color="#000000">: env.getUMLReflection</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* Obtains an instance of the </font><font color="#7f7f9f"><tt></font><font color="#3f5fbf">XMLforOCL</font><font color="#7f7f9f"></tt> </font><font color="#3f5fbf">visitor for the specified</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* environment.</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">env</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* an OCL environment</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@return </font><font color="#3f5fbf">the corresponding instance</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#000000"><C, O, P, EL, PM, S, COA, SSA, CT> XMLforOCL<C, O, P, EL, PM, S, COA, SSA, CT> getInstance</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Environment<?, C, O, P, EL, PM, S, COA, SSA, CT, ?, ?> env</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return new </b></font><font color="#000000">XMLforOCL<C, O, P, EL, PM, S, COA, SSA, CT></font><font color="#000000">(</font><font color="#000000">env</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">// handlers of leaf-nodes</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">/*</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">* described in Sec. "What to do in the handler for a leaf node" of the</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">* accompanying Eclipse technical article</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitVariableExp</font><font color="#000000">(</font><font color="#000000">VariableExp<C, PM> v</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Variable<C, PM> vd = v.getReferredVariable</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"VariableExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"name"</font><font color="#000000">, vd.getName</font><font color="#000000">())</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, v</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitTypeExp</font><font color="#000000">(</font><font color="#000000">TypeExp<C> t</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"TypeExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String name = getName</font><font color="#000000">(</font><font color="#000000">t.getReferredType</font><font color="#000000">())</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"referredType"</font><font color="#000000">, name</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, t</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitUnspecifiedValueExp</font><font color="#000000">(</font><font color="#000000">UnspecifiedValueExp<C> unspecExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"UnspecifiedValueExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitStateExp</font><font color="#000000">(</font><font color="#000000">StateExp<C, S> stateExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"StateExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String name = stateExp.getReferredState</font><font color="#000000">()</font><font color="#000000">.toString</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"state"</font><font color="#000000">, name</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">// ...LiteralExp</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitIntegerLiteralExp</font><font color="#000000">(</font><font color="#000000">IntegerLiteralExp<C> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"IntegerLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#2a00ff">"symbol"</font><font color="#000000">, Integer.toString</font><font color="#000000">(</font><font color="#000000">literalExp.getIntegerSymbol</font><font color="#000000">()))</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitRealLiteralExp</font><font color="#000000">(</font><font color="#000000">RealLiteralExp<C> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"RealLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"symbol"</font><font color="#000000">, Double.toString</font><font color="#000000">(</font><font color="#000000">literalExp.getRealSymbol</font><font color="#000000">()))</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitStringLiteralExp</font><font color="#000000">(</font><font color="#000000">StringLiteralExp<C> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"StringLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"symbol"</font><font color="#000000">, literalExp.getStringSymbol</font><font color="#000000">())</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitBooleanLiteralExp</font><font color="#000000">(</font><font color="#000000">BooleanLiteralExp<C> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"BooleanLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#2a00ff">"symbol"</font><font color="#000000">, Boolean.toString</font><font color="#000000">(</font><font color="#000000">literalExp.getBooleanSymbol</font><font color="#000000">()))</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">// two novelties of OCL 2.0: null and OCL_INVALID literals</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitNullLiteralExp</font><font color="#000000">(</font><font color="#000000">NullLiteralExp<C> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"NullLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitInvalidLiteralExp</font><font color="#000000">(</font><font color="#000000">InvalidLiteralExp<C> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"InvalidLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitEnumLiteralExp</font><font color="#000000">(</font><font color="#000000">EnumLiteralExp<C, EL> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"EnumLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String name = getName</font><font color="#000000">(</font><font color="#000000">literalExp.getReferredEnumLiteral</font><font color="#000000">()) </font><font color="#000000">+ </font><font color="#2a00ff">"::" </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">+ getName</font><font color="#000000">(</font><font color="#000000">literalExp.getReferredEnumLiteral</font><font color="#000000">())</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"literal"</font><font color="#000000">, name</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Element visitUnlimitedNaturalLiteralExp</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">UnlimitedNaturalLiteralExp<C> literalExp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"UnlimitedNaturalLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#2a00ff">"symbol"</font><font color="#000000">, Integer.toString</font><font color="#000000">(</font><font color="#000000">literalExp.getIntegerSymbol</font><font color="#000000">()))</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">// handlers of non-leaf nodes</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">/*</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">* described in Sec. "What to do in the handlers of non-leaf nodes" of the</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">* accompanying Eclipse technical article</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">org.jdom.Element handleIfExp</font><font color="#000000">(</font><font color="#000000">IfExp<C> ifExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element conditionResult, Element thenResult, Element elseResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"IfExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eConditionPart = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"condition"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eConditionPart.addContent</font><font color="#000000">(</font><font color="#000000">conditionResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eConditionPart</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eThenPart = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"then"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eThenPart.addContent</font><font color="#000000">(</font><font color="#000000">thenResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eThenPart</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eElsePart = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"else"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eElsePart.addContent</font><font color="#000000">(</font><font color="#000000">elseResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eElsePart</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleIteratorExp</font><font color="#000000">(</font><font color="#000000">IteratorExp<C, PM> callExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element sourceResult, List<Element> variableResults,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element bodyResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"IteratorExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"name"</font><font color="#000000">, callExp.getName</font><font color="#000000">())</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, callExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addSourceInfo</font><font color="#000000">(</font><font color="#000000">res, sourceResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element itersE = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"iterators"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">org.jdom.Element i : variableResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">itersE.addContent</font><font color="#000000">(</font><font color="#000000">i</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">itersE</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element bodyE = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"body"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">bodyE.addContent</font><font color="#000000">(</font><font color="#000000">bodyResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">bodyE</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleAssociationClassCallExp</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">AssociationClassCallExp<C, P> callExp, Element sourceResult,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">List<Element> qualifierResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">C ac = callExp.getReferredAssociationClass</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String name = getName</font><font color="#000000">(</font><font color="#000000">ac</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">callExp.isMarkedPre</font><font color="#000000">())</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">name = name + </font><font color="#2a00ff">"@pre"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"AssociationClassCallExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"name"</font><font color="#000000">, name</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, callExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addSourceInfo</font><font color="#000000">(</font><font color="#000000">res, sourceResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleCollectionItem</font><font color="#000000">(</font><font color="#000000">CollectionItem<C> item,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element itemResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">itemResult;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleCollectionRange</font><font color="#000000">(</font><font color="#000000">CollectionRange<C> range,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element firstResult, Element lastResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"CollectionRange"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">firstResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">lastResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleCollectionLiteralExp</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">CollectionLiteralExp<C> literalExp, List<Element> partResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"CollectionLiteralExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">org.jdom.Element p : partResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">p</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleIterateExp</font><font color="#000000">(</font><font color="#000000">IterateExp<C, PM> callExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element sourceResult, List<Element> variableResults,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element resultResult, Element bodyResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"IterateExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"name"</font><font color="#000000">, getName</font><font color="#000000">(</font><font color="#000000">callExp</font><font color="#000000">))</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, callExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addSourceInfo</font><font color="#000000">(</font><font color="#000000">res, sourceResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eItersPart = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"iterators"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">org.jdom.Element eI : variableResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eItersPart.addContent</font><font color="#000000">(</font><font color="#000000">eI</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eResultPart = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"result"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eResultPart.addContent</font><font color="#000000">(</font><font color="#000000">resultResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eBodyPart = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"body"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eBodyPart.addContent</font><font color="#000000">(</font><font color="#000000">bodyResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eItersPart</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eResultPart</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eBodyPart</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleLetExp</font><font color="#000000">(</font><font color="#000000">LetExp<C, PM> letExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element variableResult, Element inResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"LetExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, letExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">variableResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eIn = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"in"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">inResult == </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">inResult = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#000000">XML_NULL_PLACEHOLDER</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eIn.addContent</font><font color="#000000">(</font><font color="#000000">inResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eIn</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleMessageExp</font><font color="#000000">(</font><font color="#000000">MessageExp<C, COA, SSA> messageExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element targetResult, List<Element> argumentResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"MessageExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, messageExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eTarget = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"target"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eTarget.addContent</font><font color="#000000">(</font><font color="#000000">targetResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eTarget</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">.setAttribute</font><font color="#000000">(</font><br /> |
| <font color="#ffffff"> </font><font color="#2a00ff">"msgType"</font><font color="#000000">, </font><font color="#000000">(</font><font color="#000000">messageExp.getType</font><font color="#000000">() </font><font color="#7f0055"><b>instanceof </b></font><font color="#000000">CollectionType</font><font color="#000000">) </font><font color="#000000">? </font><font color="#2a00ff">"^^" </font><font color="#000000">: </font><font color="#2a00ff">"^"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">messageExp.getCalledOperation</font><font color="#000000">() </font><font color="#000000">!= </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String operationName = getName</font><font color="#000000">(</font><font color="#000000">getOperation</font><font color="#000000">(</font><font color="#000000">messageExp</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">.getCalledOperation</font><font color="#000000">()))</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"calledOperation"</font><font color="#000000">, operationName</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">} </font><font color="#7f0055"><b>else if </b></font><font color="#000000">(</font><font color="#000000">messageExp.getSentSignal</font><font color="#000000">() </font><font color="#000000">!= </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String signalName = getName</font><font color="#000000">(</font><font color="#000000">getSignal</font><font color="#000000">(</font><font color="#000000">messageExp.getSentSignal</font><font color="#000000">()))</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"sentSignal"</font><font color="#000000">, signalName</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">Element a : argumentResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">a</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">O getOperation</font><font color="#000000">(</font><font color="#000000">COA callOperationAction</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">(</font><font color="#000000">uml == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) </font><font color="#000000">? </font><font color="#7f0055"><b>null </b></font><font color="#000000">: uml.getOperation</font><font color="#000000">(</font><font color="#000000">callOperationAction</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">C getSignal</font><font color="#000000">(</font><font color="#000000">SSA sendSignalAction</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">(</font><font color="#000000">uml == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) </font><font color="#000000">? </font><font color="#7f0055"><b>null </b></font><font color="#000000">: uml.getSignal</font><font color="#000000">(</font><font color="#000000">sendSignalAction</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleOperationCallExp</font><font color="#000000">(</font><font color="#000000">OperationCallExp<C, O> callExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element sourceResult, List<Element> argumentResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">O o = callExp.getReferredOperation</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"OperationCallExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfoToOperationCallExpElem</font><font color="#000000">(</font><font color="#000000">res, callExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addSourceInfo</font><font color="#000000">(</font><font color="#000000">res, sourceResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String opName = getName</font><font color="#000000">(</font><font color="#000000">callExp.getReferredOperation</font><font color="#000000">())</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">callExp.isMarkedPre</font><font color="#000000">())</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">opName = opName + </font><font color="#2a00ff">"@pre"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"name"</font><font color="#000000">, opName</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">isInfix</font><font color="#000000">(</font><font color="#000000">callExp</font><font color="#000000">)) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"is"</font><font color="#000000">, </font><font color="#2a00ff">"Infix"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$ //$NON-NLS-2$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">} </font><font color="#7f0055"><b>else </b></font><font color="#000000">{</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"is"</font><font color="#000000">, </font><font color="#2a00ff">"Prefix"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$ //$NON-NLS-2$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"has"</font><font color="#000000">, howManyArgs</font><font color="#000000">(</font><font color="#000000">o</font><font color="#000000">))</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">isStdlibOperation</font><font color="#000000">(</font><font color="#000000">o</font><font color="#000000">))</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"an"</font><font color="#000000">, </font><font color="#2a00ff">"StdLibOperation"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$ //$NON-NLS-2$</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">/*</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">* for infix operations we leave out an explicit source tag to avoid</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">* clutter</font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">isInfix</font><font color="#000000">(</font><font color="#000000">callExp</font><font color="#000000">)) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">org.jdom.Element arg : argumentResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">arg != </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">arg</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">argumentResults.size</font><font color="#000000">() </font><font color="#000000">== </font><font color="#990000">0</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String argsEName = argumentResults.size</font><font color="#000000">() </font><font color="#000000">== </font><font color="#990000">1 </font><font color="#000000">? </font><font color="#2a00ff">"arg" </font><font color="#000000">: </font><font color="#2a00ff">"args"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$ //$NON-NLS-2$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element argsE = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#000000">argsEName</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">org.jdom.Element arg : argumentResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">arg != </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">argsE.addContent</font><font color="#000000">(</font><font color="#000000">arg</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">argsE</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">addTypeInfoToOperationCallExpElem</font><font color="#000000">(</font><font color="#000000">Element res,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">OperationCallExp<C, O> exp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">C sourceType = exp.getSource</font><font color="#000000">()</font><font color="#000000">.getType</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">C resultType = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">sourceType </font><font color="#7f0055"><b>instanceof </b></font><font color="#000000">PredefinedType</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">resultType = org.eclipse.ocl.util.TypeUtil.getResultType</font><font color="#000000">(</font><font color="#000000">_env,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">sourceType, exp.getReferredOperation</font><font color="#000000">())</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String str = getName</font><font color="#000000">(</font><font color="#000000">resultType</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"resultType"</font><font color="#000000">, str</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handlePropertyCallExp</font><font color="#000000">(</font><font color="#000000">PropertyCallExp<C, P> callExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element sourceResult, List<Element> qualifierResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">P a = callExp.getReferredProperty</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String aName = getName</font><font color="#000000">(</font><font color="#000000">a</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">callExp.isMarkedPre</font><font color="#000000">()) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">aName = aName.toString</font><font color="#000000">() </font><font color="#000000">+ </font><font color="#2a00ff">"@pre"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"PropertyCallExp"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"name"</font><font color="#000000">, aName</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, callExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addSourceInfo</font><font color="#000000">(</font><font color="#000000">res, sourceResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleTupleLiteralExp</font><font color="#000000">(</font><font color="#000000">TupleLiteralExp<C, P> literalExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">List<Element> partResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"TupleLiteralExp"</font><font color="#000000">)</font><font color="#000000">;</font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, literalExp</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">Element i : partResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">i</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleTupleLiteralPart</font><font color="#000000">(</font><font color="#000000">TupleLiteralPart<C, P> part,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element valueResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String varName = getName</font><font color="#000000">(</font><font color="#000000">part</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">C type = part.getType</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"TupleLiteralPart"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"varName"</font><font color="#000000">, varName</font><font color="#000000">)</font><font color="#000000">;</font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"type"</font><font color="#000000">, getName</font><font color="#000000">(</font><font color="#000000">type</font><font color="#000000">))</font><font color="#000000">;</font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">valueResult != </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">valueResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleVariable</font><font color="#000000">(</font><font color="#000000">Variable<C, PM> variable,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element initResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"Variable"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"name"</font><font color="#000000">, variable.getName</font><font color="#000000">())</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">res, variable</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">initResult != </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element eInitial = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"initExpression"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">eInitial.addContent</font><font color="#000000">(</font><font color="#000000">initResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">eInitial</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">} </font><font color="#7f0055"><b>else </b></font><font color="#000000">{</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"initExpression"</font><font color="#000000">, </font><font color="#2a00ff">"notProvided"</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$ //$NON-NLS-2$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String repParamName = getName</font><font color="#000000">(</font><font color="#000000">variable.getRepresentedParameter</font><font color="#000000">())</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">repParamName != </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"representedParameter"</font><font color="#000000">, repParamName</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleConstraint</font><font color="#000000">(</font><font color="#000000">CT constraint,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element specificationResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"Constraint"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">specificationResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res; </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#646464">@Override</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">Element handleExpressionInOCL</font><font color="#000000">(</font><font color="#000000">ExpressionInOCL<C, PM> callExp,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element contextResult, Element resultResult,</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">List<Element> parameterResults, Element bodyResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element res = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"ExpressionInOCL"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element cR = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"context"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">cR.addContent</font><font color="#000000">(</font><font color="#000000">contextResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element rR = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"result"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">rR.addContent</font><font color="#000000">(</font><font color="#000000">resultResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element pR = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">((</font><font color="#000000">parameterResults.size</font><font color="#000000">() </font><font color="#000000">> </font><font color="#990000">0</font><font color="#000000">) </font><font color="#000000">? </font><font color="#2a00ff">"parameters" </font><font color="#000000">: </font><font color="#2a00ff">"noParameters"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">parameterResults.size</font><font color="#000000">() </font><font color="#000000">> </font><font color="#990000">0</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">Element e : parameterResults</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">pR.addContent</font><font color="#000000">(</font><font color="#000000">e</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element bR = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"body"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">bR.addContent</font><font color="#000000">(</font><font color="#000000">bodyResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">cR</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">rR</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">pR</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">bR</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res; </font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><br /> |
| <font color="#ffffff"> </font><font color="#3f7f5f">// UTIL</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">addTypeInfo</font><font color="#000000">(</font><font color="#000000">org.jdom.Element res, TypedElement<C> exp</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">C ec = exp.getType</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String tName = getName</font><font color="#000000">(</font><font color="#000000">ec</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.setAttribute</font><font color="#000000">(</font><font color="#2a00ff">"type"</font><font color="#000000">, tName</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">addSourceInfo</font><font color="#000000">(</font><font color="#000000">Element res, Element sourceResult</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">sourceResult == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">sourceResult = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"NULL"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">Element sourceE = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Element</font><font color="#000000">(</font><font color="#2a00ff">"source"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">sourceE.addContent</font><font color="#000000">(</font><font color="#000000">sourceResult</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res.addContent</font><font color="#000000">(</font><font color="#000000">sourceE</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* Null-safe access to the name of a named element.</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">named</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* a named element or </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">null</font><font color="#7f7f9f"></code></font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@return </font><font color="#3f5fbf">a name, or the null placeholder if the named element or its name</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* be </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">null</font><font color="#7f7f9f"></code></font><font color="#3f5fbf">. i.e., </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">null</font><font color="#7f7f9f"></code> </font><font color="#3f5fbf">is never</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* returned</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">String getName</font><font color="#000000">(</font><font color="#000000">Object named</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String res = </font><font color="#000000">(</font><font color="#000000">uml == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) </font><font color="#000000">? XML_NULL_PLACEHOLDER : uml.getName</font><font color="#000000">(</font><font color="#000000">named</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">res == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">res = XML_NULL_PLACEHOLDER; </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res; </font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* Null-safe access to the qualified name of a named element.</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">named</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* a named element or </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">null</font><font color="#7f7f9f"></code></font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@return </font><font color="#3f5fbf">a qualified name, or the null placeholder if the named element or</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* its name be </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">null</font><font color="#7f7f9f"></code></font><font color="#3f5fbf">. i.e., </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">null</font><font color="#7f7f9f"></code> </font><font color="#3f5fbf">is</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* never returned</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">String getQualifiedName</font><font color="#000000">(</font><font color="#000000">Object named</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">(</font><font color="#000000">uml == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) </font><font color="#000000">? XML_NULL_PLACEHOLDER : uml</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">.getQualifiedName</font><font color="#000000">(</font><font color="#000000">named</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* Indicates where a required element in the AST was </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">null</font><font color="#7f7f9f"></code></font><font color="#3f5fbf">,</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* so that it is evident in the debugger that something was missing. We</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* don't want just </font><font color="#7f7f9f"><code></font><font color="#3f5fbf">"null"</font><font color="#7f7f9f"></code> </font><font color="#3f5fbf">because that would look like the</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">* OclVoid literal.</font><br /> |
| <font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private static </b></font><font color="#000000">String XML_NULL_PLACEHOLDER = </font><font color="#2a00ff">"NONE"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#7f0055"><b>boolean </b></font><font color="#000000">isStdlibOperation</font><font color="#000000">(</font><font color="#000000">O o</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">C declaringClass = uml.getOwningClassifier</font><font color="#000000">(</font><font color="#000000">o</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">String pName = getName</font><font color="#000000">(</font><font color="#000000">uml.getPackage</font><font color="#000000">(</font><font color="#000000">declaringClass</font><font color="#000000">))</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>boolean </b></font><font color="#000000">res1 = pName.equals</font><font color="#000000">(</font><font color="#2a00ff">"oclstdlib"</font><font color="#000000">)</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">res1;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#7f0055"><b>boolean </b></font><font color="#000000">isInfix</font><font color="#000000">(</font><font color="#000000">OperationCallExp<C, O> oc</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>switch </b></font><font color="#000000">(</font><font color="#000000">oc.getOperationCode</font><font color="#000000">()) {</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.AND:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.OR:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.XOR:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.IMPLIES:</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.GREATER_THAN:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.GREATER_THAN_EQUAL:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.LESS_THAN:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.LESS_THAN_EQUAL:</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.EQUAL:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.NOT_EQUAL:</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.DIVIDE:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.MINUS:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.PLUS:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#000000">PredefinedType.TIMES:</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return true</b></font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return false</b></font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#7f0055"><b>boolean </b></font><font color="#000000">isPrefix</font><font color="#000000">(</font><font color="#000000">OperationCallExp<C, O> oc</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">isInfix</font><font color="#000000">(</font><font color="#000000">oc</font><font color="#000000">)) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return false</b></font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return true</b></font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">String howManyArgs</font><font color="#000000">(</font><font color="#000000">O o</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>int </b></font><font color="#000000">n = uml.getParameters</font><font color="#000000">(</font><font color="#000000">o</font><font color="#000000">)</font><font color="#000000">.size</font><font color="#000000">()</font><font color="#000000">;</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>switch </b></font><font color="#000000">(</font><font color="#000000">n</font><font color="#000000">) {</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#990000">0</font><font color="#000000">:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#2a00ff">"zero args"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#990000">1</font><font color="#000000">:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#2a00ff">"one arg"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>case </b></font><font color="#990000">2</font><font color="#000000">:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#2a00ff">"two args"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>default</b></font><font color="#000000">:</font><br /> |
| <font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">n + </font><font color="#2a00ff">" args"</font><font color="#000000">; </font><font color="#3f7f5f">//$NON-NLS-1$</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"> </font><font color="#000000">}</font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#ffffff"></font><br /> |
| <font color="#000000">}</font></code> |
| |
| </td> |
| <!-- end source code --> |
| </tr> |
| </table> |
| </div> |
| <!-- = END of automatically generated HTML code = --> |
| <!-- ======================================================== --> |
| |
| |
| </body></html> |