コード例 #1
0
        public IEnumerable <IntegratedReport> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <IntegratedReport>();
            var query      = this.GetIntegratedReportQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var integratedReport = new IntegratedReport
                        {
                            Name   = reader["Name"] as string,
                            Title  = reader["Title"] as string,
                            Viewer = reader["Viewer"] as string
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            integratedReport.State = ComponentState.Active;
                        }
                        else
                        {
                            integratedReport.State = ComponentState.Closed;
                        }

                        integratedReport.CalculationText = reader["CalculationText"] as string;
                        if (integratedReport.CalculationText == null)
                        {
                            integratedReport.CalculationText = string.Empty;
                        }

                        if (reader["TemplateText"] is byte[] templateValue)
                        {
                            integratedReport.TemplateText = Encoding.GetEncoding(1251).GetString(templateValue);
                        }
                        else
                        {
                            integratedReport.TemplateText = string.Empty;
                        }

                        integratedReport.ReferenceName = reader["ReferenceName"] as string;

                        components.Add(integratedReport);
                    }
                }
            }
            return(components);
        }
コード例 #2
0
        public IEnumerable <RouteBlock> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <RouteBlock>();

            var query = this.GetRouteBlockQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var routeBlock = new RouteBlock
                        {
                            Name  = reader["Name"] as string,
                            Title = reader["Title"] as string
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            routeBlock.State = ComponentState.Active;
                        }
                        else
                        {
                            routeBlock.State = ComponentState.Closed;
                        }
                        if (Enum.TryParse(reader["BaseBlockType"] as string, out RouteBlockType blockType))
                        {
                            routeBlock.BaseBlockType = blockType;
                        }
                        else
                        {
                            routeBlock.BaseBlockType = RouteBlockType.Unknown;
                        }
                        if (reader["Properties"] is byte[] blockDescriptionRawData)
                        {
                            var blockDescription = Encoding.GetEncoding(1251).GetString(blockDescriptionRawData);
                            if (!string.IsNullOrWhiteSpace(blockDescription))
                            {
                                var description = WorkflowDescriptionParser.Parse(blockDescription);
                                routeBlock.WorkflowBlock = description.Blocks.FirstOrDefault();
                            }
                        }
                        components.Add(routeBlock);
                    }
                }
            }
            return(components);
        }
コード例 #3
0
        public IEnumerable <Wizard> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <Wizard>();

            var query = this.GetWizardsQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var wizard = new Wizard
                        {
                            Name  = (reader["Name"] as string).Trim(),
                            Title = (reader["Title"] as string).Trim()
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            wizard.State = ComponentState.Active;
                        }
                        else
                        {
                            wizard.State = ComponentState.Closed;
                        }
                        if (reader["WizardDfm"] is byte[] wizardDfmRawData)
                        {
                            var wizardDfm = Encoding.GetEncoding(1251).GetString(wizardDfmRawData);
                            if (!string.IsNullOrWhiteSpace(wizardDfm))
                            {
                                var dfmWizard = WizardDfmParser.Parse(wizardDfm);
                                if (dfmWizard != null)
                                {
                                    wizard.Events.AddRange(dfmWizard.Events);
                                    wizard.Steps.AddRange(dfmWizard.Steps);
                                }
                            }
                        }
                        components.Add(wizard);
                    }
                }
            }
            return(components);
        }
コード例 #4
0
        public IEnumerable <StandardRoute> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <StandardRoute>();

            var query = this.GetStandardRouteQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var standardRoute = new StandardRoute
                        {
                            Name  = (reader["Name"] as string).Trim(),
                            Title = (reader["Title"] as string).Trim()
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            standardRoute.State = ComponentState.Active;
                        }
                        else
                        {
                            standardRoute.State = ComponentState.Closed;
                        }
                        if (reader["WorkflowDescription"] is byte[] workflowDescriptionRawData)
                        {
                            var workflowDescription = Encoding.GetEncoding(1251).GetString(workflowDescriptionRawData);
                            if (!string.IsNullOrWhiteSpace(workflowDescription))
                            {
                                standardRoute.WorkflowDescription = WorkflowDescriptionParser.Parse(workflowDescription);
                            }
                        }
                        components.Add(standardRoute);
                    }
                }
            }
            return(components);
        }
