public string GetXmlStringFromObject(RIP.recordInformationPackage recordinformationPackage) { string xmlstreamActual; using (var writer = new StringWriter()) { var serializer = new XmlSerializer(typeof(RIP.recordInformationPackage)); serializer.Serialize(writer, recordinformationPackage); writer.Flush(); xmlstreamActual = writer.ToString(); } ValidateXmlString(xmlstreamActual); return(xmlstreamActual); }
/// <summary> /// /// </summary> /// <param name="listOfDossiers"></param> /// <param name="maxBatchSize_bytes"></param> /// <returns> List recordInformationPackage: Is het complete TopX objectmodel, serializable naar xml</returns> public List <RIP.recordInformationPackage> ParseDataToTopx(List <Dossier> listOfDossiers, long maxBatchSize_bytes = 0) { var resultRecordInformationPackages = new List <RIP.recordInformationPackage>(); if (!TestHealthyGlobals()) { return(null); } _identificatieArchief = _globals.IdentificatieArchief; var datumArchief = _globals.DatumArchief; var omschrijvingArchief = _globals.OmschrijvingArchief; var bronArchief = _globals.BronArchief; var doelArchief = _globals.DoelArchief; var naamArchief = _globals.NaamArchief; long totalSize = 0; var rip = new recordInformationPackage { record = RipArchief(_identificatieArchief, naamArchief) }; foreach (var dossier in listOfDossiers) { try { if (!dossier.Records.Any()) { ErrorMessage.AppendLine($"Dossier {dossier.IdentificatieKenmerk}: Geen records gevonden"); } if (string.IsNullOrEmpty(dossier.Naam)) { ErrorMessage.AppendLine($"Dossier {dossier.IdentificatieKenmerk}: Veld Naam is leeg"); } if (!ValidateDossier(dossier)) { continue; } rip.record.Add(RipBeschikkingAsDossier(dossier)); foreach (var record in dossier.Records) { rip.record.Add(RipOobjectAsRecord(dossier, record, $"{dossier.IdentificatieKenmerk}_{Path.GetFileNameWithoutExtension(record.Bestand_Formaat_Bestandsnaam)}")); rip.record.Add(RipObjectAsBestand(record)); } } catch (Exception ex) { _dataservice.Log(dossier.IdentificatieKenmerk, $"ERROR: {ex.Message}"); ErrorMessage.AppendLine($"Dossier {dossier.IdentificatieKenmerk}: ERROR: { ex.Message}"); } var sizeOfDossier = dossier.Records.Sum(record => record.Bestand_Formaat_BestandsOmvang ?? 0); totalSize += sizeOfDossier; if (maxBatchSize_bytes > 0 && totalSize * 1.2 > maxBatchSize_bytes) // Maxsize batch is bereikt, hou marge van 20% { // Clone rip resultRecordInformationPackages.Add(new recordInformationPackage { packageHeader = RipHeader(_identificatieArchief, (DateTime)datumArchief, omschrijvingArchief, bronArchief, doelArchief), record = rip.record }); totalSize = 0; // Clear rip voor de volgende batch rip = new RIP.recordInformationPackage() { record = RipArchief(_identificatieArchief, naamArchief) }; } } resultRecordInformationPackages.Add(new recordInformationPackage { packageHeader = RipHeader(_identificatieArchief, (DateTime)datumArchief, omschrijvingArchief, bronArchief, doelArchief), record = rip.record }); return(resultRecordInformationPackages); }