public Schema ImportDbml(Stream stream)
        {
            if(stream == null) 
                throw new ArgumentNullException("stream");

            var typeToTableMapping = new Dictionary<string, ITableDefinition>();

            var document = new XmlDocument();
            document.Load(stream);

            var schema = new Schema();

            foreach(XmlNode tableNode in document.SelectNodes("dbml:Database/dbml:Table", namespaceManager))
            {
                var name = tableNode.Attributes["Name"].Value.Split('.');

                ISchemaDefinition schemaDefinition = schema.GetSchema(name[0]);// new SchemaDefinition(name[0]);
                var tableDefinition = new TableDefinition(name[1], schemaDefinition);

                schema.AddSchema(schemaDefinition);
                //schemaDefinition.

                //Console.WriteLine(tableNode.Name);
            } // foreach

            return schema;
        }
        public void Create(TableDefinition def)
        {
            if (def.ColumnDefinitions.FindAll(x => x.IsPrimaryKey).Count != 1)
            {
                // TODO do we allow 0 primary keys?
                throw new EseException("Ensure one primary key is defined for the table");
            }

            using (var transaction = new Transaction(connection.session))
            {
                JET_TABLEID tableid;
                Api.JetCreateTable(connection.session, connection.dbid, def.TableName, 16, 100, out tableid);

                foreach (var column in def.ColumnDefinitions) {

                    AddColumn(tableid, column);
                }

                foreach (var item in def.Indexes) {
                    // all indexes are ascending
                    var indexName = string.Join("|", item.ToArray());
                    var indexDef = "+" + string.Join("\0+", item.ToArray()) + "\0\0";
                    Api.JetCreateIndex(connection.session, tableid, indexName, CreateIndexGrbit.IndexSortNullsHigh, indexDef, indexDef.Length, 100);
                }

                transaction.Commit(CommitTransactionGrbit.LazyFlush);
            }
        }
 public void GivenTheTableIsCreatedInTheSchema(string tableName, string schemaName, Table table)
 {
     var tableActions = new TableActions(database.ConnectionString);
     var def = new TableDefinition(new DatabaseObjectName(schemaName, tableName));
     def.Columns.AddFromRaw(table.CreateSet<ColumnDefinitionRaw>());
     tableActions.Create(def);
 }
        public void TableDefinitionToCSharp()
        {
            var table = new TableDefinition(DatabaseObjectName.FromName("table1"), new ColumnDefinition[]
            {
                new IntegerColumnDefinition("c1", SqlDbType.Int) { AllowNulls = true },
                new StandardColumnDefinition("c2", SqlDbType.DateTime2) { AllowNulls = false },
                new StringColumnDefinition("c3", SqlDbType.VarChar) { AllowNulls = false, Size = 100 },
                new DecimalColumnDefinition("c4") { AllowNulls = false, Precision = 10, Scale = 2 },
                new IntegerColumnDefinition("c5", SqlDbType.Int) { IdentitySeed = 1 },
                new BinaryColumnDefinition("c6", SqlDbType.VarBinary) { AllowNulls = true, Size = 1000 },
            });

            string actual = table.ToCSharp();

            string expected =
            @"var table = new TableDefinition(DatabaseObjectName.FromName(""[dbo].[table1]""), new ColumnDefinition[] {
            new IntegerColumnDefinition(""c1"", SqlDbType.Int) { AllowNulls = true },
            new StandardColumnDefinition(""c2"", SqlDbType.DateTime2) { AllowNulls = false },
            new StringColumnDefinition(""c3"", SqlDbType.VarChar) { AllowNulls = false, Size = 100 },
            new DecimalColumnDefinition(""c4"") { AllowNulls = false, Precision = 10, Scale = 2 },
            new IntegerColumnDefinition(""c5"", SqlDbType.Int) { AllowNulls = false, IdentitySeed = 1 },
            new BinaryColumnDefinition(""c6"", SqlDbType.VarBinary) { AllowNulls = true, Size = 1000 },
            });";
            // GitHub stores this source file with \n line breaks not \r\n so update it to use the windows format
            expected = expected.Replace("\n", Environment.NewLine);

            Assert.AreEqual(expected, actual);
        }
 public void ThenTheDefinitionOfViewShouldMatchSystemTablesDefinition(string viewName, Table table)
 {
     var definition = new TableDefinition(viewName);
     definition.Columns.AddFromRaw(table.CreateSet<ColumnDefinitionRaw>());
     var checker = new ViewCheck(database.ConnectionString);
     checker.VerifyMatch(definition, TableDefinitionInterrogationStrategyType.SystemTables);
 }
Example #6
0
        public void EditFieldsTest()
        {
            const string fieldName1 = "field1";
            const ColumnTypes fieldType1 = ColumnTypes.String;
            const string fieldName2 = "field2";
            const ColumnTypes fieldType2 = ColumnTypes.Numeric;
            Collection<FieldDefinition> fields = null;

            var parentTD = new TableDefinition("Parent Table Definition");
            var td = new TableDefinition("Test Table Definition");

            td.AddField(fieldName1, fieldType1);
            td.AddField(fieldName2, fieldType2, parentTD);

            Assert.AreEqual(td[fieldName1].ColumnType, fieldType1);
            Assert.AreEqual(td[fieldName2].ColumnType, fieldType2);

            fields = td.GetFields();
            Assert.AreEqual(fields.Count, 2);

            td.RemoveField(fields.FirstOrDefault(f => f.SystemName.Equals(fieldName1)));
            fields = td.GetFields();
            Assert.AreEqual(fields.Count, 1);
            Assert.AreEqual(fields[0].ColumnType, fieldType2);
        }
 public void WhenTheTable_BackedViewIsCreated(string viewName, Table table)
 {
     var definition = new TableDefinition("tbl" + viewName);
     definition.Columns.AddFromRaw(table.CreateSet<ColumnDefinitionRaw>());
     definition.CreateOrReplace(database);
     definition.CreateView(database, viewName);
 }
        public void GetPrefixedFieldListShouldIncludeOnlyInResultFileColumns()
        {
            var stub = new SearchQueryGeneratorStub();
            var rootTable = new TableDefinition("test");
            stub.RootTable = rootTable;
            rootTable.AddField("File", ColumnTypes.File);

            Assert.IsTrue(stub.GetPrefixedFieldListPublic(0, true).Contains("[File]"));
            Assert.IsTrue(stub.GetPrefixedFieldListPublic(0, true).Contains("[FileUrl]"));

            stub.ResultColumns.Add("None");
            stub.LimitResultColumns = true;

            Assert.IsFalse(stub.GetPrefixedFieldListPublic(0, true).Contains("[File]"));
            Assert.IsFalse(stub.GetPrefixedFieldListPublic(0, true).Contains("[FileUrl]"));

            stub.ResultColumns.Add("FileUrl");

            Assert.IsFalse(stub.GetPrefixedFieldListPublic(0, true).Contains("[File]"));
            Assert.IsTrue(stub.GetPrefixedFieldListPublic(0, true).Contains("[FileUrl]"));

            stub.ResultColumns.Add("File");

            Assert.IsTrue(stub.GetPrefixedFieldListPublic(0, true).Contains("[File]"));
            Assert.IsTrue(stub.GetPrefixedFieldListPublic(0, true).Contains("[FileUrl]"));
        }
 public void Create(TableDefinition definition)
 {
     using (var connection = new SqlConnection(connectionString))
     {
         connection.Execute(new TableCreateSqlGenerator().Sql(definition));
     }
 }
        /// <summary>
        /// Visits the given <paramref name="addTableNode"/>.
        /// </summary>
        /// <param name="addTableNode"></param>
        public override void Visit(IAddTableNode addTableNode)
        {
            //
            // Create TableDefinition for the IAddTableNode we have
            TableDefinition table = new TableDefinition(addTableNode.Name);
            Environment.Schema.AddTable(table);

            base.Visit(addTableNode);
        }
        public void AddTable()
        {
            Schema schema = new Schema();
            TableDefinition table = new TableDefinition("Foo");

            schema.AddTable(table);

            Assert.AreSame(table, schema.Tables[0]);
        }
        public void AddColumn()
        {
            ITableDefinition table = new TableDefinition("Foo");
            IColumnDefinition column = new ColumnDefinition("ID");

            table.AddColumn(column);

            Assert.AreSame(column, table.Columns[0]);
            Assert.AreEqual(table.Name, column.Table);
        }
        public void GetFieldReturnsRootTableField()
        {
            // Arrange.
            var rootTable = new TableDefinition("TestTable");
            var field = rootTable.AddField("TestField", ColumnTypes.String);
            var processDefinition = new ProcessDefinition();
            processDefinition.TableList.Add(rootTable);

            // Act.
            Assert.AreSame(field, processDefinition.GetField("TestField"));
        }
        public void GetFieldReturnsSingleCrossReferenceField()
        {
            // Arrange.
            var rootTable = new TableDefinition("TestTable");
            var processDefinition = new ProcessDefinition();
            processDefinition.TableList.Add(rootTable);

            var field = new ReferenceFieldDefinition { SystemName = "TestField" };
            processDefinition.SingleCrossReferenceFields.Add(field);

            // Act / Assert.
            Assert.AreSame(field, processDefinition.GetField("TestField"));
        }
        public void Execute(IDbPlatform platform, IRefactorNode refactorNode, Environment environment)
        {
            string auditTableName = AstNodePropertyUtil.AsString(refactorNode.Properties["audit-table"].Value);
            string tableName = AstNodePropertyUtil.AsString(refactorNode.Properties["table"].Value);
            //
            // We only need columns here
            ITableDefinition tableDefinition = environment.Schema.GetTable(tableName);

            ITableDefinition auditTable = new TableDefinition(auditTableName);
            foreach(ColumnDefinition column in tableDefinition.Columns)
            {
                //
                // Keep name and type only.
                IColumnDefinition auditColumn = new ColumnDefinition(column.Name);
                
                //
                // Special handling for rowversion
                if(column.Type == DbType.Time)
                {
                    auditColumn.Length = 8;
                    auditColumn.Type = DbType.Binary;
                } // if
                else
                {
                    auditColumn.Length = column.Length;
                    auditColumn.Type = column.Type;
                } // else

                auditColumn.Nullable = true;

                auditTable.AddColumn(auditColumn);
            } // foreach

            environment.Schema.AddTable(auditTable);

            //
            // Now build an AST
            IAddTableNode addAuditTableNode = new AddTableNode(refactorNode.Parent, auditTableName);
            foreach(IColumnDefinition auditColumn in auditTable.Columns)
            {
                IAddColumnNode addAuditColumnNode = new AddColumnNode(addAuditTableNode, auditColumn.Name);
                addAuditColumnNode.Type = auditColumn.Type;
                addAuditColumnNode.Length = auditColumn.Length;
                addAuditColumnNode.Nullable = auditColumn.Nullable;

                addAuditTableNode.ChildNodes.Add(addAuditColumnNode);
            } // foreach

            addAuditTableNode.Parent.ChildNodes.Add(addAuditTableNode);
        }
