"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DataTableJsonSerializer_1 = require("./DataTableJsonSerializer");
var DataTableXmlSerializer_1 = require("./DataTableXmlSerializer");
var DataTableXlsSerializer_1 = require("./DataTableXlsSerializer");
var path = require("path");
var fs = require("fs");
/** Default constructor
* @class DataTableSerializer
* @classdesc Utility to load and save DataTable objects to different file formats.
* More Info: {@link DataTableJsonSerializer} {@link DataTableXlsSerializer} {@link DataTableXmlSerializer}
*/
var DataTableSerializer = (function () {
function DataTableSerializer() {
}
DataTableSerializer.getSerializer = function (extension) {
var retVal = null;
if (extension !== null && extension.length > 0) {
// remove first '.' if the extension begins with it
if (extension.indexOf(".") == 0)
extension = extension.substr(1);
for (var i = 0; i < this.AvailableSerializers.length; i++) {
var serializer = this.AvailableSerializers[i];
if (serializer.extension && serializer.extension.toLocaleLowerCase() == extension.toLowerCase()) {
retVal = serializer;
break;
}
}
}
return retVal;
};
DataTableSerializer.save = function (dataTable, fileName) {
var ext = path.extname(fileName);
var serializer = this.getSerializer(ext);
if (serializer === null)
throw new Error("Format '" + ext + "' not supported");
var data = serializer.serialize(dataTable);
fs.writeFileSync(fileName, data);
};
/** The path is relative to process.cwd() */
DataTableSerializer.load = function (fileName) {
var dt;
var ext = path.extname(fileName);
var serializer = this.getSerializer(ext);
if (serializer === null)
throw new Error("Format '" + ext + "' not supported");
var buffer = fs.readFileSync(fileName);
dt = serializer.deserialize(buffer);
return dt;
};
return DataTableSerializer;
}());
/** @lends DataTableSerializer */
// register serializers here
DataTableSerializer.AvailableSerializers = [
new DataTableJsonSerializer_1.DataTableJsonSerializer(),
new DataTableXlsSerializer_1.DataTableXlsSerializer(),
new DataTableXmlSerializer_1.DataTableXmlSerializer()
];
exports.DataTableSerializer = DataTableSerializer;
//# sourceMappingURL=DataTableSerializer.js.map