Skip to content

Commit 3ed32e7

Browse files
committed
Generate metadata datadictionary csv
Generate metadata, add support for datadictionary csv format
1 parent a6f9b06 commit 3ed32e7

File tree

2 files changed

+55
-2
lines changed

2 files changed

+55
-2
lines changed

CSVLintNppPlugin/CsvLint/CsvGenerateCode.cs

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,60 @@ public static void GenerateSchemaJSON(CsvDefinition csvdef)
207207
/// <param name="data"> csv data </param>
208208
public static void GenerateDatadictionaryCSV(CsvDefinition csvdef)
209209
{
210-
//TODO
210+
// get access to Notepad++
211+
INotepadPPGateway notepad = new NotepadPPGateway();
212+
IScintillaGateway editor = new ScintillaGateway(PluginBase.GetCurrentScintilla());
213+
214+
string FILE_NAME = Path.GetFileName(notepad.GetCurrentFilePath());
215+
var separator = (csvdef.Separator == '\0' ? "{fixed-width}" : csvdef.Separator.ToString());
216+
if (separator == "\t") separator = "\\t";
217+
218+
StringBuilder csvmeta = new StringBuilder();
219+
220+
// build CSV
221+
csvmeta.Append("Nr,ColumnName,DataType,Width,Decimals,Mask,Enumeration\r\n");
222+
223+
for (int c = 0; c < csvdef.Fields.Count; c++)
224+
{
225+
// next field
226+
var coldef = csvdef.Fields[c];
227+
228+
// prepare JSON variables
229+
var dattyp = "String";
230+
var mask = "";
231+
var dec = "";
232+
var colwid = coldef.MaxWidth.ToString();
233+
var enumvals = "";
234+
switch (coldef.DataType)
235+
{
236+
case ColumnType.DateTime:
237+
mask = coldef.Mask;
238+
dattyp = (mask.IndexOf("y") >= 0 ? "Date" : "") + (mask.IndexOf("H") >= 0 ? "Time" : "");
239+
break;
240+
case ColumnType.Integer:
241+
dattyp = "Integer";
242+
break;
243+
case ColumnType.Decimal:
244+
dattyp = "Decimal";
245+
//mask = coldef.Mask;
246+
mask = "#0" + coldef.DecimalSymbol + "".PadRight(coldef.Decimals, '0');
247+
dec = coldef.Decimals.ToString();
248+
break;
249+
};
250+
251+
// enumeration
252+
if (coldef.isCodedValue)
253+
{
254+
enumvals = string.Join("|", coldef.CodedList);
255+
enumvals = string.Format("\"{0}\"", enumvals); // use quotes
256+
}
257+
258+
csvmeta.Append(string.Format("{0},{1},{2},{3},{4},{5},{6}\r\n", (c + 1), coldef.Name, dattyp, colwid, dec, mask, enumvals));
259+
}
260+
261+
// create new file
262+
notepad.FileNew();
263+
editor.SetText(csvmeta.ToString());
211264
}
212265

213266
/// <summary>

CSVLintNppPlugin/Main.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ internal static void generateMetaData()
655655
CsvGenerateCode.GenerateSchemaJSON(csvdef);
656656
break;
657657
case 2: // CSV datadictionary
658-
//TODO
658+
CsvGenerateCode.GenerateDatadictionaryCSV(csvdef);
659659
break;
660660
case 3: // Python
661661
CsvGenerateCode.GeneratePythonPanda(csvdef);

0 commit comments

Comments
 (0)