예제 #1
0
파일: Validator.cs 프로젝트: leonchen09/poc
        public static bool ValidateRenderArgValue(RenderArgDomainSchema renderArg, RenderArgDomainValue argValues, ref string msg)
        {
            //Return if template doesn't need argument value for rendering.
            if (renderArg == null || renderArg.Parameters == null || renderArg.Parameters.Count == 0)
            {
                return(true);
            }

            if (argValues == null || argValues.Parameters == null || argValues.Parameters.Count == 0)
            {
                msg += "RenderArgument is null or empty.";
                return(false);
            }

            if (renderArg.Parameters.Count > argValues.Parameters.Count)
            {
                msg += string.Format("Argument missing. This template needs value for {0} parameters.", renderArg.Parameters.Count);
                return(false);
            }

            Dictionary <long, string> errors = new Dictionary <long, string>();
            bool isValid = ValidateRenderArgType(renderArg, ref msg);

            if (!isValid)
            {
                return(false);
            }

            for (int i = 0; i < renderArg.Parameters.Count; i++)
            {
                RenderParameterSchema paramInfo = renderArg.Parameters[i];
                //Get corresponding param value base on Name
                RenderParameterBase paramValueInfo = (from c in argValues.Parameters
                                                      where string.Compare(c.Name, paramInfo.Name, true) == 0
                                                      select c).FirstOrDefault();
                //If needed parameter isn't found.
                if (paramValueInfo == null || paramValueInfo.Value == null || paramValueInfo.Value.Count() == 0)
                {
                    isValid = false;
                    msg    += string.Format("Parameter value is not found: {0}.", paramInfo.Name);
                    continue;
                }

                object paramValue = paramInfo.DataType.IsArray ? paramValueInfo.Value : paramValueInfo.Value[0];

                //Validate value and length
                SQLTypeName    dataType = SQLConvertTypeHelper.GetSqlTypeFromString(paramInfo.DataType.Name);
                DataTypeLength length   = CoreRenderHelper.GetDataTypeLengthFromSXLength(paramInfo.DataType.Length);
                if (!SQLDBTypeValidator.ValidateValue(dataType, length, paramValue, paramInfo.DataType.IsArray))
                {
                    isValid = false;
                    msg    += string.Format("Type of parameter value is invalid: {0}.", paramInfo.Name);
                }
            }

            return(isValid);
        }
예제 #2
0
        private string ProcessOsqlGetAppData(ChecksumInfoItem item, RenderArgDomainValue renderArgumentValue, string conn, OsqlXml osqlXml)
        {
            string osqlData = string.Empty;

            foreach (var osqlItem in osqlXml.OsqlXmlItems)
            {
                if (string.Compare(osqlItem.DomainName, renderArgumentValue.Name, true) == 0)
                {
                    osqlData = GetDataAgrumentValueWithDBType(item, osqlItem.Osql, renderArgumentValue, conn);
                }
            }
            return(osqlData);
        }
예제 #3
0
        public Dictionary <string, string> GetOsqlDataFromAppDB(List <ChecksumInfoItem> checksumItems, RenderArgumentValue renderArgumentValue, MDB mdb, OsqlXml osqlXml, ref string msg)
        {
            Dictionary <string, string> dicOsqlResult = new Dictionary <string, string>();
            Validator validator = new Validator();

            bool isValid = true;
            //Get list DBID , Connection string and validate DBID
            Dictionary <string, string> lstAppDb = GetDBID(mdb.ListAppDB, ref msg);

            //Validate DBID
            List <string> lstDBID = lstAppDb.Keys.ToList();

            isValid &= Validator.ValidateDBID(checksumItems, lstDBID, ref msg);

            foreach (var appdb in lstAppDb)
            {
                List <ChecksumInfoItem> lstCheckSumItems = checksumItems.Where(x => string.Compare(x.DBID, appdb.Key, true) == 0).ToList();

                if (lstCheckSumItems.Count() > 0)
                {
                    //2. Execute all Osqls, get data for domains
                    foreach (ChecksumInfoItem item in lstCheckSumItems)
                    {
                        RenderArgDomainValue domainRenderArgValue = new RenderArgDomainValue();
                        try
                        {
                            domainRenderArgValue = renderArgumentValue.Domains.First(c => c.Name == item.DomainName);
                        }
                        catch (Exception)
                        { msg += item.DomainName + " not match with input info !!! \n"; }

                        //Validate RenderArgumentDomainValue
                        isValid &= validator.ValidateRenderArgumentDomainValue(item, domainRenderArgValue, ref msg);

                        string result = ProcessOsqlGetAppData(item, domainRenderArgValue, appdb.Value, osqlXml);

                        string encodedDomainName = XmlHelper.Encode(item.DomainName);
                        dicOsqlResult.Add(encodedDomainName, result);
                    }
                }
            }

            if (!isValid)
            {
                throw new Exception(msg);
            }

            //3. Return result of all Osql executed on a Database
            return(dicOsqlResult);
        }