コード例 #5
0
        public IEnumerable <Script> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new List <Script>();
            var query      = this.GetScriptQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components);
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var script = new Script
                        {
                            Name  = reader["Name"] as string,
                            Title = reader["Title"] as string
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            script.State = ComponentState.Active;
                        }
                        else
                        {
                            script.State = ComponentState.Closed;
                        }
                        if (reader["CalculationText"] is byte[] calculationValue)
                        {
                            script.CalculationText = Encoding.GetEncoding(1251).GetString(calculationValue);
                        }
                        else
                        {
                            script.CalculationText = string.Empty;
                        }

                        components.Add(script);
                    }
                }
            }
            return(components);
        }
コード例 #6
0
        public IEnumerable <ManagedFolder> Read(SqlConnection connection, Version platformVersion)
        {
            var components = new Dictionary <string, ManagedFolder>();

            var query = this.GetManagedFoldersQuery(platformVersion);

            if (string.IsNullOrEmpty(query))
            {
                return(components.Values.ToList());
            }

            var command = new SqlCommand(query, connection);

            using (var reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var managedFolder = new ManagedFolder
                        {
                            Name  = (reader["Name"] as string).Trim(),
                            Title = (reader["Title"] as string).Trim()
                        };
                        if (ActiveValue.Equals(reader["State"] as string))
                        {
                            managedFolder.State = ComponentState.Active;
                        }
                        else
                        {
                            managedFolder.State = ComponentState.Closed;
                        }

                        if (reader["SearchDescription"] is byte[] searchDescriptionRawData)
                        {
                            var searchDescriptionDfm = Encoding.GetEncoding(1251).GetString(searchDescriptionRawData);
                            if (!string.IsNullOrWhiteSpace(searchDescriptionDfm))
                            {
                                managedFolder.SearchDescription = SearchDescriptionParser.Parse(searchDescriptionDfm);
                            }
                        }

                        components.Add(managedFolder.Name, managedFolder);
                    }
                }
            }

            query = this.GetMethodsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var managedFolderName = reader["ManagedFolderName"] as string;
                            if (!components.TryGetValue(managedFolderName, out ManagedFolder managedFolder))
                            {
                                continue;
                            }

                            var method = new Method {
                                Name = reader["Name"] as string
                            };

                            if (reader["CalculationText"] is byte[] calculationValue)
                            {
                                method.CalculationText = Encoding.GetEncoding(1251).GetString(calculationValue);
                            }
                            else
                            {
                                method.CalculationText = string.Empty;
                            }

                            managedFolder.Methods.Add(method);
                        }
                    }
                }
            }

            query = this.GetMethodParamsQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var managedFolderName = reader["ManagedFolderName"] as string;
                            if (!components.TryGetValue(managedFolderName, out ManagedFolder managedFolder))
                            {
                                continue;
                            }

                            var methodName = reader["MethodName"] as string;
                            var method     = managedFolder.Methods
                                             .FirstOrDefault(m => m.Name == methodName);
                            if (method == null)
                            {
                                continue;
                            }

                            var parameter = new MethodParam
                            {
                                Number = (int)reader["Number"],
                                Name   = reader["Name"] as string
                            };

                            var typeValue = reader["Type"] as string;
                            if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType))
                            {
                                parameter.Type = methodParamType;
                            }
                            parameter.DefaultValue    = reader["DefaultValue"] as string;
                            parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue);

                            method.Params.Add(parameter);
                        }
                    }
                }
            }

            query = this.GetActionQuery(platformVersion);
            if (!string.IsNullOrEmpty(query))
            {
                command = new SqlCommand(query, connection);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var managedFolderName = reader["ManagedFolderName"] as string;
                            if (!components.TryGetValue(managedFolderName, out ManagedFolder managedFolder))
                            {
                                continue;
                            }

                            var action = new ActionWithHandler {
                                Name = reader["Name"] as string
                            };

                            var methodName       = reader["MethodName"] as string;
                            var executionHandler = managedFolder.Methods.FirstOrDefault(m => m.Name == methodName);
                            if (executionHandler != null)
                            {
                                action.ExecutionHandler = executionHandler;
                            }
                            else
                            {
                                action.CalculationText = string.Empty;
                            }

                            managedFolder.Actions.Add(action);
                        }
                    }
                }
            }

            return(components.Values.ToList());
        }