Class Reference
Cache for UNIX 2018.1.3
InterSystems: The power behind what matters   
Documentation  Search
Private  Storage  

persistent class Config.MapGlobals extends %Persistent, Config.CommonMapMethods, Config.CommonMapProperties, %SYSTEM.Help

This class allows you to modify and view global mappings in the [] section of the CPF file through programatic APIs. While properties are usually modified through the System Management portal, there may be some occasion where modifying them through the API's is best for your system. In all the Config methods, if you do not specify the CPFFile parameter, the currently active CPF file is used. If you wish to modify a CPF file which is not the currently active one, then specify the CPFFile you wish to modify in the method call.
The Flags parameter does not normally need to be specified; the defaults are usually sufficient for most cases.
You can use either the provided API's (Create/Get/Modify/Delete) to modify the properties by passing in the correct parameters, or use Object sytax to open and directly manipulate the config objects (Open() and Exists()). Most objects created here need only to specify the Name of the object, and 1 or 2 properties since the the defaults are what are commonly used for most cases.


; Use class methods to create a global mapping in namespace USER to the SAMPLES database
%SYS>s Namespace="USER"
%SYS>s Name="ABC"
%SYS>s Properties("Database")="SAMPLES"
%SYS>s Status=##Class(Config.MapGlobals).Create(Namespace,Name,.Properties)
%SYS>i 'Status)w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
; Now add a SLM mapping for a global XYZ(100). Note that two mappings will actually
; get created, a mapping of XYZ to namespace USER, and XYZ(100) to SAMPLES. We need this
; because the main mapping of XYZ will contain the collation of the entire global
; (which is 5 by default, Cache Standard collation)
%SYS>s Namespace="USER"
%SYS>s Name="XYZ(100)"
%SYS>s Properties("Database")="SAMPLES"
%SYS>s Status=##Class(Config.MapGlobals).Create(Namespace,Name,.Properties)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
; Use class methods to modify properties
%SYS>s Status=##Class(Config.MapGlobals).Get(Namespace,Name,.Properties)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
%SYS>zw Properties
%SYS>s Properties("Database")="TEST"
%SYS>s Status=##Class(Config.MapGlobals).Modify(Namespace,Name,.Properties)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
; Now use Objects to modify properties
%SYS>s Obj=##Class(Config.MapGlobals).Open(Namespace,Name)
; We could have used i ##Class(Config.MapGlobals).Exists(Namespace,Name,.Obj) instead of Open()
%SYS>w Obj.Database
%SYS>s Obj.Database="USER"
%SYS>s Status=Obj.%Save()
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
; Now delete the object we just created
%SYS>s Status=##Class(Config.MapGlobals).Delete(Namespace,Name)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)


Parameters Properties Methods Queries Indices ForeignKeys Triggers
3 12 1 1


CPFFile Collation Comments Database Flags
LockDatabase Name Namespace

%AddToSaveSet %AddToSyncSet %BMEBuilt %CheckConstraints
%CheckConstraintsForExtent %ClassIsLatestVersion %ClassName %ComposeOid
%ConstructClone %Delete %DeleteExtent %DeleteId
%DispatchClassMethod %DispatchGetModified %DispatchGetProperty %DispatchMethod
%DispatchSetModified %DispatchSetMultidimProperty %DispatchSetProperty %Exists
%ExistsId %Extends %GUID %GUIDSet
%GetLock %GetParameter %GetSwizzleObject %Id
%InsertBatch %IsA %IsModified %IsNull
%KillExtent %KillExtentData %LoadFromMemory %LockExtent
%LockId %New %NormalizeObject %ObjectIsNull
%ObjectModified %Oid %OnBeforeAddToSync %OnDeleteCallBack
%OnDetermineClass %Open %OpenId %OriginalNamespace
%PackageName %PhysicalAddress %PurgeIndices %Reload
%RemoveFromSaveSet %ResolveConcurrencyConflict %RollBack %Save
%SaveDirect %SaveIndices %SerializeObject %SetModified
%SortBegin %SortEnd %SyncObjectIn %SyncTransport
%UnlockExtent %UnlockId %ValidateIndices %ValidateObject
Create Delete Exists Get
GetList Help IsValidSubscript Modify
Open XMLDTD XMLExport XMLExportToStream
XMLExportToString XMLNew XMLSchema XMLSchemaNamespace


• property Collation as %Integer(MINVAL=0) [ InitialExpression = 5,Required ];
Default collation of the global
• property Database as %String(MAXLEN=64,MINLEN=1) [ Required ];
Database to map global to.
• property LockDatabase as %String(MAXLEN=64,MINLEN=0);
Database to map global lock to.


• classmethod %OnDeleteCallBack(Obj As %ObjectHandle) as %Status
Called from %Delete().
Any error returned here will keep the object from being deleted.
• classmethod IsValidSubscript(Sub As %String, Collation As %Integer = 5) as %Status
Returns true if the argument passes the Subscript/Sbscript range syntax check.
Internal use only.
Note that this is also called by EMS, and shouldn't reference any %SYS Config info


• query List(Namespace As %String, Names As %String = "*", CPFFile As %String = "", Flags As %Integer = 0)
Selects Name As %String, Global As %String, Subscript As %String, Database As %String, Collation As %Integer, LockDatabase As %String
List MapGlobals in a CPF file.

Names - Comma separated list of MapGlobal names
"*" - All records match
"String,String1" - Any records matching one of these elements
"String*" - Any record starting with "String"
"String,String1*,String2" - Any record mathing one of these elements, or starting with "String1"
CPFFile - Name of the CPF file to use. A null string means use the active CPF file.
Flags - Currently ignored.
0 - Standard report list format
1 - ^CONFIG global format
2 - CPF file format format
Note: This query may change in future versions


• index (CPFNameSectionHeaderNspName on CPFName,SectionHeader,Namespace,Name) [IdKey,Unique];

Copyright © 1997-2020, InterSystems Corporation