UNPKG

libsqlite

Version:

Legacy SQLITE library for browser

1,223 lines (1,102 loc) 42.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CursorLoader = exports.CursorFactory = exports.SQLiteCursor = exports.ExecCursor = exports.Cursor = exports.SQLiteCursorDriver = undefined; var _get2 = require("babel-runtime/helpers/get"); var _get3 = _interopRequireDefault(_get2); var _objectDestructuringEmpty2 = require("babel-runtime/helpers/objectDestructuringEmpty"); var _objectDestructuringEmpty3 = _interopRequireDefault(_objectDestructuringEmpty2); var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of"); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn"); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require("babel-runtime/helpers/inherits"); var _inherits3 = _interopRequireDefault(_inherits2); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); var _map = require("babel-runtime/core-js/map"); var _map2 = _interopRequireDefault(_map); var _dataset = require("hjs-content/lib/dataset"); var _loader = require("hjs-content/lib/loader"); var _event = require("./event"); var _query = require("./query"); var _helper = require("./helper"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var DRIVERS = new _map2.default(); /** @babel */ var SQLiteCursorDriver = exports.SQLiteCursorDriver = function () { function SQLiteCursorDriver() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$database = _ref.database, database = _ref$database === undefined ? null : _ref$database, _ref$editTable = _ref.editTable, editTable = _ref$editTable === undefined ? null : _ref$editTable, _ref$query = _ref.query, query = _ref$query === undefined ? null : _ref$query; (0, _classCallCheck3.default)(this, SQLiteCursorDriver); this.mDatabase = database; this.mEditTable = editTable; this.mSql = query; } (0, _createClass3.default)(SQLiteCursorDriver, [{ key: "getDatabase", value: function getDatabase() { return this.mDatabase; } }, { key: "getQuery", value: function getQuery() { return this.mQuery; } }, { key: "getStatement", value: function getStatement() { return this.mSql; } }, { key: "getTableName", value: function getTableName() { return this.mEditTable; } }, { key: "notifyError", value: function notifyError(error) { this.mDatabase.notifyListeners(new _event.SQLiteEvent({ source: this.mDatabase, id: _event.SQLiteEvent.ERROR, data: error })); } }, { key: "query", value: function query() { var factory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; var _this = this; var bindArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var adapter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var database = this.mDatabase; var table = this.mEditTable; var query = new _query.SQLiteQuery({ database: database, editTable: table, query: this.mSql, bindArgs: bindArgs }); query.bindAllArgsAsStrings(selectionArgs); query.execute(new _event.SQLiteTransactionListener({ onBegin: function onBegin(session) { if (adapter) { adapter.begin(session); } }, onCommit: function onCommit(session, resultSet) { var cursor = null; if (!factory) { cursor = new SQLiteCursor({ driver: _this, table: table, query: query, bindArgs: bindArgs, resultSet: resultSet }); } else { cursor = factory.newCursor({ driver: _this, editTable: table, query: query, bindArgs: bindArgs, resultSet: resultSet }); } if (cursor) { if (adapter) { adapter.commit(session, cursor); } else { _this.mDatabase.notifyListeners(new _event.SQLiteEvent({ source: _this.mDatabase, id: _event.SQLiteEvent.EXECUTE, data: cursor })); } } else { _this.notifyError(new ReferenceError("SQLException null cursor")); } }, onRollback: function onRollback(session, error) { console.log("GET ERROR " + error.message); if (adapter && adapter.canCatchError()) { adapter.rollback(session, error); } else { _this.notifyError(error); } } })); this.mQuery = query; } }, { key: "setBindArguments", value: function setBindArguments(bindArgs) { this.mQuery.bindAllArgsAsStrings(bindArgs); } }, { key: "toString", value: function toString() { return "SQLiteCursorDriver: " + this.mSql; } }], [{ key: "getDriver", value: function getDriver(query) { return DRIVERS.get(query) || null; } }, { key: "setDriver", value: function setDriver(query, driver) { if (!DRIVERS.has(query)) { DRIVERS.set(query, driver); } return DRIVERS.get(query); } }]); return SQLiteCursorDriver; }(); var Cursor = exports.Cursor = function () { function Cursor() { (0, _classCallCheck3.default)(this, Cursor); this.mPos = -1; this.mClosed = false; this.mSelfObserver = null; this.mSelfObserverRegistered = false; this.mDataSetObservable = new _dataset.DataSetObservable(); this.mContentObservable = new _dataset.ContentObservable(); } (0, _createClass3.default)(Cursor, [{ key: "checkPosition", value: function checkPosition() { if (this.mPos === -1 || this.getCount() === this.mPos) { throw new RangeError("CursorIndexOutOfBoundsException At " + this.mPos + "/" + this.getCount()); } } }, { key: "close", value: function close() { this.mClosed = true; this.mContentObservable.unregisterAll(); this.onDeactivateOrClose(); } }, { key: "copyStringToBuffer", value: function copyStringToBuffer() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var buffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var result = this.getString(columnIndex); if (result) { var len = result.length; for (var i = 0; i < len; i++) { buffer[i] = result.getCharAt(i); } } } }, { key: "finalize", value: function finalize() { if (this.mSelfObserver && this.mSelfObserverRegistered) { //mContentResolver.unregisterContentObserver(mSelfObserver); } if (!this.mClosed) { this.close(); } } }, { key: "getBlob", value: function getBlob() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return null; } }, { key: "getColumnCount", value: function getColumnCount() { var columns = this.getColumnNames(); return columns.length; } }, { key: "getColumnIndex", value: function getColumnIndex() { var columnName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var periodIndex = columnName.lastIndexOf('.'); if (periodIndex !== -1) { console.log("requesting column name with table name -- " + columnName); columnName = columnName.substring(periodIndex + 1); } var columnNames = this.getColumnNames(); var length = columnNames.length; for (var i = 0; i < length; i++) { var column = columnNames[i]; if (column.toLowerCase() === columnName.toLowerCase()) { return i; } } if (this.getCount() > 0) { console.log("Unknown column " + columnName); } return -1; } }, { key: "getColumnIndexOrThrow", value: function getColumnIndexOrThrow() { var columnName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var index = this.getColumnIndex(columnName); if (index < 0) { throw new ReferenceError("IllegalArgumentException column '" + columnName + "' does not exist"); } return index; } }, { key: "getColumnName", value: function getColumnName() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var columns = this.getColumnNames(); return columns[columnIndex] || null; } }, { key: "getColumnNames", value: function getColumnNames() { return null; } }, { key: "getCount", value: function getCount() { return 0; } }, { key: "getDouble", value: function getDouble() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return 0.0; } }, { key: "getFloat", value: function getFloat() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return 0; } }, { key: "getInt", value: function getInt() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return 0; } }, { key: "getLong", value: function getLong() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return 0; } }, { key: "getPosition", value: function getPosition() { return this.mPos; } }, { key: "getShort", value: function getShort() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return 0; } }, { key: "getString", value: function getString() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return null; } }, { key: "getType", value: function getType() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return Cursor.FIELD_TYPE_STRING; } }, { key: "getUpdatedField", value: function getUpdatedField() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return null; } }, { key: "isAfterLast", value: function isAfterLast() { var count = this.getCount(); if (count === 0) { return true; } return this.mPos === count; } }, { key: "isBeforeFirst", value: function isBeforeFirst() { var count = this.getCount(); if (count === 0) { return true; } return this.mPos === -1; } }, { key: "isClosed", value: function isClosed() { return this.mClosed; } }, { key: "isFieldUpdated", value: function isFieldUpdated() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return false; } }, { key: "isFirst", value: function isFirst() { return this.mPos === 0 && this.getCount() !== 0; } }, { key: "isLast", value: function isLast() { var count = this.getCount(); return this.mPos === count - 1 && count !== 0; } }, { key: "isNull", value: function isNull() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return false; } }, { key: "move", value: function move() { var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.moveToPosition(this.mPos + offset); } }, { key: "moveToFirst", value: function moveToFirst() { return this.moveToPosition(0); } }, { key: "moveToLast", value: function moveToLast() { return this.moveToPosition(this.getCount() - 1); } }, { key: "moveToNext", value: function moveToNext() { return this.moveToPosition(this.mPos + 1); } }, { key: "moveToPosition", value: function moveToPosition() { var position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var count = this.getCount(); if (position >= count) { this.mPos = count; return false; } if (position < 0) { this.mPos = -1; return false; } if (position === this.mPos) { return true; } var result = this.onMove(this.mPos, position); if (!result) { this.mPos = -1; } else { this.mPos = position; } return result; } }, { key: "moveToPrevious", value: function moveToPrevious() { return this.moveToPosition(this.mPos - 1); } }, { key: "onChange", value: function onChange() { var selfChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; this.mContentObservable.dispatchChange(selfChange, null); } }, { key: "onDeactivateOrClose", value: function onDeactivateOrClose() { if (this.mSelfObserver) { this.mSelfObserverRegistered = false; } this.mDataSetObservable.notifyInvalidated(); } }, { key: "onMove", value: function onMove() { var oldPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1; var newPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; return true; } }, { key: "registerContentObserver", value: function registerContentObserver(observer) { this.mContentObservable.registerObserver(observer); } }, { key: "registerDataSetObserver", value: function registerDataSetObserver(observer) { this.mDataSetObservable.registerObserver(observer); } }, { key: "requery", value: function requery() { if (this.mSelfObserver && this.mSelfObserverRegistered === false) { this.mSelfObserverRegistered = true; } this.mDataSetObservable.notifyChanged(); return true; } }, { key: "unregisterContentObserver", value: function unregisterContentObserver(observer) { if (!this.mClosed) { this.mContentObservable.unregisterObserver(observer); } } }, { key: "unregisterDataSetObserver", value: function unregisterDataSetObserver(observer) { this.mDataSetObservable.unregisterObserver(observer); } }]); return Cursor; }(); Cursor.FIELD_TYPE_NULL = 0; Cursor.FIELD_TYPE_INTEGER = 1; Cursor.FIELD_TYPE_FLOAT = 2; Cursor.FIELD_TYPE_STRING = 3; Cursor.FIELD_TYPE_BLOB = 4; var ExecCursor = exports.ExecCursor = function (_Cursor) { (0, _inherits3.default)(ExecCursor, _Cursor); function ExecCursor() { var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, database = _ref2.database, _ref2$tableInfo = _ref2.tableInfo, tableInfo = _ref2$tableInfo === undefined ? null : _ref2$tableInfo, resultSet = _ref2.resultSet; (0, _classCallCheck3.default)(this, ExecCursor); var _this2 = (0, _possibleConstructorReturn3.default)(this, (ExecCursor.__proto__ || (0, _getPrototypeOf2.default)(ExecCursor)).call(this)); if (!database) { throw new ReferenceError("IllegalArgumentException database object cannot be null"); } if (!resultSet) { throw new ReferenceError("IllegalArgumentException resultSet object cannot be null"); } _this2.mColumnNameMap = null; _this2.mDatabase = database; _this2.mResultSet = resultSet; var table = tableInfo; if (table) { _this2.mColumns = table.getColumnNames(); } else { _this2.mColumns = []; var len = _this2.mResultSet.rows.length; for (var i = 0; i < len; i++) { var row = _this2.mResultSet.rows[i]; for (var p in row) { if (row.hasOwnProperty(p)) { _this2.mColumns.push(p); } } } } return _this2; } (0, _createClass3.default)(ExecCursor, [{ key: "fillWindow", value: function fillWindow() { var requiredPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var len = this.mResultSet.rows.length; if (this.mCount === SQLiteCursor.NO_COUNT) { this.mRows = []; var num = len; var rows = this.mResultSet.rows; for (var i = requiredPos; i < len; i++) { var row = rows[i]; if (row) { this.mRows[i] = row; } else { num--; } } this.mCount = num; } else { this.mCount = len - requiredPos; this.mRows = this.mRows.splice(requiredPos, this.mCount); } console.log("received count(*) from fillWindow: " + this.mCount); } }, { key: "getBlob", value: function getBlob() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); var value = this.getValue(columnIndex); return _helper.Hex.hexToArrayBuffer(value); } }, { key: "getColumnIndex", value: function getColumnIndex() { var columnName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; if (!this.mColumnNameMap) { var columns = this.mColumns; var columnCount = columns.length; var map = {}; var rows = this.mResultSet.rows; for (var _i = 0; _i < columnCount; _i++) { map[columns[_i]] = _i; } this.mColumnNameMap = map; } var periodIndex = columnName.lastIndexOf('.'); if (periodIndex !== -1) { console.log("requesting column name with table name -- " + columnName); columnName = columnName.substring(periodIndex + 1); } var i = this.mColumnNameMap[columnName]; if (i !== null || i !== undefined) { return i; } return -1; } }, { key: "getColumnNames", value: function getColumnNames() { return this.mColumns; } }, { key: "getCount", value: function getCount() { if (this.mCount === SQLiteCursor.NO_COUNT) { this.fillWindow(0); } return this.mCount; } }, { key: "getDatabase", value: function getDatabase() { return this.mDatabase; } }, { key: "getDouble", value: function getDouble() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getFloat", value: function getFloat() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getInt", value: function getInt() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getLong", value: function getLong() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getShort", value: function getShort() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getString", value: function getString() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getType", value: function getType() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return _helper.DatabaseUtils.getTypeOfObject(this.getValue(columnIndex)); } }, { key: "getValue", value: function getValue() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var row = this.mResultSet.rows[this.mPos]; return row[this.mColumns[columnIndex]]; } }, { key: "insertId", value: function insertId() { try { return this.mResultSet.insertId; } catch (e) { return -1; } } }, { key: "isBlob", value: function isBlob() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_BLOB; } }, { key: "isFloat", value: function isFloat() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_FLOAT; } }, { key: "isInt", value: function isInt() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_INTEGER; } }, { key: "isNull", value: function isNull() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_NULL; } }, { key: "isString", value: function isString() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_STRING; } }, { key: "onMove", value: function onMove() { var oldPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1; var newPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; if (!this.mRows || newPosition >= this.mRows.length) { this.fillWindow(newPosition); } return true; } }, { key: "requery", value: function requery() { if (this.mRows) { this.mRows = []; } this.mPos = -1; this.mCount = SQLiteCursor.NO_COUNT; } }, { key: "rowsAffected", value: function rowsAffected() { return this.mResultSet.rowsAffected; } }, { key: "setWindow", value: function setWindow() { var resultSet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.mResultSet = resultSet; this.mCount = SQLiteCursor.NO_COUNT; } }]); return ExecCursor; }(Cursor); var SQLiteCursor = exports.SQLiteCursor = function (_Cursor2) { (0, _inherits3.default)(SQLiteCursor, _Cursor2); function SQLiteCursor() { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, driver = _ref3.driver, editTable = _ref3.editTable, query = _ref3.query, resultSet = _ref3.resultSet; (0, _classCallCheck3.default)(this, SQLiteCursor); var _this3 = (0, _possibleConstructorReturn3.default)(this, (SQLiteCursor.__proto__ || (0, _getPrototypeOf2.default)(SQLiteCursor)).call(this)); if (!query) { throw new ReferenceError("IllegalArgumentException query object cannot be null"); } if (!resultSet) { throw new ReferenceError("IllegalArgumentException resultSet object cannot be null"); } _this3.mColumnNameMap = null; _this3.mDriver = driver; _this3.mEditTable = editTable; _this3.mQuery = query; _this3.mResultSet = resultSet; _this3.mColumns = query.getColumnNames(); return _this3; } (0, _createClass3.default)(SQLiteCursor, [{ key: "fillWindow", value: function fillWindow() { var requiredPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var len = this.mResultSet.rows.length; if (this.mCount === SQLiteCursor.NO_COUNT) { this.mRows = []; var num = len; var rows = this.mResultSet.rows; for (var i = requiredPos; i < len; i++) { var row = rows[i]; if (row) { this.mRows[i] = rows[i]; } else { num--; } } this.mCount = num; } else { this.mCount = len - requiredPos; this.mRows = this.mRows.splice(requiredPos, this.mCount); } console.log("received count(*) from fillWindow: " + this.mCount); } }, { key: "getBlob", value: function getBlob() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); var value = this.getValue(columnIndex); return _helper.Hex.hexToArrayBuffer(value); } }, { key: "getColumnIndex", value: function getColumnIndex() { var columnName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; if (!this.mColumnNameMap) { var columns = this.mColumns; var columnCount = columns.length; var map = {}; var rows = this.mResultSet.rows; for (var _i2 = 0; _i2 < columnCount; _i2++) { map[columns[_i2]] = _i2; } this.mColumnNameMap = map; } var periodIndex = columnName.lastIndexOf('.'); if (periodIndex !== -1) { console.log("requesting column name with table name -- " + columnName); columnName = columnName.substring(periodIndex + 1); } var i = this.mColumnNameMap[columnName]; if (i !== null || i !== undefined) { return i; } return -1; } }, { key: "getColumnNames", value: function getColumnNames() { return this.mColumns; } }, { key: "getCount", value: function getCount() { if (this.mCount === SQLiteCursor.NO_COUNT) { this.fillWindow(0); } return this.mCount; } }, { key: "getDouble", value: function getDouble() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getFloat", value: function getFloat() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getInt", value: function getInt() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getLong", value: function getLong() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getShort", value: function getShort() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getString", value: function getString() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }, { key: "getType", value: function getType() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return _helper.DatabaseUtils.getTypeOfObject(this.getValue(columnIndex)); } }, { key: "getValue", value: function getValue() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var row = this.mResultSet.rows[this.mPos]; return row[this.mColumns[columnIndex]]; } }, { key: "insertId", value: function insertId() { try { return this.mResultSet.insertId; } catch (e) { return -1; } } }, { key: "isBlob", value: function isBlob() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_BLOB; } }, { key: "isFloat", value: function isFloat() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_FLOAT; } }, { key: "isInt", value: function isInt() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_INTEGER; } }, { key: "isNull", value: function isNull() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_NULL; } }, { key: "isString", value: function isString() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return this.getType(columnIndex) === Cursor.FIELD_TYPE_STRING; } }, { key: "onMove", value: function onMove() { var oldPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1; var newPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; if (!this.mRows || newPosition >= this.mRows.length) { this.fillWindow(newPosition); } return true; } }, { key: "requery", value: function requery() { if (this.mRows) { this.mRows = []; } this.mPos = -1; this.mCount = SQLiteCursor.NO_COUNT; } }, { key: "rowsAffected", value: function rowsAffected() { return this.mResultSet.rowsAffected; } }, { key: "setSelectionArguments", value: function setSelectionArguments() { var selectionArgs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; this.mDriver.setBindArguments(selectionArgs); } }, { key: "setWindow", value: function setWindow() { var resultSet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.mResultSet = resultSet; this.mCount = SQLiteCursor.NO_COUNT; } }]); return SQLiteCursor; }(Cursor); SQLiteCursor.NO_COUNT = -1; var CursorFactory = exports.CursorFactory = function (_SQLiteListener) { (0, _inherits3.default)(CursorFactory, _SQLiteListener); function CursorFactory() { var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref4$onHandleEvent = _ref4.onHandleEvent, onHandleEvent = _ref4$onHandleEvent === undefined ? null : _ref4$onHandleEvent, _ref4$newCursor = _ref4.newCursor, newCursor = _ref4$newCursor === undefined ? null : _ref4$newCursor; (0, _classCallCheck3.default)(this, CursorFactory); var _this4 = (0, _possibleConstructorReturn3.default)(this, (CursorFactory.__proto__ || (0, _getPrototypeOf2.default)(CursorFactory)).call(this, { onHandleEvent: onHandleEvent })); if (newCursor) { _this4.newCursor = newCursor; } return _this4; } (0, _createClass3.default)(CursorFactory, [{ key: "newCursor", value: function newCursor() { var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _objectDestructuringEmpty3.default)(_ref5); return new SQLiteCursor({}); } }, { key: "getDatabase", value: function getDatabase() { return this.mQuery.getDatabase(); } }, { key: "getDouble", value: function getDouble() { var columnIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; this.checkPosition(); return this.getValue(columnIndex); } }]); return CursorFactory; }(_event.SQLiteListener); var CursorLoader = exports.CursorLoader = function (_AsyncTaskLoader) { (0, _inherits3.default)(CursorLoader, _AsyncTaskLoader); function CursorLoader() { var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, id = _ref6.id, context = _ref6.context, listener = _ref6.listener, executor = _ref6.executor, database = _ref6.database, _ref6$editTable = _ref6.editTable, editTable = _ref6$editTable === undefined ? "" : _ref6$editTable, _ref6$projection = _ref6.projection, projection = _ref6$projection === undefined ? [] : _ref6$projection, _ref6$selection = _ref6.selection, selection = _ref6$selection === undefined ? "" : _ref6$selection, _ref6$selectionArgs = _ref6.selectionArgs, selectionArgs = _ref6$selectionArgs === undefined ? [] : _ref6$selectionArgs, _ref6$groupBy = _ref6.groupBy, groupBy = _ref6$groupBy === undefined ? "" : _ref6$groupBy, _ref6$having = _ref6.having, having = _ref6$having === undefined ? "" : _ref6$having, _ref6$sortOrder = _ref6.sortOrder, sortOrder = _ref6$sortOrder === undefined ? "" : _ref6$sortOrder, _ref6$limit = _ref6.limit, limit = _ref6$limit === undefined ? "" : _ref6$limit; (0, _classCallCheck3.default)(this, CursorLoader); var _this5 = (0, _possibleConstructorReturn3.default)(this, (CursorLoader.__proto__ || (0, _getPrototypeOf2.default)(CursorLoader)).call(this, { id: id, context: context, listener: listener, executor: executor })); _this5.mDatabase = database; _this5.mTables = editTable; _this5.mProjection = projection; _this5.mSelection = selection; _this5.mSelectionArgs = selectionArgs; _this5.mGroupBy = groupBy; _this5.mHaving = having; _this5.mSortOrder = sortOrder; _this5.mLimit = limit; return _this5; } (0, _createClass3.default)(CursorLoader, [{ key: "deliverResult", value: function deliverResult() { var cursor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; if (this.isReset()) { if (cursor) { cursor.close(); } return; } var oldCursor = this.mCursor; this.mCursor = cursor; if (this.isStarted()) { (0, _get3.default)(CursorLoader.prototype.__proto__ || (0, _getPrototypeOf2.default)(CursorLoader.prototype), "deliverResult", this).call(this, cursor); } if (oldCursor && oldCursor !== cursor && !oldCursor.isClosed()) { oldCursor.close(); } } }, { key: "loadInBackground", value: function loadInBackground(task) { if (this.isLoadInBackgroundCanceled()) { throw new Error("OperationCanceledException"); } var qb = new _query.SQLiteQueryBuilder(); qb.setTables(this.mTables); qb.setDistinct(this.mDistinct); qb.query({ database: this.mDatabase, projectionIn: this.mProjection, selection: this.mSelection, selectionArgs: this.mSelectionArgs, groupBy: this.mGroupBy, having: this.mHaving, sortOrder: this.mSortOrder, limit: this.mLimit, adapter: new SQLiteTransactionAdapter({ begin: function begin(session) {}, commit: function commit(session, cursor) { cursor.getCount(); task.notify(cursor); }, rollback: function rollback(session, error) { task.cancel(); } }) }); } }, { key: "onCanceled", value: function onCanceled() { var cursor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; if (cursor && !cursor.isClosed()) { cursor.close(); } } }, { key: "onReset", value: function onReset() { (0, _get3.default)(CursorLoader.prototype.__proto__ || (0, _getPrototypeOf2.default)(CursorLoader.prototype), "onReset", this).call(this); this.onStopLoading(); if (this.mCursor && !this.mCursor.isClosed()) { this.mCursor.close(); } this.mCursor = null; } }, { key: "onStartLoading", value: function onStartLoading() { if (this.mCursor) { this.deliverResult(this.mCursor); } if (this.takeContentChanged() || !this.mCursor) { this.forceLoad(); } } }, { key: "onStopLoading", value: function onStopLoading() { this.cancelLoad(); } }]); return CursorLoader; }(_loader.AsyncTaskLoader);