/**
* Copyright© 2016, Oracle and/or its affiliates. All rights reserved.
*/
/**
* Base class for MobileObject, MobileCollection and MobileFile.
* @abstract
* @constructor
* @global
*/
function MobileResource(endpoint, uri) {
if (this.constructor === MobileResource) {
throw new Error("Can't instantiate abstract class!");
}
var _uri = uri;
var _endpoint = endpoint;
this._getEndpoint = function(){
return _endpoint;
};
this._getMcsId = function(){
return _uri ? _uri.substring(_uri.lastIndexOf('/') + 1, _uri.length) : null;
};
this._getMcsURI = function(){
return _uri;
};
// TODO: next version release
// /**
// * The time that this resource was last synchronized, null if it was never synchronized ex if it was just created locally.
// * @type {Date}
// * @readonly
// */
// this.lastSyncTime = null;
// Object.defineProperty(this, "lastSyncTime", {
// get: function() {
// return this._syncResource == null ? null : new Date(this._syncResource.lastSyncTime);
// }
// });
// TODO: next version release
// /**
// * Returns true if the resource has pending offline updates, false otherwise.
// * @type {Boolean}
// * @readonly
// */
// Object.defineProperty(this, "hasOfflineUpdates", {
// get: function() {
// return this._syncResource != null && this._syncResource.offlineState != mcs._OfflineState.noOfflineUpdates;
// }
// });
// TODO: next version release
// /**
// * Returns true if this resource is pinned, false otherwise.
// * @type {Boolean}
// * @readonly
// */
// this.isPinned = null;
// Object.defineProperty(this, "isPinned", {
// get: function() {
// return this._syncResource == null ? false : this._syncResource.pinState != mcs._PinState.unpinned;
// }
// });
// TODO: next version release
// /**
// * Callback invoked after successfully pinning or unpinning.
// * @callback MobileResource~successCallback
// * @param mobileObject {MobileObject} The saved MobileObject instance which the server may have updated.
// */
//
// /**
// * Callback invoked on error.
// * @callback MobileResource~errorCallback
// * @param statusCode {Number} Any HTTP status code returned from the server, if available.
// * @param headers {Array} The HTTP headers returned from the server, if available.
// * @param message {String} The HTTP payload from the server, if available, or an error message.
// */
//
// /**
// * Pins this resource so that it will be available for offline access. Pinned resources are available for offline
// * access and can be synchronized in a batch by calling [SynchronizePinnedResources]{@link Synchronizer#SynchronizePinnedResources}.
// * @param successCallback {MobileResource~successCallback} Callback invoked on success.
// * @param errorCallback {MobileResource~errorCallback} Callback invoked on error.
// */
// this.pin = function(successCallback, errorCallback) {
// if(this._syncResource != null) {
// this._getEndpoint().synchronization._pin(this._syncResource, successCallback, errorCallback);
// }
// };
// TODO: next version release
// /**
// * Unpins this resource.
// * @param successCallback {MobileResource~successCallback} Callback invoked on success.
// * @param errorCallback {MobileResource~errorCallback} Callback invoked on error.
// */
// this.unpin = function(successCallback, errorCallback) {
// if(this._syncResource != null) {
// this._getEndpoint().synchronization._unpin(this._syncResource, successCallback, errorCallback);
// }
// };
// TODO: next version release
// /**
// * Discards any udpates made to this resource and reloads the data.
// * @param discardOfflineUpdates {Boolean} If true will delete all offline updates from the cache.
// * @param reloadFromService {Boolean} If true will reload from the service if online or from the cache if offline.
// * @param successCallback {MobileResource~successCallback} Callback invoked on success.
// * @param errorCallback {MobileResource~errorCallback} Callback invoked on error.
// */
// this.reload = function(discardOfflineUpdates, reloadFromService, successCallback, errorCallback) {
// this._getEndpoint()._reload(this._type == mcs._SyncResourceType.file, this, discardOfflineUpdates, reloadFromService, successCallback, errorCallback);
// };
}