hazelcast-client
Version:
Hazelcast - open source In-Memory Data Grid - client for NodeJS
76 lines • 2.35 kB
JavaScript
var Long = require('long');
var Predicate_1 = require('./core/Predicate');
var assert = require('assert');
function assertNotNull(v) {
if (v == null) {
throw new RangeError('Null or undefined is not allowed here.');
}
}
exports.assertNotNull = assertNotNull;
function getType(obj) {
if (obj === null) {
return null;
}
else if (Long.isLong(obj)) {
return 'long';
}
else {
var t = typeof obj;
if (t !== 'object') {
return t;
}
else {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
}
}
exports.getType = getType;
function enumFromString(enumType, value) {
return enumType[value];
}
exports.enumFromString = enumFromString;
function getSortedQueryResultSet(list, predicate) {
if (list.length === 0) {
return list;
}
var comparatorObject = predicate.getComparator();
if (comparatorObject != null) {
list.sort(comparatorObject.sort.bind(comparatorObject));
}
var nearestAnchorEntry = (predicate == null) ? null : predicate.getNearestAnchorEntry();
var nearestPage = nearestAnchorEntry[0];
var page = predicate.getPage();
var pageSize = predicate.getPageSize();
var begin = pageSize * (page - nearestPage - 1);
var size = list.length;
if (begin > size) {
return [];
}
var end = begin + pageSize;
if (end > size) {
end = size;
}
setAnchor(list, predicate, nearestPage);
var iterationType = predicate.getIterationType();
return list.slice(begin, end).map(function (item) {
switch (iterationType) {
case Predicate_1.IterationType.ENTRY: return item;
case Predicate_1.IterationType.KEY: return item[0];
case Predicate_1.IterationType.VALUE: return item[1];
}
});
}
exports.getSortedQueryResultSet = getSortedQueryResultSet;
function setAnchor(list, predicate, nearestPage) {
assert(list.length > 0);
var size = list.length;
var pageSize = predicate.getPageSize();
var page = predicate.getPage();
for (var i = pageSize; i <= size && nearestPage < page; i += pageSize) {
var anchor = list[i - 1];
nearestPage++;
predicate.setAnchor(nearestPage, anchor);
}
}
//# sourceMappingURL=Util.js.map
;