public object GetDeserializedValue()
        {
            string serializedValue = this.GetSerializedValue();

            return(ValueTypeConverter
                   .Deserialize(serializedValue, this.ValueType.ValueTypeID, this.ValueType.Format));
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 5
0
        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));
        }