コード例 #1
0
        /// <summary>
        /// Clones...
        /// </summary>
        /// <param name="usingContext">using context.</param>
        /// <param name="forProvider">for provider.</param>
        /// <param name="inYear">in year.</param>
        public void Clone(IContainSessionContext usingContext, int forProvider, BatchOperatingYear inYear)
        {
            Emitter.Publish("Commencing Data Clone...");

            Data.Clone(Mapped.Entities, GetSource(usingContext), GetTarget(usingContext), forProvider);
            Copy(usingContext, inYear);
        }
        /// <summary>
        /// Gets the supplementary token replacements.
        /// </summary>
        /// <param name="onCandidate">The candidate.</param>
        /// <param name="forYear">For year.</param>
        /// <param name="usingContext">The using context.</param>
        /// <returns>
        /// a 'detokenised' script
        /// </returns>
        public string GetSupplementaryTokenReplacements(string onCandidate, BatchOperatingYear forYear, IContainSessionContext usingContext)
        {
            var target = GetTarget(usingContext);

            return(Token.DoSecondaryPass(onCandidate, forYear, target, usingContext.ReturnPeriod)
                   .Replace(GetTargetToken(), target.DBName));
        }
        /// <summary>
        /// As string.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns>a batch operating year converted to a 'year' string</returns>
        public static string AsString(this BatchOperatingYear source)
        {
            // 0123
            // All
            // OY_1718
            var temp  = source.ToString();
            var start = temp.Length == 7 ? 3 : 0;

            return(source.ToString().Substring(start));
        }
        /// <summary>
        /// Copies...
        /// </summary>
        /// <param name="usingContext">using context.</param>
        /// <param name="forProvider">for provider.</param>
        /// <param name="inYear">in year.</param>
        public void Copy(IContainSessionContext usingContext, BatchOperatingYear inYear)
        {
            var batchList = Batches.GetBatch(GetBatchProcessingName(), inYear);

            Emitter.Publish(batchList.Description);

            Context.Run(batchList.Scripts, usingContext.ProcessingLocation, x => GetSupplementaryTokenReplacements(x, inYear, usingContext));

            Emitter.Publish(Indentation.FirstLevel, CommonLocalised.Completed);
        }
        /// <summary>
        /// Transforms the input.
        /// </summary>
        /// <param name="inContext">in context.</param>
        /// <param name="forYear">for year.</param>
        /// <param name="andProvider">and provider.</param>
        public void TransformInput(IContainSessionContext inContext, BatchOperatingYear forYear, ILearningProvider andProvider)
        {
            using (Timing.BeginScope($"Tramsformation of input and second pass data enrichment"))
            {
                //PostValidation.TransformInput(inContext, forYear);

                // update session counts (interaction feedback)
                SetLearnerCounts(inContext.ProcessingLocation, andProvider);
            }
        }
 /// <summary>
 /// Creates...
 /// </summary>
 /// <param name="forYear">For year.</param>
 /// <param name="andCollection">and collection.</param>
 /// <returns>
 /// a change operating yer message
 /// </returns>
 public IChangeOperatingYearMessage Create(BatchOperatingYear forYear, TypeOfCollection andCollection)
 {
     return(new ChangeOperatingYearMessage
     {
         Payload = new YearCollection
         {
             Year = forYear,
             Collection = andCollection
         }
     });
 }