Example #16
0
        /// <summary>
        /// Generates a column altering SQL command and executes it.
        /// </summary>
        /// <param name="tableDefinition">Table definition for the table to modify.</param>
        /// <param name="columnDefinition">Column definition for the column to modify.</param>
        /// <param name="sqlType">New column type.</param>
        /// <param name="sqlPrecision">New column precision.</param>
        protected override void AlterColumn(TableDefinition tableDefinition, ColumnDefinition columnDefinition, ColumnType sqlType, int sqlPrecision)
        {
            string tableName = tableDefinition.Name;
            string columnName = columnDefinition.Name;

            if (columnDefinition.Committed)
            {
                if (sqlType == columnDefinition.SqlType)
                {
                    //Log.WriteInfo("Altering column precision.\nTable: {0}\nColumn: {1}", tableName, columnName);

                    string commandText = string.Format("ALTER TABLE [dbo].[{0}] ALTER COLUMN [{1}] {2} NULL", tableName, columnName, ConvertToString(sqlType, sqlPrecision));
                    ExecuteNonQuery(commandText);
                }
                else
                {
                    //Log.WriteInfo("Altering column type.\nTable: {0}\nColumn: {1}", tableName, columnName);

                    string commandText;
                    string typeAndPrecision = ConvertToString(sqlType, sqlPrecision);

                    commandText = string.Format("SELECT [_id], [{0}] INTO #temp FROM [dbo].[{1}]", columnName, tableName);
                    ExecuteNonQuery(commandText);

                    commandText = string.Format("ALTER TABLE [dbo].[{0}] DROP COLUMN [{1}]", tableName, columnName);
                    ExecuteNonQuery(commandText);

                    commandText = string.Format("ALTER TABLE [dbo].[{0}] ADD [{1}] {2} NULL", tableName, columnName, typeAndPrecision);
                    ExecuteNonQuery(commandText);

                    commandText = string.Format("UPDATE [dbo].[{0}] SET [dbo].[{0}].[{1}] = CONVERT({2}, [#temp].[{1}]) FROM #temp WHERE [#temp].[_id] = [dbo].[{0}].[_id]", tableName, columnName, typeAndPrecision);
                    ExecuteNonQuery(commandText);

                    commandText = string.Format("DROP TABLE #temp");
                    ExecuteNonQuery(commandText);
                }
            }
            else if (tableDefinition.Committed)
            {
                //Log.WriteInfo("Adding column.\nTable: {0}\nColumn: {1}", tableName, columnName);

                string commandText = string.Format("ALTER TABLE [dbo].[{0}] ADD [{1}] {2} NULL", tableName, columnName, ConvertToString(sqlType, sqlPrecision));
                ExecuteNonQuery(commandText);

                columnDefinition.Committed = true;
            }

            columnDefinition.SqlType = sqlType;
            columnDefinition.SqlPrecision = sqlPrecision;
        }
        public void GetPrimaryKeyColumns()
        {
            TableDefinition table = new TableDefinition();
            
            table.AddColumn(new ColumnDefinition("Foo"));
            table.AddColumn(new ColumnDefinition("ID"));
            table.AddColumn(new ColumnDefinition("Bar"));
            
            Assert.IsNull(table.GetPrimaryKeyColumns());

            table.Columns[1].PrimaryKey = true;

            Assert.AreSame(table.Columns[1], table.GetPrimaryKeyColumns()[0]);
        }
        public void GetColumn()
        {
            TableDefinition table = new TableDefinition("Qux");
            table.AddColumn(new ColumnDefinition("Foo"));
            table.AddColumn(new ColumnDefinition("bAr"));

            Assert.AreSame(table.Columns[0], table.GetColumn("Foo"));
            Assert.AreSame(table.Columns[0], table.GetColumn("foo"));

            Assert.AreSame(table.Columns[1], table.GetColumn("Bar"));
            Assert.AreSame(table.Columns[1], table.GetColumn("BAR"));

            Assert.IsNull(table.GetColumn("ID"));
        }
        public void GetFieldReturnsIdField()
        {
            // Arrange.
            var processDefinition = new ProcessDefinition();
            var rootTable = new TableDefinition("TestTable");
            processDefinition.TableList.Add(rootTable);

            // Act.
            var field = processDefinition.GetField(Constants.IdColumnName);

            // Assert.
            Assert.IsNotNull(field);
            Assert.AreEqual(Constants.IdColumnName, field.SystemName);
            Assert.AreEqual(ColumnTypes.Integer, field.ColumnType);
            Assert.AreSame("TestTable", field.GetTableName());
        }
        public void RemoveColumn()
        {
            TableDefinition table = new TableDefinition("Qux");
            
            table.AddColumn(new ColumnDefinition("Foo"));
            table.AddColumn(new ColumnDefinition("bAr"));

            table.RemoveColumn("foo");
            Assert.AreEqual(1, table.Columns.Count);

            table.RemoveColumn("baz");
            Assert.AreEqual(1, table.Columns.Count);

            table.RemoveColumn("BAR");
            Assert.AreEqual(0, table.Columns.Count);
        }
        private static string TableString(TableDefinition table) {
            string alias = table.GetAliasName();
            string name = table.GetName();
            StringBuilder sb = new StringBuilder();
            sb.AppendLine(string.Format("{0} ({1})", alias.Length > 0 ? alias : name, name));
            sb.Append(new string('-', 80));
            foreach (var fld in table.GetFields()) {
                sb.Append(string.Format("{0,-20}", fld.AliasName ?? fld.Name));
                sb.Append(string.Format("{0,-14} ({1}) ", fld.FieldType.ToString(), fld.Length));
                if (fld.IsNullable || fld.IsRequired) {

                    string sep = fld.IsNullable && fld.IsRequired ? ", " : "";
                    sb.Append(string.Format("({0}{1}{2})", fld.IsNullable ? "Null" : "", sep, fld.IsRequired ? "Required" : ""));
                }
                sb.Append("\r\n");
            }
            sb.Append("\r\n");
            return sb.ToString();
        }
        public void TestFixtureSetUp()
        {
            schema = new Schema();

            TableDefinition barTable = new TableDefinition("Bar");
            barTable.AddColumn(new ColumnDefinition("ID", "Bar", DbType.Int32, false, null, null, null, true, false));
            barTable.AddColumn(new ColumnDefinition("Name", DbType.String, false, 1000, null, null));
            barTable.AddColumn(new ColumnDefinition("ParentID", DbType.Int32, true, null, null, null));

            uqNameIndex = new IndexDefinition("UQ_Name", new IndexColumnDefinition("Name", SortDirection.Ascending));
            uqNameIndex.Unique = true;
            uqNameIndex.Clustered = true;
            barTable.AddIndex(uqNameIndex);

            ReferenceDefinition fkBarReference = new ReferenceDefinition("FK_Bar", "Bar", "Bar");
            fkBarReference.PkColumns.Add("ID");
            fkBarReference.FkColumns.Add("ParentID");

            schema.AddTable(barTable);
        }
Example #23
0
        public void GetColumnNameTest()
        {
            // Arrange.
            var frenchCulture = new CultureInfo("fr-FR");
            var spanishCulture = new CultureInfo("es-ES");

            var table = new TableDefinition("TestTable");
            table.SupportedLocalizations.Add(new LocalizationInfoAttribute(Constants.DefaultCultureName));
            table.SupportedLocalizations.Add(new LocalizationInfoAttribute(frenchCulture.Name));
            var simpleField = new FieldDefinition("Field1", ColumnTypes.String, table, null);
            var localizedField = new FieldDefinition("Field2", ColumnTypes.String, table, null, allowLocalizedData: true);

            // Act / Assert.
            Assert.AreEqual("Field1", simpleField.GetColumnName(Constants.DefaultCultureName));
            Assert.AreEqual("Field1", simpleField.GetColumnName(frenchCulture.Name));
            Assert.AreEqual("Field1", simpleField.GetColumnName(spanishCulture.Name));

            Assert.AreEqual("Field2", localizedField.GetColumnName(Constants.DefaultCultureName));
            Assert.AreEqual("Field2_fr_FR", localizedField.GetColumnName(frenchCulture.Name));
            Assert.AreEqual("Field2", localizedField.GetColumnName(spanishCulture.Name));
        }
        public void AddFiltersAndReplacePredefinedValuesTests()
        {
            // arrange
            const string columnSystemName = "CreatedBy";
            const string userFullName = "James Bond";

            var sourceFilterList = new List<IFilterDescriptor>
                                       {
                                           new FilterDescriptor(LogicalOperators.And, new MobileObservableCollection<IFilterDescriptor>())
                                               {
                                                   ColumnName = columnSystemName,
                                                   Value = new FilterValue
                                                               {
                                                                   DisplayName = "Current User",
                                                                   SystemName = "user",
                                                                   Type = FilterValueType.SystemVariable
                                                               }
                                               }
                                       };

            var destinationFilterList = new List<IFilterDescriptor>();

            var queryGenerator = new SearchQueryGenerator();
            var tb = new TableDefinition(columnSystemName);
            tb.AddField(columnSystemName, ColumnTypes.String);
            queryGenerator.RootTable = tb;

            var identityMock = Mock.Create<IMQ1Identity>();
            var principalMock = Mock.Create<IPrincipal>();
            Mock.Arrange(() => principalMock.Identity).Returns(identityMock);
            Mock.Arrange(() => identityMock.FullName).Returns(userFullName);
            Csla.ApplicationContext.User = principalMock;

            // act
            QueryGeneratorExtensions.AddFilters(sourceFilterList, destinationFilterList, tb, queryGenerator);

            // assert
            Assert.AreEqual(userFullName, destinationFilterList.First().Value);
        }
        /// <summary>
        /// Adds the filters.
        /// </summary>
        /// <param name="sourceFilterList">The source filter list.</param>
        /// <param name="destinationFilterList">The destination filter list.</param>
        /// <param name="rootTable">The root table.</param>
        /// <param name="queryGenerator">The query generator.</param>
        public static void AddFilters(IEnumerable<IFilterDescriptor> sourceFilterList, IList<IFilterDescriptor> destinationFilterList, TableDefinition rootTable, SearchQueryGenerator queryGenerator)
        {
            if (sourceFilterList == null || destinationFilterList == null || queryGenerator == null)
                return;

            foreach (var filter in sourceFilterList)
            {
                if (filter.FilterDescriptors != null && filter.FilterDescriptors.Count > 0)
                {
                    var list = new List<IFilterDescriptor>();
                    destinationFilterList.Add(new SharedTypes.QueryGenerator.FilterDescriptor(filter.LogicalOperator, list));

                    AddFilters(filter.FilterDescriptors, list, rootTable, queryGenerator);
                }
                else
                {
                    var column = queryGenerator.FindColumn(filter.ColumnName, true, false);
                    if (column != null)
                        destinationFilterList.Add(new SharedTypes.QueryGenerator.FilterDescriptor(column, filter.ColumnName, filter.Operator, filter.Value, filter.MemberType));
                    else
                    {
                        if (!string.IsNullOrWhiteSpace(filter.ColumnName))
                            if (filter.ColumnName.Contains('.'))
                            {
                                var parts = filter.ColumnName.Split('.');
                                if (parts.Count() < 3)
                                    return;

                                var t = new TableDefinition(parts[0]);
                                t.AddField(parts[1], ColumnTypes.Reference);
                                queryGenerator.AddBaseTable(t);
                            }
                            else
                                destinationFilterList.Add(new SharedTypes.QueryGenerator.FilterDescriptor(filter.ColumnName, filter.ColumnName, filter.Operator, filter.Value, filter.MemberType));
                    }
                }
            }
        }
        public TableDefinition GetTableDefinition(DatabaseObjectName viewName)
        {
            var mapper = new SchemaRowToColumnMapper();
            var viewDefinition = new TableDefinition(viewName);

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand command = connection.CreateCommand())
                {
                    command.CommandText = string.Format(TableDefinitionQuery, viewName.Qualified);
                    connection.Open();
                    using (var reader = command.ExecuteReader())
                    {
                        foreach (DataRow row in reader.GetSchemaTable().Rows)
                        {
                            viewDefinition.Columns.Add(mapper.ToColumnDefinition(row));
                        }
                    }
                }
            }

            return viewDefinition;
        }
Example #27
0
        /// <summary>
        /// Generates a column altering SQL command and executes it.
        /// </summary>
        /// <param name="tableDefinition">Table definition for the table to modify.</param>
        /// <param name="columnDefinition">Column definition for the column to modify.</param>
        /// <param name="sqlType">New column type.</param>
        /// <param name="sqlPrecision">New column precision.</param>
        protected override void AlterColumn(TableDefinition tableDefinition, ColumnDefinition columnDefinition, ColumnType sqlType, int sqlPrecision)
        {
            string tableName = tableDefinition.Name;
            string columnName = columnDefinition.Name;

            if (columnDefinition.Committed)
            {
                string commandText = string.Format("ALTER TABLE `{0}` CHANGE COLUMN `{1}` `{1}` {2} NULL", tableName, columnName, ConvertToString(sqlType, sqlPrecision));
                ExecuteNonQuery(commandText);
            }
            else if (tableDefinition.Committed)
            {
                //Log.WriteInfo("Adding column.\nTable: {0}\nColumn: {1}", tableName, columnName);

                string commandText = string.Format("ALTER TABLE `{0}` ADD `{1}` {2} NULL", tableName, columnName, ConvertToString(sqlType, sqlPrecision));
                ExecuteNonQuery(commandText);

                columnDefinition.Committed = true;
            }

            columnDefinition.SqlType = sqlType;
            columnDefinition.SqlPrecision = sqlPrecision;
        }
Example #28
0
        public void CloneTest()
        {
            const string fieldName1 = "field1";
            const ColumnTypes fieldType1 = ColumnTypes.String;
            const string fieldName2 = "field2";
            const ColumnTypes fieldType2 = ColumnTypes.Numeric;
            Collection<FieldDefinition> fields = null;
            const string tableName = "Test Table Definition";
            const string tablePrefix = "prefix";
            const string parentTableName = "Parent Table Definition";
            const string parentTablePrefix = "parentPrefix";

            var parentTD = new TableDefinition(parentTableName) { Prefix = parentTablePrefix};
            var td = new TableDefinition(tableName) {BaseTable = parentTD, Prefix = tablePrefix};

            td.AddField(fieldName1, fieldType1);
            td.AddField(fieldName2, fieldType2, parentTD);

            var clone = td.Clone();

            Assert.AreEqual(td.GetFields(), clone.GetFields());
            Assert.AreEqual(td.Name, clone.Name);
            Assert.AreEqual(td.Prefix, clone.Prefix);
            Assert.AreEqual(td.BaseTable.Name, clone.BaseTable.Name);
            Assert.AreEqual(td.BaseTable.GetFields(), clone.BaseTable.GetFields());
            Assert.AreEqual(td.BaseTable.Prefix, clone.BaseTable.Prefix);

            fields = clone.GetFields();
            Assert.AreEqual(fields.Count, 2);
            Assert.IsTrue(fields.Any(f => f.SystemName.Equals(fieldName1)));
            Assert.IsTrue(fields.Any(f => f.SystemName.Equals(fieldName2)));

            var fieldWithParent = fields.FirstOrDefault(f => f.SystemName.Equals(fieldName2));
            Assert.IsTrue(fieldWithParent != null && fieldWithParent.ParentTable != null);
            Assert.AreEqual(fieldWithParent.ParentTable.Name, parentTableName);
        }
Example #29
0
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            string prevSnapshotLabel = string.Empty;
            BusinessCriteriaDTO prevSnapshotBCResult = null;

            if (reportData?.CurrentSnapshot == null)
            {
                return(null);
            }
            string currSnapshotLabel = SnapshotUtility.GetSnapshotVersionNumber(reportData.CurrentSnapshot);
            BusinessCriteriaDTO _currSnapshotBcdto = BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(reportData.CurrentSnapshot, true);

            if (reportData.PreviousSnapshot != null)
            {
                prevSnapshotLabel    = SnapshotUtility.GetSnapshotVersionNumber(reportData.PreviousSnapshot);
                prevSnapshotBCResult = BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(reportData.PreviousSnapshot, true);
            }
            else
            {
                Snapshot _previousSnapshot = reportData.Application.Snapshots?.FirstOrDefault(_ => _.Annotation.Date.DateSnapShot < reportData.CurrentSnapshot.Annotation.Date.DateSnapShot);
                if (_previousSnapshot != null)
                {
                    prevSnapshotLabel    = SnapshotUtility.GetSnapshotVersionNumber(_previousSnapshot);
                    prevSnapshotBCResult = BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(_previousSnapshot, true);
                }
            }


            var rowData = new List <string> {
                null, currSnapshotLabel
            };

            if (prevSnapshotBCResult != null)
            {
                rowData.Add(prevSnapshotLabel ?? Constants.No_Value);
            }


            #region Programming Practices
            rowData.Add(Labels.Prog);
            rowData.Add(_currSnapshotBcdto.ProgrammingPractices.ToString());
            if (prevSnapshotBCResult != null)
            {
                rowData.Add(prevSnapshotBCResult.ProgrammingPractices.ToString());
            }
            #endregion Programming Practices

            #region Architectural Design
            rowData.Add(Labels.Arch);
            rowData.Add(_currSnapshotBcdto.ArchitecturalDesign.ToString());
            if (prevSnapshotBCResult != null)
            {
                rowData.Add(prevSnapshotBCResult.ArchitecturalDesign.ToString());
            }
            #endregion Architectural Design

            #region Documentation
            rowData.Add(Labels.Doc);
            rowData.Add(_currSnapshotBcdto.Documentation.ToString());
            if (prevSnapshotBCResult != null)
            {
                rowData.Add(prevSnapshotBCResult.Documentation.ToString());
            }
            #endregion Documentation


            TableDefinition resultTable = new TableDefinition
            {
                HasRowHeaders    = true,
                HasColumnHeaders = true,
                NbRows           = 4,
                NbColumns        = (prevSnapshotBCResult != null) ? 3 : 2,
                Data             = rowData
            };

            return(resultTable);
        }
