Skip to content

Commit 9bbf3aa

Browse files
authored
Merge pull request #100 from Frisle/master
ADD: new method to execute KPI
2 parents 2df1b94 + 4f6b0b9 commit 9bbf3aa

2 files changed

Lines changed: 50 additions & 1 deletion

File tree

MDX2JSON/REST.cls

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ XData UrlMap
4949
<Route Url="/MDX2JSONP" Method="POST" Call="WriteJSONPfromMDX"/>
5050
<Route Url="/MDXDrillthrough" Method="POST" Call="WriteDrillthroughJSON" />
5151
<Route Url="/MDX2XMLA" Method="POST" Call="WriteXMLAfromMDX" />
52+
<Route Url="/KPI" Method="POST" Call="KPIExecute"/>
5253

5354
<!-- Get info about availible filters and their values -->
5455
<Route Url="/Filters" Method="POST" Call="WriteFiltersForDataSource"/>
@@ -85,7 +86,6 @@ XData UrlMap
8586
<Route Url="/MDX/:query" Method="GET" Call="WriteJSONfromMDXURL"/>
8687
<Route Url="/MDXfilters/:query" Method="GET" Call="WriteFiltersForMDX"/>
8788

88-
<Route Url="/KPI" Method="POST" Call="WriteJSONfromKPI"/>
8989

9090
<!-- Test methods-->
9191
<Route Url="/Test" Method="GET" Call="Test"/>
@@ -220,6 +220,33 @@ ClassMethod WriteFiltersForDataSource() As %Status
220220
return st
221221
}
222222

223+
///Execute requests from kpi
224+
ClassMethod KPIExecute() As %Status
225+
{
226+
try{
227+
set KPI = $$$R("KPI")
228+
set Drillthrough = $$$R("Drillthrough")
229+
230+
231+
if (Drillthrough = 1){
232+
set SortOrder = $$$R("SortOrder")
233+
set Filters = $$$R("Filters")
234+
set SortColumn = $$$R("SortColumn")
235+
set pSelection = SortColumn _ "," _ SortOrder
236+
237+
set st = ##class(MDX2JSON.Utils).WriteDrillthroughJSONKPI(KPI, Filters, pSelection)
238+
}
239+
else {
240+
set st = ##class(%DeepSee.REST.v1.DataServer).WriteJSONfromKPI(KPI)
241+
}
242+
243+
}catch ex {
244+
set st=ex.AsStatus()
245+
}
246+
247+
return st
248+
}
249+
223250
/// Wrapper for ##class(MDX2JSON.Utils).WriteJSONPfromMDX(pMDX)<br>
224251
/// Converts incoming request object and calls abovementioned method.
225252
ClassMethod WriteJSONfromMDX() As %Status

MDX2JSON/Utils.cls

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,28 @@ ClassMethod WriteJSONfromQuery(CubeKey As %String, QueryKey As %String, Timeout
8989
return $$$OK
9090
}
9191

92+
ClassMethod WriteDrillthroughJSONKPI(tKPI As %String, pFilters As %String, pSelection As %String) As %Status
93+
{
94+
95+
Set st = $$$OK
96+
97+
Set tKpiClassName = ##class(%DeepSee.Utils).%GetKPIClass(tKPI,.tSC) // get name of a kpi from REST
98+
set kpitype = $classmethod(tKpiClassName, "%GetSourceType")
99+
100+
if (kpitype="sql") {
101+
set pSQL = $classmethod(tKpiClassName, "%OnGetListingSQL", pFilters,pSelection) // invoke corresponding method from given kpi and get sql query
102+
103+
}else{
104+
105+
quit $$$ERROR($$$GeneralError, "KPI type " _ kpitype _ " not supported")
106+
}
107+
108+
set st = ##class(%ZEN.Auxiliary.altJSONSQLProvider).%WriteJSONFromSQL(,pSQL,,$$$MaxCacheInt) // receiving sql and process it
109+
return:$$$ISERR(st) st
110+
111+
return st
112+
}
113+
92114
/// Automatic processing of MDX query and outputting resulting JSONP.<br>
93115
/// <b>pMDX</b> - String containing MDX query.<br>
94116
ClassMethod WriteJSONPfromMDX(pMDX As %String) As %Status

0 commit comments

Comments
 (0)