Exemple #1
0
        public void RenderMeasure(
            StringBuilder sbFieldNames,
            StringBuilder sbFieldTypes,
            ReportDefinitionVariable measure
            )
        {
            foreach (ReportDefinitionScore category in measure.Scores)
            {
                if (category.Hidden)
                {
                    continue;
                }

                string categoryLabel = category.Label.Trim();

                if (categoryLabel == "")
                {
                    categoryLabel = "Value";
                }

                sbFieldNames.Append("\"" + categoryLabel + "\",");
                sbFieldTypes.Append("\"float\",");

                if (category.Variable.IsFake)
                {
                    this.RenderPercentage = true;

                    sbFieldNames.Append("\"Percentage\",");
                    sbFieldTypes.Append("\"float\",");
                }
            }
        }
Exemple #2
0
        public void RenderDimension(
            StringBuilder sbFieldNames,
            StringBuilder sbFieldTypes,
            ReportDefinitionVariable dimension
            )
        {
            sbFieldNames.Append("\"" + dimension.Label + "\",");
            sbFieldTypes.Append("\"string\",");

            foreach (ReportDefinitionVariable nestedDimension in dimension.NestedVariables)
            {
                RenderDimension(
                    sbFieldNames,
                    sbFieldTypes,
                    nestedDimension
                    );
            }
        }
Exemple #3
0
        private List <Dictionary <string, object> > GetCategories(ReportDefinitionVariable variable)
        {
            List <Dictionary <string, object> > result = new List <Dictionary <string, object> >();

            foreach (ReportDefinitionScore score in variable.Scores)
            {
                if (score.Hidden)
                {
                    continue;
                }

                Dictionary <string, object> value = new Dictionary <string, object>();

                value.Add("name", score.XmlNode.Attributes["Name"].Value);
                value.Add("kind", "EntitySet");
                value.Add("url", this.RequestString + "&Query=Category_" + score.Identity);

                result.Add(value);
            }

            return(result);
        }
