@@ -9,6 +9,116 @@ XData UrlMap
99</Routes >
1010}
1111
12+ ClassMethod GetClassData (className As %String ) As %ZEN .proxyObject
13+ {
14+ set class = ##class (%Dictionary.ClassDefinition ).%OpenId (className )
15+ set cClass = ##class (%Dictionary.CompiledClass ).%OpenId (className )
16+ set oClass = ##class (%ZEN.proxyObject ).%New ()
17+ if ((class = " " ) || (cClass = " " )) return oClass
18+
19+ set oParameters = ##class (%ZEN.proxyObject ).%New ()
20+ set oProperties = ##class (%ZEN.proxyObject ).%New ()
21+ set oMethods = ##class (%ZEN.proxyObject ).%New ()
22+ set oQueries = ##class (%ZEN.proxyObject ).%New ()
23+ set oIndices = ##class (%ZEN.proxyObject ).%New ()
24+ set oXDatas = ##class (%ZEN.proxyObject ).%New ()
25+
26+ set oClass .isDataType = class .ClientDataTypeIsDefined ()
27+ set oClass .isOdbcType = class .OdbcTypeIsDefined ()
28+ set oClass .isSoapBindingStyle = class .SoapBindingStyleIsDefined ()
29+ set oClass .isSoapBodyUse = class .SoapBodyUseIsDefined ()
30+ set oClass .isSqlCategory = class .SqlCategoryIsDefined ()
31+
32+ set props = ##class (%Dictionary.ClassDefinition ).%OpenId (" %Dictionary.ClassDefinition" )
33+ for j =1 :1 :props .Properties .Count () {
34+ set pname = props .Properties .GetAt (j ).Name
35+ set :((pname '= " parent" )
36+ && ('props .Properties .GetAt (j ).Private )
37+ && ('$IsObject ($PROPERTY (class , pname )))) $PROPERTY (oClass , pname ) = $PROPERTY (class , pname )
38+ }
39+ if (oClass .TimeChanged ) { set oClass .TimeChanged = $zdatetime (oClass .TimeChanged ) }
40+ if (oClass .TimeCreated ) { set oClass .TimeCreated = $zdatetime (oClass .TimeCreated ) }
41+ if ((cClass .ClassType '= " " )) {
42+ set oClass .ClassType = cClass .ClassType // set class type from all inherited classes
43+ } else {
44+ set oClass .ClassType = " registered"
45+ }
46+
47+ set oClass .Parameters = oParameters
48+ set props = ##class (%Dictionary.ClassDefinition ).%OpenId (" %Dictionary.ParameterDefinition" )
49+ for i =1 :1 :class .Parameters .Count () {
50+ set oPar = ##class (%ZEN.proxyObject ).%New ()
51+ set p = class .Parameters .GetAt (i )
52+ for j =1 :1 :props .Properties .Count () {
53+ set pname = props .Properties .GetAt (j ).Name
54+ set :(pname '= " parent" ) $PROPERTY (oPar , pname ) = $PROPERTY (p , pname )
55+ }
56+ do oParameters .%DispatchSetProperty (p .Name , oPar )
57+ }
58+
59+ set oClass .Properties = oProperties
60+ set props = ##class (%Dictionary.ClassDefinition ).%OpenId (" %Dictionary.PropertyDefinition" )
61+ for i =1 :1 :class .Properties .Count () {
62+ set oProp = ##class (%ZEN.proxyObject ).%New ()
63+ set p = class .Properties .GetAt (i )
64+ for j =1 :1 :props .Properties .Count () {
65+ set pname = props .Properties .GetAt (j ).Name
66+ set :(pname '= " parent" ) $PROPERTY (oProp , pname ) = $PROPERTY (p , pname )
67+ }
68+ do oProperties .%DispatchSetProperty (p .Name , oProp )
69+ }
70+
71+ set oClass .Methods = oMethods
72+ set props = ##class (%Dictionary.ClassDefinition ).%OpenId (" %Dictionary.MethodDefinition" )
73+ for i =1 :1 :class .Methods .Count () {
74+ set oMeth = ##class (%ZEN.proxyObject ).%New ()
75+ set met = class .Methods .GetAt (i )
76+ for j =1 :1 :props .Properties .Count () {
77+ set pname = props .Properties .GetAt (j ).Name
78+ set :((pname '= " parent" ) && (pname '= " Implementation" )) $PROPERTY (oMeth , pname ) = $PROPERTY (met , pname )
79+ }
80+ do oMethods .%DispatchSetProperty (met .Name , oMeth )
81+ }
82+
83+ set oClass .Queries = oQueries
84+ set props = ##class (%Dictionary.ClassDefinition ).%OpenId (" %Dictionary.QueryDefinition" )
85+ for i =1 :1 :class .Queries .Count () {
86+ set oProp = ##class (%ZEN.proxyObject ).%New ()
87+ set q = class .Queries .GetAt (i )
88+ for j =1 :1 :props .Properties .Count () {
89+ set pname = props .Properties .GetAt (j ).Name
90+ set :(pname '= " parent" ) $PROPERTY (oProp , pname ) = $PROPERTY (q , pname )
91+ }
92+ do oQueries .%DispatchSetProperty (q .Name , oProp )
93+ }
94+
95+ set oClass .XDatas = oXDatas
96+ set props = ##class (%Dictionary.ClassDefinition ).%OpenId (" %Dictionary.XDataDefinition" )
97+ for i =1 :1 :class .XDatas .Count () {
98+ set oProp = ##class (%ZEN.proxyObject ).%New ()
99+ set xd = class .XDatas .GetAt (i )
100+ for j =1 :1 :props .Properties .Count () {
101+ set pname = props .Properties .GetAt (j ).Name
102+ set :((pname '= " parent" ) && (pname '= " Object" )) $PROPERTY (oProp , pname ) = $PROPERTY (xd , pname )
103+ }
104+ do oXDatas .%DispatchSetProperty (xd .Name , oProp )
105+ }
106+
107+ set oClass .Indices = oIndices
108+ set props = ##class (%Dictionary.ClassDefinition ).%OpenId (" %Dictionary.IndexDefinition" )
109+ for i =1 :1 :class .Indices .Count () {
110+ set oProp = ##class (%ZEN.proxyObject ).%New ()
111+ set ind = class .Indices .GetAt (i )
112+ for j =1 :1 :props .Properties .Count () {
113+ set pname = props .Properties .GetAt (j ).Name
114+ set :(pname '= " parent" ) $PROPERTY (oProp , pname ) = $PROPERTY (ind , pname )
115+ }
116+ do oIndices .%DispatchSetProperty (ind .Name , oProp )
117+ }
118+
119+ return oClass
120+ }
121+
12122ClassMethod List () As %Status
13123{
14124 set baseLevel = $case (%request .Get (" level" ), " " :" " , :%request .Get (" level" ) _ " ." )
@@ -32,7 +142,7 @@ ClassMethod List() As %Status
32142 set $PROPERTY (data , folderName ) = oFolder
33143 } elseif ($LENGTH (clsName , " ." ) = $LENGTH (baseLevel , " ." )) {
34144 set className = $PIECE (clsName , " ." , $LENGTH (baseLevel , " ." ))
35- set oClass = ##class ( %ZEN.proxyObject ). %New ( )
145+ set oClass = .. GetClassData ( clsName )
36146 set $PROPERTY (oClass , " _type" ) = " class"
37147 set $PROPERTY (oClass , " fullName" ) = clsName
38148 set $PROPERTY (oClass , " name" ) = className
0 commit comments