Exemplo n.º 1
0
        public void testAttributeDerive()
        {
            AstOclConstraintFactory   factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage());
            AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage());

            IntegerLiteralExp            exp1       = factory2.createIntegerLiteralExp(100, getClassifier("Integer"));
            ExpressionInOcl              expInOcl   = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1);
            OclAttributeDeriveConstraint constraint = (OclAttributeDeriveConstraint)factory1.createAttributeDeriveConstraint("test.ocl", getClassifier("Film"), getClassifier("Film").lookupAttribute("rentalFee"),
                                                                                                                             expInOcl);

            Assert.AreEqual("derive: 100", constraint.ToString());

            OclConstraint c = getClassifier("Film").getDeriveConstraint("rentalFee");

            Assert.AreEqual(constraint, c);

            CoreAttribute attrib = getClassifier("Film").lookupAttribute("rentalFee");

            Assert.IsNotNull(attrib);
            Assert.AreEqual(expInOcl, attrib.getDerivedValueExpression());
            Assert.IsTrue(attrib.isDerived());

            getClassifier("Film").deleteAllConstraintsForSource("test.ocl");
            Assert.IsNull(getClassifier("Film").getDeriveConstraint("rentalFee"));
        }
Exemplo n.º 2
0
        public void testPrePost()
        {
            AstOclConstraintFactory   factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage());
            AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage());

            BooleanLiteralExp exp1      = factory2.createBooleanLiteralExp(true, getClassifier("Boolean"));
            ExpressionInOcl   expInOcl1 = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1);

            BooleanLiteralExp exp2      = factory2.createBooleanLiteralExp(false, getClassifier("Boolean"));
            ExpressionInOcl   expInOcl2 = factory1.createExpressionInOcl("name", getClassifier("Film"), exp2);

            List <object> parms = new List <object>();

            parms.Add(getClassifier("Integer"));
            CoreOperation oper = getClassifier("Film").lookupOperation("getRentalFee", parms);

            OclPrePostConstraint constraint     = (OclPrePostConstraint)factory1.createPrePostConstraint("test.ocl", oper);
            OclConstraint        preConstraint  = factory1.createPreConstraint(constraint, "test.ocl", "myPre", oper, expInOcl1);
            OclConstraint        postConstraint = factory1.createPostConstraint(constraint, "test.ocl", "myPost", oper, expInOcl2);

            Assert.AreEqual("pre myPre: True", preConstraint.ToString());
            Assert.AreEqual("post myPost: False", postConstraint.ToString());

            Assert.IsTrue(oper.getSpecifications().Contains(constraint));
            OclPrePostConstraint example = (OclPrePostConstraint)oper.getSpecifications()[0];

            Assert.IsTrue(example.getPreConditions().Contains((OclPreConstraint)preConstraint));
            Assert.IsTrue(example.getPostConditions().Contains((OclPostConstraint)postConstraint));

            oper.deleteAllConstraintsForSource("test.ocl");
            Assert.AreEqual(0, oper.getSpecifications().Count);
        }
Exemplo n.º 3
0
        private XWorkbook createXFormulas(string expressionText, XWorkbook xWorkbook)
        {
            PSWOclCompiler oclCompiler = new PSWOclCompiler(environment, tracker);
            List <object>  nodes       = oclCompiler.compileOclStream(expressionText, "",
                                                                      new StreamWriter(Console.OpenStandardOutput()), typeof(CSTContextDeclarationCS));
            CSTOperationContextCS operationContextCS = ((CSTOperationContextCS)nodes[0]);
            var constraints = operationContextCS.getConstraintsNodesCS();
            CSTOperationConstraintCS operationConstraint = (CSTOperationConstraintCS)constraints[0];
            ExpressionInOcl          expressionInOcl     = operationConstraint.getExpressionInOCL();
            OclExpressionImpl        bodyExpression      = (OclExpressionImpl)expressionInOcl.getBodyExpression();

            XFormulaCreatorVisitor visitor = new XFormulaCreatorVisitor();

            bodyExpression.accept(visitor);
            string formula = visitor.getFormula();

            CoreClassifier classifier  = (CoreClassifier)expressionInOcl.getContextualElement();
            XDataTable     targetTable = getTargetTable(xWorkbook, classifier);

            var operation = operationContextCS.getOperationNodeCS();
            var name      = operation.getOperationName();
            XDataTableColumn targetColumn =
                targetTable.getDataTableColumns().FirstOrDefault(c => c.getName().Equals(name));

            if (targetColumn == null)
            {
                throw new Exception("Coluna não encontrada!");
            }

            XTextExp xtext = new XTextExp();

            xtext.setTextSymbol(formula);
            targetColumn.setDataContent(xtext);

            MessageBox.Show(formula);

            var extraColumns = visitor.getExtraColumns();

            foreach (KeyValuePair <string, string> pair in extraColumns)
            {
                string columnName    = pair.Key;
                string columnFormula = pair.Value;

                targetTable = getTargetTable(xWorkbook, visitor.getCurrentClassifier());

                var newTableColumn = new XDataTableColumn();
                newTableColumn.setName(columnName);
                newTableColumn.setDataTable(targetTable);
                updateDataTable(targetTable, newTableColumn);

                XTextExp xColumnFormula = new XTextExp();
                xColumnFormula.setTextSymbol(columnFormula);
                newTableColumn.setDataContent(xColumnFormula);
            }

            return(xWorkbook);
        }
