protected override void FetchExportData()
        {
            _args = (ToleranceExportArgs)Arguments;
            if (_args.ExportNif)
            {
                _data = new CombinedInterchangeData(true);
            }

            var exportTaxonomyIds   = _args.TaxonomyIds;
            var exportTaxonomies    = CurrentDb.TaxonomyInfos.Where(p => exportTaxonomyIds.Contains(p.ID)).ToList();
            var allExportTaxonomies = exportTaxonomies.SelectMany(p => p.AllLeafChildren).Distinct().ToList();

            foreach (var taxonomy in allExportTaxonomies)
            {
                ProcessTaxonomy(taxonomy);
            }

            ExportDataTables.Add(_toleranceTable);
        }
Exemple #2
0
        private List <ImportWorkerBase> GetEligibleWorkerAndData(ImportArgs importArgs,
                                                                 string importFilePath)
        {
            CurrentLogWriter.DebugFormat("{0}: Starting Get Eligible Worker And Data", Arguments.Id);
            var eligibleImports  = new List <ImportWorkerBase>();
            var availableImports = ImportWorkerBase.GetAvailableImports();

            var fileName = Path.GetFileName(importArgs.InputFilePath);

            if (fileName == null)
            {
                return(new List <ImportWorkerBase>());
            }

            foreach (var importWorker in availableImports)
            {
                var currentImportWorker = importWorker;

                currentImportWorker.CurrentFieldMappings = new Dictionary <string, int>();
                var requiredTCurrentImportWorkerFields = currentImportWorker.GetRequiredFields();

                if (fileName.EndsWith(".xml"))
                {
                    if (ImportRecords == null)
                    {
                        CurrentLogWriter.DebugFormat("{0}: Reading XML Data", Arguments.Id);
                        var str         = new StreamReader(importArgs.InputFilePath);
                        var xSerializer = new XmlSerializer(typeof(CombinedInterchangeData));
                        ImportRecords = (CombinedInterchangeData)xSerializer.Deserialize(str);
                    }
                }
                else
                {
                    if (ImportRecords == null)
                    {
                        ImportRecords = new CombinedInterchangeData(true);
                    }
                    //eligible only if all the required field maps are available.
                    if (!requiredTCurrentImportWorkerFields.All(p => importArgs.FieldMappings.Keys.Contains(p)))
                    {
                        Summary.StatusMessage = string.Format("Not Eligible for Import : {0}",
                                                              currentImportWorker.GetType());
                        continue;
                    }
                    foreach (var requiredCurrentImportWorkerField in requiredTCurrentImportWorkerFields)
                    {
                        currentImportWorker.CurrentFieldMappings.Add(requiredCurrentImportWorkerField,
                                                                     importArgs.FieldMappings[requiredCurrentImportWorkerField]);
                    }
                    //map all the optional fields
                    var optionalImportWorkerFields = currentImportWorker.GetOptionalFields();
                    foreach (
                        var optionalImportWorkerField in
                        optionalImportWorkerFields.Where(importArgs.FieldMappings.ContainsKey))
                    {
                        currentImportWorker.CurrentFieldMappings.Add(optionalImportWorkerField,
                                                                     importArgs.FieldMappings[optionalImportWorkerField]);
                    }

                    var conf = GetCurrentConfiguration(importArgs, currentImportWorker.CurrentInterchangeRecordType);
                    //MOve this to base to somewhere common
                    using (var csvReader = new CsvReader(File.OpenText(importArgs.InputFilePath), conf))
                    {
                        CurrentLogWriter.DebugFormat("{0}: Reading Text Data for {1}", Arguments.Id, currentImportWorker.GetType().Name);
                        var inportData =
                            csvReader.GetRecordsWithNulls(currentImportWorker.CurrentInterchangeRecordType).ToList();

                        var method  = ImportRecords.GetType().GetMethod("AddRecords");
                        var generic = method.MakeGenericMethod(currentImportWorker.CurrentInterchangeRecordType);
                        generic.Invoke(ImportRecords, new object[] { inportData });
                    }
                }

                eligibleImports.Add(currentImportWorker);
                currentImportWorker.CurrentImportOptions = importArgs.CurrentImportOptions;
                currentImportWorker.CurrentProjectId     = importArgs.ProjectId;
                currentImportWorker.ImportRequestedBy    = importArgs.UserId;
                currentImportWorker.InputFilePath        = importFilePath;
                currentImportWorker.FieldDelimiter       = importArgs.FieldDelimiter;
                currentImportWorker.CurrentFieldMappings = new Dictionary <string, int>();
                currentImportWorker.JobDescription       = importArgs.JobDescription;
                currentImportWorker.ImportData           = ImportRecords;
            }
            ImportRecords.DedupLists();

            CurrentLogWriter.DebugFormat("{0}: Eligible Workers:", Arguments.Id);
            foreach (var import in eligibleImports)
            {
                CurrentLogWriter.Debug(import.GetType().Name);
            }
            return(eligibleImports);
        }