/** * Copyright© 2016, Oracle and/or its affiliates. All rights reserved. */ /** * Class that exposes fluent APIs for fetching objects from an API endpoint. * @constructor * @global */ function FetchCollectionBuilder(endpoint, json){ var _endpoint = endpoint; var _fetchFromService = false; // TODO: next version // var _listenForCacheChanges = false; // var _policy = null; var _offset = -1; var _limit = -1; var _fetchAll = false; var _withParams = {}; var _withHeaders = {}; // TODO: next version // var _sortBys = {}; // var _queryClauses = []; // TODO: next version // if(json){ // _loadFrom(json); // } // TODO: next version // this.fromService = function(){ // if(_policy){ // throw new Error('Can\'t specify FromService and a SyncPolicy'); // } // _fetchFromService = true; // return _this; // }; // TODO: next version // this.withPolicy = function(policy){ // // }; // TODO: next version // this.withParam = function(name, value){ // // if(!name){ // throw new Error('Wrong name argument'); // } // // if(!value){ // throw new Error('Wrong value argument'); // } // // if(_withParams[name]){ // throw new Error('Duplicate param'); // } // // _withParams[name] = value; // // return _this; // }; // TODO: next version // this.withHeader = function(name, value){ // // if(!name){ // throw new Error('Wrong name argument'); // } // // if(!value){ // throw new Error('Wrong value argument'); // } // // if(_withHeaders[name]){ // throw new Error('Duplicate header'); // } // // _withHeaders[name] = value; // // return _this; // }; // TODO: next version // this.sortByAscending = function(name){ // // }; // // this.sortByDescending = function(name){ // // }; // TODO: next version // this.offset = function(offset){ // if(_fetchAll){ // throw new Error('An offset can\'t be specified if an fetch all is specified'); // } // if(offset < 0){ // throw new Error('Wrong offset argument'); // } // _offset = offset; // return _this; // }; // TODO: next version // this.limit = function(limit){ // if(limit <= 0){ // throw new Error('Wrong limit argument'); // } // _limit = limit; // return _this; // }; // TODO: next version // this.fetchAllPages = function (){ // if(_offset >= 0){ // throw new Error('FetchAllPages can\'t be specified if an offset is specified'); // } // _fetchAll = true; // return _this; // }; // TODO: next version // this.queryFor = function(name, comparison, value){ // // }; // TODO: next version // this.listenForChanges = function(){ // // }; /** * Executes the fetch and returns the results. * @return {Promise.<MobileObjectCollection|NetworkResponse>} */ this.execute = function(){ return _endpoint._executeFetchObjects(_withHeaders, _withParams, _fetchAll, _offset, _limit, _fetchFromService); }; // TODO: next version // function _loadFrom(json){ // _offset = json.offset; // _limit = json.limit; // _fetchAll = json.fetchAll; // _fetchFromService = json.fetchFromService; // _withParams = json.withParams;// TODO: {name:value} // _withHeaders = json.withHeaders;// TODO: {name:value} // _sortBys = json.sortBys;// TODO: {name:ascending} // _queryClauses = json.queryClauses;// TODO: [{name:name,type:type,comparison:comparison,value:value}] // } }