Skip to content

Commit ee62d7e

Browse files
committed
changed json parser to allow mapping files of arbitrary structure
1 parent 65daf19 commit ee62d7e

14 files changed

Lines changed: 184 additions & 16 deletions

File tree

ClassLibrary/DataWarehouseAutomation/DataWarehouseAutomation.sln

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sample Metadata", "Sample M
3131
Sample_Metadata\sampleVDW_Hub.json = Sample_Metadata\sampleVDW_Hub.json
3232
Sample_Metadata\sampleVDW_HubWithLookup.json = Sample_Metadata\sampleVDW_HubWithLookup.json
3333
Sample_Metadata\sampleVDW_StagingArea.json = Sample_Metadata\sampleVDW_StagingArea.json
34+
Sample_Metadata\sampleFreeForm.json = Sample_Metadata\sampleFreeForm.json
3435
EndProjectSection
3536
EndProject
3637
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sample Templates", "Sample Templates", "{968E4A48-A2A3-4F7E-B8D9-243D1F4CCE17}"
@@ -41,6 +42,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sample Templates", "Sample
4142
Sample_Templates\TemplateSampleMultipleDataItemMappings.Handlebars = Sample_Templates\TemplateSampleMultipleDataItemMappings.Handlebars
4243
Sample_Templates\TemplateSampleSimpleDDL.Handlebars = Sample_Templates\TemplateSampleSimpleDDL.Handlebars
4344
Sample_Templates\TemplateSatelliteView.Handlebars = Sample_Templates\TemplateSatelliteView.Handlebars
45+
Sample_Templates\TemplateSampleFreeForm.Handlebars = Sample_Templates\TemplateSampleFreeForm.Handlebars
4446
EndProjectSection
4547
EndProject
4648
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Example_Project\Examples.csproj", "{F77AC518-6300-4927-8775-B92CDF15CC8E}"

ClassLibrary/DataWarehouseAutomation/DataWarehouseAutomation/obj/DataWarehouseAutomation.csproj.nuget.g.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
55
</PropertyGroup>
66
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
7-
<Import Project="$(NuGetPackageRoot)netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('$(NuGetPackageRoot)netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
7+
<Import Project="$(NuGetPackageRoot)netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets" Condition="Exists('$(NuGetPackageRoot)netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets')" />
88
</ImportGroup>
99
</Project>

ClassLibrary/DataWarehouseAutomation/Example_Project/Examples.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
44
<PropertyGroup>
55
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

ClassLibrary/DataWarehouseAutomation/RunDwhAutomation/HandleBarsHelpers.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,26 @@ public static void RegisterHandleBarsHelpers()
4747

4848
});
4949

50+
Handlebars.RegisterHelper("StringReplace", (writer, context, args) =>
51+
{
52+
if (args.Length < 3) throw new HandlebarsException("The {{StringReplace}} function requires at least three arguments.");
53+
54+
string expression = args[0] as string;
55+
56+
if (args[0] is Newtonsoft.Json.Linq.JValue)
57+
{
58+
expression = ((Newtonsoft.Json.Linq.JValue)args[0]).Value.ToString();
59+
}
60+
61+
string pattern = args[1] as string;
62+
string replacement = args[2] as string;
63+
64+
expression = expression.Replace(pattern, replacement);
65+
writer.WriteSafeString(expression);
66+
67+
});
68+
69+
5070
// BLOCK HELPER
5171
//_handlebars.RegisterHelper("if_kpi", (writer, options, context, parameters) =>
5272
//{

ClassLibrary/DataWarehouseAutomation/RunDwhAutomation/Program.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using HandlebarsDotNet;
44
using CommandLine;
55
using Newtonsoft.Json;
6+
using Newtonsoft.Json.Linq;
67
using DataWarehouseAutomation;
78

89
namespace RunDwhAutomation
@@ -150,9 +151,10 @@ private static void RunAutomation(Options options, string inputFileName, string
150151
var jsonInput = File.ReadAllText(inputFileName);
151152
var stringTemplate = File.ReadAllText(options.pattern);
152153
var template = Handlebars.Compile(stringTemplate);
153-
var deserialisedMapping = JsonConvert.DeserializeObject<VdwDataObjectMappings>(jsonInput);
154+
// var deserialisedMapping = JsonConvert.DeserializeObject<VdwDataObjectMappings>(jsonInput);
155+
var freeFormMapping = JObject.Parse(jsonInput);
154156

155-
var result = template(deserialisedMapping);
157+
var result = template(freeFormMapping);
156158

157159
if (options.verbose)
158160
{
@@ -163,7 +165,8 @@ private static void RunAutomation(Options options, string inputFileName, string
163165
{
164166
if (outputFileName == "")
165167
{
166-
outputFileName = deserialisedMapping.dataObjectMappings[0].mappingName;
168+
//outputFileName = deserialisedMapping.dataObjectMappings[0].mappingName; // you could read this from the free form mapping file, too
169+
outputFileName = (string)freeFormMapping["mappingName"]; // you could read this from the free form mapping file, too
167170
}
168171

169172
Console.WriteLine($"Generating {outputFileName}.{options.outputFileExtension} to {options.outputDirectory}.");

ClassLibrary/DataWarehouseAutomation/RunDwhAutomation/RunDwhAutomation.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props')" />
44
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
55
<PropertyGroup>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"sourceApp": {
3+
"value": "abs-event-service",
4+
"description": "name of source system."
5+
},
6+
"topicName": {
7+
"value": "application-declined"
8+
},
9+
"mappingName": "sampleFreeFormMapping.json"
10+
}
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
--Example using a templating engine for a simple select statement.
2-
{{#each dataObjectMappings }}
3-
4-
--Working on {{mappingName}}.
5-
6-
SELECT * FROM {{targetDataObject.name}} WHERE {{dataItemMappings.0.targetDataItem.name}}!=NULL
7-
8-
{{/each}}
9-
1+
{
2+
"bucketrelpath": "{{topicName.value}}",
3+
"bucketrootpath": "kafka/topics",
4+
"container": "{{StringReplace sourceApp.value '_' '-'}}",
5+
"containerrootpath": "data",
6+
"module_code": "m_050_kafka_{{StringReplace topicName.value '-' '_'}}"
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"bucketrelpath": "{{topicName.value}}",
3+
"bucketrootpath": "kafka/topics",
4+
"container": "{{sourceApp.value}}",
5+
"containerrootpath": "data",
6+
"module_code": "m_050_kafka_{{StringReplace topicName.value '-' '_'}}"
7+
}
8+

ClassLibrary/DataWarehouseAutomation/Test_Project/Testing.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
44
<PropertyGroup>
55
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

0 commit comments

Comments
 (0)