Example #1
0
 /// <summary>
 /// 连接描述, 含数据源名称和连接串,数据源名称允许数据层扩展为同时操作多个数据来源(注意:镜像数据库或同一数据库的wcf读取模式,应使用同一数据源名称)
 /// </summary>
 /// <param name="DatasourceName">数据源名称</param>
 /// <param name="connstring">连接串</param>
 public ConnInfo(string DatasourceName, string connstring, EDataBaseType DatabaseType, string connName)
 {
     name           = connName;
     conn           = connstring;
     databaseType   = DatabaseType;
     datasourceName = DatasourceName;
 }
Example #2
0
        public static string GetTypeNameByIon(EDataBaseType baseType)
        {
            switch (baseType)
            {
            case EDataBaseType.Int16:
            case EDataBaseType.Int32:
            case EDataBaseType.Int64:
            case EDataBaseType.Byte:
            case EDataBaseType.Single:
            case EDataBaseType.Double:
            case EDataBaseType.Decimal:
                return("number");

            case EDataBaseType.Boolean:
                return("boolean");

            case EDataBaseType.String:
            case EDataBaseType.Guid:
            case EDataBaseType.Timestamp:
                return("string");

            case EDataBaseType.TimeSpan:
            case EDataBaseType.DateTime:
            case EDataBaseType.DateTimeOffset:
            case EDataBaseType.Binary:
                return("any");
            }
            return("");
        }
Example #3
0
        public static string GenerateValueExpression(EDataBaseType datatype, string value, bool isArray)
        {
            if (value.StartsWith("@") && value.Length > 2)
            {
                return(value.Substring(1));
            }
            if (!isArray)
            {
                if (VerificationValue(datatype, value))
                {
                    switch (datatype)
                    {
                    case EDataBaseType.String:
                        return("@\"" + value + "\"");

                    case EDataBaseType.Guid:
                    case EDataBaseType.DateTime:
                    case EDataBaseType.DateTimeOffset:
                    case EDataBaseType.TimeSpan:
                        return("System." + datatype.ToString() + ".Parse(\"" + value + "\")");

                    case EDataBaseType.Int16:
                    case EDataBaseType.Int32:
                    case EDataBaseType.Int64:
                    case EDataBaseType.Double:
                    case EDataBaseType.Single:
                    case EDataBaseType.Byte:
                    case EDataBaseType.Boolean:
                    case EDataBaseType.Decimal:
                        return(value);
                    }
                }
            }
            else
            {
                switch (datatype)
                {
                case EDataBaseType.String:
                    return("new string[] { " + value + " } ");

                case EDataBaseType.Guid:
                case EDataBaseType.DateTime:
                case EDataBaseType.DateTimeOffset:
                case EDataBaseType.TimeSpan:
                    var values = value.Split(',').Where(a => VerificationValue(datatype, a)).Select(a => "System." + datatype.ToString() + ".Parse(" + a + ")").ToArray();
                    return("new " + "System." + datatype.ToString() + "[] { " + string.Join(",", values) + " } ");

                case EDataBaseType.Int16:
                case EDataBaseType.Int32:
                case EDataBaseType.Int64:
                case EDataBaseType.Double:
                case EDataBaseType.Single:
                case EDataBaseType.Byte:
                case EDataBaseType.Boolean:
                case EDataBaseType.Decimal:
                    return("new " + "System." + datatype.ToString() + "[] { " + value + " } ");
                }
            }
            return("");
        }
Example #4
0
 /// <summary>
 /// 连接描述, 含数据源名称和连接串,数据源名称允许数据层扩展为同时操作多个数据来源(注意:镜像数据库或同一数据库的wcf读取模式,应使用同一数据源名称)
 /// </summary>
 /// <param name="DatasourceName">数据源名称</param>
 /// <param name="connstring">连接串</param>
 public ConnInfo(string DatasourceName, string connstring, string IP, EDataBaseType DatabaseType)
 {
     name           = "连接";
     conn           = connstring;
     ip             = IP;
     databaseType   = DatabaseType;
     datasourceName = DatasourceName;
 }