Example #30
0
        public TableDetailDesignatorStructSubform(TableDetailDesignator SourceDesignator, FrameworkElement AssociatedImportWidget = null, bool DirectApply = false)
            : this()
        {
            this.SourceDesignator       = SourceDesignator;
            this.AssociatedImportWidget = AssociatedImportWidget;

            this.DirectApply = DirectApply;

            this.PnlButtons.SetVisible(DirectApply);

            // Clone for detect changes
            this.InitialTableDefinitionClone = (this.SourceDesignator.DeclaringTableDefinition == null ? null :
                                                this.SourceDesignator.DeclaringTableDefinition.CreateClone(ECloneOperationScope.DeepAndEquivalent, null));

            this.RelatedDomain = this.SourceDesignator.OwnerDomain;

            this.AvailabeTableStructures = this.RelatedDomain.TableDefinitions.Where(tdef => tdef.Alterability != EAlterability.System);;

            if (this.SourceDesignator.TableDefIsOwned)
            {
                this.OwnedTableDefinition = this.SourceDesignator.DeclaringTableDefinition;
            }

            if (this.OwnedTableDefinition == null)
            {
                var LocalName = this.SourceDesignator.AssignerOwnerName + " - " + this.SourceDesignator.Name;
                this.OwnedTableDefinition = new TableDefinition(this.RelatedDomain, LocalName, LocalName.TextToIdentifier());
                this.OwnedTableDefinition.Alterability = EAlterability.Definition;  // This prevents the table-def to be edited from the Domain.
            }

            this.FrmTableStructEditor.SetSourceTableDef(this.OwnedTableDefinition);
            TableDefinitionMaintainer.SetFieldDefinitionsMaintainer(this.FrmTableStructEditor.FieldsMaintainer);    // Don't forget to assign the new maintainer
            this.FrmTableStructEditor.FieldsMaintainer.VisualControl.CanEditItemsDirectly = false;

            this.CbxCopySourceTableStruct.ItemsSource = this.AvailabeTableStructures;

            if (this.AvailabeTableStructures != null && this.AvailabeTableStructures.Any())
            {
                this.CbxReferencedTableStruct.ItemsSource = this.AvailabeTableStructures;

                if (this.SourceDesignator.DeclaringTableDefinition != null &&
                    this.AvailabeTableStructures.Contains(this.SourceDesignator.DeclaringTableDefinition) &&
                    !this.SourceDesignator.TableDefIsOwned)
                {
                    this.CbxReferencedTableStruct.SelectedItem = this.SourceDesignator.DeclaringTableDefinition;
                }
                else
                {
                    this.CbxReferencedTableStruct.SelectedItem = this.AvailabeTableStructures.First();
                }
            }
            else
            {
                this.RbReferenced.IsEnabled             = false;
                this.TxbReferencedTableStruct.IsEnabled = false;
                this.CbxReferencedTableStruct.IsEnabled = false;
            }

            if (this.SourceDesignator.TableDefIsOwned || !this.RbReferenced.IsEnabled)
            {
                this.RbOwned.IsChecked = true;
            }
            else
            {
                this.RbReferenced.IsChecked = true;
            }
        }
Example #31
0
 internal RowBuilder(TableDefinition table, Snapshot snapshot)
 {
     _table    = table;
     _snapshot = snapshot;
     Row       = _snapshot.AddRow(table);
 }
Example #32
0
 /// <summary>
 /// Creates a PatchTargetCodeRow row that does not belong to a table.
 /// </summary>
 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
 /// <param name="tableDef">TableDefinition this PatchTargetCode row belongs to and should get its column definitions from.</param>
 public WixBundlePatchTargetCodeRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
     base(sourceLineNumbers, tableDef)
 {
 }
Example #33
0
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            List <string> rowData             = new List <string>();
            bool          hasPreviousSnapshot = (null != reportData.PreviousSnapshot);

            double?previousLowVal = null;
            double?previousAveVal = null;
            double?previousHigVal = null;
            double?previousVhiVal = null;

            if (reportData.CurrentSnapshot != null)
            {
                #region Selected Snapshot

                var selectedName   = reportData.CurrentSnapshot.Annotation.Version;
                var selectedLowVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_Low.GetHashCode());
                var selectedAveVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_Average.GetHashCode());
                var selectedHigVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_High.GetHashCode());
                var selectedVhiVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_VeryHigh.GetHashCode());

                #endregion Selected Snapshot

                #region Previous Snapshot

                var previousName = hasPreviousSnapshot ? reportData.PreviousSnapshot.Annotation.Version : "No previous snapshot selected";

                if (hasPreviousSnapshot)
                {
                    previousLowVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_Low.GetHashCode());
                    previousAveVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_Average.GetHashCode());
                    previousHigVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_High.GetHashCode());
                    previousVhiVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                  Constants.CostComplexity.CostComplexityArtifacts_VeryHigh.GetHashCode());
                }
                #endregion Previous Snapshot


                #region Data
                rowData.Add(" ");
                rowData.Add(selectedName);
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousName);
                }

                rowData.Add(" ");
                rowData.Add("0");
                if (hasPreviousSnapshot)
                {
                    rowData.Add("0");
                }

                rowData.Add(Labels.CplxLow);
                rowData.Add(selectedLowVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousLowVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(Labels.CplxAverage);
                rowData.Add(selectedAveVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousAveVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(Labels.CplxHigh);
                rowData.Add(selectedHigVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousHigVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(Labels.CplxVeryHigh);
                rowData.Add(selectedVhiVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousVhiVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(" ");
                rowData.Add("0");
                if (hasPreviousSnapshot)
                {
                    rowData.Add("0");
                }
                #endregion Data
            }
            TableDefinition back = new TableDefinition
            {
                Data             = rowData,
                HasRowHeaders    = false,
                HasColumnHeaders = false,
                NbColumns        = hasPreviousSnapshot ? 3 : 2,
                NbRows           = 7
            };

            return(back);
        }
        public Row CreateRow(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData data, TableDefinition tableDefinition)
        {
            var table = data.EnsureTable(tableDefinition);

            var row = table.CreateRow(symbol.SourceLineNumbers);

            row.SectionId = section.Id;

            return(row);
        }
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            List <string>         rowData   = new List <string>();
            List <CellAttributes> cellProps = new List <CellAttributes>();
            int cellidx = 0;
            // cellProps will contains the properties of the cell (background color) linked to the data by position in the list stored with cellidx.

            List <string> metrics = options.GetOption("METRICS").Trim().Split('|').ToList();
            bool          critical;

            if (options == null || !options.ContainsKey("CRITICAL"))
            {
                critical = false;
            }
            else
            {
                critical = options.GetOption("CRITICAL").Equals("true");
            }

            List <string> qualityRules = MetricsUtility.BuildRulesList(reportData, metrics, critical);

            rowData.Add(Labels.Violations);
            cellidx++;

            if (qualityRules.Count > 0)
            {
                const string bcId                = "60017";
                int          nbLimitTop          = options.GetIntOption("COUNT", 5);
                bool         hasPreviousSnapshot = reportData.PreviousSnapshot != null;

                foreach (string _metric in qualityRules)
                {
                    RuleDescription rule     = reportData.RuleExplorer.GetSpecificRule(reportData.Application.DomainId, _metric);
                    string          ruleName = rule.Name;
                    if (ruleName == null)
                    {
                        continue;
                    }
                    int metricId;
                    if (!int.TryParse(_metric, out metricId))
                    {
                        continue;
                    }
                    ViolStatMetricIdDTO violStats = RulesViolationUtility.GetViolStat(reportData.CurrentSnapshot, metricId);
                    if (violStats == null)
                    {
                        continue;
                    }

                    // if no violations, do not display anything for this rule
                    if (violStats.TotalViolations < 1)
                    {
                        continue;
                    }

                    rowData.Add("");
                    cellidx++;

                    rowData.Add(Labels.ObjectsInViolationForRule + " " + ruleName);
                    cellProps.Add(new CellAttributes(cellidx, Color.Gray, Color.White, "bold"));
                    cellidx++;
                    rowData.Add(Labels.ViolationsCount + ": " + violStats.TotalViolations);
                    cellProps.Add(new CellAttributes(cellidx, Color.White));
                    cellidx++;
                    if (!string.IsNullOrWhiteSpace(rule.Rationale))
                    {
                        rowData.Add(Labels.Rationale + ": ");
                        cellProps.Add(new CellAttributes(cellidx, Color.LightGray));
                        cellidx++;
                        rowData.Add(rule.Rationale);
                        cellProps.Add(new CellAttributes(cellidx, Color.White));
                        cellidx++;
                    }
                    rowData.Add(Labels.Description + ": ");
                    cellProps.Add(new CellAttributes(cellidx, Color.LightGray));
                    cellidx++;
                    rowData.Add(rule.Description);
                    cellProps.Add(new CellAttributes(cellidx, Color.White));
                    cellidx++;
                    if (!string.IsNullOrWhiteSpace(rule.Remediation))
                    {
                        rowData.Add(Labels.Remediation + ": ");
                        cellProps.Add(new CellAttributes(cellidx, Color.LightGray));
                        cellidx++;
                        rowData.Add(rule.Remediation);
                        cellProps.Add(new CellAttributes(cellidx, Color.White));
                        cellidx++;
                    }

                    IEnumerable <Violation> results = reportData.SnapshotExplorer.GetViolationsListIDbyBC(reportData.CurrentSnapshot.Href, _metric, bcId, nbLimitTop, "$all");
                    if (results == null)
                    {
                        continue;
                    }
                    var _violations = results as Violation[] ?? results.ToArray();
                    if (_violations.Length == 0)
                    {
                        continue;
                    }
                    int    violation_counter = 0;
                    string domainId          = reportData.CurrentSnapshot.DomainId;
                    string snapshotId        = reportData.CurrentSnapshot.Id.ToString();
                    cellidx = MetricsUtility.PopulateViolationsBookmarks(reportData, _violations, violation_counter, rowData, cellidx, ruleName, cellProps, hasPreviousSnapshot, domainId, snapshotId, _metric);

                    // Add empty lines for readability
                    for (int i = 1; i < 5; i++)
                    {
                        rowData.Add("");
                        cellidx++;
                    }
                }

                if (rowData.Count <= 1)
                {
                    rowData.Add(Labels.NoViolation);
                }
            }
            else
            {
                rowData.Add(Labels.NoItem);
            }


            var table = new TableDefinition
            {
                HasRowHeaders    = false,
                HasColumnHeaders = true,
                NbRows           = rowData.Count,
                NbColumns        = 1,
                Data             = rowData,
                CellsAttributes  = cellProps
            };

            return(table);
        }
Example #36
0
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            List <string> rowData = new List <string>();
            int           nbLimitTop;
            List <int>    bcId = new List <int>();
            int           idx;

            if (null == options || !options.ContainsKey("IDX") || !int.TryParse(options["IDX"], out idx))
            {
                idx = -1;
            }
            if (null == options || !options.ContainsKey("COUNT") || !int.TryParse(options["COUNT"], out nbLimitTop))
            {
                nbLimitTop = 10;
                if (idx >= 0 && nbLimitTop <= idx)
                {
                    nbLimitTop = idx + 1;
                }
            }
            if (options != null && options.ContainsKey("PAR"))
            {
                foreach (var par in options["PAR"].Split('|'))
                {
                    int id;
                    if (int.TryParse(par, out id))
                    {
                        bcId.Add(id);
                    }
                }
            }
            if (bcId.Count == 0)
            {
                bcId.Add(Constants.BusinessCriteria.TechnicalQualityIndex.GetHashCode());
            }

            ApplicationResult bc = reportData.CurrentSnapshot.BusinessCriteriaResults.FirstOrDefault(_ => bcId.Contains(_.Reference.Key));

            rowData.AddRange(new[] { "Rules Descriptions for Top Critical Violation Rules For Business Criterion " + bc?.Reference.Name, null });

            var criticalRuleViolations = bc?.CriticalRulesViolation.Where(_ => _.DetailResult?.ViolationRatio != null).OrderByDescending(_ => _.DetailResult.ViolationRatio.FailedChecks).Take(nbLimitTop);

            if (idx >= 0)
            {
                criticalRuleViolations = criticalRuleViolations?.Skip(idx).Take(1);
            }

            if (criticalRuleViolations != null)
            {
                foreach (var violation in criticalRuleViolations)
                {
                    var ruleDescription = reportData.RuleExplorer.GetSpecificRule(reportData.Application.DomainId, violation.Reference.Key.ToString());

                    rowData.AddRange(new[]
                    {
                        Labels.RuleName, violation.Reference.Name,
                        Labels.Rationale, ruleDescription.Rationale,
                        Labels.Description, ruleDescription.Description,
                        Labels.Remediation, string.IsNullOrWhiteSpace(ruleDescription.Remediation) ? Constants.No_Value : ruleDescription.Remediation,
                        Labels.ViolationsCount, violation.DetailResult.ViolationRatio.FailedChecks.ToString(),
                        " ", " "
                    });
                }
            }

            var back = new TableDefinition
            {
                HasRowHeaders    = false,
                HasColumnHeaders = true,
                NbRows           = rowData.Count + 1,
                NbColumns        = 2,
                Data             = rowData
            };

            return(back);
        }
 public ComponentRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) :
     base(sourceLineNumbers, tableDefinition)
 {
 }
        protected override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            int             rowCount    = 0;
            int             nbLimitTop  = 0;
            int             order       = 0;
            List <string>   rowData     = new List <string>();
            TableDefinition resultTable = null;
            List <RuleVariationResultDTO> variationRules = new List <RuleVariationResultDTO>();
            //List<RuleVariationResultDTO> improvmentRules = new List<RuleVariationResultDTO>();
            //List<RuleVariationResultDTO> degradationRules = new List<RuleVariationResultDTO>();
            //List<RuleVariationResultDTO> selected_elements = new List<RuleVariationResultDTO>();
            IEnumerable <RuleVariationResultDTO> selected_elements;

            rowData.AddRange(new string[] {
                Labels.RuleName,
                Labels.ViolationsCurrent,
                Labels.ViolationsPrevious,
                Labels.Evolution,
                Labels.Grade,
                Labels.GradeEvolution
            });

            Int32?metricId = (options != null && options.ContainsKey("PAR")) ? Convert.ToInt32(options["PAR"]) : (Int32?)null;

            if (options == null || !options.ContainsKey("COUNT") || !Int32.TryParse(options["COUNT"], out nbLimitTop))
            {
                nbLimitTop = reportData.Parameter.NbResultDefault;
            }
            if (options == null || !options.ContainsKey("C") || !Int32.TryParse(options["C"], out order))
            {
                order = 0;
            }

            if (reportData != null && reportData.CurrentSnapshot != null && metricId.HasValue)
            {
                var currentCriticalRulesViolation = RulesViolationUtility.GetAllRuleViolations(reportData.CurrentSnapshot,
                                                                                               Constants.RulesViolation.All,
                                                                                               (Constants.BusinessCriteria)metricId,
                                                                                               true);


                var previousCriticalRulesViolation = (reportData.PreviousSnapshot != null) ? RulesViolationUtility.GetAllRuleViolations(reportData.PreviousSnapshot,
                                                                                                                                        Constants.RulesViolation.All,
                                                                                                                                        (Constants.BusinessCriteria)metricId,
                                                                                                                                        false)
                                                                                           : null;


                if (currentCriticalRulesViolation != null)
                {
                    foreach (var item in currentCriticalRulesViolation)
                    {
                        //Get previous value
                        var    previousitem  = (previousCriticalRulesViolation != null) ? previousCriticalRulesViolation.FirstOrDefault(_ => _.Rule.Key == item.Rule.Key) : null;
                        double?previousVal   = (previousitem != null && previousitem.TotalFailed.HasValue) ? previousitem.TotalFailed.Value : (double?)null;
                        double?previousGrade = (previousitem != null && previousitem.Grade.HasValue) ? previousitem.Grade.Value : (double?)null;

                        //Compute the varioation
                        double?variationVal   = (item.TotalFailed.HasValue && previousVal.HasValue) ? (item.TotalFailed.Value - previousVal.Value) : (double?)null;
                        double?variationGrade = (item.TotalFailed.HasValue && previousVal.HasValue) ? (item.Grade.Value - previousGrade.Value) : (double?)null;

                        variationRules.Add(new RuleVariationResultDTO {
                            Rule = new RuleDetailsDTO {
                                Name = item.Rule.Name, Key = item.Rule.Key
                            },
                            CurrentNbViolations  = (item.TotalFailed.HasValue) ? item.TotalFailed.Value : -1,
                            PreviousNbViolations = (previousitem != null && previousitem.TotalFailed.HasValue) ? previousitem.TotalFailed.Value : -1,
                            Evolution            = (variationVal.HasValue && previousVal.HasValue && previousVal > 0) ? variationVal / previousVal : double.NaN,
                            Grade          = (item.Grade.HasValue) ? item.Grade.Value : double.NaN,
                            GradeEvolution = (variationGrade.HasValue && previousGrade.HasValue && previousGrade > 0) ? variationGrade / previousGrade : double.NaN
                        });
                    }

                    switch (order)
                    {
                    default:
                    case 0:
                    {
                        selected_elements = variationRules.OrderByDescending(_ => _.Rule.CompoundedWeight * (4 - _.Grade.Value)).Take(nbLimitTop);
                        break;
                    }

                    case 1:
                    {
                        selected_elements = variationRules.Where(_ => _.GradeEvolution >= 0).OrderByDescending(_ => _.GradeEvolution).Take(nbLimitTop);
                        break;
                    }

                    case 2:
                    {
                        selected_elements = variationRules.Where(_ => _.GradeEvolution < 0).OrderBy(_ => _.GradeEvolution).Take(nbLimitTop);
                        break;
                    }
                    }
                    ;

                    foreach (var varRule in selected_elements)
                    {
                        rowData.AddRange(new string[]
                        {
                            varRule.Rule.Name
                            , (varRule.CurrentNbViolations.HasValue && varRule.CurrentNbViolations.Value != -1)? varRule.CurrentNbViolations.Value.ToString("N0"): CastReporting.Domain.Constants.No_Value
                            , (varRule.PreviousNbViolations.HasValue && varRule.PreviousNbViolations.Value != -1)? varRule.PreviousNbViolations.Value.ToString("N0"): CastReporting.Domain.Constants.No_Value
                            , (varRule.Evolution.HasValue && !double.IsNaN(varRule.Evolution.Value)) ? TableBlock.FormatPercent(varRule.Evolution.Value) : Constants.No_Value
                            , (varRule.Grade.HasValue && !double.IsNaN(varRule.Grade.Value)) ? varRule.Grade.Value.ToString("N2"):CastReporting.Domain.Constants.No_Value
                            , (varRule.GradeEvolution.HasValue && !double.IsNaN(varRule.GradeEvolution.Value)) ? TableBlock.FormatPercent(varRule.GradeEvolution.Value) : Constants.No_Value
                        }
                                         );
                        rowCount++;
                    }
                }
                else
                {
                    rowData.AddRange(new string[] {
                        Labels.NoItem,
                        string.Empty,
                        string.Empty,
                        string.Empty,
                        string.Empty
                    });
                    rowCount = 1;
                }
            }

            resultTable = new TableDefinition {
                HasRowHeaders    = false,
                HasColumnHeaders = true,
                NbRows           = rowCount + 1,
                NbColumns        = 6,
                Data             = rowData
            };
            return(resultTable);
        }
