Home > Class Reference > ENSLIB namespace > %ZEN.Auxiliary.altJSONSQLProvider
Private  

%ZEN.Auxiliary.altJSONSQLProvider

class %ZEN.Auxiliary.altJSONSQLProvider extends %ZEN.Auxiliary.jsonProvider, %ZEN.Component.querySource

A version of the JSON provider that can use an SQL statement to supply data that is served to the client in JSON format. This can be used in the same manner as the jsonProvider component. The key difference between this widget and the legacy jsonProvider or jsonSQLProvider is that this widget uses abstract entities (%DynamicObject and %DynamicArray) internally for faster, in memory manipulation of the results set and JSON rendering.
For example, placing this within your page definition:

<altJSONSQLProvider id="json" sql="SELECT TOP 2 ID, Name FROM Sample.Person" />
would cause the given SQL statement to execute when the page is requested and the results of the query to be written to the page in JSON format:
o.content = {
	"children": [
		{
			"ID": 1,
			"Name": "Schaefer,Thelma W."
		}
		{
			"ID": 2,
			"Name": "Huff,Kevin T."
		}
	]
};
The JSON content object will contain a children property which is an array of objects that correspond to the rows returned by the SQL statement. The property names match the column names within the query.
If you need more control over the SQL query, you can use the OnGetSQL callback method.
This component ignores all of the data source callback methods inherited from the jsonProvider class. as well as the whitespace pretty printing options previously supported by jsonProvider

Inventory

Parameters Properties Methods Queries Indices ForeignKeys Triggers
5 6

Summary

Properties
%Format %condition %import %includeFiles
%page %resource OnCreateResultSet OnExecuteResultSet
OnGetArray OnGetSQL OnGetTargetObject OnRenderJSON
OnSubmitContent alertOnError align arrayName
autoRefresh aux columnName composite
containerStyle countRows currPage defaultSeries
documentId dragEnabled dropEnabled enclosingClass
enclosingStyle error groupByClause height
hidden hint hintClass hintStyle
id index label labelClass
labelDisabledClass labelStyle maxRows modelError
modelId name onafterdrag onbeforedrag
oncreate ondelete ondrag ondrop
onerror onhide onnotifyController onrefresh
onsave onshow onupdate orderByClause
pageSize parameters parent propertyList
queryClass queryName readOnly recordCount
seriesNameProperty showLabel slice sql
tableName targetClass title tuple
valign visible whereClause width
window
Methods
%AddToSaveSet %ArrayToJSON %Attr %BindExport
%ClassIsLatestVersion %ClassName %ConstructClone %ConvertJSONToObject
%CreateResultSet %DeleteModelInstance %DispatchClassMethod %DispatchGetModified
%DispatchGetProperty %DispatchMethod %DispatchSetModified %DispatchSetMultidimProperty
%DispatchSetProperty %DrawComponentHTML %DrawHTML %DrawJSStrings
%EnclosingDivId %Eval %EvalC %Extends
%ForceClientRender %GetDataByName %GetEventHandlers %GetModelPropertyList
%GetParameter %GetTypeByName %GetXMLName %IsA
%IsModified %MakeId %New %NormalizeObject
%ObjectModified %ObjectToJSON %OnAddToPageAfter %OnAddToPageBefore
%OnCreateResultSet %OnDrawEnclosingDiv %OnExecuteResultSet %OnZENDeserialize
%OriginalNamespace %PackageName %QuoteValue %QuoteValueL10N
%RemoveFromSaveSet %Self %SerializeObject %SetDataByName
%SetModified %SetTargetObject %ValidateObject %WriteJSONFromArray
%WriteJSONFromObject %WriteJSONFromSQL %WriteJSONStreamFromArray %WriteJSONStreamFromObject
%WriteJSONStreamFromSQL XMLDTD XMLExport XMLExportToStream
XMLExportToString XMLNew XMLSchema XMLSchemaNamespace
XMLSchemaType createNewObject deleteId dragFinishHandler
dragHandler dragNotifyHandler dragStartHandler dropHandler
dropStartHandler exposeComponent findElement fireOnUpdateEvent
getContentObject getContentType getCurrPage getData
getDataAsArrays getDataAsObject getDataSourceCaption getDimSize
getEnclosingDiv getError getHidden getHintElement
getLabel getLabelElement getModelId getPageSize
getProperty getPropertyName getRecordCount getSettings
getType getTypeByName hasData invokeAction
invokeSuper isModelReadOnly isOfType isPropertyValid
makeId onCreate onDelete onDisplayHandler
onEndModalHandler onPopupAction onRefreshContents onSerialize
onStartModalHandler onloadHandler onunloadHandler onupdateHandler
raiseDataChange refreshContent refreshContents reloadContents
reloadContentsAsynch render renderContents renderSVG
save sendEventToViews setContentObject setContentText
setContentType setCurrPage setHidden setModelId
setOverlayMode startProgressBar stopProgressBar submitContent
update

