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);
        }
Exemple #2
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);
        }