JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / jalview / workers / AlignCalcManager.js
1 Clazz.declarePackage ("jalview.workers");
2 Clazz.load (["jalview.api.AlignCalcManagerI", "java.util.ArrayList", "$.Collections", "$.HashSet", "$.Hashtable"], "jalview.workers.AlignCalcManager", null, function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.restartable = null;
5 this.blackList = null;
6 this.inProgress = null;
7 this.updating = null;
8 this.canUpdate = null;
9 Clazz.instantialize (this, arguments);
10 }, jalview.workers, "AlignCalcManager", null, jalview.api.AlignCalcManagerI);
11 Clazz.prepareFields (c$, function () {
12 this.restartable = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
13 this.blackList = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
14 this.inProgress = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());
15 this.updating = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());
16 this.canUpdate =  new java.util.HashSet ();
17 });
18 Clazz.overrideMethod (c$, "notifyStart", 
19 function (worker) {
20 {
21 var upd = this.updating.get (worker.getClass ());
22 if (upd == null) {
23 this.updating.put (worker.getClass (), upd = java.util.Collections.synchronizedList ( new java.util.ArrayList ()));
24 }{
25 upd.add (worker);
26 }}}, "jalview.api.AlignCalcWorkerI");
27 Clazz.overrideMethod (c$, "alreadyDoing", 
28 function (worker) {
29 {
30 return this.inProgress.containsKey (worker.getClass ());
31 }}, "jalview.api.AlignCalcWorkerI");
32 Clazz.overrideMethod (c$, "isPending", 
33 function (workingClass) {
34 var upd;
35 {
36 upd = this.updating.get (workingClass.getClass ());
37 if (upd == null) {
38 return false;
39 }{
40 if (upd.size () > 1) {
41 return true;
42 }}return false;
43 }}, "jalview.api.AlignCalcWorkerI");
44 Clazz.defineMethod (c$, "numberLive", 
45 function (worker) {
46 {
47 var upd = this.updating.get (worker.getClass ());
48 if (upd == null) {
49 return 0;
50 };return upd.size ();
51 }}, "jalview.api.AlignCalcWorkerI");
52 Clazz.overrideMethod (c$, "notifyWorking", 
53 function (worker) {
54 {
55 if (this.inProgress.get (worker.getClass ()) != null) {
56 if (false) {
57 System.err.println ("Warning: Multiple workers are running of type " + worker.getClass ());
58 }return false;
59 }this.inProgress.put (worker.getClass (), worker);
60 }return true;
61 }, "jalview.api.AlignCalcWorkerI");
62 Clazz.overrideMethod (c$, "workerComplete", 
63 function (worker) {
64 {
65 this.inProgress.remove (worker.getClass ());
66 var upd = this.updating.get (worker.getClass ());
67 if (upd != null) {
68 {
69 upd.remove (worker);
70 }this.canUpdate.add (worker);
71 }}}, "jalview.api.AlignCalcWorkerI");
72 Clazz.overrideMethod (c$, "workerCannotRun", 
73 function (worker) {
74 {
75 this.blackList.add (worker.getClass ());
76 }}, "jalview.api.AlignCalcWorkerI");
77 Clazz.defineMethod (c$, "isBlackListed", 
78 function (workerType) {
79 {
80 return this.blackList.contains (workerType);
81 }}, "Class");
82 Clazz.overrideMethod (c$, "startWorker", 
83 function (worker) {
84 var workerAsThread = worker;
85 if (workerAsThread.isAlive ()) {
86 workerAsThread.interrupt ();
87 worker = worker.getNewWorker ();
88 }worker.setName (worker.getClass ().getName ());
89 worker.start ();
90 }, "jalview.api.AlignCalcWorkerI");
91 Clazz.defineMethod (c$, "isWorking", 
92 function (worker) {
93 {
94 return worker != null && this.inProgress.get (worker.getClass ()) === worker;
95 }}, "jalview.api.AlignCalcWorkerI");
96 Clazz.defineMethod (c$, "isWorking", 
97 function () {
98 {
99 return this.inProgress.size () > 0;
100 }});
101 Clazz.overrideMethod (c$, "registerWorker", 
102 function (worker) {
103 {
104 if (!this.restartable.contains (worker)) {
105 this.restartable.add (worker);
106 }this.startWorker (worker);
107 }}, "jalview.api.AlignCalcWorkerI");
108 Clazz.overrideMethod (c$, "restartWorkers", 
109 function () {
110 {
111 for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
112 this.startWorker (worker);
113 }
114 }});
115 Clazz.overrideMethod (c$, "workingInvolvedWith", 
116 function (alignmentAnnotation) {
117 {
118 for (var worker, $worker = this.inProgress.values ().iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
119 if (worker.involves (alignmentAnnotation)) {
120 return true;
121 }}
122 }{
123 for (var workers, $workers = this.updating.values ().iterator (); $workers.hasNext () && ((workers = $workers.next ()) || true);) {
124 for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
125 if (worker.involves (alignmentAnnotation)) {
126 return true;
127 }}
128 }
129 }return false;
130 }, "jalview.datamodel.AlignmentAnnotation");
131 Clazz.overrideMethod (c$, "updateAnnotationFor", 
132 function (workerClass) {
133 var workers;
134 {
135 workers = this.canUpdate.toArray ( new Array (0));
136 }for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {
137 if (workerClass.equals (worker.getClass ())) {
138 worker.updateAnnotation ();
139 }}
140 }, "Class");
141 Clazz.overrideMethod (c$, "getRegisteredWorkersOfClass", 
142 function (workerClass) {
143 var workingClass =  new java.util.ArrayList ();
144 var workers;
145 {
146 workers = this.canUpdate.toArray ( new Array (this.canUpdate.size ()));
147 }for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {
148 if (workerClass.equals (worker.getClass ())) {
149 workingClass.add (worker);
150 }}
151 return (workingClass.size () == 0) ? null : workingClass;
152 }, "Class");
153 Clazz.overrideMethod (c$, "startRegisteredWorkersOfClass", 
154 function (workerClass) {
155 var workers = this.getRegisteredWorkersOfClass (workerClass);
156 if (workers == null) {
157 return false;
158 }for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
159 if (!this.isPending (worker)) {
160 this.startWorker (worker);
161 } else {
162 System.err.println ("Pending exists for " + workerClass);
163 }}
164 return true;
165 }, "Class");
166 Clazz.overrideMethod (c$, "workerMayRun", 
167 function (worker) {
168 {
169 if (this.blackList.contains (worker.getClass ())) {
170 this.blackList.remove (worker.getClass ());
171 }}}, "jalview.api.AlignCalcWorkerI");
172 Clazz.overrideMethod (c$, "removeRegisteredWorkersOfClass", 
173 function (typeToRemove) {
174 var workers = this.getRegisteredWorkersOfClass (typeToRemove);
175 var removable =  new java.util.ArrayList ();
176 var toremovannot =  new java.util.HashSet ();
177 {
178 for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
179 if (typeToRemove.equals (worker.getClass ())) {
180 removable.add (worker);
181 toremovannot.add (worker);
182 }}
183 this.restartable.removeAll (removable);
184 }{
185 for (var worker, $worker = this.canUpdate.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
186 if (typeToRemove.equals (worker.getClass ())) {
187 removable.add (worker);
188 toremovannot.add (worker);
189 }}
190 this.canUpdate.removeAll (removable);
191 }}, "Class");
192 });