Exemple #1
0
        /// <summary>
        /// 获取ElementDataType对应的C#中的数据类型
        /// </summary>
        /// <param name="element">节点元素</param>
        /// <returns>ElementDataType对应的C#中的数据类型</returns>
        public static Type GetType(DomainObjectElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("ElementValueWrapper.GetType.DomainObjectElement");
            }
            switch (element.DataType)
            {
            case ElementDataType.String:
            case ElementDataType.Text:
                return(typeof(string));

            case ElementDataType.Boolean:
            case ElementDataType.Integer:
                return(typeof(int));

            case ElementDataType.Decimal:
                return(typeof(decimal));

            case ElementDataType.Date:
            case ElementDataType.DateTime:
                return(typeof(DateTime));

            case ElementDataType.Binary:
                return(typeof(byte[]));

            default:
                throw new NotSupportedException(element.DataType.ToString());
            }
        }
        public static string ParseOrderByClause(OrderByClause orderByClause, DomainObject domainObject, DataObject dataObject)
        {
            var fieldType = orderByClause.FieldType;
            var columns = new Dictionary<string, DataColumn>();
            var elements = new Dictionary<string, DomainObjectElement>();
            foreach (var field in orderByClause.OrderByFields)
            {
                DataColumn column = null;
                DomainObjectElement element = null;

                switch (fieldType)
                {
                    case FieldType.Column:
                        column = dataObject.Columns.FirstOrDefault(i => i.ColumnName == field);
                        element = domainObject.Elements.FirstOrDefault(i => i.DataColumnID == column.ID);
                        break;
                    case FieldType.Element:
                        element = domainObject.Elements.FirstOrDefault(i => i.Name == field);
                        column = dataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID || i.ID == field);
                        break;
                    case FieldType.FunctionExpression:
                        throw new NotSupportedException("OrderByClause.FieldType.FunctionExpression");
                }

                columns.Add(field, column);
                elements.Add(field, element);
            }

            return string.Format("{0} {1}", string.Join(",", columns.Values.Select(i => i.ColumnName)),
                 orderByClause.OrderByType.ToString());
        }
        private ResultMappingItem CreateAssoMappingItem(DomainObject domainObject, DomainObjectElement element)
        {
            var item = new ResultMappingItem()
            {
                Property = element.PropertyName,
                ItemType = ResultMappingItemType.ResultMapping,
            };

            return(item);
        }
        private ResultMappingItem CreateCommonMappingItem(DomainObject domainObject, DomainObjectElement element)
        {
            var item = new ResultMappingItem()
            {
                NullValue = element.DefaultValue,
                Property  = element.PropertyName,
                ItemType  = ResultMappingItemType.Normal,
                Column    = domainObject.DataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID).ColumnName
            };

            return(item);
        }
Exemple #5
0
 private void MappingVirtualProperty(DomainObjectElement element, object obj, System.Reflection.PropertyInfo[] props, ResultMappingItem item)
 {
     try
     {
         var prop = props.FirstOrDefault(i => string.Equals(i.Name, item.Property, StringComparison.OrdinalIgnoreCase));
         prop.SetValue(obj, element.DefaultValue);
     }
     catch (Exception e)
     {
         e.Data.Add("PropertyName", item.Property);
         e.Data.Add("ColumnName", item.Column);
         throw e;
     }
 }
