コード例 #1
0
        protected virtual void WriteDataWithStatus(IProgressMonitor progressMonitor, ref IProgressStatus status, TextWriter writer, BindingListSource bindingListSource, DsvWriter dsvWriter)
        {
            IList <RowItem>            rows       = Array.AsReadOnly(bindingListSource.Cast <RowItem>().ToArray());
            IList <PropertyDescriptor> properties = bindingListSource.GetItemProperties(new PropertyDescriptor[0]).Cast <PropertyDescriptor>().ToArray();

            dsvWriter.WriteHeaderRow(writer, properties);
            var rowCount     = rows.Count;
            int startPercent = status.PercentComplete;

            for (int rowIndex = 0; rowIndex < rowCount; rowIndex++)
            {
                if (progressMonitor.IsCanceled)
                {
                    return;
                }
                int percentComplete = startPercent + (rowIndex * (100 - startPercent) / rowCount);
                if (percentComplete > status.PercentComplete)
                {
                    status = status.ChangeMessage(string.Format(Resources.AbstractViewContext_WriteData_Writing_row__0___1_, (rowIndex + 1), rowCount))
                             .ChangePercentComplete(percentComplete);
                    progressMonitor.UpdateProgress(status);
                }
                dsvWriter.WriteDataRow(writer, rows[rowIndex], properties);
            }
        }
コード例 #2
0
        public DataGridViewColumn FindColumn(PropertyPath propertyPath)
        {
            var propertyDescriptor =
                BindingListSource.GetItemProperties(null)
                .OfType <ColumnPropertyDescriptor>()
                .FirstOrDefault(colPd => Equals(propertyPath, colPd.PropertyPath));

            if (null == propertyDescriptor)
            {
                return(null);
            }
            return(DataGridView.Columns.Cast <DataGridViewColumn>().FirstOrDefault(col => col.DataPropertyName == propertyDescriptor.Name));
        }
コード例 #3
0
        public DataGridViewColumn FindColumn(PropertyPath propertyPath)
        {
            // Get the list separately for debugging, since this helps in figuring out what
            // the propertyPath should be.
            var propertyDescriptorList = BindingListSource.GetItemProperties(null)
                                         .OfType <ColumnPropertyDescriptor>();
            var propertyDescriptor = propertyDescriptorList
                                     .FirstOrDefault(colPd => Equals(propertyPath, colPd.PropertyPath));

            if (null == propertyDescriptor)
            {
                return(null);
            }
            return(DataGridView.Columns.Cast <DataGridViewColumn>().FirstOrDefault(col => col.DataPropertyName == propertyDescriptor.Name));
        }
コード例 #4
0
        public void TestPivotResultsThenIsotopeLabel()
        {
            var           assembly           = typeof(LiveReportPivotTest).Assembly;
            XmlSerializer documentSerializer = new XmlSerializer(typeof(SrmDocument));
            // ReSharper disable once AssignNullToNotNullAttribute
            var document = (SrmDocument)documentSerializer.Deserialize(
                assembly.GetManifestResourceStream(typeof(ReportSpecConverterTest), "silac_1_to_4.sky"));
            XmlSerializer reportSerializer = new XmlSerializer(typeof(ReportOrViewSpecList));
            // ReSharper disable once AssignNullToNotNullAttribute
            var views = (ReportOrViewSpecList)reportSerializer.Deserialize(
                assembly.GetManifestResourceStream(typeof(ReportSpecConverterTest), "LiveReportPivots.skyr"));
            var view = views.First(reportSpec => reportSpec.Name == "ResultSummaryPivotResultsThenLabelType").ViewSpec;
            var bindingListSource = new BindingListSource();
            var documentContainer = new MemoryDocumentContainer();

            Assert.IsTrue(documentContainer.SetDocument(document, null));
            var dataSchema = new SkylineDataSchema(documentContainer, DataSchemaLocalizer.INVARIANT);

            bindingListSource.SetViewContext(new DocumentGridViewContext(dataSchema), new ViewInfo(dataSchema, typeof(Precursor), view));
            var expectedColumnNames = new[] {
                "PeptideSequence",
                "Chromatograms Replicate",
                "Chromatograms PeptideRetentionTime",
                "light IsotopeLabelType",
                "light MeanTotalArea",
                "light Chromatograms TotalArea",
                "heavy IsotopeLabelType",
                "heavy MeanTotalArea",
                "heavy Chromatograms TotalArea",
            };
            var actualColumnNames =
                bindingListSource.GetItemProperties(null)
                .Cast <PropertyDescriptor>()
                .Select(pd => pd.DisplayName)
                .ToArray();

            CollectionAssert.AreEqual(expectedColumnNames, actualColumnNames);
        }
