Example #1
0
        public static Expression createExpression(String type, SQLRepository repository)
        {
            Expression newExpression = null;

            if (type.ToLower() == "attributevalueexpression")
            {
                newExpression = new AttributeValueExpression(repository);
            }
            else if (type.ToLower() == "objectvariableexpression")
            {
                newExpression = new ObjectVariableExpression(repository);
            }
            else if (type.ToLower() == "parameterexpression")
            {
                newExpression = new ParameterExpression(repository);
            }
            else if (type.ToLower() == "comparisonexpression")
            {
                newExpression = new ComparisonExpression(repository);
            }
            else if (type.ToLower() == "methodcallexpression")
            {
                newExpression = new MethodCallExpression(repository);
            }
            else if (type.ToLower() == "literalexpression")
            {
                newExpression = new LiteralExpression();
            }
            else if (type.ToLower() == "textualexpression")
            {
                newExpression = new TextualExpression();
            }

            return(newExpression);
        }
        private Expression computeExpression()
        {
            Expression expression = null;

            try
            {
                //output will be computed as the name of the stopNode

                //AttributeValueExpression with target(cmbTarget) and attribute(cmbSources)
                if (selectedExpressionString == "AttributeValueExpression" && secondObjects.Count > selectedSecondObjectIndex && firstObjects.Count > selectedFirstObjectIndex && selectedSecondObjectIndex != -1 && selectedFirstObjectIndex != -1)
                {
                    //get OV and Attribute
                    SQLAttribute             attribute            = this.secondObjects[selectedSecondObjectIndex].EaObject as SQLAttribute;
                    SQLElement               targetObjectVariable = this.firstObjects[selectedFirstObjectIndex].EaObject as SQLElement;
                    AttributeValueExpression avExp = new AttributeValueExpression(repository, attribute, targetObjectVariable);
                    expression = avExp;
                }
                //MethodCallExpression with target(cmbTarget) and Method(cmbSources)
                else if (selectedExpressionString == "MethodCallExpression" && secondObjects.Count > selectedSecondObjectIndex && firstObjects.Count > selectedFirstObjectIndex && selectedSecondObjectIndex != -1 && selectedFirstObjectIndex != -1)
                {
                    SQLMethod            method = this.secondObjects[selectedSecondObjectIndex].EaObject as SQLMethod;
                    String               name   = method.Name;
                    Object               target = this.firstObjects[selectedFirstObjectIndex].EaObject;
                    MethodCallExpression methodCallExpression = EditorMethodCallExpression.generateMethodCallExpression(repository, target, method);
                    expression = methodCallExpression;
                }
                //parameterExpression
                else if (selectedExpressionString == "ParameterExpression" && firstObjects.Count > selectedFirstObjectIndex && selectedFirstObjectIndex != -1)
                {
                    SQLParameter        parameter = this.firstObjects[selectedFirstObjectIndex].EaObject as SQLParameter;
                    ParameterExpression pExp      = new ParameterExpression(repository, parameter);
                    expression = pExp;
                }
                //literalExpression
                else if (selectedExpressionString == "LiteralExpression")
                {
                    LiteralExpression literalExpression = new LiteralExpression("null");
                    expression = literalExpression;
                }
                //objectVariableExpression
                else if (selectedExpressionString == "ObjectVariableExpression" && firstObjects.Count > selectedFirstObjectIndex)
                {
                    SQLElement sdmObject           = this.firstObjects[selectedFirstObjectIndex].EaObject as SQLElement;
                    ObjectVariableExpression ovExp = new ObjectVariableExpression(sdmObject, repository);
                    expression = ovExp;
                }
            }
            catch (Exception)
            {
            }
            return(expression);
        }
Example #3
0
        public static void constraintsToAssignments(ObjectVariable ov, SQLRepository repository)
        {
            foreach (Constraint constraint in ov.Constraints)
            {
                AttributeAssignment assignment = new AttributeAssignment(repository);
                assignment.ValueExpression = (constraint.ConstraintExpression as ComparisonExpression).RightExpression;

                AttributeValueExpression left = (constraint.ConstraintExpression as ComparisonExpression).LeftExpression as AttributeValueExpression;

                assignment.AttributeGUID = left.AttributeGUID;
                assignment.AttributeName = left.AttributeName;

                ov.AttributeAssignments.Add(assignment);
            }
            ov.Constraints.Clear();
        }
Example #4
0
        public static String getExpressionOutput(Expression expression, SQLRepository repository)
        {
            String outputString = "";

            if (expression is AttributeValueExpression)
            {
                AttributeValueExpression aVe = expression as AttributeValueExpression;
                outputString = "AttributeValueExpression: " + aVe.ObjectVariableName + "." + aVe.AttributeName + "is corrupted";
            }
            else if (expression is ObjectVariableExpression)
            {
                ObjectVariableExpression oVe = expression as ObjectVariableExpression;
                outputString = "ObjectVariableExpression: " + oVe.ObjectVariableName + "is corrupted";
            }
            else if (expression is ParameterExpression)
            {
                ParameterExpression pExp = expression as ParameterExpression;
            }

            return(outputString);
        }