Example #39
0
        private async Task SetupDefinitionDetailsAsync()
        {
            DefinitionDetails.Clear();
            try
            {
                var lstDefs = await QueuedTask.Run <List <string> >(() =>
                {
                    Definition datasetDefinition = Dataset.DatasetDefinition;
                    List <string> lstDefDetails  = new List <string>();
                    if (datasetDefinition is TableDefinition)
                    {
                        TableDefinition tableDefinition = datasetDefinition as TableDefinition;
                        lstDefDetails.Add($"Object ID Field: {tableDefinition.GetObjectIDField()}");
                        StringBuilder stringBuilder = new StringBuilder();

                        if (!(_datastore is FileSystemDatastore))
                        {
                            lstDefDetails.Add($"Alias Name: {tableDefinition.GetAliasName()}");
                            lstDefDetails.Add($"CreatedAt Field: {tableDefinition.GetCreatedAtField()}");
                            lstDefDetails.Add($"Creator Field: {tableDefinition.GetCreatorField()}");
                            lstDefDetails.Add($"Subtype Field: {tableDefinition.GetSubtypeField()}");
                            lstDefDetails.Add($"Default Subtype Code: {tableDefinition.GetDefaultSubtypeCode()}");
                            lstDefDetails.Add($"EditedAt Field: {tableDefinition.GetEditedAtField()}");
                            lstDefDetails.Add($"Editor Field: {tableDefinition.GetEditorField()}");
                            lstDefDetails.Add($"Global ID Field: {tableDefinition.GetGlobalIDField()}");
                            lstDefDetails.Add($"Model Name: {tableDefinition.GetModelName()}");
                            foreach (var subtype in tableDefinition.GetSubtypes())
                            {
                                stringBuilder.Append(subtype.GetCode()).Append(": ").Append(subtype.GetName()).Append(Environment.NewLine);
                            }
                            lstDefDetails.Add($"Subtypes: {stringBuilder}");
                        }
                        stringBuilder = new StringBuilder();
                        foreach (Index index in tableDefinition.GetIndexes())
                        {
                            stringBuilder.Append(index.GetName()).Append(",");
                            string order = index.IsAscending() ? "Ascending" : "Descending";
                            stringBuilder.Append(order).Append(", ");
                            string unique = index.IsUnique() ? "Unique" : "Not Unique";
                            stringBuilder.Append(unique);
                        }
                        lstDefDetails.Add($"Indexes: {stringBuilder}");
                    }

                    if (datasetDefinition is FeatureClassDefinition)
                    {
                        FeatureClassDefinition featureClassDefinition = datasetDefinition as FeatureClassDefinition;
                        if (!(_datastore is FileSystemDatastore))
                        {
                            lstDefDetails.Add($"Area Field: {featureClassDefinition.GetAreaField()}");
                            lstDefDetails.Add($"Length Field: {featureClassDefinition.GetLengthField()}");
                        }
                        lstDefDetails.Add($"Shape Field: {featureClassDefinition.GetShapeField()}");
                        lstDefDetails.Add($"Shape Type: {featureClassDefinition.GetShapeType()}");
                        lstDefDetails.Add($"Spatial Reference Name: {featureClassDefinition.GetSpatialReference().Name}");
                        Envelope extent = featureClassDefinition.GetExtent();
                        lstDefDetails.Add($"Extent Details: XMin-{extent.XMin} XMax-{extent.XMax} YMin-{extent.YMin} YMax-{extent.YMax}");
                    }

                    if (datasetDefinition is FeatureDatasetDefinition)
                    {
                        FeatureDatasetDefinition featureDatasetDefinition = datasetDefinition as FeatureDatasetDefinition;
                        lstDefDetails.Add($"Spatial Reference Name: {featureDatasetDefinition.GetSpatialReference().Name}");
                        try
                        {
                            Envelope extent = featureDatasetDefinition.GetExtent();
                            lstDefDetails.Add($"Extent Details: XMin-{extent.XMin} XMax-{extent.XMax} YMin-{extent.YMin} YMax-{extent.YMax}");
                        }
                        catch (Exception)
                        {
                            lstDefDetails.Add("Could not get extent");
                        }
                    }

                    if (datasetDefinition is RelationshipClassDefinition)
                    {
                        RelationshipClassDefinition relationshipClassDefinition = datasetDefinition as RelationshipClassDefinition;
                        lstDefDetails.Add($"Alias Name: {relationshipClassDefinition.GetAliasName()}");
                        lstDefDetails.Add($"Cardinality: {relationshipClassDefinition.GetCardinality()}");
                        lstDefDetails.Add($"Origin Class: {relationshipClassDefinition.GetOriginClass()}");
                        lstDefDetails.Add($"Destination Class: {relationshipClassDefinition.GetDestinationClass()}");
                        lstDefDetails.Add($"Origin Primary Key: {relationshipClassDefinition.GetOriginKeyField()}");
                        lstDefDetails.Add($"Origin Foreign Key: {relationshipClassDefinition.GetOriginForeignKeyField()}");
                        lstDefDetails.Add($"Is Attachement?: {relationshipClassDefinition.IsAttachmentRelationship()}");
                        lstDefDetails.Add($"Is Composite Relationship?: {relationshipClassDefinition.IsComposite()}");
                    }

                    if (datasetDefinition is AttributedRelationshipClassDefinition)
                    {
                        AttributedRelationshipClassDefinition relationshipClassDefinition = datasetDefinition as AttributedRelationshipClassDefinition;
                        lstDefDetails.Add($"Destination Key: {relationshipClassDefinition.GetDestinationKeyField()}");
                        lstDefDetails.Add($"Destination Foreign Key: {relationshipClassDefinition.GetDestinationForeignKeyField()}");
                        lstDefDetails.Add($"Object ID Field: {relationshipClassDefinition.GetObjectIDField()}");
                    }
                    return(lstDefDetails);
                });

                DefinitionDetails.AddRange(lstDefs);
            }
            catch (Exception exObj)
            {
                MessageBox.Show(exObj.Message, "Error");
            }
        }
        public void AddBaseTable_ShouldUpdateIsFilterableProperty()
        {
            #region Arrange

            var visibleFields = new[] { BaseField1Name, BaseField3Name };

            var queryGenerator = new SearchQueryGeneratorTest();
            queryGenerator.SetNonFilteredColumns(null);
            queryGenerator.ResultColumns.AddRange(visibleFields);
            queryGenerator.LimitResultColumns = true;

            var baseProcessdefinition = new ProcessDefinition();
            var baseTableDefinition = new TableDefinition("TestBaseProcess");
            baseProcessdefinition.TableList.Insert(0, baseTableDefinition);
            baseTableDefinition.AddField(BaseField1Name, ColumnTypes.Numeric, null, true, true);
            baseTableDefinition.AddField(BaseField2Name, ColumnTypes.Object, null, true, true);
            baseTableDefinition.AddField(BaseField3Name, ColumnTypes.Object, null, true, false);

            #endregion Arrange

            // Act
            queryGenerator.AddBaseTable(baseProcessdefinition);

            // Assert
            Assert.IsTrue(queryGenerator.BaseFieldIsFilterable(BaseField1Name));
            Assert.IsFalse(queryGenerator.BaseFieldIsFilterable(BaseField2Name));
            Assert.IsFalse(queryGenerator.BaseFieldIsFilterable(BaseField3Name));
        }
Example #41
0
 private AttributeDefinition GetColumnFromJoinString(TableDefinition table, string joinString)
 {
     return(table.GetAttributeByName(joinString.Contains(".") ? joinString.Split(".")[1] : joinString));
 }