Example #5
0
        public static string GetRightExpression(EDataBaseType dataType, EValueType valueType, string value, List <string> parameters, bool isarray)
        {
            switch (valueType)
            {
            case EValueType.Const:
                return(DataTypeMetadata.GenerateValueExpression(dataType, value, false));

            case EValueType.Parameter:
                parameters.Add(value);
                return(value);

            case EValueType.Property:
                return("item." + value);
            }
            throw UtilityException.NotSupported("不支持查询值类型");
        }
Example #6
0
        public DataService()
        {
            DataTable dt;
            string    sql;

            //通过全局唯一用户名传递

            #region ----- 初始化可用数据源 -----
            if (connManage == null)
            {
                foreach (ConnectionStringSettings item in ConfigurationManager.ConnectionStrings)
                {
                    string[] ss = item.Name.Split('_');
                    if (ss[0] == "管理数据源")
                    {
                        EDataBaseType dbtype = dbhelper.getDBType(ss[1]);
                        connManage = new ConnInfo(ss[0], item.ConnectionString, dbtype, ss[2]);
                    }
                }
            }


            applicationid = DataService.users[OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name].appID;
            if (conns == null)
            {
                conns = new List <ConnInfo>();
                sql   = string.Format("select connname,datasourcename,databasetype,connectionstring from connections where applicationid='{0}'", applicationid);
                dt    = connManage.getDataTable(sql);
                foreach (DataRow dr in dt.Rows)
                {
                    string        connstring     = dr["connectionstring"].ToString();
                    string        datasourcename = dr["datasourcename"].ToString();
                    EDataBaseType dbtype         = (EDataBaseType)int.Parse(dr["databasetype"].ToString());
                    string        connname       = dr["connname"].ToString();
                    if (!string.IsNullOrWhiteSpace(connstring) && !string.IsNullOrWhiteSpace(datasourcename))
                    {
                        conns.Add(new ConnInfo(datasourcename, connstring, dbtype, connname));
                    }
                }
            }
            #endregion
        }
Example #7
0
        private static bool VerificationValue(EDataBaseType datatype, string value)
        {
            switch (datatype)
            {
            case EDataBaseType.Guid:
            case EDataBaseType.DateTime:
            case EDataBaseType.DateTimeOffset:
            case EDataBaseType.TimeSpan:
            case EDataBaseType.Int16:
            case EDataBaseType.Int32:
            case EDataBaseType.Int64:
            case EDataBaseType.Double:
            case EDataBaseType.Single:
            case EDataBaseType.Byte:
            case EDataBaseType.Boolean:
            case EDataBaseType.Decimal:
                if (string.IsNullOrEmpty(value))
                {
                    return(false);
                }
                break;
            }
            switch (datatype)
            {
            case EDataBaseType.Guid:
                Guid value1;
                return(Guid.TryParse(value, out value1));

            case EDataBaseType.DateTime:
                DateTime value2;
                return(DateTime.TryParse(value, out value2));

            case EDataBaseType.DateTimeOffset:
                DateTimeOffset value3;
                return(DateTimeOffset.TryParse(value, out value3));

            case EDataBaseType.TimeSpan:
                TimeSpan value4;
                return(TimeSpan.TryParse(value, out value4));
            }
            return(true);
        }
Example #8
0
 public FunctionInfo(EDataBaseType returnType, string template)
 {
     this.Template   = template;
     this.ReturnType = returnType;
 }
