Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }