~ubuntu-branches/ubuntu/trusty/pfm/trusty

« back to all changes in this revision

Viewing changes to database.tcl

  • Committer: Package Import Robot
  • Author(s): Mark Hindley
  • Date: 2013-02-13 10:54:36 UTC
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: package-import@ubuntu.com-20130213105436-w8flw5ecbt8s7w2d
Tags: upstream-2.0.7
ImportĀ upstreamĀ versionĀ 2.0.7

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# database.tcl
 
2
 
 
3
proc getFormsReports {db tabType} {
 
4
        switch $tabType {
 
5
                forms {
 
6
                        set query "SELECT name FROM pfm_form WHERE showform ORDER BY name"
 
7
                }
 
8
                design {
 
9
                        set query "SELECT name FROM pfm_form WHERE NOT showform ORDER BY name"
 
10
                }
 
11
                reports {
 
12
                        set query "SELECT name, description FROM pfm_report ORDER BY name"
 
13
                }
 
14
        }
 
15
        if {![$db select_query_list $query numTuples headerList formsList errorMsg]} then {
 
16
                set formsList {}
 
17
                # pfm_message [mc getFormList $errorMsg] {.}
 
18
        }
 
19
        return $formsList
 
20
}
 
21
 
 
22
proc getFormDef {db formName parent formDefName} {
 
23
        upvar $formDefName formDef
 
24
        set query {SELECT name, tablename, sqlselect, sqlfrom, groupby, showform, }
 
25
        append query {"view", pkey, sqlorderby, sqllimit }
 
26
        append query {FROM pfm_form }
 
27
        append query "WHERE name = '$formName'"
 
28
        if {[$db select_query_list $query numTuples attribList resultList errorMsg]} then {
 
29
                if {$numTuples == 1} then {
 
30
                        set status 1
 
31
                        set idx 0
 
32
                        foreach attrib $attribList {
 
33
                                set formDef($attrib) [lindex $resultList 0 $idx]
 
34
                                incr idx
 
35
                        }
 
36
                } else {
 
37
                        pfm_message [mc getFormFailed $formName "numTuples = $numTuples"] $parent
 
38
                        set status 0
 
39
                }
 
40
        } else {
 
41
                pfm_message [mc getFormFailed $formName $errorMsg] $parent
 
42
                set status 0
 
43
        }
 
44
        return $status
 
45
}
 
46
 
 
47
proc getAttribDef {db formName parent attribDefName attribListName modAttribListName} {
 
48
        upvar $attribDefName attribDef
 
49
        upvar $attribListName attribList
 
50
        upvar $modAttribListName modAttribList
 
51
        set attribList {}
 
52
        set modAttribList {}
 
53
        set query {SELECT attribute, typeofattrib, typeofget, sqlselect, nr, valuelist, "default" }
 
54
        append query "FROM pfm_attribute WHERE form = '${formName}' "
 
55
        append query {ORDER BY nr}
 
56
        if {[$db select_query $query numTuples resultArray errorMsg]} then {
 
57
                set status 1
 
58
                for {set tuple 0} {$tuple < $numTuples} {incr tuple} {
 
59
                        set attrib [string trim $resultArray($tuple,attribute)]
 
60
                        lappend attribList $attrib
 
61
                        foreach property {typeofattrib typeofget sqlselect nr valuelist default} {
 
62
                                set attribDef($attrib,$property) \
 
63
                                        [string trim $resultArray($tuple,$property)]
 
64
                        }
 
65
                        if {($attribDef($attrib,typeofget) ne {tgReadOnly}) || \
 
66
                                ($attribDef($attrib,default) ne {})} then {
 
67
                                        lappend modAttribList $attrib
 
68
                        }
 
69
                }
 
70
        } else {
 
71
                pfm_message [mc getAttribFailed $formName $errorMsg] $parent
 
72
                set status 0
 
73
        }
 
74
        return $status
 
75
}
 
76
 
 
77
proc getLinkDef {db formName parent linkDefName lastLinkName} {
 
78
        upvar $linkDefName linkDef
 
79
        upvar $lastLinkName lastLink
 
80
        set query {SELECT linkname, sqlwhere, orderby, displayattrib, toform}
 
81
        append query " FROM pfm_link WHERE fromform = '$formName'"
 
82
        append query { ORDER BY linkname}
 
83
        if {[$db select_query $query numTuples linkDef errorMsg]} then {
 
84
                set lastLink [expr $numTuples - 1]
 
85
                set status 1
 
86
        } else {
 
87
                set status 0
 
88
                pfm_message [mc getLinkDefFailed $formName $errorMsg] $parent
 
89
        }
 
90
        return $status
 
91
}
 
92
 
 
93
proc check_pfm_tables {tablesInstalledName dbVersionName} {
 
94
        upvar $tablesInstalledName tablesInstalled
 
95
        upvar $dbVersionName dbVersion
 
96
 
 
97
        set query {SELECT COUNT(*) AS nr_of_tables FROM pg_tables }
 
98
        append query {WHERE tablename IN ('pfm_form', 'pfm_attribute', }
 
99
        append query {'pfm_value', 'pfm_value_list', 'pfm_link', }
 
100
        append query {'pfm_report', 'pfm_section')}
 
101
        if {[$::dbObject select_query_list $query numTuples names \
 
102
                        resultList errMsg]} then {
 
103
                set tablesInstalled [lindex $resultList 0 0]
 
104
                if {$tablesInstalled > 0} then {
 
105
                        set query {SELECT version FROM pfm_version ORDER BY seqnr DESC}
 
106
                        if {[$::dbObject select_query_list $query numTuples names \
 
107
                                        resultList errMsg]} then {
 
108
                                set dbVersion [lindex $resultList 0 0]
 
109
                        } else {
 
110
                                # versions 1.0.4 and earlier did not have pfm_version table
 
111
                                set dbVersion {1.0.4}
 
112
                                pfm_message "${query}\n${errMsg}" {.}
 
113
                        }
 
114
                } else {
 
115
                        set dbVersion {}
 
116
                }
 
117
        } else {
 
118
                set dbVersion {}
 
119
                set tablesInstalled 0
 
120
                pfm_message "${query}\n${errMsg}" {.}
 
121
        }
 
122
        return
 
123
}
 
124