Exemplo n.º 4
0
        public void testInvariant()
        {
            AstOclConstraintFactory   factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage());
            AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage());

            BooleanLiteralExp      exp1       = factory2.createBooleanLiteralExp(true, getClassifier("Boolean"));
            ExpressionInOcl        expInOcl   = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1);
            OclInvariantConstraint constraint = (OclInvariantConstraint)factory1.createInvariantConstraint("test.ocl", "myInvariant", getClassifier("Film"), expInOcl);

            Assert.AreEqual("inv myInvariant: True", constraint.ToString());

            Assert.IsTrue(getClassifier("Film").getAllInvariants().Contains(constraint));

            getClassifier("Film").deleteAllConstraintsForSource("test.ocl");
            Assert.IsFalse(getClassifier("Film").getAllInvariants().Contains(constraint));
        }
Exemplo n.º 5
0
        public void testBody()
        {
            AstOclConstraintFactory   factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage());
            AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage());

            RealLiteralExp  exp1     = factory2.createRealLiteralExp("200.50", getClassifier("Real"));
            ExpressionInOcl expInOcl = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1);

            List <object> parms = new List <object>();

            parms.Add(getClassifier("Integer"));
            CoreOperation oper = getClassifier("Film").lookupOperation("getRentalFee", parms);

            OclBodyConstraint constraint = (OclBodyConstraint)factory1.createBodyConstraint("test.ocl", oper, expInOcl, null);

            Assert.AreEqual("body: 200.50", constraint.ToString());

            Assert.AreEqual(constraint, oper.getBodyDefinition());
            Assert.AreEqual(expInOcl, oper.getBodyDefinition().getExpression());

            oper.deleteAllConstraintsForSource("test.ocl");
            Assert.IsNull(oper.getBodyDefinition());
        }
Exemplo n.º 6
0
        public OclConstraint   createAssociationEndInitConstraint(string source, CoreClassifier contextualClassifier, CoreAssociationEnd assocEnd, ExpressionInOcl initialValue)
        {
            OclAssocEndInitConstraint constraint = new OclAssocEndInitConstraintImpl();

            constraint.setSource(source);
            constraint.setContextualClassifier(contextualClassifier);
            constraint.setInitializedAssocEnd(assocEnd);
            constraint.setExpression(initialValue);

            contextualClassifier.addInitConstraint(assocEnd.getName(), constraint);

//		cachedObjects.add(constraint);

            return(constraint);
        }
Exemplo n.º 7
0
 public OclConstraint   createModelElementDeriveConstraint(string source, CoreClassifier contextualClassifier, CoreModelElement element, ExpressionInOcl initialValue)
 {
     if (element.GetType() == typeof(CoreAttribute))
     {
         return(createAttributeDeriveConstraint(source, contextualClassifier, (CoreAttribute)element, initialValue));
     }
     else if (element.GetType() == typeof(CoreAssociationEnd))
     {
         return(createAssociationEndDeriveConstraint(source, contextualClassifier, (CoreAssociationEnd)element, initialValue));
     }
     else
     {
         return(null);
     }
 }
