1- /// special edition of sc.all.sub for ES without dependencies
1+ /// special edition of sc.all.sub for ES without dependencies
22/// Export different types of modules in different subfolders
33Class sc .alles [ Abstract ]
44{
55
66/// export all available code
7- ClassMethod export (generated = 0 , system = 0 , percent = 0 , mapped = 1 )
7+ ClassMethod export (generated = 0 , system = 0 , percent = 0 , mapped = 0 )
88{
9-
9+
1010 #define export (%code, %file ) $system .OBJ .ExportUDL (%code , %file ," /diffexport" )
11- #define isGenerated (%code ) ##class (%RoutineMgr ).IsGenerated ( %code )
11+ #define isGenerated (%code ) ##class (%RoutineMgr ).IsGenerated ( %code )
1212 #define isPercented (%code ) (" %" = $e (%code ))
1313 #define isMapped (%code ) ##class (%RoutineMgr ).IsMapped ( %code )
1414 #define log w !, code , " -> " , filename , " "
15-
16- #; classes
15+
16+ #; classes
1717 s rs = ##class (%ResultSet ).%New (" %Dictionary.ClassDefinition:Summary" )
1818 if rs .Execute () {
19-
19+
2020 while rs .%Next (){
21-
21+
2222 s code = rs .Name _ " .cls" , isSystem = rs .System
2323 if ( 'system && isSystem ) continue
2424 if ( 'generated && $$$isGenerated( code ) ) continue
@@ -27,29 +27,29 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 1)
2727 s filename = ..filename ( code )
2828 $$$log
2929 w $$$export( code , filename )
30-
30+
3131 } s rs =" "
32- }
33-
32+ }
33+
3434 #; routines
3535 s rs = ##class (%ResultSet ).%New (" %Routine:RoutineList" )
3636 if rs .Execute () {
37-
37+
3838 while rs .%Next () {
39-
39+
4040 s code = rs .Name
4141 if ( 'generated && $$$isGenerated( code ) ) continue
4242 if ( 'percent && $$$isPercented( code ) ) continue
4343 if ( 'mapped && $$$isMapped( code ) ) continue
44-
44+
4545 s filename = ..filename ( code )
4646 $$$log
4747 w $$$export( code , filename )
48-
48+
4949 } s rs =" "
5050 }
51-
52-
51+
52+
5353 #; dfi
5454 #define export (%code, %file ) ##class (%DeepSee.UserLibrary.Utils ).%Export ( %code , %file , 0 )
5555 s sql = " Select fullName as Name From %DeepSee_UserLibrary.FolderItem"
@@ -58,9 +58,9 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 1)
5858 s code = rs .Name , filename = ..filename ( code _" .dfi" )
5959 $$$log
6060 w $$$export( code , filename )
61-
61+
6262 } s rs =" "
63-
63+
6464 Q
6565}
6666
@@ -71,21 +71,21 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
7171 #define next (%i,%dir ) s %i =$o ( dirs ( " " ), 1 , %dir ) k :%i '=" " dirs (%i )
7272 #define isDirectory (%type ) ( %type = " D" )
7373 #define log w !, filename , " " , +sc
74-
74+
7575 s sc = 1 , dirs = " " , dir = ..workdir () $$$push(dir )
76-
76+
7777 s rs = ##class (%ResultSet ).%New ( " %Library.File:FileSet" )
7878 for { $$$next(i ,dir ) Q :i =" " Q :dir =" "
79-
79+
8080 s sc = rs .Execute ( dir , filemask ) Q :'sc
81-
81+
8282 while rs .Next () {
8383
8484 s filename = rs .Name
8585
8686 if $$$isDirectory(rs .Type ) {
87- if recurse $$$push(filename )
88- continue
87+ if recurse $$$push(filename )
88+ continue
8989 }
9090
9191 s ext = $p ( filename , " ." , * )
@@ -100,7 +100,7 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
100100
101101 }
102102 }
103-
103+
104104 Q sc
105105}
106106
@@ -109,7 +109,7 @@ ClassMethod workdir(workdir)
109109{
110110 s gln = ..gln () s :$d (workdir ) @gln = workdir
111111 ///zu(12) namespace directory by default
112- #define nsdir $zu (12 ," " )
112+ #define nsdir $zu (12 ," " )
113113 Q $g (@gln , $$$nsdir)
114114}
115115
@@ -125,31 +125,39 @@ ClassMethod gln() [ CodeMode = expression, Private ]
125125ClassMethod filename (code )
126126{
127127 #define log (%dir,%sc ) w !, " mkdir " , %dir , " " , sc
128-
129- s wd = ..workdir ()
130-
128+
129+ s wd = ..workdir ()
130+
131131 if '##class (%File ).DirectoryExists ( wd ) {
132132 s sc = ##class (%File ).CreateDirectoryChain ( wd )
133133 $$$log(wd ,sc )
134134 }
135-
135+
136136 s ext = $p ( code , " ." , * ), ext = $zcvt ( ext , " l" )
137137 #; for each type - different directory
138-
139- s :ext '=" " wd = ##class (%File ).NormalizeDirectory ( ext , wd )
138+
139+ s :ext '=" " wd = ##class (%File ).NormalizeDirectory ( ext , wd )
140140 if '##class (%File ).DirectoryExists ( wd ) {
141141 s sc = ##class (%File ).CreateDirectoryChain ( wd )
142142 $$$log(wd ,sc )
143143 }
144-
144+
145145 s filename = ##class (%File ).NormalizeFilename ( code , wd )
146+ #; for *.cls Package.Subpackage.ClassName.cls -> Folder/Subfolder/ClassName.cls
147+ if ext =" cls" {
148+ set foldercode =$piece (code ," ." ,*-2 )
149+ set foldercode =$translate (foldercode ," ." ," /" )
150+ set foldercode =foldercode _" /" _$piece (code ," ." ,*-1 ,*)
151+ set filename =##class (%File ).NormalizeFilename ( foldercode , wd )
152+ }
153+
146154 #; for *.dfi filename can contain folders
147- if ext = " dfi" {
148- s path = ##class (%File ).GetDirectory ( filename )
155+ if ext = ( " dfi" )!( " cls " ) {
156+ s path = ##class (%File ).GetDirectory ( filename )
149157 if '##class (%File ).DirectoryExists ( path ) {
150- s sc = ##class (%File ).CreateDirectoryChain ( path )
158+ s sc = ##class (%File ).CreateDirectoryChain ( path )
151159 $$$log(path ,sc )
152- }
160+ }
153161 }
154162 Q filename
155163}
@@ -161,62 +169,62 @@ ClassMethod importUpdated(filemask = "*.*", qspec = "cku-d", ByRef err = "", rec
161169 #define next (%i,%dir ) s %i =$o ( dirs ( " " ), 1 , %dir ) k :%i '=" " dirs (%i )
162170 #define isDirectory (%type ) ( %type = " D" )
163171 #define log w !, filename , " -> " , codename , " " , +sc
164-
172+
165173 s sc = 1 , dirs = " " , dir = ..workdir () $$$push(dir )
166-
174+
167175 s rs = ##class (%ResultSet ).%New ( " %Library.File:FileSet" )
168176 for { $$$next(i ,dir ) Q :i =" " Q :dir =" "
169-
177+
170178 s sc = rs .Execute ( dir , filemask ) Q :'sc
171-
179+
172180 while rs .Next () {
173-
174- s filename = rs .Name
175-
181+
182+ s filename = rs .Name
183+
176184 if $$$isDirectory( rs .Type ) {
177- if ( recurse ) $$$push(filename ) ;push directory
178- continue
185+ if ( recurse ) $$$push(filename ) ;push directory
186+ continue
179187 }
180-
188+
181189 s filets = rs .DateModified
182- s codename = ..codename ( filename , .ext )
190+ s codename = ..codename ( filename , .ext )
183191 s codets = ..codets ( codename , ext )
184-
192+
185193 if ( filets '] codets ) continue
186-
194+
187195 /*
188196 w !, " ************* import ************** "
189197 w !, "file: ", filets
190198 w !, "code: ", codets
191199 */
192-
200+
193201 if ext = " dfi" {
194-
202+
195203 s sc = ##class (%DeepSee.UserLibrary.Utils ).%Import ( filename , 1 , 0 , 0 , " " , .loaded )
196-
204+
197205 } else {
198-
206+
199207 #; drop existing code before import ( purge DateModified )
200208 s :codets '=" " sc = ##class (%RoutineMgr ).Delete ( codename )
201209 s sc = $system .OBJ .Load ( filename , qspec , .err , .loaded )
202-
210+
203211 }
204-
212+
205213 if verbose $$$log
206214 }
207215 }
208216 Q sc
209217}
210218
211- /// presumable codename
219+ /// presumable codename
212220ClassMethod codename (filename , ByRef ext = " " )
213221{
214222 s ext = $p ( filename , " ." , * ), ext = $zcvt ( ext , " l" )
215223 s path = ##class (%File ).NormalizeDirectory ( ext , ..workdir () )
216224 s codename = $p ( filename , path , 2 )
217225 if ext = " dfi" {
218226 s fullname = $tr ( codename , " \" , " /" ) ; return fullname for dfi in $$$IsWINDOWS
219- Q $p ( fullname , " ." , 1 , *-1 ) ;remove extension
227+ Q $p ( fullname , " ." , 1 , *-1 ) ;remove extension
220228 }
221229 Q codename
222230}
@@ -227,9 +235,9 @@ ClassMethod codets(codename, ext)
227235 if ext '=" dfi" {
228236 s ts = ##class (%RoutineMgr ).TS ( codename )
229237 } else {
230- s sql =" Select timeModified From %DeepSee_UserLibrary.FolderItem Where fullname = ?"
238+ s sql =" Select timeModified From %DeepSee_UserLibrary.FolderItem Where fullname = ?"
231239 s rs = ##class (%SQL.Statement ).%ExecDirect ( , sql , codename )
232- if rs .%Next () {
240+ if rs .%Next () {
233241 s utcts = rs .timeModified
234242 s utch = $zdth ( utcts , 3 , , 3 ) ;utc internal format
235243 s loch = $zdth ( utch , -3 ) ; utc to local timezone
@@ -240,4 +248,3 @@ ClassMethod codets(codename, ext)
240248}
241249
242250}
243-
0 commit comments