Exemplo n.º 1
0
        public DirectoryInfo GetDirectoryFor(IExtractCommand request)
        {
            var cmd = request as IExtractDatasetCommand;

            if (string.IsNullOrWhiteSpace(ExtractionSubdirectoryPattern) || cmd == null)
            {
                return(request.GetExtractionDirectory());
            }

            var cata = cmd.SelectedDataSets.ExtractableDataSet.Catalogue;

            if (ExtractionSubdirectoryPattern.Contains("$a") && string.IsNullOrWhiteSpace(cata.Acronym))
            {
                throw new Exception($"Catalogue {cata} does not have an Acronym and ExtractionSubdirectoryPattern contains $a");
            }

            var path = Path.Combine(cmd.Project.ExtractionDirectory,
                                    ExtractionSubdirectoryPattern
                                    .Replace("$c", QuerySyntaxHelper.MakeHeaderNameSensible(cmd.Configuration.Name))
                                    .Replace("$i", cmd.Configuration.ID.ToString())
                                    .Replace("$d", QuerySyntaxHelper.MakeHeaderNameSensible(cata.Name))
                                    .Replace("$a", QuerySyntaxHelper.MakeHeaderNameSensible(cata.Acronym))
                                    .Replace("$n", cata.ID.ToString())
                                    );

            var dir = new DirectoryInfo(path);

            if (!dir.Exists)
            {
                dir.Create();
            }

            return(dir);
        }
Exemplo n.º 2
0
        /// <inheritdoc/>
        public virtual void Check(ICheckNotifier notifier)
        {
            if (!string.IsNullOrWhiteSpace(ExtractionSubdirectoryPattern))
            {
                if (ExtractionSubdirectoryPattern.Contains("."))
                {
                    notifier.OnCheckPerformed(new CheckEventArgs(
                                                  "ExtractionSubdirectoryPattern cannot contain dots, it must be relative e.g. $c/$d",
                                                  CheckResult.Fail));
                }

                if (!ExtractionSubdirectoryPattern.Contains("$i") && !ExtractionSubdirectoryPattern.Contains("$c"))
                {
                    notifier.OnCheckPerformed(new CheckEventArgs(
                                                  "ExtractionSubdirectoryPattern must contain a Configuration element ($i or $c)",
                                                  CheckResult.Fail));
                }

                if (!ExtractionSubdirectoryPattern.Contains("$a") && !ExtractionSubdirectoryPattern.Contains("$d") && !ExtractionSubdirectoryPattern.Contains("$n"))
                {
                    notifier.OnCheckPerformed(new CheckEventArgs(
                                                  "ExtractionSubdirectoryPattern must contain a Dataset element ($d, $a or $n)",
                                                  CheckResult.Fail));
                }
            }
        }