PersistentObjectInfo class: Difference between revisions
m (Created page with "The <var>PersistentObjectInfo</var> class contains information about a global or session object in the current thread. Persistent information was t...") |
mNo edit summary |
||
Line 13: | Line 13: | ||
The <var>PersistentObjectInfo</var> class is available as of <var class="product">Sirius Mods</var> Version 7.8. | The <var>PersistentObjectInfo</var> class is available as of <var class="product">Sirius Mods</var> Version 7.8. | ||
The [[List of PersistentObjectInfo methods|"List of PersistentObjectInfo methods"]] lists all the methods in this class. | |||
==The information accessing methods== | ==The information accessing methods== |
Revision as of 19:12, 15 August 2011
The PersistentObjectInfo class contains information about a global or session object in the current thread. Persistent information was typically stored in Stringlists (or $lists), and individual values all began at designated columns. This approach at least allowed for the sorting of these values. But the availability of generic sorting for Arraylists makes Arraylists of information objects the correct way to provide information to User Language:
- It eliminates the reliance on column positions in User Language code.
- It makes it possible to change the size of values or to add information to the Info class in the future without breaking existing applications.
In addition to occupying considerably less space than fixed column $lists, PersistentObjectInfo objects also offer the advantage of the sorting, finding, and subsetting facilities of collections.
The PersistentObjectInfo class is available as of Sirius Mods Version 7.8.
The "List of PersistentObjectInfo methods" lists all the methods in this class.
The information accessing methods
Three pieces of information (provided by class functions named as follows) are available for a global or session object in the PersistentObjectInfo class:
Name | The global/session name associated with the object. |
SetTime | The time the global/session object was set in YYYYMMDDHHMISSXXX format. |
ClassDescription | A description of the class of the object. For example, "System:Stringlist", or "MyUserLanguageClass", or "Arraylist of Object MyUserLanguageClass". |
SetTime and ClassDescription are intended for debugging and problem diagnosis and not for application purposes:
- For Global/Session variable declarations,
SetTime does not change if request
A
sets a variable to an object instance, and then requestB
sets it to a new value, SetTime still indicates the time the object reference was set in requestA
. - The format of the data in ClassDescription is subject to change by Sirius; for example, a change in casing.
Creating PersistentObjectInfo objects
Using NewFromGlobal or NewFromSession
One way of creating a PersistentObjectInfo object is with the NewFromGlobal method or the NewFromSession method. These methods take a single, required, unnamed string parameter which indicates the name of the global or session variable:
%persInfo is object persistentObjectInfo ... %persInfo = newFromGlobal('FOOBAR') printText *** {~} = {%persInfo:name}, {~} = {%persInfo:setTime}, {~} = {%persInfo:classDescription} ... %persInfo = newFromSession('SNAFU') printText *** {~} = {%persInfo:name}, {~} = {%persInfo:setTime}, {~} = {%persInfo:classDescription}
A NewFromSession request cancels if not in a session.
Using GlobalList or SessionList
Probably the most common way of creating PersistentObjectInfo objects is using the GlobalList and SessionList methods. These are shared methods that return an Arraylist of Object PersistentObjectInfo.
The GlobalList and SessionList methods have one optional parameter that contains the name of the variables to be returned, with wildcards allowed. These wildcards are the User Language standard, non-regex, wildcards. Specifying no variable name is the same as specifying an asterisk (*) for the variable name: the information is returned for all global or session objects.
For example:
%persInfoList is arraylist of object persistentObjectInfo ... %persInfoList = %(persistentObjectInfo):globalList for %i from 1 to %persInfoList:count printText *** {~} = {%i}, {~} = {%persInfoList(%i):name}, {~} = {%persInfoList(%i):classDescription} end for
The PersistentObjectInfoList type
As a coding convenience, this Info class feature also introduces a new User Language %variable declaration type: PersistentObjectInfoList.
This type is defined as an "Arraylist of Object PersistentObjectInfo". Consequently, you can specify a declaration like the one in the preceding example for %persInfoList
more simply as:
%persInfoList is type persistentObjectInfoList
Note: The keyword Type is required.
The GlobalList and SessionList Object class methods
The GlobalList and SessionList methods are members of two classes. In addition to belonging to the PersistentObjectInfo class, they are also Object class shared methods. This means that both of these statements are valid:
%persInfoList = %(persistentObjectInfo):globalList %persInfoList = %(object):globalList
And a statement like the following is also valid:
%persInfoList = %(object):globalList:sortNew(descending(setTime))
In this last case, the class name before the GlobalList method is unavoidable.