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,19 @@ 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-
77- s rs = ##class (%ResultSet ).%New ( " %Library.File:FileSet" )
76+
7877 for { $$$next(i ,dir ) Q :i =" " Q :dir =" "
79-
80- s sc = rs .Execute ( dir , filemask ) Q :'sc
81-
82- while rs .Next () {
8378
79+ s rs = ##class (%File ).FileSetFunc ( dir , filemask , , 1 )
80+
81+ while rs .%Next () {
8482 s filename = rs .Name
8583
8684 if $$$isDirectory(rs .Type ) {
87- if recurse $$$push(filename )
88- continue
85+ if recurse $$$push(filename )
86+ continue
8987 }
9088
9189 s ext = $p ( filename , " ." , * )
@@ -100,16 +98,15 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
10098
10199 }
102100 }
103-
101+
104102 Q sc
105103}
106-
107104/// get or set working directory for export/import source
108105ClassMethod workdir (workdir )
109106{
110107 s gln = ..gln () s :$d (workdir ) @gln = workdir
111108 ///zu(12) namespace directory by default
112- #define nsdir $zu (12 ," " )
109+ #define nsdir $zu (12 ," " )
113110 Q $g (@gln , $$$nsdir)
114111}
115112
@@ -125,31 +122,39 @@ ClassMethod gln() [ CodeMode = expression, Private ]
125122ClassMethod filename (code )
126123{
127124 #define log (%dir,%sc ) w !, " mkdir " , %dir , " " , sc
128-
129- s wd = ..workdir ()
130-
125+
126+ s wd = ..workdir ()
127+
131128 if '##class (%File ).DirectoryExists ( wd ) {
132129 s sc = ##class (%File ).CreateDirectoryChain ( wd )
133130 $$$log(wd ,sc )
134131 }
135-
132+
136133 s ext = $p ( code , " ." , * ), ext = $zcvt ( ext , " l" )
137134 #; for each type - different directory
138-
139- s :ext '=" " wd = ##class (%File ).NormalizeDirectory ( ext , wd )
135+
136+ s :ext '=" " wd = ##class (%File ).NormalizeDirectory ( ext , wd )
140137 if '##class (%File ).DirectoryExists ( wd ) {
141138 s sc = ##class (%File ).CreateDirectoryChain ( wd )
142139 $$$log(wd ,sc )
143140 }
144-
141+
145142 s filename = ##class (%File ).NormalizeFilename ( code , wd )
143+ #; for *.cls Package.Subpackage.ClassName.cls -> Folder/Subfolder/ClassName.cls
144+ if ext =" cls" {
145+ set foldercode =$piece (code ," ." ,*-2 )
146+ set foldercode =$translate (foldercode ," ." ," /" )
147+ set foldercode =foldercode _" /" _$piece (code ," ." ,*-1 ,*)
148+ set filename =##class (%File ).NormalizeFilename ( foldercode , wd )
149+ }
150+
146151 #; for *.dfi filename can contain folders
147- if ext = " dfi" {
148- s path = ##class (%File ).GetDirectory ( filename )
152+ if ext = ( " dfi" )!( " cls " ) {
153+ s path = ##class (%File ).GetDirectory ( filename )
149154 if '##class (%File ).DirectoryExists ( path ) {
150- s sc = ##class (%File ).CreateDirectoryChain ( path )
155+ s sc = ##class (%File ).CreateDirectoryChain ( path )
151156 $$$log(path ,sc )
152- }
157+ }
153158 }
154159 Q filename
155160}
@@ -161,62 +166,59 @@ ClassMethod importUpdated(filemask = "*.*", qspec = "cku-d", ByRef err = "", rec
161166 #define next (%i,%dir ) s %i =$o ( dirs ( " " ), 1 , %dir ) k :%i '=" " dirs (%i )
162167 #define isDirectory (%type ) ( %type = " D" )
163168 #define log w !, filename , " -> " , codename , " " , +sc
164-
169+
165170 s sc = 1 , dirs = " " , dir = ..workdir () $$$push(dir )
166-
167- s rs = ##class (%ResultSet ).%New ( " %Library.File:FileSet" )
168171 for { $$$next(i ,dir ) Q :i =" " Q :dir =" "
169-
170- s sc = rs .Execute ( dir , filemask ) Q :'sc
171-
172- while rs .Next () {
173-
174- s filename = rs .Name
175-
172+
173+ s rs = ##class (%File ).FileSetFunc ( dir , filemask , , 1 )
174+
175+ while rs .%Next () {
176+ s filename = rs .Name
177+
176178 if $$$isDirectory( rs .Type ) {
177- if ( recurse ) $$$push(filename ) ;push directory
178- continue
179+ if ( recurse ) $$$push(filename ) ;push directory
180+ continue
179181 }
180-
182+
181183 s filets = rs .DateModified
182- s codename = ..codename ( filename , .ext )
184+ s codename = ..codename ( filename , .ext )
183185 s codets = ..codets ( codename , ext )
184-
186+
185187 if ( filets '] codets ) continue
186-
188+
187189 /*
188190 w !, " ************* import ************** "
189191 w !, "file: ", filets
190192 w !, "code: ", codets
191193 */
192-
194+
193195 if ext = " dfi" {
194-
196+
195197 s sc = ##class (%DeepSee.UserLibrary.Utils ).%Import ( filename , 1 , 0 , 0 , " " , .loaded )
196-
198+
197199 } else {
198-
200+
199201 #; drop existing code before import ( purge DateModified )
200202 s :codets '=" " sc = ##class (%RoutineMgr ).Delete ( codename )
201203 s sc = $system .OBJ .Load ( filename , qspec , .err , .loaded )
202-
204+
203205 }
204-
206+
205207 if verbose $$$log
206208 }
207209 }
208210 Q sc
209211}
210212
211- /// presumable codename
213+ /// presumable codename
212214ClassMethod codename (filename , ByRef ext = " " )
213215{
214216 s ext = $p ( filename , " ." , * ), ext = $zcvt ( ext , " l" )
215217 s path = ##class (%File ).NormalizeDirectory ( ext , ..workdir () )
216218 s codename = $p ( filename , path , 2 )
217219 if ext = " dfi" {
218220 s fullname = $tr ( codename , " \" , " /" ) ; return fullname for dfi in $$$IsWINDOWS
219- Q $p ( fullname , " ." , 1 , *-1 ) ;remove extension
221+ Q $p ( fullname , " ." , 1 , *-1 ) ;remove extension
220222 }
221223 Q codename
222224}
@@ -227,9 +229,9 @@ ClassMethod codets(codename, ext)
227229 if ext '=" dfi" {
228230 s ts = ##class (%RoutineMgr ).TS ( codename )
229231 } else {
230- s sql =" Select timeModified From %DeepSee_UserLibrary.FolderItem Where fullname = ?"
232+ s sql =" Select timeModified From %DeepSee_UserLibrary.FolderItem Where fullname = ?"
231233 s rs = ##class (%SQL.Statement ).%ExecDirect ( , sql , codename )
232- if rs .%Next () {
234+ if rs .%Next () {
233235 s utcts = rs .timeModified
234236 s utch = $zdth ( utcts , 3 , , 3 ) ;utc internal format
235237 s loch = $zdth ( utch , -3 ) ; utc to local timezone
@@ -240,4 +242,3 @@ ClassMethod codets(codename, ext)
240242}
241243
242244}
243-
0 commit comments