Example #42
0
        private bool TryOptimizeIN(SelectASTNode selectASTNode, ReadLogicalElement input, TableDefinition tableDefinition, out CartesianProductElement result)
        {
            if (selectASTNode.Condition is RelOpASTNode relOpASTNode &&
                relOpASTNode.RelationOperator == Compiler.Common.RelOp.In)
            {
                SelectASTNode     innerSelectASTNode     = null;
                IdentifierASTNode outerIdentifierASTNode = null;

                if (relOpASTNode.Right is SelectASTNode)
                {
                    innerSelectASTNode = (SelectASTNode)relOpASTNode.Right;

                    if (relOpASTNode.Left is IdentifierASTNode)
                    {
                        outerIdentifierASTNode = (IdentifierASTNode)relOpASTNode.Left;
                    }
                }

                if (relOpASTNode.Right is IdentifierASTNode)
                {
                    outerIdentifierASTNode = (IdentifierASTNode)relOpASTNode.Right;

                    if (relOpASTNode.Left is SelectASTNode)
                    {
                        innerSelectASTNode = (SelectASTNode)relOpASTNode.Left;
                    }
                }

                if (innerSelectASTNode != null &&
                    outerIdentifierASTNode != null)
                {
                    result = new CartesianProductElement(input, GetElementForTreeNode(innerSelectASTNode) as ReadLogicalElement, GetColumnFromIdentifierNode(tableDefinition, outerIdentifierASTNode), SelectColumnsToColumns(_relationManager.GetTable(innerSelectASTNode.From.Identifier.Identifier), innerSelectASTNode.SelectColumns).First().AttributeDefinition);
                    return(true);
                }
            }

            result = null;
            return(false);
        }
        protected override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            int metricId;

            #region Item BCID
            if (options == null ||
                !options.ContainsKey("BCID") ||
                !int.TryParse(options["BCID"], out metricId))
            {
                metricId = reportData.Parameter.NbResultDefault;
            }
            #endregion Item BCID

            var rowData = new List <String>();
            rowData.AddRange(new string[] {
                " ",
                Labels.ViolationsCritical + " - " + Labels.ViolationsRemoved,
                Labels.ViolationsCritical + " - " + Labels.ViolationsAdded,
                Labels.ViolationsCritical + " - " + Labels.Total
            });

            DataTable dtDates = new DataTable();
            dtDates.Columns.Add("Quarter", typeof(int));
            dtDates.Columns.Add("Year", typeof(int));
            dtDates.Columns.Add("RemovedViol", typeof(double));
            dtDates.Columns.Add("AddedViol", typeof(double));
            dtDates.Columns.Add("TotalViol", typeof(double));
            dtDates.AcceptChanges();

            #region Fetch SnapshotsPF

            if (reportData != null && reportData.Applications != null && reportData.snapshots != null)
            {
                DateTime DateNow = DateTime.Now;
                //DateTime DateNow = Convert.ToDateTime("03 01 2014");
                Application[] AllApps        = reportData.Applications;
                Snapshot[]    AllSnapshots   = reportData.snapshots;
                int           generateQuater = 6;
                int           currentYear    = DateNow.Year;
                int           currentQuater  = GetQuarter(DateNow);
                for (int i = generateQuater; i > 0; i--)
                {
                    DataRow dr = dtDates.NewRow();
                    dr["Quarter"] = currentQuater;
                    dr["Year"]    = currentYear;
                    dtDates.Rows.InsertAt(dr, 0);
                    //dtDates.Rows.Add(currentQuater, currentYear);
                    if (--currentQuater == 0)
                    {
                        currentQuater = 4;
                        currentYear--;
                    }
                }

                double?RemovedViol = 0;
                double?AddedViol   = 0;
                double?TotalViol   = 0;

                for (int i = 0; i < dtDates.Rows.Count; i++)
                {
                    RemovedViol = 0;
                    AddedViol   = 0;
                    TotalViol   = 0;

                    if (AllSnapshots.Count() > 0)
                    {
                        foreach (Snapshot snapshot in AllSnapshots.OrderBy(_ => _.Annotation.Date.DateSnapShot))
                        {
                            DateTime SnapshotDate = Convert.ToDateTime(snapshot.Annotation.Date.DateSnapShot.Value);
                            int      intQuarter   = Convert.ToInt32(dtDates.Rows[i]["Quarter"]);
                            int      intYear      = Convert.ToInt32(dtDates.Rows[i]["Year"]);

                            int intSnapshotQuarter = GetQuarter(SnapshotDate);
                            int intSnapshotYear    = SnapshotDate.Year;

                            if (intQuarter == intSnapshotQuarter && intYear == intSnapshotYear)
                            {
                                var results = RulesViolationUtility.GetStatViolation(snapshot);
                                foreach (var resultModule in results)
                                {
                                    if (resultModule[(Constants.BusinessCriteria)metricId] != null)
                                    {
                                        int CriticalViolThisModulePerformanceTotal = (resultModule != null && resultModule[(Constants.BusinessCriteria)metricId].Total.HasValue) ?
                                                                                     resultModule[(Constants.BusinessCriteria)metricId].Total.Value : 0;

                                        int CriticalViolThisModulePerformanceAdded = (resultModule != null && resultModule[(Constants.BusinessCriteria)metricId].Added.HasValue) ?
                                                                                     resultModule[(Constants.BusinessCriteria)metricId].Added.Value : 0;

                                        int CriticalViolThisModulePerformanceRemoved = (resultModule != null && resultModule[(Constants.BusinessCriteria)metricId].Removed.HasValue) ?
                                                                                       resultModule[(Constants.BusinessCriteria)metricId].Removed.Value : 0;

                                        RemovedViol = RemovedViol + CriticalViolThisModulePerformanceRemoved;
                                        AddedViol   = AddedViol + CriticalViolThisModulePerformanceAdded;
                                        TotalViol   = TotalViol + CriticalViolThisModulePerformanceTotal;
                                    }
                                }
                            }
                        }
                    }

                    if (RemovedViol > 0)
                    {
                        RemovedViol = RemovedViol * -1;
                    }

                    dtDates.Rows[i]["RemovedViol"] = RemovedViol;
                    dtDates.Rows[i]["AddedViol"]   = AddedViol;
                    dtDates.Rows[i]["TotalViol"]   = TotalViol;
                }

                for (int i = 0; i < dtDates.Rows.Count; i++)
                {
                    string strQuarter = dtDates.Rows[i]["Year"].ToString() + " Q" + dtDates.Rows[i]["Quarter"].ToString();
                    rowData.AddRange(new string[] {
                        strQuarter,
                        dtDates.Rows[i]["RemovedViol"].ToString(),
                        dtDates.Rows[i]["AddedViol"].ToString(),
                        dtDates.Rows[i]["TotalViol"].ToString(),
                    });
                }
            }
            #endregion Fetch SnapshotsPF



            TableDefinition resultTable = new TableDefinition
            {
                HasRowHeaders    = true,
                HasColumnHeaders = false,
                NbRows           = dtDates.Rows.Count + 1,
                NbColumns        = 4,
                Data             = rowData,
                GraphOptions     = null
            };
            return(resultTable);
        }
Example #44
0
        public override void Process(Expressions.RenameTableExpression expression)
        {
            truncator.Truncate(expression);
            FirebirdSchemaProvider schema   = new FirebirdSchemaProvider(this);
            TableDefinition        tableDef = schema.GetTableDefinition(expression.OldName);

            tableDef.Name = expression.NewName;
            CreateTableExpression createNew = new CreateTableExpression()
            {
                TableName  = expression.NewName,
                SchemaName = String.Empty
            };

            //copy column definitions (nb: avoid to copy key names, because in firebird they must be globally unique, so let it rename)
            tableDef.Columns.ToList().ForEach(x => createNew.Columns.Add(new ColumnDefinition()
            {
                Name             = x.Name,
                DefaultValue     = x.DefaultValue,
                IsForeignKey     = x.IsForeignKey,
                IsIdentity       = x.IsIdentity,
                IsIndexed        = x.IsIndexed,
                IsNullable       = x.IsNullable,
                IsPrimaryKey     = x.IsPrimaryKey,
                IsUnique         = x.IsUnique,
                ModificationType = x.ModificationType,
                Precision        = x.Precision,
                Size             = x.Size,
                Type             = x.Type,
                CustomType       = x.CustomType
            }));

            Process(createNew);

            int columnCount = tableDef.Columns.Count;

            string[]             columns = tableDef.Columns.Select(x => x.Name).ToArray();
            InsertDataExpression data    = new InsertDataExpression();

            data.TableName  = tableDef.Name;
            data.SchemaName = tableDef.SchemaName;
            using (DataSet ds = ReadTableData(String.Empty, expression.OldName))
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    InsertionDataDefinition insert = new InsertionDataDefinition();
                    for (int i = 0; i < columnCount; i++)
                    {
                        insert.Add(new KeyValuePair <string, object>(columns[i], dr.ItemArray[i]));
                    }
                    data.Rows.Add(insert);
                }
            }
            Process(data);

            DeleteTableExpression delTable = new DeleteTableExpression()
            {
                TableName  = expression.OldName,
                SchemaName = String.Empty
            };

            Process(delTable);
        }
        protected override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            string prevSnapshotLabel = string.Empty;
            BusinessCriteriaDTO prevSnapshotBCResult = null;

            if (reportData != null && reportData.CurrentSnapshot != null)
            {
                string currSnapshotLabel = SnapshotUtility.GetSnapshotVersionNumber(reportData.CurrentSnapshot);
                BusinessCriteriaDTO currSnapshotBCDTO = BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(reportData.CurrentSnapshot, true);

                if (reportData.PreviousSnapshot != null)
                {
                    prevSnapshotLabel    = SnapshotUtility.GetSnapshotVersionNumber(reportData.PreviousSnapshot);
                    prevSnapshotBCResult = BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(reportData.PreviousSnapshot, true);
                }
                else
                if (reportData.Application.Snapshots != null)
                {
                    Snapshot PreviousSnapshot = reportData.Application.Snapshots.FirstOrDefault(_ => _.Annotation.Date.DateSnapShot < reportData.CurrentSnapshot.Annotation.Date.DateSnapShot);
                    if (PreviousSnapshot != null)
                    {
                        prevSnapshotLabel    = SnapshotUtility.GetSnapshotVersionNumber(PreviousSnapshot);
                        prevSnapshotBCResult = BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(PreviousSnapshot, true);
                    }
                }



                var rowData = new List <String>();
                rowData.Add(null);
                rowData.Add(currSnapshotLabel.ToString());
                if (prevSnapshotBCResult != null)
                {
                    rowData.Add(prevSnapshotLabel ?? Constants.No_Value);
                }


                #region Transferability
                rowData.Add(Labels.Trans);
                rowData.Add(currSnapshotBCDTO.Transferability.ToString());
                if (prevSnapshotBCResult != null)
                {
                    rowData.Add(prevSnapshotBCResult.Transferability.ToString());
                }
                #endregion Transferability

                #region Changeability
                rowData.Add(Labels.Chang);
                rowData.Add(currSnapshotBCDTO.Changeability.ToString());
                if (prevSnapshotBCResult != null)
                {
                    rowData.Add(prevSnapshotBCResult.Changeability.ToString());
                }
                #endregion Changeability

                #region Robustness
                rowData.Add(Labels.Robu);
                rowData.Add(currSnapshotBCDTO.Robustness.ToString());
                if (prevSnapshotBCResult != null)
                {
                    rowData.Add(prevSnapshotBCResult.Robustness.ToString());
                }
                #endregion Robustness

                #region Performance
                rowData.Add(Labels.Efcy);
                rowData.Add(currSnapshotBCDTO.Performance.ToString());
                if (prevSnapshotBCResult != null)
                {
                    rowData.Add(prevSnapshotBCResult.Performance.ToString());
                }
                #endregion Performance

                #region Security
                rowData.Add(Labels.Secu);
                rowData.Add(currSnapshotBCDTO.Security.ToString());
                if (prevSnapshotBCResult != null)
                {
                    rowData.Add(prevSnapshotBCResult.Security.ToString());
                }
                #endregion Security

                TableDefinition resultTable = new TableDefinition
                {
                    HasRowHeaders    = true,
                    HasColumnHeaders = true,
                    NbRows           = 6,
                    NbColumns        = prevSnapshotBCResult != null ? 3 : 2,
                    Data             = rowData
                };

                return(resultTable);
            }

            return(null);
        }
