1 /* generate fieldmapper javascript classes. This expects a global variable
2 called 'fmclasses' to be fleshed with the classes we need to build */
4 function Fieldmapper() {}
6 var errorstr = "Attempt to build fieldmapper object with non-array";
8 Fieldmapper.prototype.clone = function() {
9 var obj = new this.constructor();
11 for( var i in this.a ) {
12 var thing = this.a[i];
13 if(thing == null) continue;
15 if( thing._isfieldmapper ) {
16 obj.a[i] = thing.clone();
19 if(instanceOf(thing, Array)) {
20 obj.a[i] = new Array();
22 for( var j in thing ) {
24 if( thing[j]._isfieldmapper )
25 obj.a[i][j] = thing[j].clone();
27 obj.a[i][j] = thing[j];
36 Fieldmapper.prototype.isnew = function(n) { if(arguments.length == 1) this.a[0] =n; return this.a[0]; }
37 Fieldmapper.prototype.ischanged = function(n) { if(arguments.length == 1) this.a[1] =n; return this.a[1]; }
38 Fieldmapper.prototype.isdeleted = function(n) { if(arguments.length == 1) this.a[2] =n; return this.a[2]; }
39 function FMEX(message) { this.message = message; }
40 FMEX.toString = function() { return "FieldmapperException: " + this.message + "\n"; }
43 for( var cl in fmclasses ) {
44 string += cl + ".prototype = new Fieldmapper(); " +
45 cl + ".prototype.constructor = " + cl + ";" +
46 cl + ".baseClass = Fieldmapper.constructor;" +
47 "function " + cl + "(a) { " +
48 "this.classname = \"" + cl + "\";" +
49 "this._isfieldmapper = true;" +
50 "if(a) { if(a.constructor == Array) this.a = a; else throw new FMEX(errorstr);} else this.a = []}";
52 string += cl + "._isfieldmapper=true;";
54 for( var pos in fmclasses[cl] ) {
55 var p = parseInt(pos) + 3;
56 var field = fmclasses[cl][pos];
57 string += cl + ".prototype." + field +
58 "=function(n){if(arguments.length == 1)this.a[" +
59 p + "]=n;return this.a[" + p + "];};";