Author: h.mohri
New in 10.2.2 TFDBatchMoveJSONWriter was added.
TFDBatchMoveJSONWriter is a Writer that combines with TFDBatchMove to out to a simple JSON. But, TFDBatchMoveJSONWriter has the function of generating Model definition of Ext JS.
I tried with a field dynamically created with TFDMemTable.
code
The code below is a simple 64-bit console application.
I wrote this code using C++Builder.
umain.cpp
#include <vcl.h> #include <windows.h> #pragma hdrstop #pragma argsused #pragma link "dbrtl.a" #pragma link "FireDAC.a" #pragma link "FireDACCommonDriver.a" #pragma link "FireDACCommon.a" #include <tchar.h> #include <iostream> #include <System.JSON.hpp> #include <FireDAC.Stan.Intf.hpp> #include <FireDAC.Stan.Option.hpp> #include <FireDAC.Stan.Param.hpp> #include <FireDAC.Stan.Error.hpp> #include <FireDAC.DatS.hpp> #include <FireDAC.Phys.Intf.hpp> #include <FireDAC.DApt.Intf.hpp> #include <FireDAC.Comp.BatchMove.JSON.hpp> #include <FireDAC.Comp.BatchMove.hpp> #include <FireDAC.Comp.BatchMove.DataSet.hpp> #include <Data.DB.hpp> #include <FireDAC.Comp.DataSet.hpp> #include <FireDAC.Comp.Client.hpp> #include <FireDAC.Stan.StorageJSON.hpp> #include <functional> #include <string> #include <sstream> struct dbs { TFDMemTable* f_MemTable1; TFDBatchMove* f_BatchMove1; TFDBatchMoveDataSetReader* f_DataSetReader1; TFDBatchMoveJSONWriter* f_JSONWriter1; TFDStanStorageJSONLink* f_JSONLink1; dbs(std::function<void(TFDMemTable*)> func) { f_MemTable1 = new TFDMemTable(nullptr); f_BatchMove1 = new TFDBatchMove(nullptr); f_DataSetReader1 = new TFDBatchMoveDataSetReader(nullptr); f_JSONWriter1 = new TFDBatchMoveJSONWriter(nullptr); f_JSONLink1 = new TFDStanStorageJSONLink(nullptr); f_DataSetReader1->DataSet = f_MemTable1; f_BatchMove1->Reader = *f_DataSetReader1; f_BatchMove1->Writer = *f_JSONWriter1; func(f_MemTable1); }; static inline String IToString(int iin) { std::wostringstream ss; ss << iin; return ss.str().c_str(); } ~dbs() { delete f_MemTable1; delete f_BatchMove1; delete f_DataSetReader1; delete f_JSONWriter1; delete f_JSONLink1; }; }; int _tmain(int argc, _TCHAR* argv[]) { try { TStringList* alist = new TStringList(); try { dbs adbs([](TFDMemTable* memt) { //Field definition of TFDMemTable* instance. //Create five fields. for (int i = 0; i < 5; i++) { TStringField* aField = new TStringField(nullptr); aField->FieldName = "Column" + dbs::IToString(i); aField->Size = 50; memt->Fields->Add(aField); } }); //Then execute the GenerateExtJSModel() method. //This GenerateExtJSModel() is a TFDBatchMoveJSONWriter class that has been added than 10.2.2. adbs.f_JSONWriter1->GenerateExtJSModel("Table1", true, alist); //Console out. std::wcout << alist->Text.c_str() << std::endl; } __finally { delete alist; } } catch(...) { } return 0; }
result GenerateExtJSModel()
The output store definition is as follows.
Ext.define('Table1', { extend: 'Ext.data.Model', requires: [ 'Ext.data.field.Field' ], fields: [ { name: 'Column0', type: 'string' }, { name: 'Column1', type: 'string' }, { name: 'Column2', type: 'string' }, { name: 'Column3', type: 'string' }, { name: 'Column4', type: 'string' } ] });
It can be output in Ext JS store definition.