public object GetDeserializedValue() { string serializedValue = this.GetSerializedValue(); return(ValueTypeConverter .Deserialize(serializedValue, this.ValueType.ValueTypeID, this.ValueType.Format)); }
private bool PerformPredicate(ActionScope scope) { var operand1 = scope.OperandValues .FirstOrDefault(e => e.OperandID == this.PredicateAction.OperandIDFirst); if (operand1 == null) { throw new FormGenerationException(string.Format( "First operand for predicate action fot found (ActionID = {0}, OperandID = {1})", this.EventAction.ActionID, this.PredicateAction.OperandIDFirst )); } var operand2 = scope.OperandValues .FirstOrDefault(e => e.OperandID == this.PredicateAction.OperandIDSecond); if (operand1 == null) { throw new FormGenerationException(string.Format( "Second operand for predicate action fot found (ActionID = {0}, OperandID = {1})", this.EventAction.ActionID, this.PredicateAction.OperandIDSecond )); } if (operand1.ValueType.ValueTypeID != operand2.ValueType.ValueTypeID) { throw new FormGenerationException(string.Format( "Operands for predicate action have different value types(ActionID = {0}, " + "OperandIDFirst = {1}, OperandIDSecond = {2})", this.EventAction.ActionID, this.PredicateAction.OperandIDFirst, this.PredicateAction.OperandIDSecond )); } object value1 = operand1.GetDeserializedValue(); object value2 = operand2.GetDeserializedValue(); int valueTypeID = operand1.ValueType.ValueTypeID; int predicateOperationID = this.PredicateAction.PredicateOperationID; bool result = ValueTypeConverter.PerformPredicate(value1, value2, valueTypeID, predicateOperationID); return(result); }
public void SetSerializedValue(string serializedValue) { int valueTypeID = this.ValueType.ValueTypeID; string format = this.ValueType.Format; bool isValueTypeCorrect = ValueTypeConverter .CheckValueTypeCorrectness(serializedValue, valueTypeID, format); if (!isValueTypeCorrect) { throw new FormGenerationException(string.Format( "Operand value passed to server in incorrect format(SerializedValue = {0}, ValueTypeID = {1}, Format = {2})", serializedValue, valueTypeID, format )); } this._value.Rows.Clear(); this._value.Rows.Add(serializedValue); }
public void SetDeserializedValues(List <object> deserializedArray) { int valueTypeID = this.ValueType.ValueTypeID; string format = this.ValueType.Format; try { var serializedArray = deserializedArray .Select(e => ValueTypeConverter.Serialize(e, valueTypeID, format)) .ToArray(); this._value.Rows.Clear(); this._value.Rows.Add(serializedArray); } catch (Exception ex) { throw new FormGenerationException(string.Format( "Could not convert data set to value type (valueTypeID = {0})", valueTypeID ), ex); } }
public Tuple <string, Dictionary <string, object> > ConstructSql(Dictionary <int, string> parameters, Dictionary <int, bool> partsIncluded) { string baseSql = this.QueryType.Sql; Dictionary <string, object> sqlParams = new Dictionary <string, object>(); foreach (var part in this.QueryTypeParts) { if (!partsIncluded.ContainsKey(part.QueryTypePartID)) { throw new FormGenerationException(string.Format( "Query part is not included into query and not excluded.(QueryTypeID = {0}, QueryTypePartID = {1})", part.QueryTypeID, part.QueryTypePartID )); } baseSql = baseSql.Replace(part.QueryTypePlaceholder, partsIncluded[part.QueryTypePartID] ? part.Sql : ""); } foreach (var table in this.QueryTypeTables) { baseSql = baseSql.Replace(table.QueryTypeTable.QueryTypePlaceholder, table.Table.PhysicalTable); } foreach (var column in this.QueryTypeColumns) { baseSql = baseSql.Replace(column.QueryTypeColumn.QueryTypePlaceholder, column.Column.PhysicalColumn); } foreach (var paramIn in this.QueryTypeIns) { if (!baseSql.Contains(paramIn.QueryTypeIn.QueryTypePlaceholder)) { continue; } if (!parameters.ContainsKey(paramIn.QueryTypeIn.QueryTypeInID)) { throw new FormGenerationException(string.Format( "Query parameter not set to a value.(QueryTypeID = {0}, QueryTypeInID = {1})", paramIn.QueryTypeIn.QueryTypeID, paramIn.QueryTypeIn.QueryTypeInID )); } string sqlParamName = "@param_" + paramIn.QueryTypeIn.QueryTypeInID; baseSql = baseSql.Replace(paramIn.QueryTypeIn.QueryTypePlaceholder, sqlParamName); object sqlValue = ValueTypeConverter.Deserialize(parameters[paramIn.QueryTypeIn.QueryTypeInID], paramIn.ValueType.ValueTypeID, paramIn.ValueType.Format); sqlParams.Add(sqlParamName, sqlValue); } foreach (var paramOut in this.QueryTypeOuts) { if (string.IsNullOrEmpty(paramOut.QueryTypeOut.QueryTypePlaceholder)) { //there is no placeholder for new alias (select column AS alias...). Alias must be equal to column name continue; } baseSql = baseSql.Replace(paramOut.QueryTypeOut.QueryTypePlaceholder, paramOut.QueryTypeOut.QueryTypeAlias); } return(new Tuple <string, Dictionary <string, object> >(baseSql, sqlParams)); }