Skip to content

Commit 14c600f

Browse files
authored
Merge pull request #4 from intersystems-ru/master
Folder structure for classes
2 parents 78ba86b + 4f8d9ea commit 14c600f

File tree

2 files changed

+70
-69
lines changed

2 files changed

+70
-69
lines changed

.DS_Store

6 KB
Binary file not shown.

sc.alles.cls

100644100755
Lines changed: 70 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
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
33
Class 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
108105
ClassMethod 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 ]
125122
ClassMethod 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
212214
ClassMethod 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

Comments
 (0)