Example #46
0
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            #region METHODS

            const string metricFormat = "N2";

            bool displayShortHeader = (options != null && options.ContainsKey("HEADER") && "SHORT" == options["HEADER"]);

            int param;

            bool showEvol = false;
            if (options != null && options.ContainsKey("SHOW_EVOL") && int.TryParse(options["SHOW_EVOL"], out param))
            {
                showEvol = (param != 0);
            }

            bool showEvolPercent = true;
            if (options != null && options.ContainsKey("SHOW_EVOL_PERCENT") && int.TryParse(options["SHOW_EVOL_PERCENT"], out param))
            {
                showEvolPercent = (param != 0);
            }

            if (reportData?.CurrentSnapshot?.BusinessCriteriaResults == null)
            {
                return(null);
            }
            bool hasPreviousSnapshot = null != reportData.PreviousSnapshot;

            #region currSnapshot
            string currSnapshotLabel = SnapshotUtility.GetSnapshotVersionNumber(reportData.CurrentSnapshot);
            BusinessCriteriaDTO currSnapshotBisCriDTO = BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(reportData.CurrentSnapshot, false);
            #endregion  currSnapshot

            #region prevSnapshot
            string prevSnapshotLabel = hasPreviousSnapshot ? SnapshotUtility.GetSnapshotVersionNumber(reportData.PreviousSnapshot) : Constants.No_Value;
            BusinessCriteriaDTO prevSnapshotBisCriDTO = hasPreviousSnapshot ? BusinessCriteriaUtility.GetBusinessCriteriaGradesSnapshot(reportData.PreviousSnapshot, false) : null;
            #endregion  prevSnapshot

            List <string> rowData = new List <string>();
            rowData.AddRange(displayShortHeader
                ? new[] { " ", Labels.TQI, Labels.Robu, Labels.Efcy, Labels.Secu, Labels.Trans, Labels.Chang }
                : new[] { " ", Labels.TQI, Labels.Robustness, Labels.Efficiency, Labels.Security, Labels.Transferability, Labels.Changeability });
            rowData.AddRange(
                new[] {
                currSnapshotLabel,
                currSnapshotBisCriDTO.TQI?.ToString(metricFormat) ?? Constants.No_Value,
                currSnapshotBisCriDTO.Robustness?.ToString(metricFormat) ?? Constants.No_Value,
                currSnapshotBisCriDTO.Performance?.ToString(metricFormat) ?? Constants.No_Value,
                currSnapshotBisCriDTO.Security?.ToString(metricFormat) ?? Constants.No_Value,
                currSnapshotBisCriDTO.Transferability?.ToString(metricFormat) ?? Constants.No_Value,
                currSnapshotBisCriDTO.Changeability?.ToString(metricFormat) ?? Constants.No_Value
            });

            if (hasPreviousSnapshot)
            {
                #region variation
                BusinessCriteriaDTO _businessCriteriaGradesEvol        = (currSnapshotBisCriDTO - prevSnapshotBisCriDTO);
                BusinessCriteriaDTO _businessCriteriaGradesEvolPercent = (_businessCriteriaGradesEvol / prevSnapshotBisCriDTO);
                #endregion  variation

                rowData.AddRange(
                    new[] {
                    prevSnapshotLabel,
                    prevSnapshotBisCriDTO.TQI?.ToString(metricFormat) ?? Constants.No_Value,
                    prevSnapshotBisCriDTO.Robustness?.ToString(metricFormat) ?? Constants.No_Value,
                    prevSnapshotBisCriDTO.Performance?.ToString(metricFormat) ?? Constants.No_Value,
                    prevSnapshotBisCriDTO.Security?.ToString(metricFormat) ?? Constants.No_Value,
                    prevSnapshotBisCriDTO.Transferability?.ToString(metricFormat) ?? Constants.No_Value,
                    prevSnapshotBisCriDTO.Changeability?.ToString(metricFormat) ?? Constants.No_Value,
                });

                if (showEvol)
                {
                    rowData.AddRange(
                        new[] {
                        Labels.Evol,
                        _businessCriteriaGradesEvol.TQI.HasValue ? FormatEvolution(_businessCriteriaGradesEvol.TQI.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvol.Robustness.HasValue ? FormatEvolution(_businessCriteriaGradesEvol.Robustness.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvol.Performance.HasValue ? FormatEvolution(_businessCriteriaGradesEvol.Performance.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvol.Security.HasValue ? FormatEvolution(_businessCriteriaGradesEvol.Security.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvol.Transferability.HasValue ? FormatEvolution(_businessCriteriaGradesEvol.Transferability.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvol.Changeability.HasValue ? FormatEvolution(_businessCriteriaGradesEvol.Changeability.Value) : Constants.No_Value
                    });
                }

                if (showEvolPercent)
                {
                    rowData.AddRange(
                        new[] {
                        Labels.EvolPercent,
                        _businessCriteriaGradesEvolPercent.TQI.HasValue ? FormatPercent(_businessCriteriaGradesEvolPercent.TQI.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvolPercent.Robustness.HasValue ? FormatPercent(_businessCriteriaGradesEvolPercent.Robustness.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvolPercent.Performance.HasValue ? FormatPercent(_businessCriteriaGradesEvolPercent.Performance.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvolPercent.Security.HasValue ? FormatPercent(_businessCriteriaGradesEvolPercent.Security.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvolPercent.Transferability.HasValue ? FormatPercent(_businessCriteriaGradesEvolPercent.Transferability.Value) : Constants.No_Value,
                        _businessCriteriaGradesEvolPercent.Changeability.HasValue ? FormatPercent(_businessCriteriaGradesEvolPercent.Changeability.Value) : Constants.No_Value
                    });
                }
            }

            var resultTable = new TableDefinition {
                HasRowHeaders    = false,
                HasColumnHeaders = true,
                NbRows           = hasPreviousSnapshot ? 4 : 2,
                NbColumns        = 7,
                Data             = rowData
            };
            return(resultTable);
        }
Example #47
0
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            int nbLimitTop;

            if (null == options || !options.ContainsKey("COUNT") || !int.TryParse(options["COUNT"], out nbLimitTop))
            {
                nbLimitTop = -1;
            }
            string type = null;

            if (null != options && options.ContainsKey("TYPE"))
            {
                type = options["TYPE"] ?? string.Empty;
                type = type.Trim();
                switch (type.ToUpper())
                {
                case "DF":
                    type = "Data Function";
                    break;

                case "TF":
                    type = "Transaction";
                    break;

                default:
                    type = string.Empty;
                    break;
                }
            }
            bool displayHeader = (options == null || !options.ContainsKey("HEADER") || "NO" != options["HEADER"]);

            IEnumerable <IfpugFunction> functions = reportData.SnapshotExplorer.GetIfpugFunctions(reportData.CurrentSnapshot.Href, string.IsNullOrEmpty(type) ? nbLimitTop : -1)?.ToList();

            List <string> rowData = new List <string>();

            if (displayHeader)
            {
                rowData.AddRange(new[] { Labels.IFPUG_ElementType, Labels.ObjectName, Labels.IFPUG_NoOfFPs, Labels.IFPUG_FPDetails, Labels.IFPUG_ObjectType, Labels.ModuleName, Labels.Technology });
            }

            int nbRows = 0;

            if (functions != null && functions.Any())
            {
                var exportedList = functions;
                if (!string.IsNullOrEmpty(type))
                {
                    exportedList = exportedList.Where(f => f.ElementType == type);
                }
                if (nbLimitTop > 0)
                {
                    exportedList = exportedList.Take(nbLimitTop);
                }
                foreach (var ifpugFunction in exportedList)
                {
                    rowData.Add(string.IsNullOrEmpty(ifpugFunction.ElementType) ? " " : ifpugFunction.ElementType);
                    rowData.Add(string.IsNullOrEmpty(ifpugFunction.ObjectName) ? " " : ifpugFunction.ObjectName);
                    rowData.Add(string.IsNullOrEmpty(ifpugFunction.NbOfFPs) ?
                                string.IsNullOrEmpty(ifpugFunction.NoOfFPs) ?
                                string.IsNullOrEmpty(ifpugFunction.Afps) ? " " : ifpugFunction.Afps
                        : ifpugFunction.NoOfFPs
                        : ifpugFunction.NbOfFPs);
                    rowData.Add(string.IsNullOrEmpty(ifpugFunction.FPDetails) ? " " : ifpugFunction.FPDetails);
                    rowData.Add(string.IsNullOrEmpty(ifpugFunction.ObjectType) ? " " : ifpugFunction.ObjectType);
                    rowData.Add(string.IsNullOrEmpty(ifpugFunction.ModuleName) ? " " : ifpugFunction.ModuleName);
                    rowData.Add(string.IsNullOrEmpty(ifpugFunction.Technology) ? " " : ifpugFunction.Technology);
                    nbRows += 1;
                }
            }
            else
            {
                rowData.AddRange(new[] { Labels.NoItem, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty });
            }

            var resultTable = new TableDefinition
            {
                HasRowHeaders    = false,
                HasColumnHeaders = displayHeader,
                NbRows           = nbRows + (displayHeader ? 1 : 0),
                NbColumns        = 7,
                Data             = rowData
            };

            return(resultTable);
        }
Example #48
0
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            List <string> rowData = new List <string>();

            string[] bcIds      = options.GetOption("BCID") != null?options.GetOption("BCID").Trim().Split('|') : new[] { "60016" }; // by default, security
            int      nbLimitTop = options.GetOption("COUNT") == "ALL" ? -1 : options.GetIntOption("COUNT", 10);
            bool     shortName  = options.GetOption("NAME", "FULL").Equals("SHORT");
            bool     hasPri     = bcIds.Contains("60013") || bcIds.Contains("60014") || bcIds.Contains("60016");

            string[] filter   = options.GetOption("FILTER", "ALL").Trim().Split('|');
            bool     critical = options.GetOption("VIOLATIONS", "CRITICAL").Equals("CRITICAL");
            string   module   = options.GetOption("MODULE");

            string[] technos = (options.GetOption("TECHNOLOGIES") != null && !options.GetOption("TECHNOLOGIES").Equals("ALL")) ? options.GetOption("TECHNOLOGIES").Trim().Split('|') : new[] { "$all" };

            rowData.Add(Labels.ViolationStatus);
            if (hasPri)
            {
                rowData.Add(Labels.PRI);
            }
            rowData.Add(Labels.ExclusionStatus);
            rowData.Add(Labels.ActionStatus);
            rowData.Add(Labels.RuleName);
            rowData.Add(Labels.BusinessCriterionName);
            rowData.Add(Labels.ObjectName);
            rowData.Add(Labels.ObjectStatus);
            int nbCols = hasPri ? 8 : 7;
            int nbRows;

            List <Violation> results = new List <Violation>();


            foreach (string _bcid in bcIds)
            {
                Module mod  = (module != null) ? reportData.CurrentSnapshot.Modules.FirstOrDefault(m => m.Name.Equals(module)) : null;
                string href = (mod == null) ? reportData.CurrentSnapshot.Href : mod.Href;

                string technologies = technos.Aggregate(string.Empty, (current, techno) => (current.Equals(string.Empty)) ? techno : current + "," + techno);

                IEnumerable <Violation> bcresults = critical ?
                                                    reportData.SnapshotExplorer.GetViolationsListIDbyBC(href, "(critical-rules)", _bcid, -1, "(" + technologies + ")").ToList()
                    : reportData.SnapshotExplorer.GetViolationsListIDbyBC(href, "(nc:" + _bcid + ",cc:" + _bcid + ")", _bcid, -1, "(" + technologies + ")").ToList();

                List <Violation> filterResults = new List <Violation>();
                if (!bcresults.Any())
                {
                    continue;
                }
                foreach (string _filter in filter)
                {
                    switch (_filter)
                    {
                    case "ADDED":
                        filterResults.AddRange(bcresults.Where(_ => _.Diagnosis.Status.Equals("added")));
                        break;

                    case "UNCHANGED":
                        filterResults.AddRange(bcresults.Where(_ => _.Diagnosis.Status.Equals("unchanged")));
                        break;

                    case "UPDATED":
                        filterResults.AddRange(bcresults.Where(_ => _.Diagnosis.Status.Equals("updated")));
                        break;

                    default:
                        filterResults.AddRange(bcresults);
                        break;
                    }
                }
                var _violations = filterResults.ToList();
                foreach (Violation _bcresult in _violations)
                {
                    _bcresult.Component.PriBusinessCriterion = BusinessCriteriaUtility.GetMetricName(reportData.CurrentSnapshot, int.Parse(_bcid));
                }
                results.AddRange(_violations);
            }

            results = nbLimitTop != -1 ? results.Take(nbLimitTop).ToList() : results;

            if (results.Count != 0)
            {
                foreach (Violation _violation in results)
                {
                    rowData.Add(_violation.Diagnosis?.Status ?? Constants.No_Value);
                    if (hasPri)
                    {
                        rowData.Add(_violation.Component?.PropagationRiskIndex.ToString("N0"));
                    }
                    rowData.Add(_violation.ExclusionRequest?.Status ?? Constants.No_Value);
                    rowData.Add(_violation.RemedialAction?.Status ?? Constants.No_Value);
                    rowData.Add(_violation.RulePattern?.Name ?? Constants.No_Value);
                    rowData.Add(_violation.Component?.PriBusinessCriterion ?? Constants.No_Value);
                    rowData.Add(shortName ? _violation.Component?.ShortName : _violation.Component?.Name ?? Constants.No_Value);
                    rowData.Add(_violation.Component?.Status ?? Constants.No_Value);
                }
                nbRows = results.Count + 1;
            }
            else
            {
                rowData.Add(Labels.NoItem);
                for (int i = 1; i < nbCols; i++)
                {
                    rowData.Add(string.Empty);
                }
                nbRows = 2;
            }

            var table = new TableDefinition
            {
                HasRowHeaders    = false,
                HasColumnHeaders = true,
                NbRows           = nbRows,
                NbColumns        = nbCols,
                Data             = rowData
            };

            return(table);
        }
        protected override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            var rowData = new List <String>();

            rowData.AddRange(new string[] {
                " ",
                Labels.DebtRemoved + " (" + reportData.CurrencySymbol + ")",
                Labels.DebtAdded + " (" + reportData.CurrencySymbol + ")",
                Labels.Debt + " (" + reportData.CurrencySymbol + ")"
            });

            DataTable dtDates = new DataTable();

            dtDates.Columns.Add("Quarter", typeof(int));
            dtDates.Columns.Add("Year", typeof(int));
            dtDates.Columns.Add("RemovedTechnicalDebt", typeof(double));
            dtDates.Columns.Add("AddedTechnicalDebt", typeof(double));
            dtDates.Columns.Add("TotalTechnicalDebt", typeof(double));
            dtDates.AcceptChanges();

            #region Fetch SnapshotsPF

            if (reportData != null && reportData.Applications != null && reportData.snapshots != null)
            {
                DateTime DateNow = DateTime.Now;
                //DateTime DateNow = Convert.ToDateTime("03 01 2014");
                Application[] AllApps        = reportData.Applications;
                Snapshot[]    AllSnapshots   = reportData.snapshots;
                int           generateQuater = 6;
                int           currentYear    = DateNow.Year;
                int           currentQuater  = GetQuarter(DateNow);
                for (int i = generateQuater; i > 0; i--)
                {
                    DataRow dr = dtDates.NewRow();
                    dr["Quarter"] = currentQuater;
                    dr["Year"]    = currentYear;
                    dtDates.Rows.InsertAt(dr, 0);
                    //dtDates.Rows.Add(currentQuater, currentYear);
                    if (--currentQuater == 0)
                    {
                        currentQuater = 4;
                        currentYear--;
                    }
                }

                double?RemovedTechnicalDebt = 0;
                double?AddedTechnicalDebt   = 0;
                double?TotalTechnicalDebt   = 0;

                for (int i = 0; i < dtDates.Rows.Count; i++)
                {
                    RemovedTechnicalDebt = 0;
                    AddedTechnicalDebt   = 0;
                    TotalTechnicalDebt   = 0;

                    if (AllSnapshots.Count() > 0)
                    {
                        foreach (Snapshot snapshot in AllSnapshots.OrderBy(_ => _.Annotation.Date.DateSnapShot))
                        {
                            DateTime SnapshotDate = Convert.ToDateTime(snapshot.Annotation.Date.DateSnapShot.Value);

                            int intQuarter = Convert.ToInt32(dtDates.Rows[i]["Quarter"]);
                            int intYear    = Convert.ToInt32(dtDates.Rows[i]["Year"]);

                            int intSnapshotQuarter = GetQuarter(SnapshotDate);
                            int intSnapshotYear    = SnapshotDate.Year;

                            if (intQuarter == intSnapshotQuarter && intYear == intSnapshotYear)
                            {
                                RemovedTechnicalDebt = RemovedTechnicalDebt + MeasureUtility.GetRemovedTechDebtMetric(snapshot);
                                AddedTechnicalDebt   = AddedTechnicalDebt + MeasureUtility.GetAddedTechDebtMetric(snapshot);
                                TotalTechnicalDebt   = TotalTechnicalDebt + MeasureUtility.GetTechnicalDebtMetric(snapshot);
                            }
                        }
                    }

                    if (RemovedTechnicalDebt > 0)
                    {
                        RemovedTechnicalDebt = RemovedTechnicalDebt * -1;
                    }

                    if (RemovedTechnicalDebt != null)
                    {
                        dtDates.Rows[i]["RemovedTechnicalDebt"] = RemovedTechnicalDebt;
                    }
                    else
                    {
                        dtDates.Rows[i]["RemovedTechnicalDebt"] = 0.0;
                    }

                    if (AddedTechnicalDebt != null)
                    {
                        dtDates.Rows[i]["AddedTechnicalDebt"] = AddedTechnicalDebt;
                    }
                    else
                    {
                        dtDates.Rows[i]["AddedTechnicalDebt"] = 0.0;
                    }

                    if (TotalTechnicalDebt != null)
                    {
                        dtDates.Rows[i]["TotalTechnicalDebt"] = TotalTechnicalDebt;
                    }
                    else
                    {
                        dtDates.Rows[i]["TotalTechnicalDebt"] = 0.0;
                    }
                }

                for (int i = 0; i < dtDates.Rows.Count; i++)
                {
                    string strQuarter = dtDates.Rows[i]["Year"].ToString() + " Q" + dtDates.Rows[i]["Quarter"].ToString();
                    rowData.AddRange(new string[] {
                        strQuarter,
                        dtDates.Rows[i]["RemovedTechnicalDebt"].ToString(),
                        dtDates.Rows[i]["AddedTechnicalDebt"].ToString(),
                        dtDates.Rows[i]["TotalTechnicalDebt"].ToString(),
                    });
                }
            }
            #endregion Fetch SnapshotsPF



            TableDefinition resultTable = new TableDefinition
            {
                HasRowHeaders    = true,
                HasColumnHeaders = false,
                NbRows           = dtDates.Rows.Count + 1,
                NbColumns        = 4,
                Data             = rowData,
                GraphOptions     = null
            };
            return(resultTable);
        }
Example #50
0
        /// <summary>
        /// Loads a table definition from the database.
        /// </summary>
        /// <param name="tableName">Name of the table for which a definition is to be loaded.</param>
        /// <returns>The table definition for the named table.</returns>
        protected override TableDefinition LoadTableDefinition(string tableName)
        {
            TableDefinition tableDefinition = new TableDefinition(tableName);

            //Log.WriteInfo("Looking for table: {0}", tableName);

            int exists = ExecuteScalar <int>(string.Format("SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE `TABLE_NAME` = N'{0}' AND `TABLE_SCHEMA` =  N'{1}'", tableName, catalogName));

            if (exists == 1)
            {
                tableDefinition.Committed = true;

                //Log.WriteInfo("Loading schema from existing table.");

                string commandText = string.Format(
                    @"SELECT 
    `COLUMN_NAME`, `DATA_TYPE`, `CHARACTER_MAXIMUM_LENGTH`, `NUMERIC_PRECISION`
FROM
    `information_schema`.`COLUMNS`
WHERE 
	`TABLE_NAME` = N'{0}' AND `TABLE_SCHEMA` = N'{1}'"    , tableName, catalogName);

                using (IDataReader reader = ExecuteReader(commandText))
                {
                    bool hasIdentityColumn = false;
                    while (reader.Read())
                    {
                        string columnName = reader.GetString(0);
                        string typeName   = reader.GetString(1);

                        int maxLength;
                        if (!reader.IsDBNull(2))
                        {
                            maxLength = reader.GetInt32(2);
                        }
                        else
                        {
                            maxLength = 0;
                        }

                        int numPrecision;
                        if (!reader.IsDBNull(3))
                        {
                            numPrecision = reader.GetInt32(3);
                        }
                        else
                        {
                            numPrecision = 0;
                        }

                        if (!columnName.Equals("_id", StringComparison.OrdinalIgnoreCase))
                        {
                            MySqlDbType sqlDbType;
                            int         sqlPrecision;

                            switch (typeName.ToLowerInvariant())
                            {
                            case "bigint":
                                sqlDbType    = MySqlDbType.Int64;
                                sqlPrecision = 0;
                                break;

                            case "bit":
                                sqlDbType    = MySqlDbType.Bit;
                                sqlPrecision = 0;
                                break;

                            case "numeric":
                                sqlDbType    = MySqlDbType.Decimal;
                                sqlPrecision = 0;
                                break;

                            case "float":
                                sqlDbType    = MySqlDbType.Float;
                                sqlPrecision = 0;
                                break;

                            case "int":
                                sqlDbType    = MySqlDbType.Int32;
                                sqlPrecision = 0;
                                break;

                            case "varchar":
                                sqlDbType    = MySqlDbType.VarChar;
                                sqlPrecision = maxLength;
                                break;

                            default:
                                throw new Exception(string.Format("Unexpected column value type: {0}", typeName));
                            }

                            ColumnType typeOut;
                            int        precisionOut;
                            ConvertColumnType(sqlDbType, sqlPrecision, out typeOut, out precisionOut);

                            ColumnDefinition columnDefinition = new ColumnDefinition(columnName, typeOut, precisionOut);
                            columnDefinition.Committed = true;

                            tableDefinition.Columns[columnName] = columnDefinition;
                        }
                        else
                        {
                            hasIdentityColumn = true;
                        }
                    }

                    if (!hasIdentityColumn)
                    {
                        throw new Exception(string.Format("Missing identity column on table: {0}", tableName));
                    }
                }
            }
            else
            {
                //Log.WriteInfo("Table does not exist.");
            }

            return(tableDefinition);
        }
Example #51
0
 /// <summary>
 /// Creates a WixVariable row that does not belong to a table.
 /// </summary>
 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
 /// <param name="tableDef">TableDefinition this WixVariable row belongs to and should get its column definitions from.</param>
 public WixVariableRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
     base(sourceLineNumbers, tableDef)
 {
 }
Example #52
0
        protected override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            TableDefinition resultTable  = null;
            const string    metricFormat = "N0";

            if (reportData != null && reportData.CurrentSnapshot != null)
            {
                #region currentSnapshot

                double?criticalViolation        = MeasureUtility.GetSizingMeasure(reportData.CurrentSnapshot, Constants.SizingInformations.ViolationsToCriticalQualityRulesNumber);
                double?numCritPerFile           = MeasureUtility.GetSizingMeasure(reportData.CurrentSnapshot, Constants.SizingInformations.ViolationsToCriticalQualityRulesPerFileNumber);
                string numCritPerFileIfNegative = string.Empty;
                if (numCritPerFile == -1)
                {
                    numCritPerFileIfNegative = "N/A";
                }
                else
                {
                    numCritPerFileIfNegative = (numCritPerFile.HasValue) ? numCritPerFile.Value.ToString("N2") : CastReporting.Domain.Constants.No_Value;
                }
                double?numCritPerKLOC = MeasureUtility.GetSizingMeasure(reportData.CurrentSnapshot, Constants.SizingInformations.ViolationsToCriticalQualityRulesPerKLOCNumber);

                double?veryHighCostComplexityViolations = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot, Constants.
                                                                                                       QualityDistribution.DistributionOfViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.GetHashCode(),
                                                                                                       Constants.ViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.
                                                                                                       ComplexityViolations_VeryHigh.GetHashCode());
                double?highCostComplexityViolations = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                                   Constants.QualityDistribution.DistributionOfViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.GetHashCode(),
                                                                                                   Constants.ViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.ComplexityViolations_HighCost.GetHashCode());

                double?veryHighCostComplexityArtefacts = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                                      Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                                      Constants.CostComplexity.CostComplexityArtifacts_VeryHigh.GetHashCode());
                double?highCostComplexityArtefacts = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                                  Constants.CostComplexity.CostComplexityArtifacts_High.GetHashCode());

                #endregion currentSnapshot


                #region PreviousSnapshot

                double?criticalViolationPrev = MeasureUtility.GetSizingMeasure(reportData.PreviousSnapshot,
                                                                               Constants.SizingInformations.ViolationsToCriticalQualityRulesNumber);

                double?numCritPerFilePrev = MeasureUtility.GetSizingMeasure(reportData.PreviousSnapshot,
                                                                            Constants.SizingInformations.ViolationsToCriticalQualityRulesPerFileNumber);
                string numCritPerFilePrevIfNegative = string.Empty;
                if (numCritPerFilePrev == -1)
                {
                    numCritPerFilePrevIfNegative = "N/A";
                }
                else
                {
                    numCritPerFilePrevIfNegative = (numCritPerFilePrev.HasValue) ? numCritPerFilePrev.Value.ToString("N2") : CastReporting.Domain.Constants.No_Value;
                }

                double?numCritPerKLOCPrev = MeasureUtility.GetSizingMeasure(reportData.PreviousSnapshot,
                                                                            Constants.SizingInformations.ViolationsToCriticalQualityRulesPerKLOCNumber);

                double?veryHighCostComplexityViolationsPrev = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                                           Constants.QualityDistribution.DistributionOfViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.GetHashCode(),
                                                                                                           Constants.ViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.ComplexityViolations_VeryHigh.GetHashCode());

                double?highCostComplexityViolationsPrev = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                                       Constants.QualityDistribution.DistributionOfViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.GetHashCode(),
                                                                                                       Constants.ViolationsToCriticalDiagnosticBasedMetricsPerCostComplexity.ComplexityViolations_HighCost.GetHashCode());

                double?veryHighCostComplexityArtefactsPrev = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                                          Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                                          Constants.CostComplexity.CostComplexityArtifacts_VeryHigh.GetHashCode());

                double?highCostComplexityArtefactsPrev = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                                      Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                                      Constants.CostComplexity.CostComplexityArtifacts_High.GetHashCode());

                #endregion PreviousSnapshot
                #region SumMetric

                double?HighveryHighCostComplexityArtefacts      = MathUtility.GetSum(veryHighCostComplexityArtefacts, highCostComplexityArtefacts);
                double?HighveryHighCostComplexityViolations     = MathUtility.GetSum(veryHighCostComplexityViolations, highCostComplexityViolations);
                double?HighveryHighCostComplexityArtefactsPrev  = MathUtility.GetSum(veryHighCostComplexityArtefactsPrev, highCostComplexityArtefactsPrev);
                double?HighveryHighCostComplexityViolationsPrev = MathUtility.GetSum(veryHighCostComplexityViolationsPrev, highCostComplexityViolationsPrev);

                #endregion SumMetric

                #region evolutionPercMetric

                double?criticalViolationEvolPerc = MathUtility.GetVariationPercent(criticalViolation, criticalViolationPrev);
                double?numCritPerFileEvolPerc    = MathUtility.GetVariationPercent(numCritPerFile, numCritPerFilePrev);
                double?numCritPerKLOCEvolPerc    = MathUtility.GetVariationPercent(numCritPerKLOC, numCritPerKLOCPrev);
                double?HighveryHighCostComplexityViolationsEvolPerc = MathUtility.GetVariationPercent(HighveryHighCostComplexityViolations, HighveryHighCostComplexityViolationsPrev);
                double?HighveryHighCostComplexityArtefactsEvolPerc  = MathUtility.GetVariationPercent(HighveryHighCostComplexityArtefacts, HighveryHighCostComplexityArtefactsPrev);

                #endregion evolutionPercMetric

                var rowData = new List <string>()
                {
                    Labels.Name
                    , Labels.Current
                    , Labels.Previous
                    , Labels.EvolutionPercent
                    , Labels.ViolationsCritical
                    , (criticalViolation.HasValue) ?  criticalViolation.Value.ToString(metricFormat):  CastReporting.Domain.Constants.No_Value
                    , (criticalViolationPrev.HasValue) ? criticalViolationPrev.Value.ToString(metricFormat) : CastReporting.Domain.Constants.No_Value
                    , (criticalViolationEvolPerc.HasValue) ? TableBlock.FormatPercent(criticalViolationEvolPerc.Value): CastReporting.Domain.Constants.No_Value

                    , "  " + Labels.PerFile
                    , numCritPerFileIfNegative
                    , numCritPerFilePrevIfNegative
                    , (numCritPerFileEvolPerc.HasValue) ? TableBlock.FormatPercent(numCritPerFileEvolPerc.Value) : CastReporting.Domain.Constants.No_Value

                    , "  " + Labels.PerkLoC
                    , (numCritPerKLOC.HasValue)? numCritPerKLOC.Value.ToString("N2") : CastReporting.Domain.Constants.No_Value
                    , (numCritPerKLOCPrev.HasValue)? numCritPerKLOCPrev.Value.ToString("N2") : CastReporting.Domain.Constants.No_Value
                    , (numCritPerKLOCEvolPerc.HasValue) ? TableBlock.FormatPercent(numCritPerKLOCEvolPerc.Value) : CastReporting.Domain.Constants.No_Value

                    , Labels.ComplexObjects
                    , HighveryHighCostComplexityArtefacts.HasValue ? HighveryHighCostComplexityArtefacts.Value.ToString(metricFormat): CastReporting.Domain.Constants.No_Value
                    , HighveryHighCostComplexityArtefactsPrev.HasValue ? HighveryHighCostComplexityArtefactsPrev.Value.ToString(metricFormat) : CastReporting.Domain.Constants.No_Value
                    , HighveryHighCostComplexityArtefactsEvolPerc.HasValue ? TableBlock.FormatPercent(HighveryHighCostComplexityArtefactsEvolPerc.Value) : CastReporting.Domain.Constants.No_Value

                    , "  " + Labels.WithViolations
                    , HighveryHighCostComplexityViolations.HasValue ? HighveryHighCostComplexityViolations.Value.ToString(metricFormat): CastReporting.Domain.Constants.No_Value
                    , HighveryHighCostComplexityViolationsPrev.HasValue ? HighveryHighCostComplexityViolationsPrev.Value.ToString(metricFormat) : CastReporting.Domain.Constants.No_Value
                    , HighveryHighCostComplexityViolationsEvolPerc.HasValue ? TableBlock.FormatPercent(HighveryHighCostComplexityViolationsEvolPerc.Value) : CastReporting.Domain.Constants.No_Value
                };

                resultTable = new TableDefinition
                {
                    HasRowHeaders    = true,
                    HasColumnHeaders = false,
                    NbRows           = 6,
                    NbColumns        = 4,
                    Data             = rowData
                };
            }
            return(resultTable);
        }
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            if (reportData?.CurrentSnapshot == null)
            {
                return(null);
            }

            double?criticalViolation = MeasureUtility.GetSizingMeasure(reportData.CurrentSnapshot, Constants.SizingInformations.ViolationsToCriticalQualityRulesNumber);
            double?numCritPerFile    = MeasureUtility.GetSizingMeasure(reportData.CurrentSnapshot, Constants.SizingInformations.ViolationsToCriticalQualityRulesPerFileNumber);
            double?_numCritPerKloc   = MeasureUtility.GetSizingMeasure(reportData.CurrentSnapshot, Constants.SizingInformations.ViolationsToCriticalQualityRulesPerKLOCNumber);

            double?veryHighCostComplexityViolations = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot, Constants.
                                                                                                   QualityDistribution.DistributionOfDefectsToCriticalDiagnosticBasedMetricsPerCostComplexity.GetHashCode(),
                                                                                                   Constants.DefectsToCriticalDiagnosticBasedMetricsPerCostComplexity.CostComplexityDefects_VeryHigh.GetHashCode());

            double?highCostComplexityViolations = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                               Constants.QualityDistribution.DistributionOfDefectsToCriticalDiagnosticBasedMetricsPerCostComplexity.GetHashCode(),
                                                                                               Constants.DefectsToCriticalDiagnosticBasedMetricsPerCostComplexity.CostComplexityDefects_High.GetHashCode());

            double?veryHighCostComplexityArtefacts = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                                  Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                                  Constants.CostComplexity.CostComplexityArtifacts_VeryHigh.GetHashCode());

            double?highCostComplexityArtefacts = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                              Constants.QualityDistribution.CostComplexityDistribution.GetHashCode(),
                                                                                              Constants.CostComplexity.CostComplexityArtifacts_High.GetHashCode());


            double?nbComplexityArtefacts          = MathUtility.GetSum(veryHighCostComplexityArtefacts, highCostComplexityArtefacts);
            double?nbComplexityArtefactsViolation = MathUtility.GetSum(veryHighCostComplexityViolations, highCostComplexityViolations);



            const string metricFormat          = "N0";
            const string metricFormatPrecision = "N2";

            string numCritPerFileIfNegative;

            // ReSharper disable once CompareOfFloatsByEqualityOperator -- special case
            if (numCritPerFile == -1)
            {
                numCritPerFileIfNegative = Constants.No_Value;
            }
            else
            {
                numCritPerFileIfNegative = numCritPerFile?.ToString(metricFormatPrecision) ?? Constants.No_Value;
            }

            var rowData = new List <string>()
            {
                Labels.Name
                , Labels.Value

                , Labels.ViolationsCritical
                , criticalViolation?.ToString(metricFormat) ?? Constants.No_Value

                , "  " + Labels.PerFile
                , numCritPerFileIfNegative

                , "  " + Labels.PerkLoC
                , _numCritPerKloc?.ToString(metricFormatPrecision) ?? Constants.No_Value

                , Labels.ComplexObjects
                , nbComplexityArtefacts?.ToString(metricFormat) ?? Constants.No_Value

                , "  " + Labels.WithViolations
                , nbComplexityArtefactsViolation?.ToString(metricFormat) ?? Constants.No_Value
            };

            var resultTable = new TableDefinition
            {
                HasRowHeaders    = true,
                HasColumnHeaders = false,
                NbRows           = 6,
                NbColumns        = 2,
                Data             = rowData
            };

            return(resultTable);
        }
