public HubViewModel(Hub hub) { Hub = hub; foreach (StagingColumn stagingColumn in Hub.BusinessKeys) { BusinessKeys.Add(new BusinessKeyViewModel(stagingColumn)); } }
public LinkViewModel(Link link) { Link = link; if (link != null) { foreach (StagingColumn stagingColumn in link.BusinessKeys) { BusinessKeys.Add(new BusinessKeyViewModel(stagingColumn)); } } }
public override DataSource Clone() { GraphQlDataSource clone = new(string.Empty, Connection, SourceSystem, Tenant) { LoadTable = new LoadTable() }; if (LoadTable != null) { foreach (Column column in LoadTable.Columns) { Column cloneColumn = new(column.Name) { AddedOnBusinessDate = column.AddedOnBusinessDate, DataType = column.DataType, Length = column.Length, Precision = column.Precision, Scale = column.Scale, Nullable = column.Nullable }; cloneColumn.PropertyChanged += (s, e) => { NotifyPropertyChanged("Column"); }; clone.LoadTable.Columns.Add(cloneColumn); } } foreach (Satellite sat in Satellites) { Satellite cloneSat = new(sat.Name) { Type = sat.Type }; clone.Satellites.Add(cloneSat); } clone.StagingTable = new StagingTable(); if (StagingTable != null) { foreach (StagingColumn stagingColumn in StagingTable.Columns) { StagingColumn cloneColumn = stagingColumn.Clone(clone.LoadTable, clone.Satellites); stagingColumn.PropertyChanged += (s, e) => { NotifyPropertyChanged("StagingColumn"); }; clone.StagingTable.Columns.Add(cloneColumn); } } if (BusinessKey != null) { if (BusinessKey is Link linkBusinessKey) { Link cloneBusinessKey = new(linkBusinessKey.Name); foreach (StagingColumn stagingColumn in linkBusinessKey.BusinessKeys) { StagingColumn cloneColumn = stagingColumn.Clone(clone.LoadTable, clone.Satellites); cloneBusinessKey.BusinessKeys.Add(cloneColumn); } clone.BusinessKey = cloneBusinessKey; } else if (BusinessKey is Hub hubBusinessKey) { Hub cloneBusinessKey = new(hubBusinessKey.Name); foreach (StagingColumn stagingColumn in hubBusinessKey.BusinessKeys) { StagingColumn cloneColumn = stagingColumn.Clone(clone.LoadTable, clone.Satellites); cloneBusinessKey.BusinessKeys.Add(cloneColumn); } clone.BusinessKey = cloneBusinessKey; } } foreach (HubRelationship hubRelationship in HubRelationships) { Hub cloneHub = new(hubRelationship.Hub.Name); foreach (StagingColumn stagingColumn in hubRelationship.Hub.BusinessKeys) { StagingColumn cloneColumn = stagingColumn.Clone(clone.LoadTable, clone.Satellites); cloneHub.BusinessKeys.Add(cloneColumn); } HubRelationship cloneRelationship = new(cloneHub); foreach (HubMapping hubMapping in hubRelationship.Mappings) { StagingColumn cloneBusinessKeyColumn = clone.BusinessKey !.BusinessKeys.Single(cloneBk => cloneBk.Name == hubMapping.HubColumn.Name); StagingColumn cloneStagingColumn = clone.StagingTable.Columns.Single(cloneStgCol => cloneStgCol.Name == hubMapping.StagingColumn !.Name); HubMapping cloneMapping = new(cloneBusinessKeyColumn) { StagingColumn = cloneStagingColumn }; cloneRelationship.Mappings.Add(cloneMapping); } clone.HubRelationships.Add(cloneRelationship); } foreach (LinkRelationship linkRelationship in LinkRelationships) { Link cloneLink = new(linkRelationship.Link.Name); foreach (StagingColumn stagingColumn in linkRelationship.Link.BusinessKeys) { StagingColumn cloneColumn = stagingColumn.Clone(clone.LoadTable, clone.Satellites); cloneLink.BusinessKeys.Add(cloneColumn); } LinkRelationship cloneRelationship = new(cloneLink); foreach (LinkMapping linkMapping in linkRelationship.Mappings) { StagingColumn cloneBusinessKeyColumn = clone.BusinessKey !.BusinessKeys.Single(cloneBk => cloneBk.Name == linkMapping.LinkColumn.Name); StagingColumn cloneStagingColumn = clone.StagingTable.Columns.Single(cloneStgCol => cloneStgCol.Name == linkMapping.StagingColumn !.Name); LinkMapping cloneMapping = new(cloneBusinessKeyColumn) { StagingColumn = cloneStagingColumn }; cloneRelationship.Mappings.Add(cloneMapping); } clone.LinkRelationships.Add(cloneRelationship); } clone.AzureLinkedServiceReference = AzureLinkedServiceReference; clone.Build = Build; clone.BusinessDateColumn = BusinessDateColumn; clone.CollectionReference = CollectionReference; clone.ContainsMultiStructuredJson = ContainsMultiStructuredJson; clone.DataSourceType = DataSourceType; clone.DefaultLoadWidth = DefaultLoadWidth; clone.ErrorHandling = ErrorHandling; clone.FileName = FileName; clone.IncrementalStagingColumn = IncrementalStagingColumn; clone.IncrementalQuery = IncrementalQuery; clone.MergeToBlob = MergeToBlob; clone.DestinationEncoding = DestinationEncoding; clone.QualifiedName = QualifiedName; clone.GraphQlQuery = GraphQlQuery; clone.NumberToFetch = NumberToFetch; clone.Parent = Parent; clone.RelativeUrl = RelativeUrl; clone.SqlSelectQuery = SqlSelectQuery; clone.GenerateLatestViews = GenerateLatestViews; return(clone); }
public int GetNumDrivingColumns() { return(BusinessKeys.Where(x => x.Driving == true).Count()); }