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