Example #1
0
        public void Execute()
        {
            OnProgressEvent(new VertoProgressEventArgs {
                ProgressString = "Executing controller", Section = ProcessingSection.Root
            });

            var adminDb = new AdminDatabase(_configuration);

            adminDb.ProgressEvent += AdminDbProgressEvent;

            var publicDb = new PublicDatabase(_configuration);

            publicDb.ProgressEvent += PublicDbProgressEvent;

            try
            {
                TruncateOnForcedRebuild(adminDb, publicDb);

                CheckForChangeInConsolidationConfig(adminDb, publicDb, _configuration.Consolidation);
                CheckForIdenticalAppKeys(publicDb, adminDb.ApplicationKey);

                // the order of these tasks is important!
                adminDb.ExtractToStage();
                adminDb.UpdateHistory();
                adminDb.AddHistoryFederationIds(new[] { RowStatus.Deleted }, 1);  // perform _before_ we federate
                adminDb.FederateResources();
                adminDb.ConsolidateResources();
                adminDb.AddHistoryFederationIds(new[] { RowStatus.Updated, RowStatus.Inserted }, 2);

                publicDb.PopulateStage(adminDb.ApplicationKey);
                publicDb.TransformStage();
            }
            finally
            {
                adminDb.FinishUp();
                OnProgressEvent(new VertoProgressEventArgs {
                    ProgressString = "Closing controller", Section = ProcessingSection.Root
                });
            }
        }