Skip to content

Commit 73f1766

Browse files
committed
add importUpdated() method for sc.all.sub class
1 parent a4ac00c commit 73f1766

File tree

2 files changed

+89
-2
lines changed

2 files changed

+89
-2
lines changed

sc.all.cls

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
/// w ##class(sc.all).workdir( "c:\your\work\dir\")
44
/// d ##class(sc.all).export()
55
/// d ##class(sc.all).import()
6+
///
67
Class sc.all [ Abstract ]
78
{
89

@@ -63,7 +64,7 @@ ClassMethod export(generated = 0, system = 0, percent = 0)
6364
}
6465

6566
/// import all from workdir
66-
ClassMethod import(qspec = "-d", ByRef err = "", recurse = 1, ByRef loaded = "", verbose = 1) As %Status
67+
ClassMethod import(qspec = "cku-d", ByRef err = "", recurse = 1, ByRef loaded = "", verbose = 1) As %Status
6768
{
6869
#define push(%dir) s dirs( $i( dirs ) ) = %dir
6970
#define next(%i,%dir) s %i=$o( dirs( "" ), 1, %dir ) k:%i'="" dirs(%i)
@@ -103,6 +104,7 @@ ClassMethod import(qspec = "-d", ByRef err = "", recurse = 1, ByRef loaded = "",
103104

104105
}
105106
}
107+
106108
Q sc
107109
}
108110

sc.all.sub.cls

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
Class 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
68
ClassMethod 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

Comments
 (0)