Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion MDX2JSON/REST.cls
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ XData UrlMap
<Route Url="/MDX2JSONP" Method="POST" Call="WriteJSONPfromMDX"/>
<Route Url="/MDXDrillthrough" Method="POST" Call="WriteDrillthroughJSON" />
<Route Url="/MDX2XMLA" Method="POST" Call="WriteXMLAfromMDX" />
<Route Url="/KPI" Method="POST" Call="KPIExecute"/>

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

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

<!-- Test methods-->
<Route Url="/Test" Method="GET" Call="Test"/>
Expand Down Expand Up @@ -220,6 +220,33 @@ ClassMethod WriteFiltersForDataSource() As %Status
return st
}

///Execute requests from kpi
ClassMethod KPIExecute() As %Status
{
try{
set KPI = $$$R("KPI")
set Drillthrough = $$$R("Drillthrough")


if (Drillthrough = 1){
set SortOrder = $$$R("SortOrder")
set Filters = $$$R("Filters")
set SortColumn = $$$R("SortColumn")
set pSelection = SortColumn _ "," _ SortOrder

set st = ##class(MDX2JSON.Utils).WriteDrillthroughJSONKPI(KPI, Filters, pSelection)
}
else {
set st = ##class(%DeepSee.REST.v1.DataServer).WriteJSONfromKPI(KPI)
}

}catch ex {
set st=ex.AsStatus()
}

return st
}

/// Wrapper for ##class(MDX2JSON.Utils).WriteJSONPfromMDX(pMDX)<br>
/// Converts incoming request object and calls abovementioned method.
ClassMethod WriteJSONfromMDX() As %Status
Expand Down
22 changes: 22 additions & 0 deletions MDX2JSON/Utils.cls
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,28 @@ ClassMethod WriteJSONfromQuery(CubeKey As %String, QueryKey As %String, Timeout
return $$$OK
}

ClassMethod WriteDrillthroughJSONKPI(tKPI As %String, pFilters As %String, pSelection As %String) As %Status
{

Set st = $$$OK

Set tKpiClassName = ##class(%DeepSee.Utils).%GetKPIClass(tKPI,.tSC) // get name of a kpi from REST
set kpitype = $classmethod(tKpiClassName, "%GetSourceType")

if (kpitype="sql") {
set pSQL = $classmethod(tKpiClassName, "%OnGetListingSQL", pFilters,pSelection) // invoke corresponding method from given kpi and get sql query

}else{

quit $$$ERROR($$$GeneralError, "KPI type " _ kpitype _ " not supported")
}

set st = ##class(%ZEN.Auxiliary.altJSONSQLProvider).%WriteJSONFromSQL(,pSQL,,$$$MaxCacheInt) // receiving sql and process it
return:$$$ISERR(st) st

return st
}

/// Automatic processing of MDX query and outputting resulting JSONP.<br>
/// <b>pMDX</b> - String containing MDX query.<br>
ClassMethod WriteJSONPfromMDX(pMDX As %String) As %Status
Expand Down