Exemple #4
0
        public byte[] CheckTaxonomizedData()
        {
            Data2 filter = new Data2(0);

            // Get all respondents of the study.
            List <object[]> respondents = this.Core.Respondents.GetValues(
                new string[] { "Id" },
                new string[] { "IdStudy" },
                new object[] { this.IdStudy }
                );

            // Run through all respondents of the study.
            foreach (object[] respondent in respondents)
            {
                filter.Responses.Add((Guid)respondent[0], new double[] { 0 });
            }

            string fileName = Path.GetTempFileName() + ".xlsx";

            // Create a new excel writer that builds the result document.
            ExcelWriter writer = new ExcelWriter();

            DataCore.Classes.StorageMethods.Database storageMethod = new DataCore.Classes.StorageMethods.Database(
                this.Core,
                null
                );

            // Get all variable links of the study.
            List <object[]> variableLinks = this.Core.VariableLinks.ExecuteReader(string.Format(
                                                                                      "SELECT IdVariable, IdTaxonomyVariable FROM VariableLinks WHERE IdVariable IN (SELECT Id FROM Variables WHERE IdStudy='{0}')",
                                                                                      this.IdStudy
                                                                                      ), typeof(Guid), typeof(Guid));

            Dictionary <string, Dictionary <string, Dictionary <string, Dictionary <string, double[]> > > > categoryValues = new Dictionary <string, Dictionary <string, Dictionary <string, Dictionary <string, double[]> > > >();
            Dictionary <string, Dictionary <string, double> > unlinkedCategories = new Dictionary <string, Dictionary <string, double> >();

            writer.Write(0, "Variable");
            writer.Write(1, "Taxonomy variable");
            writer.Write(2, "Variable value");
            writer.Write(3, "Taxonomy variable value");
            writer.Write(4, "Status");

            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].Interior.Color = SpreadsheetGear.Color.FromArgb(54, 94, 146);
            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].Font.Color     = SpreadsheetGear.Color.FromArgb(255, 255, 255);

            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 1].EntireColumn.ColumnWidth = 50;
            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 1].EntireColumn.WrapText    = true;

            writer.ActiveSheet.WindowInfo.FreezePanes = true;
            writer.ActiveSheet.Cells[0, 0, 0, 4].Select();

            writer.NewLine();

            int i = 0;

            // Run through all variable links of the study.
            foreach (object[] variableLink in variableLinks)
            {
                Variable variable = this.Core.Variables.GetSingle(
                    "Id",
                    variableLink[0]
                    );
                TaxonomyVariable taxonomyVariable = this.Core.TaxonomyVariables.GetSingle(
                    "Id",
                    variableLink[1]
                    );

                if (!categoryValues.ContainsKey(variable.Name))
                {
                    categoryValues.Add(variable.Name, new Dictionary <string, Dictionary <string, Dictionary <string, double[]> > >());
                }

                if (!categoryValues[variable.Name].ContainsKey(taxonomyVariable.Name))
                {
                    categoryValues[variable.Name].Add(taxonomyVariable.Name, new Dictionary <string, Dictionary <string, double[]> >());
                }

                XmlDocument test2 = new XmlDocument();
                test2.LoadXml("<Report><Settings><Setting Name=\"AggregateNonQAData\">True</Setting></Settings></Report>");

                ReportDefinition test = new ReportDefinition(
                    this.Core,
                    test2,
                    new Crosstables.Classes.HierarchyClasses.HierarchyFilter(null)
                    );
                test.HierarchyFilter.Load();

                // Create a fake report definition variable for the study variable.
                ReportDefinitionVariable reportDefinitionVariable = new ReportDefinitionVariable(test, variable, null);

                // Create a fake report definition variable for the taxonomy variable.
                ReportDefinitionVariable reportDefinitionTaxonomyVariable = new ReportDefinitionVariable(test, taxonomyVariable, null);

                Data variableData         = storageMethod.GetRespondents(reportDefinitionVariable);
                Data taxonomyVariableData = storageMethod.GetRespondents(
                    reportDefinitionTaxonomyVariable,
                    filter
                    );

                writer.Write(0, variable.Name);
                writer.Write(1, taxonomyVariable.Name);
                writer.Write(2, variableData.Value.ToString());
                writer.Write(3, taxonomyVariableData.Value.ToString());

                if (variableData.Value != taxonomyVariableData.Value)
                {
                    writer.Write(4, "FAILED");
                    writer.ActiveSheet.Cells[writer.Position, 4].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(255, 0, 0);
                }
                else
                {
                    writer.Write(4, "PASSED");
                    writer.ActiveSheet.Cells[writer.Position, 4].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(0, 255, 0);
                }

                writer.NewLine();

                // Get all category links of the variable.

                /*List<object[]> categoryLinks = this.Core.CategoryLinks.ExecuteReader(string.Format(
                 *  "SELECT IdCategory, IdTaxonomyCategory FROM CategoryLinks WHERE IdVariable='{0}'",
                 *  variableLink[0]
                 * ));*/

                // Get all categories of the variable.
                List <object[]> categories = this.Core.Categories.GetValues(
                    new string[] { "Id", "Name" },
                    new string[] { "IdVariable" },
                    new object[] { variableLink[0] }
                    );

                // Run through all category links of the variable.
                foreach (object[] category in categories)
                {
                    /*if ((string)category[1] == "SystemMissing")
                     *  continue;*/

                    // Get the category links for the category.
                    List <object[]> categoryLinks = this.Core.CategoryLinks.ExecuteReader(string.Format(
                                                                                              "SELECT IdCategory, IdTaxonomyCategory FROM CategoryLinks WHERE IdCategory='{0}'",
                                                                                              category[0]
                                                                                              ));

                    // Create a fake report definition category for the study category.
                    ReportDefinitionCategory reportDefinitionCategory = new ReportDefinitionCategory(reportDefinitionVariable, reportDefinitionVariable.XmlNode.SelectSingleNode(string.Format(
                                                                                                                                                                                     "*[@Id=\"{0}\"]",
                                                                                                                                                                                     category[0]
                                                                                                                                                                                     )));

                    Data categoryData = storageMethod.GetRespondents(
                        reportDefinitionCategory,
                        reportDefinitionVariable
                        );

                    if (categoryLinks.Count == 0)
                    {
                        if (!unlinkedCategories.ContainsKey(variable.Name))
                        {
                            unlinkedCategories.Add(variable.Name, new Dictionary <string, double>());
                        }

                        if (!unlinkedCategories[variable.Name].ContainsKey((string)category[1]))
                        {
                            unlinkedCategories[variable.Name].Add((string)category[1], categoryData.Value);
                        }

                        continue;
                    }

                    object[] categoryLink = categoryLinks.First();

                    XmlNode xmlNode = reportDefinitionTaxonomyVariable.XmlNode.SelectSingleNode(string.Format(
                                                                                                    "*[@Id=\"{0}\"]",
                                                                                                    categoryLink[1]
                                                                                                    ));

                    if (xmlNode == null)
                    {
                        continue;
                    }

                    // Create a fake report definition category for the study category.
                    ReportDefinitionTaxonomyCategory reportDefinitionTaxonomyCategory = new ReportDefinitionTaxonomyCategory(reportDefinitionTaxonomyVariable, xmlNode);

                    if (!categoryValues[variable.Name][taxonomyVariable.Name].ContainsKey(reportDefinitionCategory.Name))
                    {
                        categoryValues[variable.Name][taxonomyVariable.Name].Add(reportDefinitionCategory.Name, new Dictionary <string, double[]>());
                    }

                    if (!categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name].ContainsKey(reportDefinitionTaxonomyCategory.Name))
                    {
                        categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name].Add(reportDefinitionTaxonomyCategory.Name, new double[2]);
                    }

                    Data taxonomyCategoryData = storageMethod.GetRespondents(reportDefinitionTaxonomyCategory, reportDefinitionTaxonomyVariable, filter);

                    categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name][reportDefinitionTaxonomyCategory.Name][0] = categoryData.Value;
                    categoryValues[variable.Name][taxonomyVariable.Name][reportDefinitionCategory.Name][reportDefinitionTaxonomyCategory.Name][1] = taxonomyCategoryData.Value;
                }

                i++;
            }

            writer.NewSheet("Categories");

            writer.Write(0, "Variable");
            writer.Write(1, "Taxonomy variable");
            writer.Write(2, "Category");
            writer.Write(3, "Taxonomy category");
            writer.Write(4, "Category value");
            writer.Write(5, "Taxonomy category value");
            writer.Write(6, "Status");

            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 6].Interior.Color = SpreadsheetGear.Color.FromArgb(54, 94, 146);
            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 6].Font.Color     = SpreadsheetGear.Color.FromArgb(255, 255, 255);

            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].EntireColumn.ColumnWidth = 25;
            writer.ActiveSheet.Cells[writer.Position, 0, writer.Position, 4].EntireColumn.WrapText    = true;

            writer.ActiveSheet.Cells[writer.Position, 6].EntireColumn.ColumnWidth = 12;

            writer.ActiveSheet.WindowInfo.FreezePanes = true;
            writer.ActiveSheet.Cells[0, 0, 0, 6].Select();

            writer.NewLine();

            // Run through all variables of the study.
            foreach (string variableName in categoryValues.Keys)
            {
                // Run through all taxonomy variables that are linked to the study variable.
                foreach (string taxonomyVariableName in categoryValues[variableName].Keys)
                {
                    // Run through all categories of the variable.
                    foreach (string categoryName in categoryValues[variableName][taxonomyVariableName].Keys)
                    {
                        // Run through all taxonomy categories that are linked to the study category.
                        foreach (string taxonomyCategoryName in categoryValues[variableName][taxonomyVariableName][categoryName].Keys)
                        {
                            double categoryData         = categoryValues[variableName][taxonomyVariableName][categoryName][taxonomyCategoryName][0];
                            double taxonomyCategoryData = categoryValues[variableName][taxonomyVariableName][categoryName][taxonomyCategoryName][1];

                            writer.Write(0, variableName);
                            writer.Write(1, taxonomyVariableName);
                            writer.Write(2, categoryName);
                            writer.Write(3, taxonomyCategoryName);
                            writer.Write(4, categoryData.ToString());
                            writer.Write(5, taxonomyCategoryData.ToString());

                            if (categoryData != taxonomyCategoryData)
                            {
                                writer.Write(6, "FAILED");
                                writer.ActiveSheet.Cells[writer.Position, 6].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(255, 0, 0);
                            }
                            else
                            {
                                writer.Write(6, "PASSED");
                                writer.ActiveSheet.Cells[writer.Position, 6].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(0, 255, 0);
                            }

                            writer.NewLine();
                        }
                    }

                    if (unlinkedCategories.ContainsKey(variableName))
                    {
                        // Run through all unlinked categories of the variable.
                        foreach (string categoryName in unlinkedCategories[variableName].Keys)
                        {
                            writer.Write(0, variableName);
                            writer.Write(1, "");
                            writer.Write(2, categoryName);
                            writer.Write(3, "");
                            writer.Write(4, unlinkedCategories[variableName][categoryName].ToString());
                            writer.Write(5, "");

                            writer.Write(6, "NON-LINKED");
                            writer.ActiveSheet.Cells[writer.Position, 6].Interior.Color = SpreadsheetGear.Drawing.Color.FromArgb(255, 192, 0);

                            writer.NewLine();
                        }
                    }
                }
            }

            return(writer.Save());
        }