public void Unpack(string encodedJsonString, PackagerSettings settings) { var diagramLayout = JsonConvert.DeserializeObject <object>(encodedJsonString); // 1. Create root file for DataModelSchema.json File.WriteAllText($"{settings.OutputFolder}\\Metadata.json", diagramLayout.ToString()); }
public void Unpack(string encodedJsonString, PackagerSettings settings) { var layout = JsonConvert.DeserializeObject <Layout>(encodedJsonString); // 1. Create root file for DataModelSchema.json File.WriteAllText($"{settings.OutputFolder}\\Layout.json", layout.ToString()); var folderPath = $"{settings.OutputFolder}\\Sections"; Directory.CreateDirectory(folderPath); foreach (var section in layout.Sections) { File.WriteAllText($"{folderPath}\\{section.DisplayName.ToValidFileName()}.json", section.ToString()); } }
public void Pack(string filePath, string outputPath, bool debug = true) { using (var fileStream = new FileSystem().File.Open(filePath, FileMode.Open)) { using (var zip = new ZipArchive(fileStream, ZipArchiveMode.Update)) { var reportName = Path.GetFileNameWithoutExtension(filePath); var settings = new PackagerSettings() { OutputFolder = $"{outputPath}\\{reportName}" }; if (Directory.Exists(settings.OutputFolder)) { Directory.Delete(settings.OutputFolder, true); } Directory.CreateDirectory(settings.OutputFolder); foreach (var archiveEntry in zip.Entries) { var strategies = new FilePackagerStrategies(); var packager = strategies.GetFilePackagerType(archiveEntry.Name); if (packager == null) { continue; } Console.WriteLine($"Processing file: {archiveEntry.Name}"); using (var ms = new MemoryStream()) { archiveEntry.Open().CopyTo(ms); var unzippedArray = ms.ToArray(); var encodedJsonString = Encoding.Unicode.GetString(unzippedArray); packager.Unpack(encodedJsonString, settings); } } } } }
public void Unpack(string encodedJsonString, PackagerSettings settings) { var schema = JsonConvert.DeserializeObject <DataModelSchema>(encodedJsonString); // 1. Create root file for DataModelSchema.json File.WriteAllText($"{settings.OutputFolder}\\DataModelSchema.json", schema.ToString()); // 2. Create model.json File.WriteAllText($"{settings.OutputFolder}\\Model.json", schema.Model.ToString()); // 3. Create file for each table var folderPath = $"{settings.OutputFolder}\\Tables"; Directory.CreateDirectory(folderPath); foreach (var table in schema.Model.Tables) { File.WriteAllText($"{folderPath}\\{table.Name.ToValidFileName()}.json", table.ToString()); } }