Properties

property OnGetSQL as %ZEN.Datatype.delegator(FORMALSPEC="&pParameters:%String,&pSQL:%String,pCriteria:%ZEN.proxyObject,&pPagingInfo:%String",RETURNTYPE="%Status");
This specifies a callback method that returns an SQL query (string) that will drive this provider. This is identical in behavior to (and replaces) the sql property. The method can make it easier to create queries based on parameter values or search criteria passed via the criteria property.
property arrayName as %String [ InitialExpression = "children" ];
property currPage as %ZEN.Datatype.integer [ InitialExpression = 1 ];
If the provider is using server-side data paging, this is the number (1-based) of the current page.
property pageSize as %ZEN.Datatype.integer [ InitialExpression = 25 ];
If the provider is using server-side data paging, this is the number of records in each page.
property recordCount as %ZEN.Datatype.integer;
If the provider is using server-side data paging, this is the total number of records.

Methods

classmethod %WriteJSONFromSQL(pVar As %String = "", pSQL As %String, pFormat As %String = "tw", pMaxRows As %Integer = 100, pReturnStatus As %Boolean = 0, tProvider As %ZEN.Auxiliary.altJSONSQLProvider = "") as %String
Utility method to allow direct use of JSON from a non-ZEN context (such as a CSP page).
The JSON notation is written out the current device. pVar is the optional name of the client-side javascript variable that refers to the JSON notation.
pSQL is the SQL statement that is executed and provides the JSON content.
From a CSP page, you could invoke the method as follows:
#(##class(%ZEN.Auxiliary.jsonSQLProvider).%WriteJSONFromSQL("json","SELECT Name FROM Sample.Person"))#
pFormat is provided for signature compatibility with the legacy jsonProvider class, but using it to pretty-print the output stream is not supported by this class.
pMaxRows controls the maximum number of rows to return and follows the semantics for the maxRows property where 0 indicates all rows should be returned. tProvider If you wish to use a class query or pass in parameters using ? then create and populate an instance of the jsonSQLProvider and pass it in.
classmethod %WriteJSONStreamFromSQL(ByRef pStream As %Stream.Object, pSQL As %String, pFormat As %String = "tw", pMaxRows As %Integer = 100, pRewindStream As %Boolean = 0, tProvider As %ZEN.Auxiliary.altJSONSQLProvider) as %Status
Utility method to allow JSON output generated by the SQL query defined in pSQL to be written to the stream supplied in pStream from a general non-ZEN context. Note that pStream will be created if not supplied, hence the ByRef designation.
pRewindStream controls whether the stream should be rewound after the data is written to it.
pFormat is provided for signature compatibility with the legacy jsonProvider class, but using it to pretty-print the output stream is not supported by this class.
pMaxRows controls the maximum number of rows to return and follows the semantics for the maxRows property where 0 indicates all rows should be returned. tProvider If you wish to use a class query or pass in parameters using ? then create and populate an instance of the jsonSQLProvider and pass it in.
method getCurrPage() [ Language = javascript ]
If this provider is using server-side paging, this is the current page number (1-based).
method getPageSize() [ Language = javascript ]
If this provider is using server-side paging, this is the number of records in one page.
method getRecordCount() [ Language = javascript ]
If this provider is using server-side paging, this is the total number of records in the current query.
method setCurrPage(page) [ Language = javascript ]
If this provider is using server-side paging, set the current page number (1-based).