예제 #4
0
        private void AddParamRenderArgumentXY(ref SqlCommand command, RenderArgDomainValue renderArgumentValue, ChecksumInfoItem item)
        {
            if (item.RenderArgument.RenderArgumentX)
            {
                command.Parameters.Add(CoreRenderHelper.CreateAppSqlParam("@" + FrameworkConstants.RenderArgumentX,
                                                                          string.Format("{0}", renderArgumentValue.RenderArgumentX),
                                                                          SqlDbType.NVarChar));
            }

            if (item.RenderArgument.RenderArgumentY)
            {
                command.Parameters.Add(CoreRenderHelper.CreateAppSqlParam("@" + FrameworkConstants.RenderArgumentY,
                                                                          string.Format("{0}", renderArgumentValue.RenderArgumentY),
                                                                          SqlDbType.NVarChar));
            }
        }
예제 #5
0
파일: Validator.cs 프로젝트: leonchen09/poc
        public bool ValidateRenderArgumentDomainValue(ChecksumInfoItem csItem, RenderArgDomainValue domainRenderArgValue, ref string msg)
        {
            bool isValid = true;

            if (domainRenderArgValue == null)
            {
                isValid = false;
                msg    += "RenderArgumentDomainValue is null or empty !!!";
            }

            //Validate RenderArgument value before render document
            isValid &= ValidateRenderArgValue(csItem.RenderArgument, domainRenderArgValue, ref msg);

            //Validate RenderArgumentX value, RenderArgumentY value before Render Document
            isValid &= ValidateRenderArgumentXYValueBeforeRender(csItem.RenderArgument, domainRenderArgValue, ref msg);

            return(isValid);
        }
예제 #6
0
파일: Validator.cs 프로젝트: leonchen09/poc
        public static bool ValidateRenderArgumentXYValueBeforeRender(RenderArgDomainSchema renderArg, RenderArgDomainValue domainValue, ref string msg)
        {
            bool isValid = true;

            if (renderArg.RenderArgumentX)
            {
                if (domainValue.RenderArgumentX == null)
                {
                    msg    += string.Format("Parameter value is not found: RenderArgumentX.");
                    isValid = false;
                }
            }

            if (renderArg.RenderArgumentY)
            {
                if (domainValue.RenderArgumentY == null)
                {
                    msg    += string.Format("Parameter value is not found: {0}.", "RenderArgumentY");
                    isValid = false;
                }
            }

            return(isValid);
        }
예제 #7
0
        private string GetDataAgrumentValueWithDBType(ChecksumInfoItem item, string osqlStr, RenderArgDomainValue renderArgumentValue, string conn)
        {
            DBType dbtype = (DBType)Utility.GetDBType(item.DBType);

            switch (dbtype)
            {
            case DBType.Sql2008:
            {
                Sql08GetDataAgrumentDao dao = new Sql08GetDataAgrumentDao();
                string osqlData             = dao.GetDataAgrumentValueFromAppDB(item, osqlStr, renderArgumentValue, conn);
                return(osqlData);
            }

            case DBType.Orc10g:
            default:
                throw new NotSupportedException();
            }
        }
예제 #8
0
        public string GetDataAgrumentValueFromAppDB(ChecksumInfoItem item, string osql, RenderArgDomainValue renderArgumentValue, string conn)
        {
            string osqlData = string.Empty;
            //Retrieve data from Application database
            XmlReader xmlReader = null;

            try
            {
                SqlCommand command = new SqlCommand();
                command.CommandText = osql;//osqlQuery always not null or empty.

                if (item.RenderArgument != null && renderArgumentValue != null)
                {
                    for (int i = 0; i < item.RenderArgument.Parameters.Count; i++)
                    {
                        RenderParameterSchema sxParam      = item.RenderArgument.Parameters[i];
                        SqlParameter          sqlParameter = CoreRenderHelper.CreateSqlParamForAnArgument(sxParam, renderArgumentValue);
                        command.Parameters.Add(sqlParameter);
                    }
                }

                //Add System Supplier param
                SystemParameter systemParameter = item.SystemParameter;
                AddSystemSupplier(ref command, systemParameter);

                //Add Watermark string
                command.Parameters.Add(CoreRenderHelper.CreateAppSqlParam("@" + FrameworkConstants.PdwWatermark, "WaterMark", SqlDbType.NVarChar));

                //Add param RenderArgumentX , RenderArgumentY
                AddParamRenderArgumentXY(ref command, renderArgumentValue, item);

                string connectionStr = base.GetConnectionString(conn.Trim());
                xmlReader = ExecuteXmlReader(connectionStr, command);
            }
            catch (SqlException ex)
            {
                throw ex;
            }

            #region Transfer data to StringBuilder object

            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(xmlReader);
            xmlReader.Close();

            osqlData = xDoc.InnerXml;

            #endregion

            return(osqlData);
        }