Example #9
0
        /// <summary>
        /// 设置子元素
        /// </summary>
        protected override void SetChildElements()
        {
            FormPanel control = (FormPanel)this.ControlHost.Content;

            foreach (var child in this.ControlHost.Children)
            {
                var     c        = child.Content;
                dynamic dc       = c;
                string  classStr = string.Empty;
                #region IsEnable
                if (c.ExistProperty("IsEnable"))
                {
                    if (!dc.IsEnable)
                    {
                        classStr += "disabled ";
                    }
                }
                #endregion
                #region ValidatorMember
                bool   isValidatorRequired = false;
                string controlName         = child.Content.GetType().Name;

                string validatorFullName = string.Empty;
                if (child.Content.Bindings.Count > 0)
                {
                    var bindValue = (from t in child.Content.Bindings where t.Path != null && t.Property != null && t.Property.ToLower() == "value" select t).FirstOrDefault();
                    if (bindValue != null)
                    {
                        validatorFullName = bindValue.Path;
                        bool isBindNavigatorMember = control.bindNavigatorMember(this.ScreenDefinition, validatorFullName);
                        if (isBindNavigatorMember)
                        {
                            var validatorMember = (from t in child.Content.Bindings where t.Path != null && t.Property != null && t.Property.ToLower() == "validatormember" select t).FirstOrDefault();
                            if (validatorMember != null)
                            {
                                validatorFullName = validatorMember.Path;
                            }
                        }
                    }
                }

                List <Model.Core.Definitions.Entities.ValidatorBase> listValidators = new List <Model.Core.Definitions.Entities.ValidatorBase>();
                EDataBaseType  baseType        = EDataBaseType.String;
                CommonDataType dataTypeContent = null;
                control.GetValidators(this.ScreenDefinition, validatorFullName, ref listValidators, ref baseType, ref dataTypeContent);
                foreach (var validator in listValidators)
                {
                    if (validator.ValidatorType == Model.Core.Definitions.Entities.EValidatorType.Required)
                    {
                        isValidatorRequired = true;
                    }
                    break;
                }
                if (isValidatorRequired)
                {
                    classStr += "required ";
                }
                #endregion

                this.HtmlWriter.AddAttribute("dojoType", "Controls/ContentPane");
                this.HtmlWriter.AddAttribute("label", child.Title);
                if (!string.IsNullOrEmpty(classStr))
                {
                    this.HtmlWriter.AddAttribute("class", classStr);
                }

                FormAttach formAttach = (FormAttach)child.AttachObject;
                if (formAttach.ColumnSpan > 1)
                {
                    this.HtmlWriter.AddAttribute("colspan", formAttach.ColumnSpan.ToString().ToLower());
                }
                if (formAttach.CollapsedTitle)
                {
                    this.HtmlWriter.AddAttribute("spanLabel", "true");
                }
                this.HtmlWriter.RenderBeginTag("div");

                var builder = child.GetBuilder(this.IsPreview, this.ScreenDefinition, this.Compile, this.ProjectDocument, this.PermissionData, this.HtmlWriter);
                builder.Parent = this;
                builder.Build();

                this.HtmlWriter.RenderEndTag();
            }
        }
Example #10
0
 /// <summary>
 /// 建立数据库连接
 /// </summary>
 public DataBase(EDataBaseType dbType, string strConnStr)
 {
     CP_ConnectionType   = dbType;
     CP_ConnectionString = strConnStr;
 }
Example #11
0
 private void ProcessExpression(string name, EFunction function, string parameter, out string expression, out EDataBaseType expressionDataType)
 {
     expression         = "item." + name;
     expressionDataType = QueryMetadata.GetLeftDataType(Data.Entity, name);
     if (QueryMetadata.Functions.ContainsKey(function))
     {
         var functionInfo = QueryMetadata.Functions[function];
         expression         = string.Format(functionInfo.Template, expression, parameter);
         expressionDataType = functionInfo.ReturnType;
     }
 }
Example #12
0
        /// <summary>
        /// 生成返回验证器
        /// </summary>
        /// <param name="childItems"></param>
        /// <param name="fullName"></param>
        /// <param name="listValidators"></param>
        /// <param name="baseType"></param>
        /// <param name="dataTypeContent"></param>
        private static void BuildMemberValidators(MemberBase[] childItems, string fullName, bool isParent, ref List <Model.Core.Definitions.Entities.ValidatorBase> listValidators, ref EDataBaseType baseType, ref CommonDataType dataTypeContent)
        {
            string path = fullName;

            if (isParent && fullName.Split('.').Length == 4)
            {
                path = fullName.Replace("." + fullName.Split('.')[3], "");
            }

            var dataMember = (from t in childItems where t.FullName == path select t).FirstOrDefault();

            if (dataMember != null)
            {
                if (dataMember.MemberType == EMemberType.NavigateMember)
                {
                    var _NavigateMember = dataMember as NavigateMember;
                    if (_NavigateMember.Children.Count() > 0)
                    {
                        BuildMemberValidators(_NavigateMember.Children, fullName, false, ref listValidators, ref baseType, ref dataTypeContent);
                    }
                }
                else
                {
                    BuildMemberValidatorsContent(dataMember, ref listValidators, ref baseType, ref dataTypeContent);
                }
            }
        }
