// WebAPIException and WebAPIError definition moved to src/utils/utils_api.js
// for compliance reasons. You can find more info there.
-/**
- * Filter match flags.
- * @enum {string}
- */
var FilterMatchFlag = {
EXACTLY: 'EXACTLY',
FULLSTRING: 'FULLSTRING',
EXISTS: 'EXISTS'
};
-/**
- * An enumerator that indicates the sorting order.
- * @enum {string}
- */
var SortModeOrder = {
ASC: 'ASC',
DESC: 'DESC'
};
-/**
- * An enumerator that indicates the type of composite filter.
- * @enum {string}
- */
var CompositeFilterType = {
UNION: 'UNION',
INTERSECTION: 'INTERSECTION'
return obj;
}
-/**
- * This is a common interface used by different types of object filters.
- */
var AbstractFilter = function() {};
-/**
- * Represents a set of filters.
- */
exports.AttributeFilter = function(attrName, matchFlag, matchValue) {
xwalk.utils.validator.isConstructorCall(this, exports.AttributeFilter);
};
exports.AttributeFilter.prototype = new AbstractFilter();
-//TODO: Move filtering to native code
-exports.AttributeFilter.prototype._filter = function(element) {
- var elemValue = _extractProperty(element, this.attributeName);
-
- if (!(elemValue instanceof Array)) {
- elemValue = [elemValue];
- }
-
- var ret = false;
- for (var i = 0; i < elemValue.length; ++i) {
- var elemValueStr = String(elemValue[i]);
- var elemValueStrU = elemValueStr.toUpperCase();
- var matchValueStr = String(this.matchValue);
- var matchValueStrU = matchValueStr.toUpperCase();
-
- switch (this.matchFlag) {
- case 'EXACTLY':
- ret = elemValue[i] === this.matchValue;
- break;
- case 'FULLSTRING':
- ret = elemValueStrU === matchValueStrU;
- break;
- case 'CONTAINS':
- ret = elemValueStrU.indexOf(matchValueStrU) > -1;
- break;
- case 'STARTSWITH':
- ret = elemValueStrU.indexOf(matchValueStrU) === 0;
- break;
- case 'ENDSWITH':
- ret =
- elemValueStrU.lastIndexOf(matchValueStrU) + matchValueStrU.length ===
- elemValueStrU.length;
- break;
- case 'EXISTS':
- ret = elemValue[i] !== undefined;
- break;
- }
- if (ret) {
- return ret;
- }
- }
- return ret;
-};
exports.AttributeFilter.prototype.constructor = exports.AttributeFilter;
-/**
- * Represents a filter based on an object attribute which has values that are
- * within a particular range.
- */
exports.AttributeRangeFilter = function(attrName, start, end) {
xwalk.utils.validator.isConstructorCall(this, exports.AttributeRangeFilter);
exports.AttributeRangeFilter.prototype = new AbstractFilter();
-//TODO: Move filtering to native code
-exports.AttributeRangeFilter.prototype._filter = function(element) {
- var elemValue = _extractProperty(element, this.attributeName);
-
- if (!(elemValue instanceof Array)) {
- elemValue = [elemValue];
- }
-
- for (var i = 0; i < elemValue.length; ++i) {
- var value = elemValue[i];
-
- if (
- this.initialValue !== undefined &&
- this.initialValue !== null &&
- (this.endValue !== undefined && this.endValue !== null)
- ) {
- if (value instanceof tizen.TZDate) {
- if (
- this.initialValue.earlierThan(value) &&
- this.endValue.laterThan(value)
- ) {
- return true;
- }
- } else {
- if (this.initialValue <= value && this.endValue > value) {
- return true;
- }
- }
- } else if (
- this.initialValue !== undefined &&
- this.initialValue !== null &&
- (this.endValue === undefined || this.endValue === null)
- ) {
- if (value instanceof tizen.TZDate) {
- if (this.initialValue.earlierThan(value)) {
- return true;
- }
- } else {
- if (this.initialValue <= value) {
- return true;
- }
- }
- } else if (
- (this.initialValue === undefined || this.initialValue === null) &&
- (this.endValue !== undefined && this.endValue !== null)
- ) {
- if (value instanceof tizen.TZDate) {
- if (this.endValue.laterThan(value)) {
- return true;
- }
- } else {
- if (this.endValue > value) {
- return true;
- }
- }
- }
- }
- return false;
-};
-
exports.AttributeRangeFilter.prototype.constructor = exports.AttributeRangeFilter;
-/**
- * Represents a set of filters.
- */
exports.CompositeFilter = function(type, filters) {
xwalk.utils.validator.isConstructorCall(this, exports.CompositeFilter);
exports.CompositeFilter.prototype = new AbstractFilter();
-//TODO: Move filtering to native code
-exports.CompositeFilter.prototype._filter = function(element) {
- var filters = this.filters;
- if (this.type === 'UNION') {
- for (var i = 0; i < filters.length; ++i) {
- if (filters[i]._filter(element)) {
- return true;
- }
- }
- return false;
- } else if (this.type === 'INTERSECTION') {
- if (filters.length === 0) return false;
- for (var i = 0; i < filters.length; ++i) {
- if (!filters[i]._filter(element)) {
- return false;
- }
- }
- return true;
- }
-};
-
exports.CompositeFilter.prototype.constructor = exports.CompositeFilter;
-/**
- * SortMode is a common interface used for sorting of queried data.
- */
exports.SortMode = function(attrName, order) {
xwalk.utils.validator.isConstructorCall(this, exports.SortMode);
};
exports.SortMode.prototype.constructor = exports.SortMode;
-/**
- * Represents a point (latitude and longitude) in the map coordinate system.
- */
exports.SimpleCoordinates = function(lat, lng) {
xwalk.utils.validator.isConstructorCall(this, exports.SimpleCoordinates);