Пример #1
0
        public AddmlFlatFileDefinition(string name,
                                       string fileName,
                                       FileInfo fileInfo,
                                       string recordSeparator,
                                       string fieldSeparator,
                                       string charset,
                                       string recordDefinitionFieldIdentifier,
                                       int?numberOfRecords,
                                       Checksum checksum,
                                       AddmlFlatFileFormat format,
                                       List <string> processes)
        {
            Name            = name;
            FileName        = fileName;
            FileInfo        = fileInfo;
            RecordSeparator = string.IsNullOrEmpty(recordSeparator) ? null : new Separator(recordSeparator);
            FieldSeparator  = string.IsNullOrEmpty(fieldSeparator) ? null : new Separator(fieldSeparator);
            Encoding        = Encodings.GetEncoding(charset);
            RecordDefinitionFieldIdentifier = recordDefinitionFieldIdentifier;
            NumberOfRecords        = numberOfRecords;
            AddmlRecordDefinitions = new List <AddmlRecordDefinition>();
            Checksum  = checksum;
            Format    = format;
            Processes = processes;

            _index = new FlatFileIndex(name);
        }
Пример #2
0
        private List <AddmlFlatFileDefinition> GetAddmlFlatFileDefinitions()
        {
            List <AddmlFlatFileDefinition> addmlFlatFileDefinitions = new List <AddmlFlatFileDefinition>();

            flatFileDefinition[] flatFileDefinitions = GetFlatFileDefinitions();
            foreach (flatFileDefinition flatFileDefinition in flatFileDefinitions)
            {
                string              name            = flatFileDefinition.name;
                string              recordSeparator = GetRecordSeparator(flatFileDefinition.typeReference);
                string              fieldSeparator  = GetFieldSeparator(flatFileDefinition.typeReference);
                string              fileName        = GetFileName(flatFileDefinition.name);
                FileInfo            fileInfo        = _workingDirectory.Content().WithFile(fileName);
                string              charset         = GetCharset(flatFileDefinition.typeReference);
                string              recordDefinitionFieldIdentifier = flatFileDefinition.recordDefinitionFieldIdentifier;
                int?                numberOfRecords   = GetNumberOfRecords(flatFileDefinition.name);
                Checksum            checksum          = GetChecksum(flatFileDefinition.name);
                AddmlFlatFileFormat format            = GetFlatFileFormat(flatFileDefinition.typeReference);
                List <string>       flatFileProcesses = GetFlatFileProcessNames(flatFileDefinition.name);

                AddmlFlatFileDefinition addmlFlatFileDefinition =
                    new AddmlFlatFileDefinition(name, fileName, fileInfo, recordSeparator, fieldSeparator, charset,
                                                recordDefinitionFieldIdentifier, numberOfRecords, checksum, format, flatFileProcesses);

                AddAddmlFieldDefinitions(addmlFlatFileDefinition, flatFileDefinition);

                addmlFlatFileDefinitions.Add(addmlFlatFileDefinition);
            }

            SetForeignKeyReferences(addmlFlatFileDefinitions);

            return(addmlFlatFileDefinitions);
        }
Пример #3
0
        public IRecordEnumerator GetRecordEnumerator(Archive archive, FlatFile flatFile)
        {
            if (!Enum.IsDefined(typeof(ArchiveType), archive.ArchiveType))
            {
                throw new ArgumentException(
                          $"Cannot instantiate file reader for archive. Unsupported archive type: {archive.ArchiveType}");
            }

            var fileInfo = flatFile?.Definition?.FileInfo;

            if (fileInfo == null)
            {
                throw new ArgumentException("flatFile.Definition.FileInfo cannot be null");
            }
            if (!fileInfo.Exists)
            {
                return(null);
            }

            switch (archive.ArchiveType)
            {
            case ArchiveType.Noark3:
            case ArchiveType.Fagsystem:
            {
                AddmlFlatFileFormat format = flatFile.Definition.Format;
                switch (format)
                {
                case AddmlFlatFileFormat.Delimiter:
                    return(new DelimiterFileFormatReader(flatFile));

                case AddmlFlatFileFormat.Fixed:
                    return(new FixedFileFormatReader(flatFile));

                default:
                    throw new ArkadeException("Unkown AddmlFlatFileFormat: " + format);
                }
            }

            case ArchiveType.Noark4:
            {
                return(new Noark4FileReader(flatFile));
            }

            default:
            {
                throw new ArgumentException("No such enum: " + archive.ArchiveType);
            }
            }
        }