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