liborm
Version:
ORM that use the legacy libsqlite
369 lines (337 loc) • 11.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SQLiteModel = exports.Model = undefined;
var _stringify = require("babel-runtime/core-js/json/stringify");
var _stringify2 = _interopRequireDefault(_stringify);
var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of");
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _future = require("hjs-future/lib/future");
var _service = require("hjs-future/lib/service");
var _obs = require("libobs/lib/obs");
var _http = require("libhttp/lib/http");
var _helper = require("libsqlite/lib/helper");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Model = exports.Model = function (_Observable) {
(0, _inherits3.default)(Model, _Observable);
function Model() {
(0, _classCallCheck3.default)(this, Model);
var _this = (0, _possibleConstructorReturn3.default)(this, (Model.__proto__ || (0, _getPrototypeOf2.default)(Model)).call(this));
_this.mInternals = null;
return _this;
}
(0, _createClass3.default)(Model, [{
key: "clone",
value: function clone() {
var o = new this.constructor();
var obj = this.getProperties();
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
o[p] = obj[p];
}
}
return o;
}
}, {
key: "compare",
value: function compare(model1, model2) {
return 0;
}
}, {
key: "compareTo",
value: function compareTo(model) {
return 0;
}
}, {
key: "containsKey",
value: function containsKey(key) {
if (key) {
var keys = this.getKeys();
return keys.indexOf(key) !== -1;
}
return false;
}
}, {
key: "equals",
value: function equals(obj) {
if (!obj) {
return false;
}
if (obj === this) {
return true;
}
if (!(obj instanceof this.constructor)) {
return false;
}
var properties = this.getProperties();
for (var p in properties) {
if (properties.hasOwnProperty(p)) {
if (properties[p] !== obj[p]) {
return false;
}
}
}
return true;
}
}, {
key: "fromJSONObject",
value: function fromJSONObject(url) {
var _this2 = this;
return new _service.FutureTask({
callable: new _future.Callable({
compute: function compute(onComplete) {
new _http.HTTPConnection({
url: url,
method: _http.HTTPMessage.GET,
responseType: _http.HTTPMessage.JSON,
handler: {
onHandleRequest: function onHandleRequest(event) {
var type = event.type;
var response = event.response;
if (type === "loadend") {
if (!response.hasError()) {
_this2.setProperties(response.getMessageBody());
}
onComplete(_this2);
}
}
},
autostart: true
});
}
})
});
}
}, {
key: "getInternals",
value: function getInternals() {
return this.mInternals;
}
}, {
key: "getInternalsProperty",
value: function getInternalsProperty(key) {
if (key) {
return this.mInternals[key];
}
return null;
}
}, {
key: "getKeys",
value: function getKeys(filter) {
return null;
}
}, {
key: "getProperties",
value: function getProperties(filter) {
var properties = {};
var ctr = this.constructor;
var keys = this.getKeys(filter);
var len = keys.length;
for (var i = 0; i < len; i++) {
var key = keys[i];
properties[key] = this[key];
}
return properties;
}
}, {
key: "getProperty",
value: function getProperty(key) {
if (key) {
return this[key];
}
return null;
}
}, {
key: "getPropertyType",
value: function getPropertyType(key) {
if (key) {
var value = this[key];
if (value !== null && value !== undefined) {
return value.constructor;
}
}
return null;
}
}, {
key: "getValues",
value: function getValues() {
var withoutId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var values = [];
var keys = this.getKeys(withoutId);
var len = keys.length;
for (var i = 0; i < len; i++) {
values.push(this[keys[i]]);
}
return values;
}
}, {
key: "parseProperties",
value: function parseProperties(properties) {
if (properties) {
if (typeof properties === "string") {
properties = JSON.parse(properties);
}
this.setProperties(properties);
}
}
}, {
key: "setInternals",
value: function setInternals(properties) {
if (properties) {
for (var p in properties) {
if (properties.hasOwnProperty(p)) {
this.setInternalProperty(p, properties[p]);
}
}
}
}
}, {
key: "setInternalProperty",
value: function setInternalProperty(key, value) {
if (!this.mInternals) {
this.mInternals = {};
}
this.mInternals[key] = value;
}
}, {
key: "setProperties",
value: function setProperties(properties) {
if (properties) {
var changeCount = 0;
for (var key in properties) {
if (properties.hasOwnProperty(key)) {
if (this.containsKey(key)) {
this[key] = properties[key];
changeCount++;
} else {
this.setInternalProperty(key, properties[key]);
}
}
}
if (changeCount > 0) {
this.setChanged();
}
}
}
}, {
key: "setProperty",
value: function setProperty(key, value) {
var changeCount = 0;
if (key) {
if (this.containsKey(key)) {
this[key] = value;
} else {
this.setInternalProperty(key, value);
}
}
if (changeCount > 0) {
this.setChanged();
}
}
}, {
key: "toJSONObject",
value: function toJSONObject() {
var obj = this.getProperties();
return (0, _stringify2.default)(obj, null, 4);
}
}, {
key: "toString",
value: function toString() {
return this.toJSONObject();
}
}]);
return Model;
}(_obs.Observable); /** @babel */
var SQLiteModel = exports.SQLiteModel = function (_Model) {
(0, _inherits3.default)(SQLiteModel, _Model);
function SQLiteModel() {
(0, _classCallCheck3.default)(this, SQLiteModel);
return (0, _possibleConstructorReturn3.default)(this, (SQLiteModel.__proto__ || (0, _getPrototypeOf2.default)(SQLiteModel)).call(this));
}
(0, _createClass3.default)(SQLiteModel, [{
key: "compare",
value: function compare(entity1, entity2) {
var _id1 = entity1.getProperty(_helper.BaseColumns._ID);
var _id2 = entity2.getProperty(_helper.BaseColumns._ID);
return _id1 < _id2 ? -1 : _id1 > _id2 ? 1 : 0;
}
}, {
key: "compareTo",
value: function compareTo(entity) {
var _id1 = entity.getProperty(_helper.BaseColumns._ID);
var _id2 = entity.getProperty(_helper.BaseColumns._ID);
return _id1 < _id2 ? -1 : _id1 > _id2 ? 1 : 0;
}
}, {
key: "getKeys",
value: function getKeys() {
var withoutId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var columnNames = this.getTable().getColumnNames();
var result = columnNames.filter(function (key, index, columnNames) {
return !(withoutId && key === _helper.BaseColumns._ID);
});
return result;
}
}, {
key: "getPropertyInfo",
value: function getPropertyInfo(name) {
return this.getTable().getColumnInfoByName(name);
}
}, {
key: "getPropertyInfoAt",
value: function getPropertyInfoAt(index) {
return this.getTable().getColumnInfo(index);
}
}, {
key: "getTable",
value: function getTable() {
return null;
}
}, {
key: "getTableName",
value: function getTableName() {
return null;
}
}, {
key: "getValues",
value: function getValues() {
var withoutId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var values = [];
var keys = this.getKeys(withoutId);
var len = keys.length;
for (var i = 0; i < len; i++) {
values.push(this[keys[i]]);
}
return values;
}
}, {
key: "toString",
value: function toString() {
var buffer = "";
var index = 0;
var properties = this.getProperties();
var len = _helper.DatabaseUtils.countValues(properties);
buffer += this.constructor.name + "{\n";
for (var p in properties) {
if (properties.hasOwnProperty(p)) {
buffer += p + "=" + (properties[p] ? properties[p] : "null");
if (index < len - 1) {
buffer += ",\n";
}
index++;
}
}
return buffer += "}";
}
}]);
return SQLiteModel;
}(Model);