Clazz.declarePackage ("JS"); Clazz.load (["JS.CIPData", "java.util.Hashtable"], "JS.CIPDataTracker", ["JU.BS", "JV.JC"], function () { c$ = Clazz.decorateAsClass (function () { this.htTracker = null; if (!Clazz.isClassDefined ("JS.CIPDataTracker.CIPTracker")) { JS.CIPDataTracker.$CIPDataTracker$CIPTracker$ (); } this.lastIndex = -1; this.lastInfo = null; Clazz.instantialize (this, arguments); }, JS, "CIPDataTracker", JS.CIPData); Clazz.prepareFields (c$, function () { this.htTracker = new java.util.Hashtable (); }); Clazz.overrideMethod (c$, "isTracker", function () { return true; }); Clazz.overrideMethod (c$, "track", function (cip, a, b, sphere, finalScore, trackTerminal) { if (a == null || b == null || a.rootSubstituent === b.rootSubstituent) return; var t; var a1; var b1; if (finalScore > 0) { a1 = b; b1 = a; } else { a1 = a; b1 = b; }t = Clazz.innerTypeInstance (JS.CIPDataTracker.CIPTracker, this, null, cip.currentRule, a1, b1, sphere, Math.abs (finalScore), trackTerminal); this.htTracker.put (JS.CIPDataTracker.getTrackerKey (cip.root, a1, b1), t); }, "JS.CIPChirality,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~N,~N,~B"); Clazz.overrideMethod (c$, "getRootTrackerResult", function (root) { var s = ""; for (var i = 0; i < 3; i++) { s += "\t" + root.atoms[i] + "\t--------------\n"; var t = this.htTracker.get (JS.CIPDataTracker.getTrackerKey (root, root.atoms[i], root.atoms[i + 1])); if (t != null) { var n = Math.max (t.bsa.length (), t.bsb.length ()); s += t.getTrackerLine (t.a, t.bsa, (t.rule == 8 ? t.a.listRS[2] : null), n); s += "\t " + JV.JC.getCIPRuleName (t.rule) + "\n"; s += t.getTrackerLine (t.b, t.bsb, (t.rule == 8 ? t.b.listRS[2] : null), n); }} s += "\t" + root.atoms[3] + "\t--------------\n"; System.out.println (root + "\n\n" + s); this.setCIPInfo (s, root.atom.getIndex (), root.atom.getAtomName ()); return s; }, "JS.CIPChirality.CIPAtom"); Clazz.defineMethod (c$, "setCIPInfo", function (s, index, name) { var modelInfo = this.getModelAuxiliaryInfoForAtom (index); if (modelInfo != null) { var cipInfo = modelInfo.get ("CIPInfo"); if (cipInfo == null) modelInfo.put ("CIPInfo", cipInfo = new java.util.Hashtable ()); cipInfo.put (name, s); }}, "~S,~N,~S"); Clazz.defineMethod (c$, "getModelAuxiliaryInfoForAtom", function (index) { return (index == this.lastIndex ? this.lastInfo : (this.lastInfo = this.vwr.ms.getModelAuxiliaryInfo (this.vwr.ms.at[this.lastIndex = index].getModelIndex ()))); }, "~N"); c$.getTrackerKey = Clazz.defineMethod (c$, "getTrackerKey", function (root, a, b) { return (b.rootSubstituent == null ? "" : root.atom.getAtomName () + "." + a.rootSubstituent.atom.getAtomName () + "-" + b.rootSubstituent.atom.getAtomName ()); }, "JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom"); c$.$CIPDataTracker$CIPTracker$ = function () { Clazz.pu$h(self.c$); c$ = Clazz.decorateAsClass (function () { Clazz.prepareCallback (this, arguments); this.a = null; this.b = null; this.sphere = 0; this.score = 0; this.rule = 0; this.bsa = null; this.bsb = null; this.trackTerminal = false; Clazz.instantialize (this, arguments); }, JS.CIPDataTracker, "CIPTracker"); Clazz.makeConstructor (c$, function (a, b, c, d, e, f) { this.rule = a; this.a = b; this.b = c; this.sphere = d; this.score = e; this.trackTerminal = f; this.bsa = b.listRS == null ? new JU.BS () : b.listRS[0]; this.bsb = c.listRS == null ? new JU.BS () : c.listRS[0]; }, "~N,JS.CIPChirality.CIPAtom,JS.CIPChirality.CIPAtom,~N,~N,~B"); Clazz.defineMethod (c$, "getTrackerLine", function (a, b, c, d) { return "\t\t" + a.myPath + (!this.trackTerminal ? "" : a.isTerminal ? "-o" : "-" + a.atoms[0].atom.getAtomName ()) + (this.rule != 8 && b.length () == 0 ? "" : "\t" + this.getLikeUnlike (b, a.listRS, d) + (c == null ? "" : " " + this.getLikeUnlike (c, a.listRS, -d))) + "\n"; }, "JS.CIPChirality.CIPAtom,JU.BS,JU.BS,~N"); Clazz.defineMethod (c$, "getLikeUnlike", function (a, b, c) { if (this.rule != 8 && this.rule != 6) return ""; var d = (c > 0 && (this.rule == 8 || a === b[1]) ? "(R)" : "(S)"); c = Math.abs (c); for (var e = 0; e < c; e++) d += (a.get (e) ? "l" : "u"); return d; }, "JU.BS,~A,~N"); c$ = Clazz.p0p (); }; });