/[cvs]/nfo/php/libs/org.netfrag.elib/xml/wddx/wddx_recordset.library
ViewVC logotype

Contents of /nfo/php/libs/org.netfrag.elib/xml/wddx/wddx_recordset.library

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Wed Jan 23 17:40:38 2002 UTC (22 years, 6 months ago) by cvsjoko
Branch: nfo, MAIN
CVS Tags: v003, HEAD
Changes since 1.1: +0 -0 lines
initial

1 <?
2
3 ///////////////////////////////////////////////////////////////////////////
4 //
5 // WddxRecordset
6 //
7 ///////////////////////////////////////////////////////////////////////////
8
9 class WddxRecordset {
10
11 var $matrix = array();
12 var $preserveFieldCase = '1';
13
14
15 /*
16 ///////////////////////////////////////////////////////////////////////////
17 // isColumn(name) returns true/false based on whether this is a column name
18 function wddxRecordset_isColumn(name)
19 {
20 // Columns must be objects
21 // WddxRecordset extensions might use properties prefixed with
22 // _private_ and these will not be treated as columns
23 return (typeof(this[name]) == "object" &&
24 name.indexOf("_private_") == -1);
25 }
26 */
27
28
29 ///////////////////////////////////////////////////////////////////////////
30 // getRowCount() returns the number of rows in the recordset
31
32 function getRowCount()
33 {
34
35 $nRowCount = 0;
36 reset ($this->matrix);
37 while (list($key, $val) = each ($this->matrix)) {
38
39 $nRowCount = count($this->matrix[$key]);
40 return $nRowCount;
41
42 }
43
44 }
45
46
47 ///////////////////////////////////////////////////////////////////////////
48 // addColumn(name) adds a column with that name and length == getRowCount()
49 function addColumn($name)
50 {
51
52 $this->matrix["$name"]["0"] = '';
53 $nLen = $this->getRowCount();
54
55 for ($i = 0; $i < $nLen; $i++)
56 {
57 $this->matrix["$name"]["$i"] = '';
58 }
59 // $this[$this->preserveFieldCase ? $name : lc($name)] = $colValue;
60 // $this->matrix[$name][0] = $colValue;
61 }
62
63
64 ///////////////////////////////////////////////////////////////////////////
65 // addRows() adds n rows to all columns of the recordset
66 function addRows($n)
67 {
68
69 reset ($this->matrix);
70 while (list($key, $val) = each ($this->matrix)) {
71
72 $nRowCount = count($this->matrix[$key]);
73 for ($i = $nRowCount; $i < $nRowCount + $n; ++$i)
74 {
75 $this->matrix["$key"]["$i"] = '';
76 }
77
78 }
79
80 /*
81 for (var col in this)
82 {
83 if (this.isColumn(col))
84 {
85 var nLen = this[col].length;
86 for (var i = nLen; i < nLen + n; ++i)
87 {
88 this[col][i] = '';
89 }
90 }
91 }
92 */
93 }
94
95
96 ///////////////////////////////////////////////////////////////////////////
97 // getField() returns the element in a given (row, col) position
98 function getField($row, $col)
99 {
100 // return this[this.preserveFieldCase ? col : col.toLowerCase()][row];
101 return $this->matrix[$col][$row];
102 }
103
104
105 ///////////////////////////////////////////////////////////////////////////
106 // setField() sets the element in a given (row, col) position to value
107 function setField($row, $col, $value)
108 {
109 // this[this.preserveFieldCase ? col : col.toLowerCase()][row] = value;
110 $this->matrix[$col][$row] = $value;
111 }
112
113
114
115 ///////////////////////////////////////////////////////////////////////////
116 // wddxSerialize() serializes a recordset
117 // returns true/false
118 function wddxSerialize(&$serializer)
119 {
120 // Create an array and a list of column names
121 $colNamesList = "";
122 $colNames = array();
123 $i = 0;
124
125 reset ($this->matrix);
126 $priv_bool_isFirst = 1;
127 while (list($key, $val) = each ($this->matrix)) {
128
129 $colNames[$i] = $key;
130 $i++;
131
132 if (!$priv_bool_isFirst)
133 {
134 $colNamesList .= ",";
135 }
136 $colNamesList .= $key;
137
138 $priv_bool_isFirst = 0;
139 }
140
141
142 /*
143 for (var col in this)
144 {
145 if (this.isColumn(col))
146 {
147 colNames[i++] = col;
148
149 if (colNamesList.length > 0)
150 {
151 colNamesList += ",";
152 }
153 colNamesList += col;
154 }
155 }
156 */
157
158 $nRows = $this->getRowCount();
159
160 $serializer->write("<recordset rowCount='" . $nRows . "' fieldNames='" . $colNamesList . "'>");
161
162 $j = 0;
163 $bSuccess = true;
164
165 for ($j = 0; $bSuccess && $j < count($colNames); $j++)
166 {
167 $name = $colNames[$j];
168 $serializer->write("<field name='" . $name . "'>");
169
170 for ($row = 0; $bSuccess && $row < $nRows; $row++)
171 {
172 $bSuccess = $serializer->serializeValue($this->matrix[$name][$row]);
173 }
174
175 $serializer->write("</field>");
176 }
177
178 $serializer->write("</recordset>");
179
180 return $bSuccess;
181 }
182
183
184 /*
185 ///////////////////////////////////////////////////////////////////////////
186 // dump(escapeStrings) returns an HTML table with the recordset data
187 // It is a convenient routine for debugging and testing recordsets
188 // The boolean parameter escapeStrings determines whether the <>&
189 // characters in string values are escaped as &lt;&gt;&amp;
190 function wddxRecordset_dump(escapeStrings)
191 {
192 // Get row count
193 var nRows = this.getRowCount();
194
195 // Determine column names
196 var colNames = new Array();
197 var i = 0;
198 for (var col in this)
199 {
200 if (typeof(this[col]) == "object")
201 {
202 colNames[i++] = col;
203 }
204 }
205
206 // Build table headers
207 var o = "<table border=1><tr><td><b>RowNumber</b></td>";
208 for (i = 0; i < colNames.length; ++i)
209 {
210 o += "<td><b>" + colNames[i] + "</b></td>";
211 }
212 o += "</tr>";
213
214 // Build data cells
215 for (var row = 0; row < nRows; ++row)
216 {
217 o += "<tr><td>" + row + "</td>";
218 for (i = 0; i < colNames.length; ++i)
219 {
220 var elem = this.getField(row, colNames[i]);
221 if (escapeStrings && typeof(elem) == "string")
222 {
223 var str = "";
224 for (var j = 0; j < elem.length; ++j)
225 {
226 var ch = elem.charAt(j);
227 if (ch == '<')
228 {
229 str += "&lt;";
230 }
231 else if (ch == '>')
232 {
233 str += "&gt;";
234 }
235 else if (ch == '&')
236 {
237 str += "&amp;";
238 }
239 else
240 {
241 str += ch;
242 }
243 }
244 o += ("<td>" + str + "</td>");
245 }
246 else
247 {
248 o += ("<td>" + elem + "</td>");
249 }
250 }
251 o += "</tr>";
252 }
253
254 // Close table
255 o += "</table>";
256
257 // Return HTML recordset dump
258 return o;
259 }
260
261
262 ///////////////////////////////////////////////////////////////////////////
263 // WddxRecordset([flagPreserveFieldCase]) creates an empty recordset.
264 // WddxRecordset(columns [, flagPreserveFieldCase]) creates a recordset
265 // with a given set of columns provided as an array of strings.
266 // WddxRecordset(columns, rows [, flagPreserveFieldCase]) creates a
267 // recordset with these columns and some number of rows.
268 // In all cases, flagPreserveFieldCase determines whether the exact case
269 // of field names is preserved. If omitted, the default value is false
270 // which means that all field names will be lowercased.
271 function WddxRecordset()
272 {
273 // Add default properties
274 this.preserveFieldCase = false;
275
276 // Add extensions
277 if (typeof(wddxRecordsetExtensions) == "object")
278 {
279 for (var prop in wddxRecordsetExtensions)
280 {
281 // Hook-up method to WddxRecordset object
282 this[prop] = wddxRecordsetExtensions[prop]
283 }
284 }
285
286 // Add built-in methods
287 this.getRowCount = wddxRecordset_getRowCount;
288 this.addColumn = wddxRecordset_addColumn;
289 this.addRows = wddxRecordset_addRows;
290 this.isColumn = wddxRecordset_isColumn;
291 this.getField = wddxRecordset_getField;
292 this.setField = wddxRecordset_setField;
293 this.wddxSerialize = wddxRecordset_wddxSerialize;
294 this.dump = wddxRecordset_dump;
295
296 // Perfom any needed initialization
297 if (WddxRecordset.arguments.length > 0)
298 {
299 if (typeof(val = WddxRecordset.arguments[0].valueOf()) == "boolean")
300 {
301 // Case preservation flag is provided as 1st argument
302 this.preserveFieldCase = WddxRecordset.arguments[0];
303 }
304 else
305 {
306 // First argument is the array of column names
307 var cols = WddxRecordset.arguments[0];
308
309 // Second argument could be the length or the preserve case flag
310 var nLen = 0;
311 if (WddxRecordset.arguments.length > 1)
312 {
313 if (typeof(val = WddxRecordset.arguments[1].valueOf()) == "boolean")
314 {
315 // Case preservation flag is provided as 2nd argument
316 this.preserveFieldCase = WddxRecordset.arguments[1];
317 }
318 else
319 {
320 // Explicitly specified recordset length
321 nLen = WddxRecordset.arguments[1];
322
323 if (WddxRecordset.arguments.length > 2)
324 {
325 // Case preservation flag is provided as 3rd argument
326 this.preserveFieldCase = WddxRecordset.arguments[2];
327 }
328 }
329 }
330
331 for (var i = 0; i < cols.length; ++i)
332 {
333 var colValue = new Array(nLen);
334 for (var j = 0; j < nLen; ++j)
335 {
336 colValue[j] = null;
337 }
338
339 this[this.preserveFieldCase ? cols[i] : cols[i].toLowerCase()] = colValue;
340 }
341 }
342 }
343 }
344 */
345
346 }
347
348 ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed