JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / datamodel / SearchResults.js
1 Clazz.declarePackage ("jalview.datamodel");\r
2 Clazz.load (["java.util.ArrayList"], "jalview.datamodel.SearchResults", ["java.lang.StringBuilder", "java.util.Arrays"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.matches = null;\r
5 if (!Clazz.isClassDefined ("jalview.datamodel.SearchResults.Match")) {\r
6 jalview.datamodel.SearchResults.$SearchResults$Match$ ();\r
7 }\r
8 Clazz.instantialize (this, arguments);\r
9 }, jalview.datamodel, "SearchResults");\r
10 Clazz.prepareFields (c$, function () {\r
11 this.matches =  new java.util.ArrayList ();\r
12 });\r
13 Clazz.defineMethod (c$, "addResult", \r
14 function (seq, start, end) {\r
15 this.matches.add (Clazz.innerTypeInstance (jalview.datamodel.SearchResults.Match, this, null, seq, start, end));\r
16 }, "jalview.datamodel.SequenceI,~N,~N");\r
17 Clazz.defineMethod (c$, "involvesSequence", \r
18 function (sequence) {\r
19 var ds = sequence.getDatasetSequence ();\r
20 for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
21 if (m.sequence != null && (m.sequence === sequence || m.sequence === ds)) {\r
22 return true;\r
23 }}\r
24 return false;\r
25 }, "jalview.datamodel.SequenceI");\r
26 Clazz.defineMethod (c$, "getResults", \r
27 function (sequence, start, end) {\r
28 if (this.matches.isEmpty ()) {\r
29 return null;\r
30 }var result = null;\r
31 var tmp = null;\r
32 var resultLength;\r
33 var matchStart = 0;\r
34 var matchEnd = 0;\r
35 var mfound;\r
36 for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
37 mfound = false;\r
38 if (m.sequence === sequence) {\r
39 mfound = true;\r
40 matchStart = sequence.findIndex (m.start) - 1;\r
41 matchEnd = sequence.findIndex (m.end) - 1;\r
42 } else if (m.sequence === sequence.getDatasetSequence ()) {\r
43 mfound = true;\r
44 matchStart = sequence.findIndex (m.start) - 1;\r
45 matchEnd = sequence.findIndex (m.end) - 1;\r
46 }if (mfound) {\r
47 if (matchStart <= end && matchEnd >= start) {\r
48 if (matchStart < start) {\r
49 matchStart = start;\r
50 }if (matchEnd > end) {\r
51 matchEnd = end;\r
52 }if (result == null) {\r
53 result =  Clazz.newIntArray (-1, [matchStart, matchEnd]);\r
54 } else {\r
55 resultLength = result.length;\r
56 tmp =  Clazz.newIntArray (resultLength + 2, 0);\r
57 System.arraycopy (result, 0, tmp, 0, resultLength);\r
58 result = tmp;\r
59 result[resultLength] = matchStart;\r
60 result[resultLength + 1] = matchEnd;\r
61 }} else {\r
62 }}}\r
63 return result;\r
64 }, "jalview.datamodel.SequenceI,~N,~N");\r
65 Clazz.defineMethod (c$, "getSize", \r
66 function () {\r
67 return this.matches.size ();\r
68 });\r
69 Clazz.defineMethod (c$, "getResultSequence", \r
70 function (index) {\r
71 return this.matches.get (index).sequence;\r
72 }, "~N");\r
73 Clazz.defineMethod (c$, "getResultStart", \r
74 function (i) {\r
75 return this.matches.get (i).start;\r
76 }, "~N");\r
77 Clazz.defineMethod (c$, "getResultEnd", \r
78 function (i) {\r
79 return this.matches.get (i).end;\r
80 }, "~N");\r
81 Clazz.defineMethod (c$, "isEmpty", \r
82 function () {\r
83 return this.matches.isEmpty ();\r
84 });\r
85 Clazz.defineMethod (c$, "getResults", \r
86 function () {\r
87 return this.matches;\r
88 });\r
89 Clazz.overrideMethod (c$, "toString", \r
90 function () {\r
91 var result =  new StringBuilder (256);\r
92 for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
93 result.append (m.toString ());\r
94 }\r
95 return result.toString ();\r
96 });\r
97 c$.$SearchResults$Match$ = function () {\r
98 Clazz.pu$h ();\r
99 c$ = Clazz.decorateAsClass (function () {\r
100 Clazz.prepareCallback (this, arguments);\r
101 this.sequence = null;\r
102 this.start = 0;\r
103 this.end = 0;\r
104 Clazz.instantialize (this, arguments);\r
105 }, jalview.datamodel.SearchResults, "Match");\r
106 Clazz.makeConstructor (c$, \r
107 function (a, b, c) {\r
108 this.sequence = a;\r
109 this.start = b;\r
110 this.end = c;\r
111 }, "jalview.datamodel.SequenceI,~N,~N");\r
112 Clazz.defineMethod (c$, "getSequence", \r
113 function () {\r
114 return this.sequence;\r
115 });\r
116 Clazz.defineMethod (c$, "getStart", \r
117 function () {\r
118 return this.start;\r
119 });\r
120 Clazz.defineMethod (c$, "getEnd", \r
121 function () {\r
122 return this.end;\r
123 });\r
124 Clazz.overrideMethod (c$, "toString", \r
125 function () {\r
126 var a = this.sequence.getSequence ();\r
127 var b = Math.max (this.start - 1, 0);\r
128 var c = Math.min (this.end, a.length + 1);\r
129 return String.valueOf (java.util.Arrays.copyOfRange (a, b, c));\r
130 });\r
131 Clazz.defineMethod (c$, "setSequence", \r
132 function (a) {\r
133 this.sequence = a;\r
134 }, "jalview.datamodel.SequenceI");\r
135 c$ = Clazz.p0p ();\r
136 };\r
137 });\r