22Class sc .all .sub Extends sc .all
33{
44
5- /// Translate ( codename ) into ( filename )
5+ /// test.dfi -> /dfi/test.dfi
6+ /// test.cls -> /cls/test.cls
7+ /// etc
68ClassMethod filename (code )
79{
810 s ext = $p ( code , " ." , * ), ext = $zcvt ( ext , " l" )
@@ -19,5 +21,88 @@ ClassMethod filename(code)
1921 Q filename
2022}
2123
24+ /// import from workdir all files with ts newer than code ts in db
25+ ClassMethod importUpdated (qspec = " cku-d" , ByRef err = " " , recurse = 1 , ByRef loaded = " " , verbose = 1 ) As %Status
26+ {
27+ #define push (%dir ) s dirs ( $i ( dirs ) ) = %dir
28+ #define next (%i,%dir ) s %i =$o ( dirs ( " " ), 1 , %dir ) k :%i '=" " dirs (%i )
29+ #define isDirectory (%type ) ( %type = " D" )
30+ #define log w !, filename , " -> " , codename , " " , +sc
31+
32+ s sc = 1 , dirs = " " , dir = ..workdir () $$$push(dir )
33+
34+ s rs = ##class (%ResultSet ).%New ( " %Library.File:FileSet" )
35+ for { $$$next(i ,dir ) Q :i =" " Q :dir =" "
36+
37+ s sc = rs .Execute ( dir , " *.*" ) Q :'sc
38+
39+ while rs .Next () {
40+
41+ s filename = rs .Name
42+
43+ if $$$isDirectory( rs .Type ) {
44+ if ( recurse ) $$$push(filename ) ;push directory
45+ continue
46+ }
47+
48+ s filets = rs .DateModified
49+ s codename = ..codename ( filename , .ext )
50+ s codets = ..codets ( codename , ext )
51+
52+ if ( filets '] codets ) continue
53+
54+ /*
55+ w !, " ************* import ************** "
56+ w !, "file: ", filets
57+ w !, "code: ", codets
58+ */
59+
60+ if ext = " dfi" {
61+
62+ s sc = ##class (%DeepSee.UserLibrary.Utils ).%Import ( filename , 1 , 0 , 0 , " " , .loaded )
63+
64+ } else {
65+
66+ s sc = $system .OBJ .Load ( filename , qspec , .err , .loaded )
67+
68+ }
69+
70+ if verbose $$$log
71+ }
72+ }
73+ Q sc
74+ }
75+
76+ /// presumable codename
77+ ClassMethod codename (filename , ByRef ext = " " )
78+ {
79+ s ext = $p ( filename , " ." , * ), ext = $zcvt ( ext , " l" )
80+ s path = ##class (%File ).NormalizeDirectory ( ext , ..workdir () )
81+ s codename = $p ( filename , path , 2 )
82+ if ext = " dfi" {
83+ s fullname = $tr ( codename , " \" , " /" ) ; return fullname for dfi in $$$IsWINDOWS
84+ Q $p ( fullname , " ." , 1 , *-1 ) ;remove extension
85+ }
86+ Q codename
87+ }
88+
89+ ClassMethod codets (codename , ext )
90+ {
91+ s ts = " "
92+ if ext '=" dfi" {
93+ s ts = ##class (%RoutineMgr ).TS ( codename )
94+ } else {
95+ s sql =" Select timeModified From %DeepSee_UserLibrary.FolderItem Where fullname = ?"
96+ s rs = ##class (%SQL.Statement ).%ExecDirect ( , sql , codename )
97+ if rs .%Next () {
98+ s utcts = rs .timeModified
99+ s utch = $zdth ( utcts , 3 , , 3 ) ;utc internal format
100+ s loch = $zdth ( utch , -3 ) ; utc to local timezone
101+ s ts = $zdt ( loch , 3 , ,0 ) ; local timestamp*/
102+ }
103+ }
104+ Q $p ( ts , " ." ) ;remove ms
105+ }
106+
22107}
23108
0 commit comments