Exemplo n.º 8
0
        public OclPostConstraint               createPostConstraint(OclPrePostConstraint owner, string source, string name, CoreOperation contextualOperation, ExpressionInOcl postCondition)
        {
            OclPostConstraint constraint = new OclPostConstraintImpl();

            constraint.setSource(source);
            constraint.setContextualOperation(contextualOperation);
            constraint.setExpression(postCondition);
            constraint.setName(name);
            constraint.setOwner(owner);
            owner.addPostCondition(constraint);

//		cachedObjects.add(constraint);

            return(constraint);
        }
Exemplo n.º 9
0
        public OclBodyConstraint       createBodyConstraint(string source, CoreOperation contextualOperation, ExpressionInOcl body, List <string> parameterNames)
        {
            OclBodyConstraint constraint = new OclBodyConstraintImpl();

            constraint.setSource(source);
            constraint.setContextualOperation(contextualOperation);
            constraint.setExpression(body);
            constraint.setParameterNames(parameterNames);

            contextualOperation.setBodyDefinition(constraint);

//		cachedObjects.add(constraint);

            return(constraint);
        }
Exemplo n.º 10
0
        public OclConstraint   createInvariantConstraint(string source, string name, CoreClassifier contextualClassifier, ExpressionInOcl initialValue)
        {
            OclInvariantConstraint constraint = new OclInvariantConstraintImpl();

            constraint.setSource(source);
            constraint.setContextualClassifier(contextualClassifier);
            constraint.setExpression(initialValue);
            constraint.setName(name);

            contextualClassifier.addInvariantConstraint(name, constraint);

            return(constraint);
        }
Exemplo n.º 11
0
 public void setDerivedValueExpression(ExpressionInOcl expression)
 {
     this.derivedValue = expression;
 }
Exemplo n.º 12
0
 /**
  * @param expressionInOcl The expressionInOcl to set.
  */
 public void setExpressionInOcl(ExpressionInOcl expressionInOcl)
 {
     this.expressionInOcl = expressionInOcl;
 }
 public OclConstraint   createModelElementInitConstraint(string source, CoreClassifier contextualClassifier, CoreModelElement element, ExpressionInOcl initialValue)
 {
     if (element is CoreAttributeImpl)
     {
         return(createAttributeInitConstraint(source, contextualClassifier, (CoreAttribute)element, initialValue));
     }
     else if (element is CoreAssociationEndImpl)
     {
         return(createAssociationEndInitConstraint(source, contextualClassifier, (CoreAssociationEnd)element, initialValue));
     }
     else
     {
         return(null);
     }
 }
Exemplo n.º 14
0
 public void setInitialValueExpression(ExpressionInOcl expression)
 {
     this.initialValue = expression;
 }
Exemplo n.º 15
0
        public OclConstraint   createAttributeDeriveConstraint(string source, CoreClassifier contextualClassifier, CoreAttribute attribute, ExpressionInOcl initialValue)
        {
            OclAttributeDeriveConstraint constraint = new OclAttributeDeriveConstraintImpl();

            constraint.setSource(source);
            constraint.setContextualClassifier(contextualClassifier);
            constraint.setDerivedAttribute(attribute);
            constraint.setExpression(initialValue);

            contextualClassifier.addDeriveConstraint(attribute.getName(), constraint);
            attribute.setDerivedValueExpression(initialValue);

//		cachedObjects.add(constraint);

            return(constraint);
        }
Exemplo n.º 16
0
 public void setSourceElements(ExpressionInOcl sourceElements)
 {
     this.sourceElements = sourceElements;
 }
Exemplo n.º 17
0
 /**
  * @param inOCL
  */
 public void setAst(ExpressionInOcl expInOCL)
 {
     ast = expInOCL;
 }
Exemplo n.º 18
0
 public void setTargetElements(ExpressionInOcl targetElements)
 {
     this.targetElements = targetElements;
 }
Exemplo n.º 19
0
 /**
  * @param expression The expression to set.
  */
 public void setExpression(ExpressionInOcl expression)
 {
     this.expression = expression;
 }
Exemplo n.º 20
0
 public CoreAttributeImpl()
 {
     initialValue = null;
     derivedValue = null;
 }