Example #54
0
        private async Task SetupDefinitionAsync()
        {
            try
            {
                var lstDefinitions = await QueuedTask.Run <List <DatasetInfo> >(() =>
                {
                    List <DatasetInfo> definitions = new List <DatasetInfo>();
                    if (_datastore is Geodatabase)
                    {
                        var geodatabase = _datastore as Geodatabase;
                        switch (DatasetTypeCategory.DatasetType)
                        {
                        case DatasetType.Table:
                            definitions = geodatabase.GetDefinitions <TableDefinition>().Select(CreateDataSetInfo).ToList();
                            break;

                        case DatasetType.FeatureClass:
                            definitions = geodatabase.GetDefinitions <FeatureClassDefinition>().Select(CreateDataSetInfo).ToList();
                            break;

                        case DatasetType.FeatureDataset:
                            definitions = geodatabase.GetDefinitions <FeatureDatasetDefinition>().Select(CreateDataSetInfo).ToList();
                            break;

                        case DatasetType.RelationshipClass:
                            definitions = geodatabase.GetDefinitions <RelationshipClassDefinition>().Select(CreateDataSetInfo).ToList();
                            break;

                        case DatasetType.AttributedRelationshipClass:
                            definitions = geodatabase.GetDefinitions <AttributedRelationshipClassDefinition>().Select(CreateDataSetInfo).ToList();
                            break;
                        }
                    }
                    else if (_datastore is Database)
                    {
                        var database = _datastore as Database;
                        IReadOnlyList <string> tableNames = database.GetTableNames();
                        foreach (string tableName in tableNames)
                        {
                            QueryDescription queryDescription = database.GetQueryDescription(tableName);
                            TableDefinition tableDefinition   = database.GetDefinition(queryDescription);
                            if (DatasetTypeCategory.DatasetType == DatasetType.Table || DatasetTypeCategory.DatasetType == DatasetType.FeatureClass)
                            {
                                definitions.Add(new DatasetInfo
                                {
                                    Name = tableDefinition.GetName(),
                                    DatasetDefinition = tableDefinition
                                });
                            }
                        }
                    }
                    else if (_datastore is FileSystemDatastore)
                    {
                        var shapefile = _datastore as FileSystemDatastore;
                        FileSystemConnectionPath shapefileConnectionPath = (FileSystemConnectionPath)shapefile.GetConnector();
                        DirectoryInfo directoryInfo = new DirectoryInfo(shapefileConnectionPath.Path.LocalPath);

                        if (DatasetTypeCategory.DatasetType == DatasetType.FeatureClass)
                        {
                            FileInfo[] filesWithShpExtension = directoryInfo.GetFiles("*.shp");

                            foreach (FileInfo file in filesWithShpExtension)
                            {
                                definitions.Add(CreateDataSetInfo(shapefile.GetDefinition <FeatureClassDefinition>(file.Name)));
                            }
                        }
                        if (DatasetTypeCategory.DatasetType == DatasetType.Table)
                        {
                            FileInfo[] filesWithDbfExtension = directoryInfo.GetFiles("*.dbf");

                            foreach (FileInfo file in filesWithDbfExtension)
                            {
                                definitions.Add(CreateDataSetInfo(shapefile.GetDefinition <TableDefinition>(file.Name)));
                            }
                        }
                    }
                    return(definitions);
                });

                Datasets.Clear();
                Datasets.AddRange(lstDefinitions);
                DefinitionDetails.Clear();
            }
            catch (Exception exObj)
            {
                MessageBox.Show(exObj.Message, "Error");
            }
        }
