Clazz.declarePackage ("JSV.source"); Clazz.load (["JSV.source.XMLReader"], "JSV.source.AnIMLReader", ["java.lang.Double", "JU.BC", "$.Base64", "JSV.source.JDXSource"], function () { c$ = Clazz.decorateAsClass (function () { this.inResult = false; Clazz.instantialize (this, arguments); }, JSV.source, "AnIMLReader", JSV.source.XMLReader); Clazz.makeConstructor (c$, function () { Clazz.superConstructor (this, JSV.source.AnIMLReader, []); }); Clazz.overrideMethod (c$, "getXML", function (br) { try { this.source = new JSV.source.JDXSource (0, this.filePath); this.getSimpleXmlReader (br); this.parser.nextEvent (); this.processXML (0, 3); if (!this.checkPointCount ()) return null; this.xFactor = 1; this.yFactor = 1; this.populateVariables (); } catch (pe) { if (Clazz.exceptionOf (pe, Exception)) { System.err.println ("That file may be empty..."); this.errorLog.append ("That file may be empty... \n"); } else { throw pe; } } this.processErrors ("anIML"); try { br.close (); } catch (e1) { if (Clazz.exceptionOf (e1, java.io.IOException)) { } else { throw e1; } } return this.source; }, "java.io.BufferedReader"); Clazz.overrideMethod (c$, "processTag", function (tagId) { switch (tagId) { case 0: this.processAuditTrail (); return true; case 1: this.processExperimentStepSet (); return true; case 2: this.processSampleSet (); return true; case 11: this.processAuthor (); return true; case 3: this.inResult = true; return true; default: System.out.println ("AnIMLReader not processing tag " + JSV.source.XMLReader.tagNames[tagId]); return false; } }, "~N"); Clazz.overrideMethod (c$, "processEndTag", function (tagId) { switch (tagId) { case 3: case 1: this.inResult = false; break; } }, "~N"); Clazz.defineMethod (c$, "processAuditTrail", function () { if (this.tagName.equals ("user")) { this.parser.qualifiedValue (); } else if (this.tagName.equals ("timestamp")) { this.parser.qualifiedValue (); }}); Clazz.defineMethod (c$, "processSampleSet", function () { if (this.tagName.equals ("sample")) this.samplenum++; else if (this.tagName.equals ("parameter")) { this.attrList = this.parser.getAttrValueLC ("name"); if (this.attrList.equals ("name")) { this.parser.qualifiedValue (); } else if (this.attrList.equals ("owner")) { this.parser.qualifiedValue (); } else if (this.attrList.equals ("molecular formula")) { this.molForm = this.parser.qualifiedValue (); } else if (this.attrList.equals ("cas registry number")) { this.casRN = this.parser.qualifiedValue (); }}}); Clazz.defineMethod (c$, "processExperimentStepSet", function () { if (this.tagName.equals ("result")) { this.inResult = true; } else if (this.tagName.equals ("sampleref")) { if (this.parser.getAttrValueLC ("role").contains ("samplemeasurement")) this.sampleID = this.parser.getAttrValue ("sampleID"); } else if (this.tagName.equals ("author")) { this.process (11, true); } else if (this.tagName.equals ("timestamp")) { this.LongDate = this.parser.thisValue (); } else if (this.tagName.equals ("technique")) { this.techname = this.parser.getAttrValue ("name").toUpperCase () + " SPECTRUM"; } else if (this.tagName.equals ("vectorset") || this.tagName.equals ("seriesset") && this.inResult) { this.npoints = Integer.parseInt (this.parser.getAttrValue ("length")); this.xaxisData = Clazz.newDoubleArray (this.npoints, 0); this.yaxisData = Clazz.newDoubleArray (this.npoints, 0); } else if (this.tagName.equals ("vector") || this.tagName.equals ("series") && this.inResult) { var axisLabel = this.parser.getAttrValue ("name"); var dependency = this.parser.getAttrValueLC ("dependency"); if (dependency.equals ("independent")) { this.xUnits = axisLabel; this.getXValues (); } else if (dependency.equals ("dependent")) { this.yUnits = axisLabel; this.getYValues (); }} else if (this.tagName.equals ("parameter")) { if ((this.attrList = this.parser.getAttrValueLC ("name")).equals ("identifier")) { this.title = this.parser.qualifiedValue (); } else if (this.attrList.equals ("nucleus")) { this.obNucleus = this.parser.qualifiedValue (); } else if (this.attrList.equals ("observefrequency")) { this.StrObFreq = this.parser.qualifiedValue (); this.obFreq = Double.parseDouble (this.StrObFreq); } else if (this.attrList.equals ("referencepoint")) { this.refPoint = Double.parseDouble (this.parser.qualifiedValue ()); } else if (this.attrList.equals ("sample path length")) { this.pathlength = this.parser.qualifiedValue (); } else if (this.attrList.equals ("scanmode")) { this.parser.thisValue (); } else if (this.attrList.equals ("manufacturer")) { this.vendor = this.parser.thisValue (); } else if (this.attrList.equals ("model name")) { this.modelType = this.parser.thisValue (); } else if (this.attrList.equals ("resolution")) { this.resolution = this.parser.qualifiedValue (); }}}); Clazz.defineMethod (c$, "getXValues", function () { this.parser.nextTag (); if (this.parser.getTagName ().equals ("autoincrementedvalueset")) { this.parser.nextTag (); if (this.parser.getTagName ().equals ("startvalue")) this.firstX = Double.parseDouble (this.parser.qualifiedValue ()); this.nextStartTag (); if (this.parser.getTagName ().equals ("increment")) this.deltaX = Double.parseDouble (this.parser.qualifiedValue ()); }if (!this.inResult) { this.nextStartTag (); this.xUnits = this.parser.getAttrValue ("label"); }this.increasing = (this.deltaX > 0 ? true : false); this.continuous = true; for (var j = 0; j < this.npoints; j++) this.xaxisData[j] = this.firstX + (this.deltaX * j); this.lastX = this.xaxisData[this.npoints - 1]; }); Clazz.defineMethod (c$, "nextStartTag", function () { this.parser.nextStartTag (); while (this.parser.getTagType () == 6) { this.parser.nextStartTag (); } }); Clazz.defineMethod (c$, "getYValues", function () { var vectorType = this.parser.getAttrValueLC ("type"); if (vectorType.length == 0) vectorType = this.parser.getAttrValueLC ("vectorType"); this.parser.nextTag (); this.tagName = this.parser.getTagName (); if (this.tagName.equals ("individualvalueset")) { for (var ii = 0; ii < this.npoints; ii++) this.yaxisData[ii] = Double.parseDouble (this.parser.qualifiedValue ()); } else if (this.tagName.equals ("encodedvalueset")) { this.attrList = this.parser.getCharacters (); var dataArray = JU.Base64.decodeBase64 (this.attrList); if (dataArray.length != 0) { if (vectorType.equals ("float64")) { for (var i = 0, pt = 0; i < this.npoints; i++, pt += 8) this.yaxisData[i] = JU.BC.bytesToDoubleToFloat (dataArray, pt, false); } else { for (var i = 0, pt = 0; i < this.npoints; i++, pt += 4) this.yaxisData[i] = JU.BC.bytesToFloat (dataArray, pt, false); }}}this.parser.nextStartTag (); this.tagName = this.parser.getTagName (); this.yUnits = this.parser.getAttrValue ("label"); this.firstY = this.yaxisData[0]; }); Clazz.defineMethod (c$, "processAuthor", function () { if (this.tagName.equals ("name")) this.owner = this.parser.thisValue (); else if (this.tagName.contains ("location")) this.origin = this.parser.thisValue (); }); });