private static object RemoveDateiRef(DossierDIP dossier, string dateiRef) { if (dossier.DateiRef.Remove(dateiRef)) { return(dossier); } foreach (var dokument in dossier.Dokument) { if (dokument.DateiRef.Remove(dateiRef)) { return(dokument); } } foreach (var subDossier in dossier.Dossier) { var dossierOderDokument = RemoveDateiRef(subDossier, dateiRef); if (dossierOderDokument != null) { return(dossierOderDokument); } } return(null); }
private void ProcessDossier(DossierDIP dossier) { // A dossier can have attached files, without having a document ProcessDateiRefList(dossier.DateiRef); foreach (var dokument in dossier.Dokument) { ProcessDocuments(dokument); } foreach (var subDossier in dossier.Dossier) { ProcessDossier(subDossier); } }
private DokumentDIP AddDokumentData(DossierDIP dossier, IList <ICmisExtensionElement> extensions, ElasticArchiveRecord documentRecord, List <RepositoryFile> filesToIgnore) { Log.Verbose("Adding Dokument data with metadata: {extensions}", JsonConvert.SerializeObject(extensions)); var dokument = new DokumentDIP { Titel = string.IsNullOrEmpty(documentRecord?.Title) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/Titel") : documentRecord.Title, Id = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:dokument/dokument@id"), Erscheinungsform = Enum.TryParse(metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/Erscheinungsform"), true, out ErscheinungsformDokument ef) ? ef : ErscheinungsformDokument.nichtdigital, Registrierdatum = metadataAccess.GetHistorischerZeitpunkt(extensions, "ARELDA:Dokument/Dokument/Registrierdatum"), Entstehungszeitraum = documentRecord?.CreationPeriod == null ? metadataAccess.GetHistorischerZeitraum(extensions, "ARELDA:Dokument/Dokument/Entstehungszeitraum") : GetEntstehungszeitraum(documentRecord.CreationPeriod), Klassifizierungskategorie = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/Klassifizierungskategorie"), Datenschutz = bool.TryParse(metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/Datenschutz"), out var datenschutz) && datenschutz, Oeffentlichkeitsstatus = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/Oeffentlichkeitsstatus"), OeffentlichkeitsstatusBegruendung = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/OeffentlichkeitsstatusBegruendung"), SonstigeBestimmungen = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/SonstigeBestimmungen"), Bemerkung = string.IsNullOrEmpty(documentRecord?.ZusätzlicheInformationen()) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dokument/Dokument/Bemerkung") : documentRecord.ZusätzlicheInformationen(), DateiRef = GetFilteredDateiRef(metadataAccess.GetExtendedPropertyValues(extensions, "ARELDA:Dokument/Dokument/DateiRef"), filesToIgnore) }; // Add optional data if (!string.IsNullOrEmpty(documentRecord?.ReferenceCode)) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Signatur", Value = documentRecord.ReferenceCode }); } if (!string.IsNullOrEmpty(documentRecord?.Level)) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Stufe", Value = documentRecord.Level }); } if (!string.IsNullOrEmpty(documentRecord?.FormerReferenceCode)) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Frühere Signaturen", Value = documentRecord.FormerReferenceCode }); } if (documentRecord?.ArchiveplanContext.Count > 0) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Archivplankontext", Value = JsonConvert.SerializeObject(documentRecord.ArchiveplanContext) }); } if (!string.IsNullOrEmpty(documentRecord?.Form())) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Form", Value = documentRecord.Form() }); } if (!string.IsNullOrEmpty(documentRecord?.WithinInfo)) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Darin", Value = documentRecord.WithinInfo }); } if (!string.IsNullOrEmpty(documentRecord?.Thema())) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Thema", Value = documentRecord.Thema() }); } if (!string.IsNullOrEmpty(documentRecord?.Format())) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Format", Value = documentRecord.Format() }); } if (!string.IsNullOrEmpty(documentRecord?.Urheber())) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Urheber", Value = documentRecord.Urheber() }); } if (!string.IsNullOrEmpty(documentRecord?.Verleger())) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Verleger", Value = documentRecord.Verleger() }); } if (!string.IsNullOrEmpty(documentRecord?.Abdeckung())) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Abdeckung", Value = documentRecord.Abdeckung() }); } if (!string.IsNullOrEmpty(documentRecord?.PrimaryDataLink)) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Identifikation digitales Magazin", Value = documentRecord.PrimaryDataLink }); } if (documentRecord?.CreationPeriod != null) { dokument.zusatzDaten.Add( new ZusatzDatenMerkmal { Name = "Entstehungszeitraum Anzeigetext", Value = documentRecord.CreationPeriod.Text }); } var reihenfolge = metadataAccess.GetExtendedPropertyBagValue(extensions, "ARELDA:Dokument/Dokument/Zusatzdaten/Merkmal", "ReihenfolgeAnalogesDossier"); if (!string.IsNullOrEmpty(reihenfolge)) { dokument.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "ReihenfolgeAnalogesDossier", Value = reihenfolge }); } dossier.Dokument.Add(dokument); return(dokument); }