// filter LEIData object using LINQ expression to country specific set // append CountryCode to NameSpace (as experiment for different formats) private static void WriteXmlCountry(LEIData leiData, Uri outputUri, CloudBlobClient cloudBlobClient, string countryCode) { // Inititialize TopN object based on parent object LEIData _leiData = new LEIData { LEIHeader = leiData.LEIHeader, LEIRecords = new LEIRecordsType() }; // Filter only specified Country records, using LINQ Lambda Expressions // The Any operator enumerates the source sequence and returns true if any Country == countryCode _leiData.LEIRecords.LEIRecord = leiData.LEIRecords.LEIRecord. Where(rec => rec.Entity.LegalAddress.Country == countryCode || rec.Entity.HeadquartersAddress.Country == countryCode ).ToList(); // Update actual RecordCount in Header _leiData.LEIHeader.RecordCount = _leiData.LEIRecords.LEIRecord.Count.ToString(); // as an Experiment, use different Namespace for this country; append the CountryCode XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("gleif" + countryCode, "http://www.gleif.org/concatenated-file/header-extension/2.0"); ns.Add("lei" + countryCode, "http://www.gleif.org/data/schema/leidata/2016"); // Write serialized object to Blob CloudBlockBlob outputBlob = new CloudBlockBlob(outputUri, cloudBlobClient); using (var outputStream = outputBlob.OpenWriteAsync().Result) { WriteXmlStream(_leiData, outputStream); } }
// filter LEIData object using LINQ expression to country specific set // append CountryCode to NameSpace (as experiment for different formats) private static void WriteXmlCountry(LEIData leiData, string fileName, string countryCode) { // Inititialize TopN object based on parent object LEIData _leiData = new LEIData { LEIHeader = leiData.LEIHeader, LEIRecords = new LEIRecordsType() }; // Filter only specified Country records, using LINQ Lambda Expressions // The Any operator enumerates the source sequence and returns true if any Country == countryCode _leiData.LEIRecords.LEIRecord = leiData.LEIRecords.LEIRecord. Where(rec => rec.Entity.LegalAddress.Country == countryCode || rec.Entity.HeadquartersAddress.Country == countryCode ).ToList(); // Update actual RecordCount in Header _leiData.LEIHeader.RecordCount = _leiData.LEIRecords.LEIRecord.Count.ToString(); // as an Experiment, use different Namespace for this country; append the CountryCode XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("gleif" + countryCode, "http://www.gleif.org/concatenated-file/header-extension/2.0"); ns.Add("lei" + countryCode, "http://www.gleif.org/data/schema/leidata/2016"); // Write to file Serialization.WriteXml(_leiData, fileName, ns); }
// serialize LEIData.LEIRecords object directly to CSV file (stream) public static void WriteCsv(LEIData leiData, string fileName) { Console.WriteLine("Writing LEIData to CSV file..."); using (StreamWriter file = File.CreateText(fileName)) { CsvWriter csv = new CsvWriter(file); csv.WriteRecords(leiData.LEIRecords.LEIRecord); } }
// serialize LEIData object directly to JSON file (stream) public static void WriteJson(LEIData leiData, string fileName) { Console.WriteLine("Writing LEIData to JSON file..."); using (StreamWriter file = File.CreateText(fileName)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, leiData); } }
// Write serialized object via MemoryStream to Blob as CSV private static void WriteCsv(LEIData leiData, Uri outputUri, CloudBlobClient cloudBlobClient) { CloudBlockBlob outputBlob = new CloudBlockBlob(outputUri, cloudBlobClient); using (var sw = new StreamWriter(outputBlob.OpenWriteAsync().Result)) { CsvWriter csv = new CsvWriter(sw); csv.WriteRecords(leiData.LEIRecords.LEIRecord); } }
// Write serialized object via MemoryStream to Blob as JSON private static void WriteJson(LEIData leiData, Uri outputUri, CloudBlobClient cloudBlobClient) { CloudBlockBlob outputBlob = new CloudBlockBlob(outputUri, cloudBlobClient); using (var sw = new StreamWriter(outputBlob.OpenWriteAsync().Result)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(sw, leiData); } }
// serialize LEIData object straight into XML stream private static void WriteXmlStream(LEIData leiData, Stream output, XmlSerializerNamespaces ns = null) { if (ns == null) { // explicitly include NameSpaces, to comply with 2017-03-21_lei-cdf-v2-1.pdf | 1.6.1. XML Design Rules ns = new XmlSerializerNamespaces(); ns.Add("gleif", "http://www.gleif.org/concatenated-file/header-extension/2.0"); ns.Add("lei", "http://www.gleif.org/data/schema/leidata/2016"); } XmlSerializer serializer = new XmlSerializer(typeof(LEIData)); serializer.Serialize(output, leiData, ns); }
// serialize LEIData object directly to XML file (stream) public static void WriteXml(LEIData leiData, string fileName, XmlSerializerNamespaces ns = null) { Console.WriteLine("Writing leiData to XML file '{0}'...", fileName); using (StreamWriter file = File.CreateText(fileName)) { if (ns == null) { // explicitly include NameSpaces, to comply with 2017-03-21_lei-cdf-v2-1.pdf | 1.6.1. XML Design Rules ns = new XmlSerializerNamespaces(); ns.Add("gleif", "http://www.gleif.org/concatenated-file/header-extension/2.0"); ns.Add("lei", "http://www.gleif.org/data/schema/leidata/2016"); } XmlSerializer serializer = new XmlSerializer(typeof(LEIData)); serializer.Serialize(file, leiData, ns); } }
// filter LEIData object using LINQ expression to TopN records private static void WriteXmlTopN(LEIData leiData, string fileName, int count) { // Inititialize TopN object based on parent object LEIData _leiData = new LEIData { LEIHeader = leiData.LEIHeader, LEIRecords = new LEIRecordsType() }; // Filter top N records, using List<> methods _leiData.LEIRecords.LEIRecord = leiData.LEIRecords.LEIRecord.Take <LEIRecordType>(count).ToList(); // Update actual RecordCount in Header _leiData.LEIHeader.RecordCount = _leiData.LEIRecords.LEIRecord.Count.ToString(); Serialization.WriteXml(_leiData, fileName); }
// filter LEIData object using LINQ expression to TopN records private static void WriteXmlTopN(LEIData leiData, Uri outputUri, CloudBlobClient cloudBlobClient, int count) { // Inititialize TopN object based on parent object LEIData _leiData = new LEIData { LEIHeader = leiData.LEIHeader, LEIRecords = new LEIRecordsType() }; // Filter top N records, using List<> methods _leiData.LEIRecords.LEIRecord = leiData.LEIRecords.LEIRecord.Take <LEIRecordType>(count).ToList(); // Update actual RecordCount in Header _leiData.LEIHeader.RecordCount = _leiData.LEIRecords.LEIRecord.Count.ToString(); // Write serialized object to Blob CloudBlockBlob outputBlob = new CloudBlockBlob(outputUri, cloudBlobClient); using (var outputStream = outputBlob.OpenWriteAsync().Result) { WriteXmlStream(_leiData, outputStream); } }