コード例 #5
0
        public void CheckReport(ReportSpec reportSpec)
        {
            string    message   = string.Format("Report {0}", reportSpec.Name);
            var       converter = new ReportSpecConverter(_dataSchema);
            var       viewInfo  = converter.Convert(reportSpec);
            var       report    = Report.Load(reportSpec);
            ResultSet resultSet;

            try
            {
                resultSet = report.Execute(_database);
            }
            catch (Exception)
            {
                return;
            }
            using (var bindingListSource = new BindingListSource())
            {
                bindingListSource.SetViewContext(new SkylineViewContext(viewInfo.ParentColumn, GetRowSource(viewInfo)),
                                                 viewInfo);
                var   oldCaptions = resultSet.ColumnInfos.Select(columnInfo => columnInfo.Caption).ToArray();
                var   properties  = bindingListSource.GetItemProperties(null);
                IList resultRows  = bindingListSource;
                var   newCaptions = properties.Cast <PropertyDescriptor>().Select(pd => pd.DisplayName).ToArray();
                if (!oldCaptions.SequenceEqual(newCaptions))
                {
                    CollectionAssert.AreEqual(oldCaptions, newCaptions, message);
                }
                if (resultSet.RowCount != resultRows.Count)
                {
                    Assert.AreEqual(resultSet.RowCount, resultRows.Count, message);
                }
                resultRows = SortRows(resultRows, properties);
                resultSet  = SortResultSet(resultSet);
                for (int iRow = 0; iRow < resultSet.RowCount; iRow++)
                {
                    for (int iCol = 0; iCol < resultSet.ColumnInfos.Count; iCol++)
                    {
                        var    propertyDescriptor = properties[iCol];
                        object oldValue           = resultSet.GetRow(iRow)[iCol];
                        object newValue           = propertyDescriptor.GetValue(resultRows[iRow]);
                        if (!Equals(oldValue, newValue))
                        {
                            Assert.AreEqual(oldValue, newValue,
                                            message + "{0}:Values are not equal on Row {1} Column {2} ({3}) FullName:{4}",
                                            message, iRow, iCol, propertyDescriptor.DisplayName, propertyDescriptor.Name);
                        }
                    }
                }
                foreach (char separator in new[] { ',', '\t' })
                {
                    StringWriter oldStringWriter = new StringWriter();
                    var          cultureInfo     = LocalizationHelper.CurrentCulture;
                    ResultSet.WriteReportHelper(resultSet, separator, oldStringWriter, cultureInfo);
                    StringWriter   newStringWriter    = new StringWriter();
                    var            skylineViewContext = (SkylineViewContext)bindingListSource.ViewContext;
                    ProgressStatus progressStatus     = new ProgressStatus("Status");
                    skylineViewContext.Export(null, ref progressStatus, viewInfo, newStringWriter,
                                              new DsvWriter(cultureInfo, separator));
                    var newLineSeparators = new[] { "\r\n" };
                    var oldLines          = oldStringWriter.ToString().Split(newLineSeparators, StringSplitOptions.None);
                    var newLines          = newStringWriter.ToString().Split(newLineSeparators, StringSplitOptions.None);
                    // TODO(nicksh): Old reports would hide columns for annotations that were not in the document.
                    bool anyHiddenColumns = resultSet.ColumnInfos.Any(column => column.IsHidden);
                    if (!anyHiddenColumns)
                    {
                        Assert.AreEqual(oldLines[0], newLines[0]);
                        CollectionAssert.AreEquivalent(oldLines, newLines);
                    }
                }
            }
        }
