source: Dev/branches/rest-dojo-ui/client/dojo/data/api/Identity.js @ 256

Last change on this file since 256 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

File size: 4.3 KB
Line 
1define(["../..", "./Read"], function(dojo) {
2        // module:
3        //              dojo/data/api/Identity
4        // summary:
5        //              TODOC
6
7
8dojo.declare("dojo.data.api.Identity", dojo.data.api.Read, {
9        //      summary:
10        //              This is an abstract API that data provider implementations conform to.
11        //              This file defines methods signatures and intentionally leaves all the
12        //              methods unimplemented.
13
14        getFeatures: function(){
15                //      summary:
16                //              See dojo.data.api.Read.getFeatures()
17                return {
18                         'dojo.data.api.Read': true,
19                         'dojo.data.api.Identity': true
20                };
21        },
22
23        getIdentity: function(/* item */ item){
24                //      summary:
25                //              Returns a unique identifier for an item.  The return value will be
26                //              either a string or something that has a toString() method (such as,
27                //              for example, a dojox.uuid.Uuid object).
28                //      item:
29                //              The item from the store from which to obtain its identifier.
30                //      exceptions:
31                //              Conforming implementations may throw an exception or return null if
32                //              item is not an item.
33                //      example:
34                //      |       var itemId = store.getIdentity(kermit);
35                //      |       assert(kermit === store.findByIdentity(store.getIdentity(kermit)));
36                throw new Error('Unimplemented API: dojo.data.api.Identity.getIdentity');
37        },
38
39        getIdentityAttributes: function(/* item */ item){
40                //      summary:
41                //              Returns an array of attribute names that are used to generate the identity.
42                //              For most stores, this is a single attribute, but for some complex stores
43                //              such as RDB backed stores that use compound (multi-attribute) identifiers
44                //              it can be more than one.  If the identity is not composed of attributes
45                //              on the item, it will return null.  This function is intended to identify
46                //              the attributes that comprise the identity so that so that during a render
47                //              of all attributes, the UI can hide the the identity information if it
48                //              chooses.
49                //      item:
50                //              The item from the store from which to obtain the array of public attributes that
51                //              compose the identifier, if any.
52                //      example:
53                //      |       var itemId = store.getIdentity(kermit);
54                //      |       var identifiers = store.getIdentityAttributes(itemId);
55                //      |       assert(typeof identifiers === "array" || identifiers === null);
56                throw new Error('Unimplemented API: dojo.data.api.Identity.getIdentityAttributes');
57        },
58
59
60        fetchItemByIdentity: function(/* object */ keywordArgs){
61                //      summary:
62                //              Given the identity of an item, this method returns the item that has
63                //              that identity through the onItem callback.  Conforming implementations
64                //              should return null if there is no item with the given identity.
65                //              Implementations of fetchItemByIdentity() may sometimes return an item
66                //              from a local cache and may sometimes fetch an item from a remote server,
67                //
68                //      keywordArgs:
69                //              An anonymous object that defines the item to locate and callbacks to invoke when the
70                //              item has been located and load has completed.  The format of the object is as follows:
71                //              {
72                //                      identity: string|object,
73                //                      onItem: Function,
74                //                      onError: Function,
75                //                      scope: object
76                //              }
77                //      The *identity* parameter.
78                //              The identity parameter is the identity of the item you wish to locate and load
79                //              This attribute is required.  It should be a string or an object that toString()
80                //              can be called on.
81                //
82                //      The *onItem* parameter.
83                //              Function(item)
84                //              The onItem parameter is the callback to invoke when the item has been loaded.  It takes only one
85                //              parameter, the item located, or null if none found.
86                //
87                //      The *onError* parameter.
88                //              Function(error)
89                //              The onError parameter is the callback to invoke when the item load encountered an error.  It takes only one
90                //              parameter, the error object
91                //
92                //      The *scope* parameter.
93                //              If a scope object is provided, all of the callback functions (onItem,
94                //              onError, etc) will be invoked in the context of the scope object.
95                //              In the body of the callback function, the value of the "this"
96                //              keyword will be the scope object.   If no scope object is provided,
97                //              the callback functions will be called in the context of dojo.global.
98                //              For example, onItem.call(scope, item, request) vs.
99                //              onItem.call(dojo.global, item, request)
100                if(!this.isItemLoaded(keywordArgs.item)){
101                        throw new Error('Unimplemented API: dojo.data.api.Identity.fetchItemByIdentity');
102                }
103        }
104});
105
106return dojo.data.api.Identity;
107});
Note: See TracBrowser for help on using the repository browser.