/// <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 } }); }
/// <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); }