Log updates
[beagleboard.org.git] / code / .docs / prototype_Global / function_helma.sqlshell.Datasource.prototype.main.html
blob518279e4fe871783885c80c509f9616b248f058c
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2 <html>
4 <head>
5 <title></title>
6 <style type="text/css">
8 body, p, td, th, li {
9 font-family: verdana, sans-serif;
10 font-size: 10pt;
13 big.top {
14 font-size: 18pt;
15 font-weight: bold;
18 big {
19 font-size: 13pt;
20 font-weight: bold;
23 a {
24 font-weight:bold;
25 color: #cc3333;
26 text-decoration:none;
28 a:hover {
29 text-decoration:underline;
32 .navig {
33 font-size: 9px;
34 text-decoration: none;
35 font-weight:normal;
38 li {
39 padding-bottom: 5px;
43 .mainbox {
44 border-color:#999999;
45 padding-top:5px;
46 padding-bottom:5px;
47 border-bottom-width:1px;
48 border-bottom-style:dotted;
51 .headline {
52 font-weight:bold;
53 background:#dfdfdf;
54 border-color:#999999;
55 padding-top:5px;
56 padding-bottom:5px;
59 </style>
60 </head>
62 <body>
64 <table width="90%" border="0" cellspacing="1" cellpadding="5">
65 <tr>
66 <td class="headline">
67 <big><tt>Global.helma.sqlshell.Datasource.prototype.main&nbsp;()</tt></big><br>
68 </td>
69 </tr>
71 <tr>
72 <td class="mainbox">
75 <ul>
82 </ul>
83 </td>
84 </tr>
85 </table>
87 <table width="90%" border="0" cellspacing="1" cellpadding="5">
88 <tr>
89 <td>Sourcecode in helmaTools.zip/Global/helma.sqlshell.js:
90 <pre><font color="#aaaaaa">177:</font> helma.sqlshell.Datasource.prototype.main = function() {
91 <font color="#aaaaaa">178:</font> res.handlers.datasource = this;
92 <font color="#aaaaaa">179:</font> if (!req.data.tab) {
93 <font color="#aaaaaa">180:</font> req.data.tab = <font color="#9999aa">&quot;explore&quot;</font>;
94 <font color="#aaaaaa">181:</font> }
95 <font color="#aaaaaa">182:</font> res.data.tabcolor = helma.sqlshell.colors[req.data.tab];
96 <font color="#aaaaaa">183:</font>
97 <font color="#aaaaaa">184:</font> var param = new Object();
98 <font color="#aaaaaa">185:</font> param.action = this.href();
99 <font color="#aaaaaa">186:</font>
100 <font color="#aaaaaa">187:</font> <font color="#33aa00"> // get connection
101 <font color="#aaaaaa">188:</font> </font> var con = this.datasource.getConnection();
102 <font color="#aaaaaa">189:</font>
103 <font color="#aaaaaa">190:</font> <font color="#33aa00"> // get database meta data
104 <font color="#aaaaaa">191:</font> </font> var meta = con.getMetaData();
105 <font color="#aaaaaa">192:</font>
106 <font color="#aaaaaa">193:</font> res.data.datasources = helma.sqlshell.getDatasources();
107 <font color="#aaaaaa">194:</font> res.data.schemas = this.getSchemas(meta);
108 <font color="#aaaaaa">195:</font> var schema = req.data.schema;
109 <font color="#aaaaaa">196:</font> res.data.tables = this.getTables(meta, schema);
110 <font color="#aaaaaa">197:</font>
111 <font color="#aaaaaa">198:</font> if (req.data.action) {
112 <font color="#aaaaaa">199:</font> app.data.repositories = helma.sqlshell.getRepositories();
113 <font color="#aaaaaa">200:</font> if (req.data.action == <font color="#9999aa">&quot;createproto&quot;</font> ) {
114 <font color="#aaaaaa">201:</font> var repos = app.repositories[req.data.repository];
115 <font color="#aaaaaa">202:</font> var file = new File(repos.directory.toString(), req.data.protoname);
116 <font color="#aaaaaa">203:</font> if (file.mkdir()) {
117 <font color="#aaaaaa">204:</font>
118 <font color="#aaaaaa">205:</font> renderSkin(this.getSkin(<font color="#9999aa">&quot;closePopup&quot;</font>), {
119 <font color="#aaaaaa">206:</font> parentUrl: this.href() + <font color="#9999aa">&quot;&amp;prototype=&quot;</font> + req.data.protoname,
120 <font color="#aaaaaa">207:</font> message: <font color="#9999aa">&quot;&lt;p&gt;Created directory &quot;</font> + file + <font color="#9999aa">&quot;&lt;/p&gt;&quot;</font> +
121 <font color="#aaaaaa">208:</font> <font color="#9999aa">&quot;&lt;p&gt;Please wait for prototypes to be updated...&lt;/p&gt;&quot;</font>
122 <font color="#aaaaaa">209:</font> } );
123 <font color="#aaaaaa">210:</font> return;
124 <font color="#aaaaaa">211:</font> } else {
125 <font color="#aaaaaa">212:</font> res.debug(<font color="#9999aa">&quot;Couldn't create directory: &quot;</font> + file);
126 <font color="#aaaaaa">213:</font> res.data.body = renderSkinAsString(this.getSkin(<font color="#9999aa">&quot;newproto&quot;</font>));
127 <font color="#aaaaaa">214:</font> }
128 <font color="#aaaaaa">215:</font> } else if (req.data.action == <font color="#9999aa">&quot;extras&quot;</font>) {
129 <font color="#aaaaaa">216:</font> var p = {};
130 <font color="#aaaaaa">217:</font> var t = app.getPrototype(req.data.target);
131 <font color="#aaaaaa">218:</font> var target = t &amp;&amp; t.dbMapping ? t.dbMapping.tableName : null;
132 <font color="#aaaaaa">219:</font> p.targetColumns = this.getColumns(meta, schema, target).toSource();
133 <font color="#aaaaaa">220:</font> p.localColumns = this.getColumns(meta, schema, req.data.__sqlshell_table__).toSource();
134 <font color="#aaaaaa">221:</font> res.data.body = renderSkinAsString(this.getSkin(req.data.action), p);
135 <font color="#aaaaaa">222:</font> } else if (req.data.action == <font color="#9999aa">&quot;generate&quot;</font>) {
136 <font color="#aaaaaa">223:</font> if (req.data.create) {
137 <font color="#aaaaaa">224:</font> renderSkin(this.getSkin(<font color="#9999aa">&quot;closePopup&quot;</font>), {
138 <font color="#aaaaaa">225:</font> parentUrl: this.href() + <font color="#9999aa">&quot;&amp;prototype=&quot;</font> + req.data.__sqlshell_prototype__,
139 <font color="#aaaaaa">226:</font> message: <font color="#9999aa">&quot;&lt;p&gt;Created type mapping &quot;</font> + file + <font color="#9999aa">&quot;&lt;/p&gt;&quot;</font> +
140 <font color="#aaaaaa">227:</font> <font color="#9999aa">&quot;&lt;p&gt;Please wait for prototypes to be updated...&lt;/p&gt;&quot;</font>
141 <font color="#aaaaaa">228:</font> } );
142 <font color="#aaaaaa">229:</font> } else {
143 <font color="#aaaaaa">230:</font> var fields = {};
144 <font color="#aaaaaa">231:</font> var s = new java.lang.StringBuffer();
145 <font color="#aaaaaa">232:</font> for (var i in req.data) {
146 <font color="#aaaaaa">233:</font> if (i.indexOf(<font color="#9999aa">&quot;maptype_&quot;</font>) == 0) {
147 <font color="#aaaaaa">234:</font> fields[i.substring(8)] = req.data[i];
148 <font color="#aaaaaa">235:</font> }
149 <font color="#aaaaaa">236:</font> s.append(<font color="#9999aa">&quot;&lt;input type='hidden' name='&quot;</font>).append(i)
150 <font color="#aaaaaa">237:</font> .append(<font color="#9999aa">&quot;' value='&quot;</font>).append(<font color="#9999aa">&quot;&quot;</font> + req.data[i]).append(<font color="#9999aa">&quot;'&gt;&quot;</font>);
151 <font color="#aaaaaa">238:</font> }
152 <font color="#aaaaaa">239:</font> if (req.data.__sqlshell_create__) {
153 <font color="#aaaaaa">240:</font> <font color="#33aa00"> // res.data.body = renderSkinAsString(this.getSkin(<font color="#9999aa">&quot;generate&quot;</font>), p);
154 <font color="#aaaaaa">241:</font> </font> var repos = app.getPrototype(req.data.__sqlshell_prototype__).repositories;
155 <font color="#aaaaaa">242:</font> var resName = <font color="#9999aa">&quot;type.properties&quot;</font>;
156 <font color="#aaaaaa">243:</font> for (var i in repos) {
157 <font color="#aaaaaa">244:</font> var resource = repos[i].getResource(resName);
158 <font color="#aaaaaa">245:</font> if (resource &amp;&amp; resource.exists()) {
159 <font color="#aaaaaa">246:</font> if (resource.getClass() == Packages.helma.framework.repository.FileResource) {
160 <font color="#aaaaaa">247:</font> var file = new File(resource.getName());
161 <font color="#aaaaaa">248:</font> var backup = new File(resource.getName() + <font color="#9999aa">&quot;.bak&quot;</font>);
162 <font color="#aaaaaa">249:</font> if (backup.exists()) {
163 <font color="#aaaaaa">250:</font> var n = 1;
164 <font color="#aaaaaa">251:</font> do {
165 <font color="#aaaaaa">252:</font> backup = new File(resource.getName() + <font color="#9999aa">&quot;.bak.&quot;</font> + n++)
166 <font color="#aaaaaa">253:</font> } while (backup.exists());
167 <font color="#aaaaaa">254:</font> }
168 <font color="#aaaaaa">255:</font> if (!file.renameTo(backup)) {
169 <font color="#aaaaaa">256:</font> res.debug(<font color="#9999aa">&quot;ERROR: Couldn't create backup for &quot;</font> + resource);
170 <font color="#aaaaaa">257:</font> }
171 <font color="#aaaaaa">258:</font> } else {
172 <font color="#aaaaaa">259:</font> res.debug(<font color="#9999aa">&quot;WARNING: Couldn't move &quot;</font> + resource);
173 <font color="#aaaaaa">260:</font> }
174 <font color="#aaaaaa">261:</font> }
175 <font color="#aaaaaa">262:</font> }
176 <font color="#aaaaaa">263:</font> var file = new File(repos[req.data.__sqlshell_repository__].getResource(resName).getName());
177 <font color="#aaaaaa">264:</font> file.open();
178 <font color="#aaaaaa">265:</font> file.writeln(<font color="#9999aa">&quot;# Created by Helma SqlShell at &quot;</font> + new Date());
179 <font color="#aaaaaa">266:</font> if (req.data.__sqlshell_extends__)
180 <font color="#aaaaaa">267:</font> file.writeln(<font color="#9999aa">&quot;_extends = &quot;</font> + req.data.__sqlshell_extends__);
181 <font color="#aaaaaa">268:</font> if (req.data.__sqlshell_primaryKey__)
182 <font color="#aaaaaa">269:</font> file.writeln(<font color="#9999aa">&quot;_id = &quot;</font> + req.data.__sqlshell_primaryKey__);
183 <font color="#aaaaaa">270:</font> if (req.data.__sqlshell_protoColumn__)
184 <font color="#aaaaaa">271:</font> file.writeln(<font color="#9999aa">&quot;_prototype = &quot;</font> + req.data.__sqlshell_protoColumn__);
185 <font color="#aaaaaa">272:</font> if (req.data.__sqlshell_nameColumn__)
186 <font color="#aaaaaa">273:</font> file.writeln(<font color="#9999aa">&quot;_name = &quot;</font> + req.data.__sqlshell_nameColumn__);
187 <font color="#aaaaaa">274:</font> file.writeln(<font color="#9999aa">&quot;&quot;</font>);
188 <font color="#aaaaaa">275:</font> for (var i in fields) {
189 <font color="#aaaaaa">276:</font> var propType = parseInt(fields[i]);
190 <font color="#aaaaaa">277:</font> var propName = req.data[i];
191 <font color="#aaaaaa">278:</font> if (!propName) continue;
192 <font color="#aaaaaa">279:</font> file.write(propName);
193 <font color="#aaaaaa">280:</font> file.write(<font color="#9999aa">&quot; = &quot;</font>);
194 <font color="#aaaaaa">281:</font> switch (propType) {
195 <font color="#aaaaaa">282:</font> case 0:
196 <font color="#aaaaaa">283:</font> file.writeln(req.data[i]);
197 <font color="#aaaaaa">284:</font> break;
198 <font color="#aaaaaa">285:</font> case 1:
199 <font color="#aaaaaa">286:</font> file.writeln(<font color="#9999aa">&quot;object(&quot;</font> + req.data[<font color="#9999aa">&quot;target_&quot;</font> + i] + <font color="#9999aa">&quot;)&quot;</font>);
200 <font color="#aaaaaa">287:</font> break;
201 <font color="#aaaaaa">288:</font> case 2:
202 <font color="#aaaaaa">289:</font> file.writeln(<font color="#9999aa">&quot;collection(&quot;</font> + req.data[<font color="#9999aa">&quot;target_&quot;</font> + i] + <font color="#9999aa">&quot;)&quot;</font>);
203 <font color="#aaaaaa">290:</font> break;
204 <font color="#aaaaaa">291:</font> case 3:
205 <font color="#aaaaaa">292:</font> file.writeln(<font color="#9999aa">&quot;mountpoint(&quot;</font> + req.data[<font color="#9999aa">&quot;target_&quot;</font> + i] + <font color="#9999aa">&quot;)&quot;</font>);
206 <font color="#aaaaaa">293:</font> break;
207 <font color="#aaaaaa">294:</font> default:
208 <font color="#aaaaaa">295:</font> res.debug(i + <font color="#9999aa">&quot;: &quot;</font> + fields[i]);
209 <font color="#aaaaaa">296:</font> }
210 <font color="#aaaaaa">297:</font> for (var m in this.mappingOptions) {
211 <font color="#aaaaaa">298:</font> if (this.mappingOptions[m] &lt;= propType &amp;&amp; req.data[i + <font color="#9999aa">&quot;_&quot;</font> + m]) {
212 <font color="#aaaaaa">299:</font> file.write(propName);
213 <font color="#aaaaaa">300:</font> file.write(<font color="#9999aa">&quot;.&quot;</font>);
214 <font color="#aaaaaa">301:</font> file.write(m.replace(<font color="#9999aa">&quot;_&quot;</font>, <font color="#9999aa">&quot;.&quot;</font>));
215 <font color="#aaaaaa">302:</font> file.write(<font color="#9999aa">&quot; = &quot;</font>);
216 <font color="#aaaaaa">303:</font> file.writeln(req.data[i + <font color="#9999aa">&quot;_&quot;</font> + m]);
217 <font color="#aaaaaa">304:</font> }
218 <font color="#aaaaaa">305:</font> }
219 <font color="#aaaaaa">306:</font> file.writeln(<font color="#9999aa">&quot;&quot;</font>);
220 <font color="#aaaaaa">307:</font> }
221 <font color="#aaaaaa">308:</font> file.close();
222 <font color="#aaaaaa">309:</font> res.data.body = <font color="#9999aa">&quot;Successfully created mapping in &quot;</font> + file;
223 <font color="#aaaaaa">310:</font> } else {
224 <font color="#aaaaaa">311:</font> var p = {};
225 <font color="#aaaaaa">312:</font> p.data = s.toString();
226 <font color="#aaaaaa">313:</font> res.data.repositories = helma.sqlshell.getProtoRepositories(req.data.__sqlshell_prototype__);
227 <font color="#aaaaaa">314:</font> res.data.body = renderSkinAsString(this.getSkin(<font color="#9999aa">&quot;generate&quot;</font>), p);
228 <font color="#aaaaaa">315:</font> }
229 <font color="#aaaaaa">316:</font> }
230 <font color="#aaaaaa">317:</font> } else {
231 <font color="#aaaaaa">318:</font> res.data.body = renderSkinAsString(this.getSkin(req.data.action));
232 <font color="#aaaaaa">319:</font> }
233 <font color="#aaaaaa">320:</font> } else {
234 <font color="#aaaaaa">321:</font> <font color="#33aa00"> // should we display type info on some table?
235 <font color="#aaaaaa">322:</font> </font> if (req.data.tab == <font color="#9999aa">&quot;explore&quot;</font>) {
236 <font color="#aaaaaa">323:</font> param.body = this.explore(meta, schema, param);
237 <font color="#aaaaaa">324:</font> } else if (req.data.tab == <font color="#9999aa">&quot;query&quot;</font>) {
238 <font color="#aaaaaa">325:</font> param.body = this.query(con, param);
239 <font color="#aaaaaa">326:</font> } else if (req.data.tab == <font color="#9999aa">&quot;map&quot;</font>) {
240 <font color="#aaaaaa">327:</font> param.body = this.map(meta, schema, con, param);
241 <font color="#aaaaaa">328:</font> }
242 <font color="#aaaaaa">329:</font> <font color="#33aa00"> // render the inner page skin and then the whole page
243 <font color="#aaaaaa">330:</font> </font> res.data.body = renderSkinAsString(<font color="#9999aa">&quot;helma.sqlshell.main&quot;</font>, param);
244 <font color="#aaaaaa">331:</font> }
245 <font color="#aaaaaa">332:</font>
246 <font color="#aaaaaa">333:</font> renderSkin(<font color="#9999aa">&quot;helma.sqlshell.page&quot;</font>);
247 <font color="#aaaaaa">334:</font> }
248 </pre>
249 </td>
250 </tr>
252 </table>
258 </body>
259 </html>