Example #55
0
        public virtual string Format(TableDefinition table)
        {
            var statement = string.Format(CreateTable, GetQuotedTableName(table.Name), Format(table.Columns));

            return(statement);
        }
Example #56
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="name">Trigger name</param>
 /// <param name="tableDefinition">Table definition for the trigger</param>
 /// <param name="sql">SQLite SQL code for trigger</param>
 protected Trigger(string name, TableDefinition tableDefinition, string sql)
 {
     this.name            = name;
     this.tableDefinition = tableDefinition;
     this.sql             = sql;
 }
Example #57
0
        private AttributeDefinition GetColumnFromIdentifierNode(TableDefinition tableDefinition, IdentifierASTNode relopNode)
        {
            string column = relopNode.Identifier;

            return(GetColumnFromJoinString(column.Contains(".") ? GetTableDefinitionFromJoinString(column) : _relationManager.GetTable(tableDefinition.Name).TableDefinition, column));
        }
Example #58
0
 protected void WriteDeleteTable(TableDefinition table, StreamWriter output)
 {
     //Delete.Table("Bar");
     output.WriteLine("\t\t\tDelete.Table(\"" + table.Name + "\");");
 }
Example #59
0
        private WTableDefinition ParseTableDefinition(TableDefinition tableDef)
        {
            if (tableDef == null)
                return null;
            var wTableDef = new WTableDefinition
            {
                FirstTokenIndex = tableDef.FirstTokenIndex,
                LastTokenIndex = tableDef.LastTokenIndex,
            };

            if (tableDef.ColumnDefinitions != null)
            {
                wTableDef.ColumnDefinitions = new List<WColumnDefinition>(tableDef.ColumnDefinitions.Count);
                foreach (var colDef in tableDef.ColumnDefinitions)
                    wTableDef.ColumnDefinitions.Add(ParseColumnDefinition(colDef));
            }

            if (tableDef.TableConstraints != null)
            {
                wTableDef.TableConstraints = new List<WConstraintDefinition>(tableDef.TableConstraints.Count);
                foreach (var tableCon in tableDef.TableConstraints)
                    wTableDef.TableConstraints.Add(ParseConstraintDefinition(tableCon));
            }

            if (tableDef.Indexes != null)
            {
                wTableDef.Indexes = new List<WIndexDefinition>(tableDef.Indexes.Count);
                foreach (var idx in tableDef.Indexes)
                    wTableDef.Indexes.Add(ParseIndexDefinition(idx));
            }
            return wTableDef;
        }
        public override TableDefinition Content(ReportData reportData, Dictionary <string, string> options)
        {
            List <string> rowData = new List <string>();
            int           parId;

            Constants.QualityDistribution distributionId;

            double?previousLowVal = null;
            double?previousAveVal = null;
            double?previousHigVal = null;
            double?previousVhiVal = null;

            bool   hasPreviousSnapshot = (null != reportData.PreviousSnapshot);
            string previousName        = string.Empty;


            if (null != options && options.ContainsKey("PAR") && int.TryParse(options["PAR"], out parId) && Enum.IsDefined(typeof(Constants.QualityDistribution), parId))
            {
                distributionId = (Constants.QualityDistribution)parId;
            }
            else
            {
                distributionId = Constants.QualityDistribution.CostComplexityDistribution;
            }



            if (reportData.CurrentSnapshot != null)
            {
                var selectedName = reportData.CurrentSnapshot.Annotation.Version;

                #region Selected Snapshot

                var selectedLowVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  distributionId.GetHashCode(), "low");
                var selectedAveVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  distributionId.GetHashCode(), "average");
                var selectedHigVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  distributionId.GetHashCode(), "high");
                var selectedVhiVal = CastComplexityUtility.GetCostComplexityGrade(reportData.CurrentSnapshot,
                                                                                  distributionId.GetHashCode(), "very_high");



                #endregion Selected Snapshot

                #region Previous Snapshot


                if (hasPreviousSnapshot)
                {
                    previousName = reportData.PreviousSnapshot.Annotation.Version;

                    previousLowVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  distributionId.GetHashCode(),
                                                                                  "low");
                    previousAveVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  distributionId.GetHashCode(),
                                                                                  "average");
                    previousHigVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  distributionId.GetHashCode(),
                                                                                  "high");
                    previousVhiVal = CastComplexityUtility.GetCostComplexityGrade(reportData.PreviousSnapshot,
                                                                                  distributionId.GetHashCode(),
                                                                                  "very_high");
                }

                #endregion Previous Snapshot

                #region Data
                rowData.Add(" ");
                rowData.Add(selectedName);
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousName);
                }

                rowData.Add(" ");
                rowData.Add("0");
                if (hasPreviousSnapshot)
                {
                    rowData.Add("0");
                }

                rowData.Add(Labels.CplxLow);
                rowData.Add(selectedLowVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousLowVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(Labels.CplxAverage);
                rowData.Add(selectedAveVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousAveVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(Labels.CplxHigh);
                rowData.Add(selectedHigVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousHigVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(Labels.CplxVeryHigh);
                rowData.Add(selectedVhiVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                if (hasPreviousSnapshot)
                {
                    rowData.Add(previousVhiVal.GetValueOrDefault().ToString(CultureInfo.CurrentCulture));
                }

                rowData.Add(" ");
                rowData.Add("0");
                if (hasPreviousSnapshot)
                {
                    rowData.Add("0");
                }
                #endregion Data
            }
            var result = new TableDefinition
            {
                Data             = rowData,
                HasRowHeaders    = false,
                HasColumnHeaders = false,
                NbColumns        = hasPreviousSnapshot ? 3 : 2,
                NbRows           = 7
            };

            return(result);
        }