public void SetFlag(string flag, bool value) { if (value) { if (_flags == null) { _flags = new CaseInsensitiveStringKeyDictionary <string>(); } if (!_flags.ContainsKey(flag)) { _flags[flag] = flag; Table.HandleColumnFlagged(this, flag, true); } } else if (_flags != null) { if (_flags.ContainsKey(flag)) { _flags.Remove(flag); Table.HandleColumnFlagged(this, flag, false); } if (_flags.Count == 0) { _flags = null; } } }
public void UnknownKeyReturnsDefaultInt() { var dict = new CaseInsensitiveStringKeyDictionary <int> { ["x"] = 17 }; Assert.AreEqual(17, dict["x"]); Assert.AreEqual(default, dict["y"]);
public void SetAdditionalData(string key, object value) { if (_additionalData == null) { _additionalData = new CaseInsensitiveStringKeyDictionary <AdditionalData>(); } _additionalData[key] = new AdditionalData(key, value); }
public void KeyIsCaseInsensitive() { var dict = new CaseInsensitiveStringKeyDictionary <int> { ["x"] = 17 }; Assert.AreEqual(17, dict["x"]); Assert.AreEqual(17, dict["X"]); }
public void ValueCanBeOverwritten() { var dict = new CaseInsensitiveStringKeyDictionary <int> { ["x"] = 17, ["X"] = 21 }; Assert.AreEqual(21, dict["x"]); Assert.AreEqual(21, dict["X"]); }
public static RelationalModel Convert(DatabaseDefinition sourceDefinition, string defaultSourceSchemaName, CaseInsensitiveStringKeyDictionary <string> schemaNameMap = null, Func <SqlTable, bool> filterDelegate = null) { var newDefaultSchemaName = schemaNameMap?[defaultSourceSchemaName] ?? defaultSourceSchemaName; var newModel = new RelationalModel(newDefaultSchemaName); var sourceTablesOrdered = sourceDefinition.GetTables() .Where(x => filterDelegate?.Invoke(x) != false) .OrderBy(x => x.SchemaAndTableName.SchemaAndName) .ToList(); foreach (var sourceTable in sourceTablesOrdered) { var newSchemaName = schemaNameMap?[sourceTable.SchemaAndTableName.Schema] ?? sourceTable.SchemaAndTableName.Schema ?? newDefaultSchemaName; var newSchema = newModel[newSchemaName] ?? newModel.AddSchema(newSchemaName); var primaryKey = sourceTable.Properties.OfType <PrimaryKey>().FirstOrDefault(); var newTable = newSchema.AddTable(sourceTable.SchemaAndTableName.TableName); foreach (var property in sourceTable.Properties.OfType <DwhTableFlagProperty>()) { newTable.SetFlag(property.Name, true); } foreach (var property in sourceTable.Properties.OfType <DwhTableDataProperty>()) { newTable.SetAdditionalData(property.Name, property.Value); } if (sourceTable.HasProperty <EtlRunInfoDisabledProperty>()) { newTable.SetEtlRunInfoDisabled(); } if (sourceTable.HasProperty <HasHistoryTableProperty>()) { newTable.SetHasHistoryTable(); } var sourceTableNameOverrideProperty = sourceTable.Properties.OfType <SourceTableNameOverrideProperty>().FirstOrDefault(); if (sourceTableNameOverrideProperty != null) { newTable.SetSourceTableNameOverride(sourceTableNameOverrideProperty.SourceTableName); } foreach (var sourceColumn in sourceTable.Columns) { var partOfPrimaryKey = primaryKey?.SqlColumns.Any(x => x.SqlColumn == sourceColumn) == true; var newColumn = newTable.AddColumn(sourceColumn.Name, partOfPrimaryKey); foreach (var property in sourceColumn.Properties.OfType <DwhColumnFlagProperty>()) { newColumn.SetFlag(property.Name, true); } foreach (var property in sourceColumn.Properties.OfType <DwhColumnDataProperty>()) { newColumn.SetAdditionalData(property.Name, property.Value); } if (sourceColumn.HasProperty <Identity>()) { newColumn.SetIdentity(); } if (sourceColumn.HasProperty <HistoryDisabledProperty>()) { newColumn.SetHistoryDisabled(); } if (sourceColumn.HasProperty <RecordTimestampIndicatorProperty>()) { newColumn.SetRecordTimestampIndicator(); } } } foreach (var table in sourceTablesOrdered) { var newSourceSchemaName = schemaNameMap?[table.SchemaAndTableName.Schema] ?? table.SchemaAndTableName.Schema ?? newDefaultSchemaName; var newSourceSchema = newModel[newSourceSchemaName]; var newSourceTable = newSourceSchema[table.SchemaAndTableName.TableName]; foreach (var fk in table.Properties.OfType <ForeignKey>()) { var newTargetSchemaName = schemaNameMap?[fk.ReferredTable.SchemaAndTableName.Schema] ?? fk.ReferredTable.SchemaAndTableName.Schema ?? newDefaultSchemaName; var newTargetSchema = newModel[newTargetSchemaName]; var newTargetTable = newTargetSchema[fk.ReferredTable.SchemaAndTableName.TableName]; if (newTargetTable == null) // target table is filtered out { continue; } var newFk = newSourceTable.AddForeignKeyTo(newTargetTable); foreach (var map in fk.ForeignKeyColumns) { var sourceColumn = newSourceTable[map.ForeignKeyColumn.Name]; var targetColumn = newTargetTable[map.ReferredColumn.Name]; newFk.AddColumnPair(sourceColumn, targetColumn); } } } return(newModel); }