Exemple #6
0
        /// <summary>
        /// 转化元素对应字段的值。将日期的值转化成相应的格式字符串。
        /// </summary>
        /// <param name="element">元素。</param>
        /// <param name="elementValue">元素对应字段的值。</param>
        /// <returns>转化后的值。</returns>
        public static object ConvertElementValue(DomainObjectElement element, object elementValue)
        {
            if (element == null)
            {
                throw new ArgumentNullException("ElementValueWrapper.ConvertElementValue.DomainObjectElement");
            }

            switch (element.DataType)
            {
            case ElementDataType.Date:
                // 系统的短日期格式。兼容以前的日期格式。
                if (string.IsNullOrEmpty(Convert.ToString(elementValue)) ||
                    (Convert.ToDateTime(elementValue) == new DateTime()))
                {
                    return(System.DBNull.Value);
                }
                return(DateTimeToStringByCHAR8(Convert.ToDateTime(elementValue)));

            case ElementDataType.DateTime:
                if (string.IsNullOrEmpty(Convert.ToString(elementValue)) ||
                    (Convert.ToDateTime(elementValue) == new DateTime()))
                {
                    return(System.DBNull.Value);
                }
                return(elementValue);

            case ElementDataType.Binary:
                byte[] byteAry = elementValue as Byte[];
                if ((byteAry != null) && (byteAry.Length == 0))
                {
                    return(System.DBNull.Value);
                }
                return(elementValue);

            default:
                return(elementValue);
            }
        }
        private static ConditionStatement ParseConditionStatement(FilterClause filterClause, DomainObject domainObject, DataObject dataObject, SqlTable sqlTable)
        {
            var conditionStatement = new ConditionStatement();
            conditionStatement.SetLogicalOperator(filterClause.LogicalOperator);
            conditionStatement.ConditionField.Table = sqlTable;
            conditionStatement.RelationalOperator = filterClause.RelationalOperator;
            conditionStatement.ConditionFieldValue = new ConditionFieldValue()
            {
                ValueType = filterClause.FilterFieldValue.ValueType,
                IsNull = filterClause.FilterFieldValue.IsNull,
                Value = filterClause.FilterFieldValue.FiledValue,
            };

            DataColumn column = null;
            DomainObjectElement element = null;
            switch (filterClause.FilterField.FieldType)
            {
                case FieldType.Column:
                    column = dataObject.Columns.FirstOrDefault(i => i.ColumnName == filterClause.FilterField.Field);
                    conditionStatement.ConditionField.FieldName = column.ColumnName;
                    break;
                case FieldType.Element:
                    element = domainObject.Elements.FirstOrDefault(i => i.Name == filterClause.FilterField.Field || i.ID == filterClause.FilterField.Field);
                    column = dataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID);
                    conditionStatement.ConditionField.FieldName = column.ColumnName;
                    break;
                case FieldType.FunctionExpression:
                    conditionStatement.IsExpression = true;
                    conditionStatement.ConditionField.FieldName = filterClause.FilterField.Field;
                    break;
                default:
                    break;
            }
            conditionStatement.ConditionFieldValue.ConditionFieldName = column.ColumnName;
            return conditionStatement;
        }
        public static string ParseFilterClause(FilterClause filterClause, DomainObject domainObject, DataObject dataObject)
        {
            var fieldType = filterClause.FilterField.FieldType;
            DataColumn column = null;
            DomainObjectElement element = null;
            switch (fieldType)
            {
                case FieldType.Column:
                    column = dataObject.Columns.FirstOrDefault(i => i.ColumnName == filterClause.FilterField.Field);
                    element = domainObject.Elements.FirstOrDefault(i => i.DataColumnID == column.ID);
                    break;
                case FieldType.Element:
                    element = domainObject.Elements.FirstOrDefault(i => i.Name == filterClause.FilterField.Field || i.ID == filterClause.FilterField.Field);
                    column = dataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID);
                    break;
                case FieldType.FunctionExpression:
                    return filterClause.FilterField.Field;
            }

            var relationOper = RelationalOperatorUtis.ConvertToString(filterClause.RelationalOperator);
            if (column.IsNumeric)
            {
                if (filterClause.FilterFieldValue.IsNull)
                {
                    return string.Format("{0} is null ", element.Alias);
                }
                else
                {
                    if (relationOper.Value)
                    {
                        return string.Format("{0} {1} {2}", element.Alias, relationOper.Key,
                            filterClause.FilterFieldValue.FiledValue);
                    }
                    else
                    {
                        return string.Format(element.Alias + " " + relationOper.Key,
                           filterClause.FilterFieldValue.FiledValue);
                    }
                }
            }
            else
            {
                if (filterClause.FilterFieldValue.IsNull)
                {
                    return string.Format("{0} is null ", element.Alias);
                }
                else
                {
                    if (relationOper.Value)
                    {
                        return string.Format("{0} {1}'{2}'", element.Alias, relationOper.Key,
                            filterClause.FilterFieldValue.FiledValue);
                    }
                    else
                    {
                        return string.Format(element.Alias + " " + relationOper.Key,
                           filterClause.FilterFieldValue.FiledValue);
                    }
                }
            }
        }
Exemple #9
0
        private ResultMappingItem CreateVirtualMappingItem(NSharding.DomainModel.Spi.DomainObject domainObject, DomainObjectElement element)
        {
            var item = new ResultMappingItem()
            {
                NullValue            = element.DefaultValue,
                Property             = element.PropertyName,
                ItemType             = ResultMappingItemType.Virtual,
                Column               = element.Alias,
                ParentDomainObjectId = domainObject.ID
            };

            return(item);
        }
Exemple #10
0
        private ResultMappingItem CreateEnumMappingItem(NSharding.DomainModel.Spi.DomainObject domainObject, DomainObjectElement element)
        {
            var item = new ResultMappingItem()
            {
                NullValue = element.DefaultValue,
                Property  = element.PropertyName,
                ItemType  = ResultMappingItemType.Enum,
                Column    = element.Alias,
                //Column = domainObject.DataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID).ColumnName,
                TypeHandler          = element.PropertyType,
                ParentDomainObjectId = domainObject.ID
            };

            return(item);
        }
        private ResultMappingItem CreateVirtualMappingItem(DomainObject domainObject, DomainObjectElement element)
        {
            var item = new ResultMappingItem()
            {
                NullValue = element.DefaultValue,
                Property  = element.PropertyName,
                ItemType  = ResultMappingItemType.Virtual,
                Column    = null
            };

            return(item);
        }