module:store/EntryStore

module:store/EntryStore

EntryStore is the main class that is used to connect to a running server-side EntryStore repository.

Constructor

new (require("store/EntryStore"))(baseURIopt, credentialsopt)

Source:
Parameters:
Name Type Attributes Description
baseURI String <optional>

URL to the EntryStore repository we should communicate with, may be left out and guessed if run in a browser environment (appends "/" to the window.location.origin)

credentials Object <optional>

same as provided in the auth method.

Methods

(static) info()

Source:
To Do:
  • Needs support from EntryStore REST API
  • Document promise

Provides information about version of EntryStore repository, the javascript API, status of services etc.

addAsyncListener(listener)

Source:

Provides a listener that will be called for every asynchronous call being made. The handler is invoked with the promise from the asynchronous call and a callType parameter indicating which asynchronous call that has been made.

The callType parameter can take the following values:

  • getEntry - an entry is retrieved (EntryStore.getEntry)
  • createEntry - an entry is created (EntryStore.createEntry)
  • createGroupAndContext - a group and context pair is created (EntryStore.createGroupAndContext)
  • loadViaProxy - data is requested via repository proxy (EntryStore.loadViaProxy)
  • commitMetadata - changes to metadata is pushed (Entry.commitMetadata)
  • commitCachedExternalMetadata - changes to cached external metadata is pushed (Entry.commitCachedExternalMetadata)
  • getResource - the entry's resource has been requested (Entry.getResource)
  • getLinkedEntry - a linked entry is requested (Entry.getLinkedEntry)
  • delEntry - an entry is deleted (Entry.del)
  • refresh - an entry is refreshed (Entry.refresh)
  • setContextName - the name of a context is changed (Context.setName)
  • getUserInfo - the user information is requested (auth.getUserInfo)
  • getUserEntry - the user entry is requested (auth.getUserEntry)
  • login - logging in (auth.login)
  • logout - logging out (auth.logout)
  • commitEntryInfo - pushing changes in entry information (EntryInfo.commit)
  • getFile - the contents of a file resource is requested (File.get*)
  • putFile - the contents of a file is pushed (File.put*)
  • commitGraph - a graph resource is pushed (Graph.commit)
  • commitString - a string resource is pushed (String.commit)
  • setGroupName - a new name of a group is pushed (Group.setName)
  • setUserName - a new name of a user is pushed (User.setName)
  • setUserDisabled - a new disabled state of a user is pushed (User.setDisabled)
  • setUserLanguage - a new preferred language of the user is pushed (User.setLanguage)
  • setUserPassword - a new password for the user is pushed (User.setPassword)
  • setUserHomeContext - a new home context for the user is pushed (User.setHomeContext)
  • setUserCustomProperties - new custom properties for the user (User.setCustomProperties)
  • loadListEntries - members of a list are requested (List.getEntries)
  • setList - the list members are changed via a list
  • addToList - See List.addEntry
  • removeFromList - See List.removeEntry .removeEntry)
  • search - a search is being performed (SearchList.getEntries)
  • execute - a pipeline is executed (Pipeline.execute)
Parameters:
Name Type Description
listener Promise.<string>

auth(credentials)

Source:
Deprecated:
  • use corresponding method on auth object instead.

Authenticate using credentials containing a user, a password and an optional maxAge given in seconds.

Parameters:
Name Type Description
credentials Object

as a parameter object

(async) createEntry(prototypeEntry) → {Promise}

Source:
See:
  • PrototypeEntry#commit
  • EntryStore#newContext
  • EntryStore#newUser
  • EntryStore#newGroup
  • Context#newEntry
  • Context#newLink
  • Context#newLinkRef
  • Context#newRef
  • Context#newList
  • Context#newGraph
  • Context#newString

Creates a new entry according to information in the provided PrototypeEntry. The information specifies the type of entry, which context it should reside in, initial metadata etc. This method is seldom called explicitly, instead it is called indirectly via the PrototypeEntry#commit method. E.g.:

