-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathl7engine.PRG
More file actions
103 lines (88 loc) · 3.45 KB
/
l7engine.PRG
File metadata and controls
103 lines (88 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
* L7Engine.PRG
#INCLUDE L7.H
#IF .F.
***** BEGIN LICENSE BLOCK *****
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is "Level 7 Framework for Web Connection" and
"Level 7 Toolkit" (collectively referred to as "L7").
The Initial Developer of the Original Code is Randy Pearson of
Cycla Corporation.
Portions created by the Initial Developer are Copyright (C) 2004 by
the Initial Developer. All Rights Reserved.
***** END LICENSE BLOCK *****
#ENDIF
*** ===================================================== ***
DEFINE CLASS L7Engine AS CUSTOM && had been SESSION
cDataPath = ""
cDatabase = ""
tTimestamp = NULL
lError = .F.
cErrorMessage = ""
cSuccessMessage = "" && optional feedback in subclass
* --------------------------------------------------------- *
FUNCTION INIT
** not needed in same datasession: DO StandardVfpSettings && SET EXACT, DELETED, etc.
IF ISNULL( THIS.tTimestamp)
THIS.tTimestamp = DATETIME()
ENDIF
IF EMPTY(THIS.cDataPath) AND VARTYPE(m.goL7App) = "O"
THIS.cDataPath = goL7App.cDataPath
THIS.cDataBase = goL7App.cDataBase
ENDIF
IF NOT DBUSED(THIS.cDatabase)
OPEN DATABASE (THIS.cDataPath + THIS.cDatabase)
ENDIF
SET DATABASE TO (THIS.cDatabase)
RETURN
ENDFUNC
* --------------------------------------------------------- *
#IF L7_ENGINE_ERROR_HANDLING
FUNCTION ERROR( lnError, lcMethod, lnLine )
THIS.lError = .T.
THIS.cErrorMessage = THIS.cErrorMessage + ;
[Error ] + TRANSFORM( m.lnError) + ;
[ in ] + m.lcMethod + [, Line ] + ;
TRANSFORM( m.lnLine) + [: ] + MESSAGE() + ;
L7BR + CHR(13) + CHR(10)
= RevertTables() && in L7Utils.PRG
IF LOWER( m.lcMethod ) = "execute" AND ;
NOT LOWER( m.lcMethod ) == "execute"
* Abort engine implementation.
RETURN TO Execute
ENDIF
ENDFUNC
#ENDIF
* --------------------------------------------------------- *
FUNCTION SetError
LPARAMETERS lcMessage
THIS.lError = .T.
THIS.cErrorMessage = THIS.cErrorMessage + ;
m.lcMessage + L7BR + CHR(13) + CHR(10)
#IF NOT L7_ENGINE_ERROR_HANDLING
ERROR THIS.cErrorMessage
#ENDIF
RETURN
ENDFUNC && SetError
* --------------------------------------------------------- *
FUNCTION Execute
LOCAL llSuccess
llSuccess = THIS.ExecuteImplementation()
RETURN m.llSuccess AND NOT THIS.lError
ENDFUNC && Execute
* --------------------------------------------------------- *
PROTECTED FUNCTION ExecuteImplementation
* This is where your code goes.
ERROR PROGRAM() + " must be implemented in a subclass!"
ENDFUNC && ExecuteImplementation
* --------------------------------------------------------- *
ENDDEFINE && L7Engine
*** ===================================================== ***
* 5/17/2006: changed from SESSION to CUSTOM, to avoid isolating transactions from engines