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];
37 function FMEX(message) { this.message = message; }
38 FMEX.toString = function() { return "FieldmapperException: " + this.message + "\n"; }
41 for( var cl in fmclasses ) {
42 string += cl + ".prototype = new Fieldmapper(); " +
43 cl + ".prototype.constructor = " + cl + ";" +
44 cl + ".baseClass = Fieldmapper.constructor;" +
45 "function " + cl + "(a) { " +
46 "this.classname = \"" + cl + "\";" +
47 "this._isfieldmapper = true;" +
48 "if(a) { if(a.constructor == Array) this.a = a; else throw new FMEX(errorstr);} else this.a = []}";
50 string += cl + "._isfieldmapper=true;";
52 fmclasses[cl].push('isnew');
53 fmclasses[cl].push('ischanged');
54 fmclasses[cl].push('isdeleted');
56 for( var pos in fmclasses[cl] ) {
57 var p = parseInt(pos);
58 var field = fmclasses[cl][pos];
59 string += cl + ".prototype." + field +
60 "=function(n){if(arguments.length == 1)this.a[" +
61 p + "]=n;return this.a[" + p + "];};";