コード例 #7
0
        /// <summary>
        /// Does the secondary pass.
        /// </summary>
        /// <param name="onContent">on content.</param>
        /// <param name="withYear">with year.</param>
        /// <param name="andLocalServerName">and Local Server Name.</param>
        /// <returns>
        /// a de-tokenised string
        /// </returns>
        public static string DoSecondaryPass(string onContent, BatchOperatingYear withYear, IConnectionDetail usingConnection, ReturnPeriod returnPeriod, string fileName = "", string ukprn = "")
        {
            var unsupportedReturnPeriod = onContent.Contains(ForReturnPeriod) && It.IsInRange(returnPeriod, ReturnPeriod.None);

            unsupportedReturnPeriod
            .AsGuard <NotSupportedException, Localised>(Localised.UnsupportedReturnPeriod);

            return(onContent
                   .Replace(ForTargetDataStore, usingConnection.DBName)
                   .Replace(ForReturnPeriod, $"{returnPeriod}")
                   .Replace(ForOperatingYear, withYear.AsString())
                   .Replace(SecondaryPass.ForLocalServer, usingConnection.Container)
                   .Replace(SecondaryPass.ForContractPeriod, withYear.AsString())
                   .Replace(SecondaryPass.FileName, fileName)
                   .Replace(SecondaryPass.UKPRNToChange, ukprn));
        }
 /// <summary>
 /// Gets the schema.
 /// </summary>
 /// <param name="forThisYear">For this year.</param>
 /// <returns>a schema map</returns>
 public ISchemaMap GetSchema(BatchOperatingYear forThisYear)
 {
     return(Configured.Maps.FirstOrDefault(x => x.Year == forThisYear));
 }
        /// <summary>
        /// Builds the store.
        /// </summary>
        /// <param name="usingContext">using context.</param>
        /// <param name="forProvider">for provider.</param>
        /// <param name="inYear">in year.</param>
        public override void BuildStore(IContainSessionContext usingContext, int forProvider, BatchOperatingYear inYear)
        {
            var batch = Batches.GetBatch(BatchProcessName.BuildProcessingDataStore, inYear);

            Emitter.Publish(batch.Description);

            var forTarget = usingContext.ProcessingLocation;

            CreateSchemaFor(
                forTarget,
                batch.Scripts.AsSafeReadOnlyList(),
                x => Token.DoSecondaryPass(x, inYear, forTarget, usingContext.ReturnPeriod));
        }
        /// <summary>
        /// Store exists, a cleanse routine will be executed
        /// </summary>
        /// <param name="usingContext">using context.</param>
        /// <param name="forProvider">for provider.</param>
        /// <param name="inYear">in year.</param>
        public override void StoreExists(IContainSessionContext usingContext, int forProvider, BatchOperatingYear inYear)
        {
            var batch = Batches.GetBatch(BatchProcessName.CleanseProcessingDataStore, inYear);

            Emitter.Publish(batch.Description);

            Context.Run(batch.Scripts, usingContext.ProcessingLocation, x => Token.DoSecondaryPass(x, forProvider));
        }
 /// <summary>
 /// Gets the batch.
 /// </summary>
 /// <param name="byName">by Name</param>
 /// <returns>
 /// a batch detail
 /// </returns>
 public ISQLBatch GetBatch(BatchProcessName byName, BatchOperatingYear andYear = BatchOperatingYear.All)
 {
     return(Configured.Batches.FirstOrDefault(x => x.Name == byName && x.OperatingYear == andYear));
 }
 /// <summary>
 /// Handles the message.
 /// </summary>
 /// <param name="message">The message.</param>
 public void HandleMessage(IChangeOperatingYearMessage message)
 {
     _operatingYear = message.Payload.Year;
     Configure();
 }
        /// <summary>
        /// Builds the store.
        /// </summary>
        /// <param name="usingContext">using context.</param>
        /// <param name="forProvider">for provider.</param>
        /// <param name="inYear">in year.</param>
        public override void BuildStore(IContainSessionContext usingContext, int forProvider, BatchOperatingYear inYear)
        {
            var batch = Batches.GetBatch(BatchProcessName.BuildResultsDataStore, inYear);

            Emitter.Publish(batch.Description);

            //CreateDataStoreUsing(usingContext, batch.Scripts.First());

            var    command     = $"select TOP(1) [FileName] from [Valid].[File] WHERE [FileName] like '%{forProvider}%';";
            string ilrFileName = RunSafe.Try(() => Coordinate.GetAtom <string>(command, usingContext.SourceLocation));
            var    forTarget   = usingContext.ResultsDestination;

            CreateSchemaFor(
                forTarget,
                batch.Scripts.AsSafeReadOnlyList(),
                x => Token.DoSecondaryPass(x, inYear, forTarget, usingContext.ReturnPeriod, ilrFileName, forProvider.ToString()));
        }
        /// <summary>
        /// Store exists, a cleanse routine will be executed
        /// </summary>
        /// <param name="usingContext">using context.</param>
        /// <param name="forProvider">for provider.</param>
        /// <param name="inYear">in year.</param>
        public override void StoreExists(IContainSessionContext usingContext, int forProvider, BatchOperatingYear inYear)
        {
            var forTarget = usingContext.ResultsDestination;
            var batch     = Batches.GetBatch(BatchProcessName.BuildResultsDataStore, inYear);

            if (!Context.StoreTableExists("Valid.Learner", forTarget))
            {
                CreateSchemaFor(
                    forTarget,
                    batch.Scripts.Skip(1).AsSafeReadOnlyList(),
                    x => Token.DoSecondaryPass(x, inYear, forTarget, usingContext.ReturnPeriod));
            }

            batch = Batches.GetBatch(BatchProcessName.CleanseResultsDataStore);

            Emitter.Publish(batch.Description);

            Context.Run(batch.Scripts, forTarget, x => Token.DoSecondaryPass(x, forProvider));
        }
 /// <summary>
 /// Transform input...
 /// </summary>
 /// <param name="usingThisContext">using this context.</param>
 /// <param name="forYear">for year.</param>
 public void TransformInput(IContainSessionContext usingThisContext, BatchOperatingYear forYear)
 {
     Copy(usingThisContext, forYear);
 }