Пример #1
0
        public HubViewModel(Hub hub)
        {
            Hub = hub;

            foreach (StagingColumn stagingColumn in Hub.BusinessKeys)
            {
                BusinessKeys.Add(new BusinessKeyViewModel(stagingColumn));
            }
        }
Пример #2
0
        public LinkViewModel(Link link)
        {
            Link = link;

            if (link != null)
            {
                foreach (StagingColumn stagingColumn in link.BusinessKeys)
                {
                    BusinessKeys.Add(new BusinessKeyViewModel(stagingColumn));
                }
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
 public int GetNumDrivingColumns()
 {
     return(BusinessKeys.Where(x => x.Driving == true).Count());
 }