コード例 #6
0
        public void TestMapping()
        {
            var settings          = SrmSettingsList.GetDefault();
            var document          = new SrmDocument(settings);
            var documentContainer = new MemoryDocumentContainer();

            documentContainer.SetDocument(document, null);
            using (var database = new Database(settings))
            {
                var dataSchema     = new SkylineDataSchema(documentContainer, DataSchemaLocalizer.INVARIANT);
                var sessionFactory = database.SessionFactory;
                foreach (var classMetaData in sessionFactory.GetAllClassMetadata().Values)
                {
                    var tableType = classMetaData.GetMappedClass(EntityMode.Poco);
                    foreach (var propertyName in classMetaData.PropertyNames)
                    {
                        if (propertyName == "Protein" && tableType == typeof(DbProteinResult))
                        {
                            continue;
                        }
                        var queryDef = new QueryDef
                        {
                            Select = new[] { new ReportColumn(tableType, propertyName), }
                        };
                        var reportSpec   = new ReportSpec("test", queryDef);
                        var newTableType = ReportSpecConverter.GetNewTableType(reportSpec);
                        Assert.IsNotNull(newTableType, "No table for type {0}", tableType);
                        var converter = new ReportSpecConverter(dataSchema);
                        var viewInfo  = converter.Convert(reportSpec);
                        Assert.IsNotNull(viewInfo, "Unable to convert property {0} in table {1}", propertyName, tableType);
                        Assert.AreEqual(1, viewInfo.DisplayColumns.Count, "No conversion for property {0} in table {1}", propertyName, tableType);
                        Assert.IsNotNull(viewInfo.DisplayColumns[0].ColumnDescriptor, "Column not found for property {0} in table {1}", propertyName, tableType);
                        var report            = Report.Load(reportSpec);
                        var resultSet         = report.Execute(database);
                        var bindingListSource = new BindingListSource();
                        bindingListSource.SetViewContext(new SkylineViewContext(viewInfo.ParentColumn, Array.CreateInstance(viewInfo.ParentColumn.PropertyType, 0)), viewInfo);
                        var properties  = bindingListSource.GetItemProperties(null);
                        var oldCaptions = resultSet.ColumnInfos.Select(columnInfo => columnInfo.Caption).ToArray();
                        var newCaptions = properties.Cast <PropertyDescriptor>().Select(pd => pd.DisplayName).ToArray();
                        if (oldCaptions.Length != newCaptions.Length)
                        {
                            Console.Out.WriteLine(oldCaptions);
                        }
                        CollectionAssert.AreEqual(oldCaptions, newCaptions, "Caption mismatch on {0} in {1}", propertyName, tableType);
                        for (int i = 0; i < resultSet.ColumnInfos.Count; i++)
                        {
                            var    columnInfo      = resultSet.ColumnInfos[i];
                            var    formatAttribute = (FormatAttribute)properties[i].Attributes[typeof(FormatAttribute)];
                            string message         = string.Format("Format problem on column converted from {0} in {1}",
                                                                   columnInfo.ReportColumn.Column, columnInfo.ReportColumn.Table);
                            if (null == columnInfo.Format)
                            {
                                Assert.IsTrue(null == formatAttribute || null == formatAttribute.Format, message);
                            }
                            else
                            {
                                Assert.IsNotNull(formatAttribute, message);
                                Assert.AreEqual(columnInfo.Format, formatAttribute.Format, message);
                            }
                            if (columnInfo.IsNumeric)
                            {
                                Assert.IsNotNull(formatAttribute, message);
                                Assert.AreEqual(TextUtil.EXCEL_NA, formatAttribute.NullValue, message);
                            }
                            else
                            {
                                Assert.IsTrue(null == formatAttribute || null == formatAttribute.NullValue, message);
                            }
                        }
                    }
                }
            }
        }
コード例 #7
0
 public void QuickFilter(DataGridViewColumn column)
 {
     _columnFilterPropertyDescriptor = BindingListSource.GetItemProperties(null)[column.DataPropertyName];
     filterToolStripMenuItem_Click(filterToolStripMenuItem, new EventArgs());
 }