Example #13
0
        /// <summary>
        /// 获取验证器
        /// </summary>
        /// <param name="controlBase"></param>
        /// <param name="screenDef"></param>
        /// <returns></returns>
        private static string BuildValidators(this ControlBase controlBase, ScreenDefinition screenDef, string validatorFullName)
        {
            StringBuilder result      = new StringBuilder();
            StringBuilder sbValidator = new StringBuilder();

            List <Model.Core.Definitions.Entities.ValidatorBase> listValidators = new List <Model.Core.Definitions.Entities.ValidatorBase>();
            EDataBaseType  baseType        = EDataBaseType.String;
            CommonDataType dataTypeContent = null;

            GetValidators(controlBase, screenDef, validatorFullName, ref listValidators, ref baseType, ref dataTypeContent);
            string dataTypeName = BuildCommonMethod.GetTypeName(baseType);

            if (listValidators.Count > 0 && dataTypeContent != null)
            {
                string defaultValue = string.Empty, maxValue = string.Empty, minValue = string.Empty, maxLength = string.Empty, minLength = string.Empty;
                BuildCommonMethod.GetDataTypeValue(dataTypeContent, ref defaultValue, ref maxValue, ref minValue, ref maxLength, ref minLength);
                foreach (var validator in listValidators)
                {
                    string validatorType = validator.ValidatorType.ToString().ToLower();
                    if (validator.ValidatorType == Model.Core.Definitions.Entities.EValidatorType.Phone)
                    {
                        validatorType = "tel";
                    }
                    else if (validator.ValidatorType == Model.Core.Definitions.Entities.EValidatorType.EmailAddress)
                    {
                        validatorType = "email";
                    }
                    else if (validator.ValidatorType == Model.Core.Definitions.Entities.EValidatorType.RegularExpression)
                    {
                        validatorType = "regexp";
                    }
                    else if (dataTypeName == "date" && validator.ValidatorType == Model.Core.Definitions.Entities.EValidatorType.Range)
                    {
                        validatorType = "daterange";
                    }

                    if (validator.ValidatorType != Model.Core.Definitions.Entities.EValidatorType.Compare)
                    {
                        sbValidator.Append("" + validatorType + ":{");
                        sbValidator.AppendFormat("message:'{0}'", validator.ErrorMessage);

                        switch (validator.ValidatorType)
                        {
                        case Model.Core.Definitions.Entities.EValidatorType.MinLength:
                            if (dataTypeName == "string")
                            {
                                sbValidator.AppendFormat(",min:{0}", minLength);
                            }
                            break;

                        case Model.Core.Definitions.Entities.EValidatorType.MaxLength:
                            if (dataTypeName == "string")
                            {
                                sbValidator.AppendFormat(",max:{0}", maxLength);
                            }
                            break;

                        case Model.Core.Definitions.Entities.EValidatorType.Range:
                            if (dataTypeName == "number")
                            {
                                sbValidator.AppendFormat(",min:{0}", minValue);
                                sbValidator.AppendFormat(",max:{0}", maxValue);
                            }
                            else if (dataTypeName == "date")
                            {
                                if (minValue != null)
                                {
                                    DateTime dtMin = Convert.ToDateTime(minValue);
                                    sbValidator.AppendFormat(",min:'{0}'", dtMin.ToString("yyyy-MM-dd"));
                                }
                                if (maxValue != null)
                                {
                                    DateTime dtMax = Convert.ToDateTime(maxValue);
                                    sbValidator.AppendFormat(",max:'{0}'", dtMax.ToString("yyyy-MM-dd"));
                                }
                            }
                            break;

                        case Model.Core.Definitions.Entities.EValidatorType.RegularExpression:
                            var cValidator = validator as Model.Core.Definitions.Entities.Validators.RegularExpressionValidator;
                            sbValidator.AppendFormat(",pattern:'{0}'", cValidator.Pattern.Replace(@"\", @"\\"));
                            break;
                        }

                        sbValidator.Append("},");
                    }
                }
            }

            string _sbValidator = sbValidator.ToString().Length > 0 ? sbValidator.ToString().Substring(0, sbValidator.ToString().Length - 1) : "";

            if (!string.IsNullOrEmpty(_sbValidator))
            {
                result.Append("validators:{");
                result.Append(_sbValidator);
                result.Append("},");
            }

            return(result.ToString());
        }
Example #14
0
 /// <summary>
 /// 返回所有验证
 /// </summary>
 /// <param name="controlBase"></param>
 /// <param name="screenDef"></param>
 /// <param name="validatorFullName"></param>
 /// <param name="dataTypeName"></param>
 /// <param name="dataTypeContent"></param>
 /// <returns></returns>
 public static void GetValidators(this ControlBase controlBase, ScreenDefinition screenDef, string validatorFullName, ref List <Model.Core.Definitions.Entities.ValidatorBase> listValidators, ref EDataBaseType baseType, ref CommonDataType dataTypeContent)
 {
     if (!string.IsNullOrEmpty(validatorFullName))
     {
         //验证成员来自 1/绑定数据集中的数据项. 2/属性
         string datasetName = validatorFullName.Split('.')[0];
         var    pathLength  = validatorFullName.Split('.').Length;
         if (pathLength == 1)
         {
             //属性
             var dataDataSet = (from t in screenDef.Children where t.MemberType == EMemberType.Property && t.Name == datasetName select t).FirstOrDefault();
             if (dataDataSet != null)
             {
                 BuildMemberValidatorsContent(dataDataSet, ref listValidators, ref baseType, ref dataTypeContent);
             }
         }
         else
         {
             //绑定数据集中的数据项
             var dataDataSet = (from t in screenDef.Children where (t.MemberType == EMemberType.DataSet || t.MemberType == EMemberType.Objects) && t.Name == datasetName select t).FirstOrDefault();
             if (dataDataSet != null)
             {
                 var childItems = (from t in dataDataSet.Children
                                   where t.MemberType == EMemberType.CurrentItem || t.MemberType == EMemberType.SelectedItem
                                   select t.Children).FirstOrDefault();
                 if (childItems != null)
                 {
                     BuildMemberValidators(childItems, validatorFullName, true, ref listValidators, ref baseType, ref dataTypeContent);
                 }
             }
         }
     }
 }
Example #15
0
        /// <summary>
        /// 生成返回验证器
        /// </summary>
        /// <param name="mb"></param>
        /// <param name="listValidators"></param>
        /// <param name="baseType"></param>
        /// <param name="dataTypeContent"></param>
        private static void BuildMemberValidatorsContent(MemberBase mb, ref List <Model.Core.Definitions.Entities.ValidatorBase> listValidators, ref EDataBaseType baseType, ref CommonDataType dataTypeContent)
        {
            switch (mb.MemberType)
            {
            case EMemberType.PrimaryMember:
                var _PrimaryMember = mb as PrimaryMember;
                if (_PrimaryMember.Content != null)
                {
                    dataTypeContent = _PrimaryMember.Content as CommonDataType;
                    baseType        = dataTypeContent.BaseType;
                    listValidators  = dataTypeContent.Validators;
                }
                break;

            case EMemberType.CommonMember:
                var _CommonMember = mb as CommonMember;
                if (_CommonMember.Content != null)
                {
                    dataTypeContent = _CommonMember.Content as CommonDataType;
                    baseType        = dataTypeContent.BaseType;
                    listValidators  = dataTypeContent.Validators;
                }
                break;

            case EMemberType.DataMember:
                var _DataMember = mb as DataMember;
                if (_DataMember.Content != null)
                {
                    dataTypeContent = _DataMember.Content as CommonDataType;
                    baseType        = dataTypeContent.BaseType;
                    listValidators  = dataTypeContent.Validators;
                }
                break;

            case EMemberType.CalculateMember:
                var _CalculateMember = mb as CalculateMember;
                if (_CalculateMember.Content != null)
                {
                    dataTypeContent = _CalculateMember.Content as CommonDataType;
                    baseType        = dataTypeContent.BaseType;
                    listValidators  = dataTypeContent.Validators;
                }
                break;

            case EMemberType.Property:
                var _PropertyMember = mb as Property;
                if (_PropertyMember.Content != null)
                {
                    dataTypeContent = _PropertyMember.Content as CommonDataType;
                    baseType        = dataTypeContent.BaseType;
                    listValidators  = dataTypeContent.Validators;
                }
                break;
            }
        }