Example #5
0
        public static Boolean checkExpression(SQLElement containingElement, Expression expression, SQLRepository sqlRepository)
        {
            if (expression is AttributeValueExpression)
            {
                AttributeValueExpression aVe = expression as AttributeValueExpression;
                return(checkAttributeValueExpression(containingElement, sqlRepository, aVe));
            }
            else if (expression is MethodCallExpression)
            {
                MethodCallExpression mCe = expression as MethodCallExpression;
                return(checkMethodCallExpression(containingElement, sqlRepository, mCe));
            }
            else if (expression is ObjectVariableExpression)
            {
                ObjectVariableExpression oVe = expression as ObjectVariableExpression;
                return(checkObjectVariableExpression(containingElement, sqlRepository, oVe));
            }
            else if (expression is ParameterExpression)
            {
                return(checkParameterExpression(containingElement, expression as ParameterExpression, sqlRepository));
            }
            else if (expression is ComparisonExpression)
            {
                ComparisonExpression compExp = expression as ComparisonExpression;
                return(checkComparisonExpression(containingElement, sqlRepository, compExp));
            }

            else if (expression is LiteralExpression)
            {
                LiteralExpression litExpression = expression as LiteralExpression;
                return(null == checkLiteralExpression(containingElement, litExpression, sqlRepository));
            }
            else if (expression is ComparisonExpression)
            {
                return(checkComparisonExpression(containingElement, expression as ComparisonExpression, sqlRepository));
            }

            return(true);
        }
Example #6
0
        public static ExpressionControlData getExpressionStringRepresentation(IExpressionProvider provider, Expression expression, SQLRepository repository)
        {
            ExpressionControlData data = new ExpressionControlData();
            Expression            providerExpression = expression;

            if (providerExpression == null)
            {
                providerExpression = provider.getProviderExpression();
            }

            if (providerExpression != null)
            {
                data.Expression = providerExpression.GetType().Name;
                if (data.Expression == "AttributeValueExpression")
                {
                    AttributeValueExpression attributeValueExpression = providerExpression as AttributeValueExpression;
                    data.First  = attributeValueExpression.ObjectVariableName;
                    data.Second = attributeValueExpression.AttributeName;
                }
                else if (data.Expression == "MethodCallExpression")
                {
                    MethodCallExpression methodCallExpression = providerExpression as MethodCallExpression;
                    if (methodCallExpression.Target is ObjectVariableExpression)
                    {
                        ObjectVariableExpression ovExp = methodCallExpression.Target as ObjectVariableExpression;
                        data.First = ovExp.ObjectVariableName;
                    }
                    else if (methodCallExpression.Target is ParameterExpression)
                    {
                        ParameterExpression pExp = methodCallExpression.Target as ParameterExpression;
                        data.First = pExp.ParameterName;
                    }
                    data.Second = EditorMethodCallExpression.getOperationName(repository, methodCallExpression);
                    foreach (ParameterBinding parameterBinding in methodCallExpression.OwnedParameterBinding)
                    {
                        data.Parameters.Add((parameterBinding.ValueExpression.ToString()));
                    }
                }

                else if (data.Expression == "ParameterExpression")
                {
                    ParameterExpression parameterExpression = providerExpression as ParameterExpression;
                    data.First = parameterExpression.ParameterName;
                }
                else if (data.Expression == "LiteralExpression")
                {
                    LiteralExpression literalExpression = providerExpression as LiteralExpression;
                    data.Parameters.Add(literalExpression.Value);
                }
                else if (data.Expression == "ObjectVariableExpression")
                {
                    ObjectVariableExpression objectVariableExpression = providerExpression as ObjectVariableExpression;
                    data.First = objectVariableExpression.ObjectVariableName;
                }
                else if (data.Expression == "TextualExpression")
                {
                    TextualExpression textualExpression = providerExpression as TextualExpression;
                    data.Expression = "LiteralExpression";
                    data.Parameters.Add(textualExpression.ExpressionText);
                }
            }
            return(data);
        }
Example #7
0
        private static bool checkAttributeValueExpression(SQLElement containingElement, SQLRepository sqlRepository, AttributeValueExpression aVe)
        {
            SQLAttribute referencedAttribute = sqlRepository.GetAttributeByGuid(aVe.AttributeGUID);
            SQLElement   referencedObject    = sqlRepository.GetElementByGuid(aVe.ObjectVariableGUID);

            if (referencedAttribute == null || referencedObject == null)
            {
                return(false);
            }

            if (aVe.ObjectVariableName != aVe.ObjectVariableNameOld || aVe.AttributeName != aVe.AttributeNameOld)
            {
                return(false);
            }

            if (!checkIfClassifierContainsAttribute(sqlRepository.GetElementByGuid(aVe.ObjectVariableGUID), sqlRepository, referencedAttribute))
            {
                return(false);
            }



            return(compareSDMContainerOfSDMElements(containingElement, referencedObject, sqlRepository));
        }