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); }
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); }