context.newEntry().commit().then(function(newlyCreatedEntry) {...}
Parameters:
Name Type Description
prototypeEntry PrototypeEntry

information about the entry to create.

Returns:
Type
Promise

(async) createGroupAndContext(name) → {Promise.<Entry>}

Source:
Parameters:
Name Type Description
name
Returns:
Type
Promise.<Entry>

createSearchList()

Source:
Deprecated:
  • use #newSolrQuery instead.

echoFile(data) → {Promise}

Source:
Deprecated:
  • files can be read in browsers so no need for echoFile

Pushes a file to the server and gets the result back immediately. Since browser environments cannot access the local filesystem, the only way to get the contents of a file is to "upload" it and get the contents back from the server. EntryStore provides the "echo" resource to provide this workaround.

In a browser environment a file is represented via an input element which references the file to be uploaded via its value attribute. E.g.:

  <input type="file" name="uploadFile"/>

During the uploading process the input tag will be moved temporarily in the DOM tree, it will be restored to its original position afterwards (both upon success and failure).

Parameters:
Name Type Description
data node

input element corresponding to the file to upload (echo).

Returns:
Type
Promise

getAuth() → {Auth}

Source:
Returns:

where functionality related to authorization are located, including a listener infrastructure.

Type
Auth

getBaseURI() → {String}

Source:

The base URI of the EntryStore repository we have connected to.

Returns:
Type
String

getCache() → {Cache}

Source:

The cache where all entries are cached after loading.

Returns:
Type
Cache

getCachedContextsIdx() → {Object}

Source:
Returns:
Type
Object

getContext(contextEntryURI) → {Context}

Source:
See:
  • getContextById

Retrieves a Context instance via its entry's URI.

Parameters:
Name Type Description
contextEntryURI String

URI to the context's entry, e.g. base/_contexts/entry/1.

Returns:
Type
Context

getContextById(contextId) → {Context}

Source:

Retrieves a Context instance via its id. Note that this method returns directly without checking with the EntryStore repository that the context exists. Hence successive operations via this context instance may fail if the context does not exist in the EntryStore repository.

Note that in EntryStore everything is connected to entries. Hence a context is nothing else than a special kind of resource maintained by an entry. This entry provides metadata about the context as well as the default ownership and access control that applies to all entries inside of this context.

To get a hold of the contexts own entry use the Resource#getEntry method on the context (inherited from the generic Resource class.

Advanced: Entrys corresponding to contexts are stored in the special _contexts context which, since it is a context, contains its own entry.

Parameters:
Name Type Description
contextId string

identifier for the context (not necessarily the same as the alias/name for the context)

Returns:
Type
Context

getContextId(uri) → {string}

Source:

The context id of this entry, resource or metadata uri.

Parameters:
Name Type Description
uri string
Returns:
Type
string

getContextList() → {List}

Source:

Retrieves a paginated list of all contexts in the EntryStore repository.

Returns:
  • the list contains entries which have contexts as resources.
Type
List

getEntry(entryURI, optionalLoadParams) → {Promise.<Entry>|Entry|undefined}

Source:
See:
  • getEntryURI for help to construct entry URIs.
  • Context#getEntryById for loading entries relative to a context.

Fetches an entry given an entryURI. If the entry is already loaded and available in the cache it will be returned directly, otherwise it will be loaded from the repository. If the entry is already loaded but marked as in need of a refresh it will be refreshed first.

The optional load parameters are provided in a single parameter object with six possible attributes. Below we outline these attributes, the first two (forceLoad and direct) applies to all kind of entries while the following three (limit, offset and sort) only applies if the entry is a list:

forceLoad - ignores if the entry is already in cache and fetches from the repository loadResource - makes sure that entry.getResource(true) will not return null (does not work in combination with direct). direct - returns the entry from the cache directly rather than returning a promise, if the entry is not in the cache an undefined value will be returned. limit - only a limited number of children are loaded, -1 means no limit, 0, undefined or if the attribute is not provided means that the default limit of 20 is used. offset - only children from offest and forward is returned, must be positive. sort - information on how to sort the children: * if sort is not provided at all or an empty object is provided the members of the list will not be sorted, instead the list's natural order will be used * if sort is given as null the defaults will be used ({sortBy: "title", prio: "List"}). * if sort is given as a non emtpy object the following attributes are considered: ** sortBy - the attribute instructs which metadata field to sort the children by, i.e., title, created, modified, or size. ** lang - if sort is title and the title is provided in several languages a prioritized language can be given. ** prio - allows specific graphtypes to be prioritized (e.g. show up in the top of the list). ** descending - if true the children are shown in descending order.

Note - in the case where the entry is a list it is possible to change the limit, offset and sort later by calling the corresponding methods on the List resource, e.g. List#setSort. However, setting the values already in this method call has as a consequence that one less request to the repository is made as you will get members (in the right amount and order) in the same request as you get metadata and other information.

A request of a list entry can look like:

var euri = entrystore.getEntryURI("1", "1");
entrystore.getEntry(euri, {
     forceLoad: true,
     limit: 10,
     offset: 20,
     sort: {
        sortBy: "modified",
        prio: types.GT_LIST
     }
 });

The optional params here says that we force a load from the repository, that we want the results to be paginated with a limit of 10 entries per page and that we want page 3. We also indicate that we want the list to be sorted by latest modification date and that if there are member entries that are lists they should be sorted to the top.

Parameters:
Name Type Description
entryURI string

the entryURI for the entry to retrieve.

optionalLoadParams Object

parameters for how to load an entry.

Returns:
  • by default a promise is returned, if the direct parameter is specified the entry is returned directly or undefined if the entry is not in cache.
Type
Promise.<Entry> | Entry | undefined

getEntryId(uri) → {string}

Source:

The entry id of this entry, resource or metadata uri.

Parameters:
Name Type Description
uri string
Returns:
Type
string

getEntryURI(contextId, entryId) → {String}

Source:

Constructs an entry URI from the id for the context and the specific entry.

Parameters:
Name Type Description
contextId string

an identifier for the context the entry belongs to

entryId string

an identifier for the entry

Returns:
  • an entry URI
Type
String

getEntryURIFromURI(uri) → {String}

Source:

Constructs an entry URI from a normal repository URI, e.g. any URI from which is possible to deduce a contextId and an entryId. Equivalent to calling: es.getEntryURI(es.getContextId(uri), es.getEntryId(uri))

Parameters:
Name Type Description
uri string

a URI for the entry, can be a entryURI (obviously), resourceURI (if local), metadataURI, or relationsURI.

Returns:
  • an entry URI
Type
String

getListEntries(entryURI, sort, limit, page) → {Promise.<Array.<Entry>>}

Source:

Retrieves entries from a list. One way to see it is that this is a convenience method that retrieves a list entry, its member entries and returns those in an array.

Parameters:
Name Type Description
entryURI string

URI of the list entry to load entries from.

sort Object

same sort object as provided in the optionalLoadParams to {@see EntryStore#getEntry getEntry} method.

limit Object

same limit as provided in the optionalLoadParams to {@see EntryStore#getEntry getEntry} method.

page integer

unless limit is set to -1 (no pagination) we need to specify which page to load, first page is 0.

Returns:

upon success the promise returns an array of entries.

Type
Promise.<Array.<Entry>>

getMetadataURI(contextId, entryId) → {String}

Source:

Constructs an metadata URI from the id for the context and the specific entry.

Parameters:
Name Type Description
contextId string

an identifier for the context the entry belongs to

entryId string

an identifier for the entry

Returns:
  • an entry URI
Type
String

getPrincipalList() → {List}

Source:
To Do:
  • May include folders and other entries as well...

Retrieves a paginated list of all users and groups in the EntryStore repository

Returns:

the list contains entries that have principals as resources.

Type
List

getResourceURI(contextId, entryId) → {String}

Source:

Constructs an entry resource URI (local URI, not a link obviously) from the id for the context and the specific entry.

Parameters:
Name Type Description
contextId string

an identifier for the context the resource belongs to

entryId string

an identifier for the entry the resource belongs to

Returns:

a resource URI

Type
String

getREST() → {Rest}

Source:

The loading mechanism are performed via REST calls, this REST module can be used for doing manual lookups outside of the scope of this API.

Returns:
Type
Rest

getStatus() → {Promise}

Source:

To get status resource

Returns:
Type
Promise

getUserEntry() → {Promise.<Entry>}

Source:
Deprecated:
  • use corresponding method on auth object instead.
Returns:

on success the entry for the currently signed in user is provided.

Type
Promise.<Entry>

getUserInfo() → {Promise.<EntryInfo>}

Source:
Deprecated:
  • use corresponding method on auth object instead.
See:
  • auth
  • logout

Yields information about who currently is authenticated against the EntryStore repository.

Returns:
  • upon success an object containing attributes "user" being the username, "id" of the user entry, and "homecontext" being the entry-id of the home context is provided.
Type
Promise.<EntryInfo>

handleAsync(promise, context) → {Promise}

Source:
Parameters:
Name Type Description
promise Promise
context string
Returns:
Type
Promise

loadViaProxy(uri, formatHint) → {Promise}

Source:

Loads data via the EntryStore repository's own proxy.

Parameters:
Name Type Description
uri string

indicates the resource to load.

formatHint string

indicates that you want data back in the format specified (e.g. by specifiying a suitable accept header).

Returns:
Type
Promise

logout() → {Promise}

Source:
Deprecated:
  • use corresponding method on auth object instead.

Logout the currently authorized user.

Returns:
Type
Promise

moveEntry(entry, fromList, toList) → {Promise}

Source:

Move an entry from one list to another.

Parameters:
Name Type Description
entry Entry

entry to move

fromList Entry

source list where the entry is currently residing.

toList Entry

destination list where the entry is supposed to end up.

Returns:
Type
Promise

newContext(contextNameopt, idopt) → {PrototypeEntry}

Source:

Provides a PrototypeEntry for creating a new context.

Parameters:
Name Type Attributes Description
contextName string <optional>

optional name for the context, can be changed later, must be unique in the _principals context

id string <optional>

optional requested identifier (entryId) for the context, cannot be changed later, must be unique in the _principals context

Returns:
Type
PrototypeEntry

newGroup(groupNameopt, idopt) → {PrototypeEntry}

Source:
Parameters:
Name Type Attributes Description
groupName string <optional>

optional name for the group, can be changed later, must be unique in the _principals context

id string <optional>

optional requested identifier (entryId) for the group, cannot be changed later, must be unique in the _principals context

Returns:
Type
PrototypeEntry

newSolrQuery() → {SolrQuery}

Source:

Performing searches against an EntryStore repository is achieved by creating a SearchList which is similar to a regular List. From this list it is possible to get paginated results in form of matching entries. For example:

var personType = "http://xmlns.com/foaf/0.1/Person";
var searchList = entrystore.newSolrQuery().rdfType(personType).list();
searchList.setLimit(20).getEntries().then(function(results) {...});
Returns:
Type
SolrQuery

newUser(usernameopt, passwordopt, homeContextopt, idopt) → {PrototypeEntry}

Source:

Provides a PrototypeEntry for creating a new user.

Parameters:
Name Type Attributes Description
username string <optional>

the name the user will use to authenticate himself

password string <optional>

the password the user will use to authenticate himself

homeContext string <optional>

a specific context the user will consider his own home

id string <optional>

requested identifier for the user

Returns:
Type
PrototypeEntry

removeAsyncListener(listener)

Source:

Removes a previously added listener for asynchronous calls.

Parameters:
Name Type Description
listener string