1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
|
21 |
|
package jalview.bin; |
22 |
|
|
23 |
|
import java.awt.Color; |
24 |
|
import java.io.BufferedReader; |
25 |
|
import java.io.File; |
26 |
|
import java.io.FileInputStream; |
27 |
|
import java.io.FileNotFoundException; |
28 |
|
import java.io.FileOutputStream; |
29 |
|
import java.io.IOException; |
30 |
|
import java.io.InputStream; |
31 |
|
import java.io.InputStreamReader; |
32 |
|
import java.io.PrintWriter; |
33 |
|
import java.io.StringWriter; |
34 |
|
import java.net.Authenticator; |
35 |
|
import java.net.PasswordAuthentication; |
36 |
|
import java.net.URL; |
37 |
|
import java.text.DateFormat; |
38 |
|
import java.text.SimpleDateFormat; |
39 |
|
import java.util.ArrayList; |
40 |
|
import java.util.Arrays; |
41 |
|
import java.util.Collection; |
42 |
|
import java.util.Collections; |
43 |
|
import java.util.Date; |
44 |
|
import java.util.Enumeration; |
45 |
|
import java.util.HashMap; |
46 |
|
import java.util.List; |
47 |
|
import java.util.Locale; |
48 |
|
import java.util.Map; |
49 |
|
import java.util.Properties; |
50 |
|
import java.util.StringTokenizer; |
51 |
|
import java.util.TreeSet; |
52 |
|
|
53 |
|
import javax.swing.LookAndFeel; |
54 |
|
import javax.swing.UIManager; |
55 |
|
|
56 |
|
import jalview.analytics.Plausible; |
57 |
|
import jalview.bin.argparser.Arg; |
58 |
|
import jalview.bin.argparser.ArgParser; |
59 |
|
import jalview.datamodel.PDBEntry; |
60 |
|
import jalview.gui.Preferences; |
61 |
|
import jalview.gui.UserDefinedColours; |
62 |
|
import jalview.log.JLoggerLog4j; |
63 |
|
import jalview.schemes.ColourSchemeLoader; |
64 |
|
import jalview.schemes.ColourSchemes; |
65 |
|
import jalview.schemes.UserColourScheme; |
66 |
|
import jalview.structure.StructureImportSettings; |
67 |
|
import jalview.urls.IdOrgSettings; |
68 |
|
import jalview.util.ChannelProperties; |
69 |
|
import jalview.util.ColorUtils; |
70 |
|
import jalview.util.HttpUtils; |
71 |
|
import jalview.util.LaunchUtils; |
72 |
|
import jalview.util.MessageManager; |
73 |
|
import jalview.util.Platform; |
74 |
|
import jalview.ws.sifts.SiftsSettings; |
75 |
|
|
76 |
|
|
77 |
|
|
78 |
|
|
79 |
|
|
80 |
|
|
81 |
|
|
82 |
|
|
83 |
|
|
84 |
|
|
85 |
|
|
86 |
|
|
87 |
|
|
88 |
|
|
89 |
|
|
90 |
|
|
91 |
|
|
92 |
|
|
93 |
|
|
94 |
|
|
95 |
|
|
96 |
|
|
97 |
|
|
98 |
|
|
99 |
|
|
100 |
|
|
101 |
|
|
102 |
|
|
103 |
|
|
104 |
|
|
105 |
|
|
106 |
|
|
107 |
|
|
108 |
|
|
109 |
|
|
110 |
|
|
111 |
|
|
112 |
|
|
113 |
|
|
114 |
|
|
115 |
|
|
116 |
|
|
117 |
|
|
118 |
|
|
119 |
|
|
120 |
|
|
121 |
|
|
122 |
|
|
123 |
|
|
124 |
|
|
125 |
|
|
126 |
|
|
127 |
|
|
128 |
|
|
129 |
|
|
130 |
|
|
131 |
|
|
132 |
|
|
133 |
|
|
134 |
|
|
135 |
|
|
136 |
|
|
137 |
|
|
138 |
|
|
139 |
|
|
140 |
|
|
141 |
|
|
142 |
|
|
143 |
|
|
144 |
|
|
145 |
|
|
146 |
|
|
147 |
|
|
148 |
|
|
149 |
|
|
150 |
|
|
151 |
|
|
152 |
|
|
153 |
|
|
154 |
|
|
155 |
|
|
156 |
|
|
157 |
|
|
158 |
|
|
159 |
|
|
160 |
|
|
161 |
|
|
162 |
|
|
163 |
|
|
164 |
|
|
165 |
|
|
166 |
|
|
167 |
|
|
168 |
|
|
169 |
|
|
170 |
|
|
171 |
|
|
172 |
|
|
173 |
|
|
174 |
|
|
175 |
|
|
176 |
|
|
177 |
|
|
178 |
|
|
179 |
|
|
180 |
|
|
181 |
|
|
182 |
|
|
183 |
|
|
184 |
|
|
185 |
|
|
186 |
|
|
187 |
|
|
188 |
|
|
189 |
|
|
190 |
|
|
191 |
|
|
192 |
|
|
193 |
|
|
194 |
|
|
195 |
|
|
196 |
|
|
197 |
|
|
198 |
|
|
199 |
|
|
200 |
|
|
201 |
|
|
202 |
|
|
203 |
|
|
204 |
|
|
205 |
|
|
206 |
|
|
207 |
|
|
208 |
|
|
209 |
|
|
210 |
|
|
211 |
|
|
212 |
|
|
213 |
|
|
214 |
|
|
215 |
|
|
216 |
|
|
217 |
|
|
218 |
|
|
219 |
|
|
220 |
|
|
221 |
|
|
222 |
|
|
223 |
|
|
224 |
|
|
225 |
|
|
226 |
|
|
227 |
|
|
228 |
|
|
229 |
|
|
230 |
|
|
231 |
|
|
232 |
|
|
233 |
|
|
234 |
|
|
235 |
|
|
236 |
|
|
237 |
|
|
238 |
|
|
239 |
|
|
240 |
|
|
241 |
|
@author |
242 |
|
@version |
243 |
|
|
|
|
| 56.6% |
Uncovered Elements: 315 (726) |
Complexity: 216 |
Complexity Density: 0.46 |
|
244 |
|
public class Cache |
245 |
|
{ |
246 |
|
|
247 |
|
|
248 |
|
|
249 |
|
public static final String CASTORLOGLEVEL = "logs.Castor.level"; |
250 |
|
|
251 |
|
|
252 |
|
|
253 |
|
|
254 |
|
public static final String AXISLOGLEVEL = "logs.Axis.level"; |
255 |
|
|
256 |
|
|
257 |
|
|
258 |
|
|
259 |
|
public static final String JALVIEWLOGLEVEL = "logs.Jalview.level"; |
260 |
|
|
261 |
|
|
262 |
|
public static final String BOOTSTRAP_TEST = "BOOTSTRAP_TEST"; |
263 |
|
|
264 |
|
|
265 |
|
|
266 |
|
|
267 |
|
public static final String DEFAULT_SIFTS_DOWNLOAD_DIR = System |
268 |
|
.getProperty("user.home") + File.separatorChar |
269 |
|
+ ".sifts_downloads" + File.separatorChar; |
270 |
|
|
271 |
|
private final static String DEFAULT_CACHE_THRESHOLD_IN_DAYS = "2"; |
272 |
|
|
273 |
|
private final static String DEFAULT_FAIL_SAFE_PID_THRESHOLD = "30"; |
274 |
|
|
275 |
|
|
276 |
|
|
277 |
|
|
278 |
|
private static final String ID_ORG_FILE = System.getProperty("user.home") |
279 |
|
+ File.separatorChar + ".identifiers.org.ids.json"; |
280 |
|
|
281 |
|
|
282 |
|
|
283 |
|
|
284 |
|
private final static String PDB_DOWNLOAD_FORMAT = PDBEntry.Type.MMCIF |
285 |
|
.toString(); |
286 |
|
|
287 |
|
private final static String DEFAULT_PDB_FILE_PARSER = StructureImportSettings.StructureParser.JMOL_PARSER |
288 |
|
.toString(); |
289 |
|
|
290 |
|
|
291 |
|
|
292 |
|
|
293 |
|
|
294 |
|
|
295 |
|
private static final DateFormat date_format = SimpleDateFormat |
296 |
|
.getDateTimeInstance(SimpleDateFormat.MEDIUM, |
297 |
|
SimpleDateFormat.MEDIUM, Locale.UK); |
298 |
|
|
299 |
|
|
300 |
|
|
301 |
|
|
302 |
|
|
303 |
|
public final static String JALVIEW_LOGGER_NAME = "JalviewLogger"; |
304 |
|
|
305 |
|
|
306 |
|
public final static String[] startupProxyProperties = { |
307 |
|
System.getProperty("http.proxyHost"), |
308 |
|
System.getProperty("http.proxyPort"), |
309 |
|
System.getProperty("https.proxyHost"), |
310 |
|
System.getProperty("https.proxyPort"), |
311 |
|
System.getProperty("http.proxyUser"), |
312 |
|
System.getProperty("http.proxyPassword"), |
313 |
|
System.getProperty("https.proxyUser"), |
314 |
|
System.getProperty("https.proxyPassword"), |
315 |
|
System.getProperty("http.nonProxyHosts") }; |
316 |
|
|
317 |
|
public final static String PROXYTYPE_NONE = "none"; |
318 |
|
|
319 |
|
|
320 |
|
public final static String PROXYTYPE_SYSTEM = "false"; |
321 |
|
|
322 |
|
public final static String PROXYTYPE_CUSTOM = "true"; |
323 |
|
|
324 |
|
|
325 |
|
public static char[] proxyAuthPassword = null; |
326 |
|
|
327 |
|
|
328 |
|
|
329 |
|
|
330 |
|
|
331 |
|
private static Map<String, String> sessionProperties = new HashMap<>(); |
332 |
|
|
333 |
|
private static boolean bypassSessionProperties = false; |
334 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
335 |
10 |
public static void enableSessionProperties()... |
336 |
|
{ |
337 |
10 |
bypassSessionProperties = false; |
338 |
|
} |
339 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
340 |
10 |
public static void disableSessionProperties()... |
341 |
|
{ |
342 |
10 |
bypassSessionProperties = true; |
343 |
|
} |
344 |
|
|
345 |
|
|
346 |
|
public static Properties applicationProperties = new Properties() |
347 |
|
{ |
348 |
|
|
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
349 |
0 |
@Override... |
350 |
|
public synchronized Enumeration<Object> keys() |
351 |
|
{ |
352 |
0 |
return Collections.enumeration(new TreeSet<>(super.keySet())); |
353 |
|
} |
354 |
|
}; |
355 |
|
|
356 |
|
|
357 |
|
public static Properties buildProperties = new Properties(); |
358 |
|
|
359 |
|
|
360 |
|
static String propertiesFile; |
361 |
|
|
362 |
|
private static final String fallbackPropertiesFile = ".jalview_properties"; |
363 |
|
|
364 |
|
private static boolean propsAreReadOnly = Platform.isJS(); |
365 |
|
|
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
366 |
0 |
public static boolean isPropsAreReadOnly()... |
367 |
|
{ |
368 |
0 |
return propsAreReadOnly; |
369 |
|
} |
370 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
371 |
32 |
public static void setPropsAreReadOnly(boolean propsAreReadOnly)... |
372 |
|
{ |
373 |
32 |
Cache.propsAreReadOnly = propsAreReadOnly; |
374 |
|
} |
375 |
|
|
376 |
|
private final static String JS_PROPERTY_PREFIX = "jalview_"; |
377 |
|
|
378 |
|
|
379 |
|
|
380 |
|
|
381 |
|
|
|
|
| 65.1% |
Uncovered Elements: 37 (106) |
Complexity: 24 |
Complexity Density: 0.29 |
|
382 |
307 |
public static void loadProperties(String propsFile)... |
383 |
|
{ |
384 |
307 |
propertiesFile = propsFile; |
385 |
307 |
String releasePropertiesFile = null; |
386 |
307 |
boolean defaultProperties = false; |
387 |
307 |
if (propsFile == null && !propsAreReadOnly) |
388 |
|
{ |
389 |
42 |
String channelPrefsFilename = ChannelProperties |
390 |
|
.getProperty("preferences.filename"); |
391 |
42 |
String releasePrefsFilename = fallbackPropertiesFile; |
392 |
42 |
propertiesFile = System.getProperty("user.home") + File.separatorChar |
393 |
|
+ channelPrefsFilename; |
394 |
42 |
releasePropertiesFile = System.getProperty("user.home") |
395 |
|
+ File.separatorChar + releasePrefsFilename; |
396 |
42 |
defaultProperties = true; |
397 |
|
} |
398 |
|
else |
399 |
|
{ |
400 |
|
|
401 |
265 |
propsAreReadOnly = true; |
402 |
|
} |
403 |
|
|
404 |
307 |
if (propertiesFile == null) |
405 |
|
{ |
406 |
59 |
Platform.readInfoProperties(JS_PROPERTY_PREFIX, |
407 |
|
applicationProperties); |
408 |
|
} |
409 |
|
else |
410 |
|
{ |
411 |
248 |
try |
412 |
|
{ |
413 |
248 |
InputStream fis; |
414 |
248 |
try |
415 |
|
{ |
416 |
|
|
417 |
248 |
fis = HttpUtils.openStream(new URL(propertiesFile)); |
418 |
0 |
if (!Jalview.quiet()) |
419 |
|
{ |
420 |
0 |
jalview.bin.Console.outPrintln( |
421 |
|
"Loading jalview properties from : " + propertiesFile); |
422 |
0 |
jalview.bin.Console.outPrintln( |
423 |
|
"Disabling Jalview writing to user's local properties file."); |
424 |
|
} |
425 |
0 |
propsAreReadOnly = true; |
426 |
|
} catch (Exception ex) |
427 |
|
{ |
428 |
248 |
fis = null; |
429 |
|
} |
430 |
248 |
if (fis == null) |
431 |
|
{ |
432 |
248 |
String readPropertiesFile = propertiesFile; |
433 |
|
|
434 |
|
|
435 |
|
|
436 |
248 |
if (defaultProperties && (!new File(propertiesFile).exists()) |
437 |
|
&& (new File(releasePropertiesFile).exists())) |
438 |
|
{ |
439 |
0 |
readPropertiesFile = releasePropertiesFile; |
440 |
|
} |
441 |
248 |
fis = new FileInputStream(readPropertiesFile); |
442 |
|
} |
443 |
247 |
applicationProperties.clear(); |
444 |
247 |
applicationProperties.load(fis); |
445 |
|
|
446 |
|
|
447 |
|
|
448 |
247 |
deleteBuildProperties(); |
449 |
247 |
fis.close(); |
450 |
|
} catch (Exception ex) |
451 |
|
{ |
452 |
1 |
if (!Jalview.quiet()) |
453 |
1 |
jalview.bin.Console |
454 |
|
.outPrintln("Error reading properties file: " + ex); |
455 |
|
} |
456 |
|
} |
457 |
|
|
458 |
|
|
459 |
|
|
460 |
|
|
461 |
|
|
462 |
|
|
463 |
|
|
464 |
|
|
465 |
|
|
466 |
|
|
467 |
|
|
468 |
307 |
String proxyType = getDefault("USE_PROXY", PROXYTYPE_SYSTEM); |
469 |
|
|
470 |
307 |
switch (proxyType) |
471 |
|
{ |
472 |
0 |
case PROXYTYPE_NONE: |
473 |
0 |
clearProxyProperties(); |
474 |
0 |
break; |
475 |
307 |
case PROXYTYPE_SYSTEM: |
476 |
307 |
resetProxyProperties(); |
477 |
307 |
break; |
478 |
0 |
case PROXYTYPE_CUSTOM: |
479 |
0 |
String httpHost = getDefault("PROXY_SERVER", ""); |
480 |
0 |
String httpPort = getDefault("PROXY_PORT", "8080"); |
481 |
0 |
String httpsHost = getDefault("PROXY_SERVER_HTTPS", httpHost); |
482 |
0 |
String httpsPort = getDefault("PROXY_PORT_HTTPS", httpPort); |
483 |
0 |
String httpUser = getDefault("PROXY_AUTH_USER", null); |
484 |
|
|
485 |
|
|
486 |
0 |
String httpsUser = getDefault("PROXY_AUTH_USER_HTTPS", httpUser); |
487 |
0 |
setProxyProperties(httpHost, httpPort, httpsHost, httpsPort, httpUser, |
488 |
|
proxyAuthPassword, httpsUser, proxyAuthPassword, "localhost"); |
489 |
0 |
break; |
490 |
0 |
default: |
491 |
0 |
String message = "Incorrect PROXY_TYPE - should be 'none' (clear proxy properties), 'false' (system settings), 'true' (custom settings): " |
492 |
|
+ proxyType; |
493 |
0 |
Console.warn(message); |
494 |
|
} |
495 |
|
|
496 |
|
|
497 |
307 |
String authorDetails = resolveResourceURLFor("/authors.props"); |
498 |
|
|
499 |
307 |
try |
500 |
|
{ |
501 |
307 |
if (authorDetails != null) |
502 |
|
{ |
503 |
307 |
URL localJarFileURL = new URL(authorDetails); |
504 |
307 |
InputStream in = localJarFileURL.openStream(); |
505 |
307 |
applicationProperties.load(in); |
506 |
307 |
in.close(); |
507 |
|
} |
508 |
|
} catch (Exception ex) |
509 |
|
{ |
510 |
0 |
if (!Jalview.quiet()) |
511 |
0 |
jalview.bin.Console |
512 |
|
.outPrintln("Error reading author details: " + ex); |
513 |
0 |
authorDetails = null; |
514 |
|
} |
515 |
307 |
if (authorDetails == null) |
516 |
|
{ |
517 |
0 |
applicationProperties.remove("AUTHORS"); |
518 |
0 |
applicationProperties.remove("AUTHORFNAMES"); |
519 |
0 |
applicationProperties.remove("YEAR"); |
520 |
|
} |
521 |
|
|
522 |
307 |
loadBuildProperties(false); |
523 |
|
|
524 |
307 |
SiftsSettings |
525 |
|
.setMapWithSifts(Cache.getDefault("MAP_WITH_SIFTS", false)); |
526 |
|
|
527 |
307 |
SiftsSettings.setSiftDownloadDirectory(Cache |
528 |
|
.getDefault("sifts_download_dir", DEFAULT_SIFTS_DOWNLOAD_DIR)); |
529 |
|
|
530 |
307 |
SiftsSettings.setFailSafePIDThreshold( |
531 |
|
Cache.getDefault("sifts_fail_safe_pid_threshold", |
532 |
|
DEFAULT_FAIL_SAFE_PID_THRESHOLD)); |
533 |
|
|
534 |
307 |
SiftsSettings.setCacheThresholdInDays( |
535 |
|
Cache.getDefault("sifts_cache_threshold_in_days", |
536 |
|
DEFAULT_CACHE_THRESHOLD_IN_DAYS)); |
537 |
|
|
538 |
307 |
IdOrgSettings.setUrl(getDefault("ID_ORG_HOSTURL", |
539 |
|
"https://www.jalview.org/services/identifiers")); |
540 |
307 |
IdOrgSettings.setDownloadLocation(ID_ORG_FILE); |
541 |
|
|
542 |
307 |
StructureImportSettings.setDefaultStructureFileFormat( |
543 |
|
Cache.getDefault("PDB_DOWNLOAD_FORMAT", PDB_DOWNLOAD_FORMAT)); |
544 |
307 |
StructureImportSettings |
545 |
|
.setDefaultPDBFileParser(DEFAULT_PDB_FILE_PARSER); |
546 |
|
|
547 |
|
|
548 |
|
|
549 |
|
|
550 |
307 |
String jnlpVersion = System.getProperty("jalview.version"); |
551 |
|
|
552 |
|
|
553 |
|
|
554 |
|
|
555 |
|
|
556 |
307 |
if (jnlpVersion == null && getDefault("VERSION_CHECK", true) |
557 |
|
&& (System.getProperty("java.awt.headless") == null || System |
558 |
|
.getProperty("java.awt.headless").equals("false"))) |
559 |
|
{ |
560 |
|
|
|
|
| 74.1% |
Uncovered Elements: 7 (27) |
Complexity: 5 |
Complexity Density: 0.25 |
|
561 |
|
class VersionChecker extends Thread |
562 |
|
{ |
563 |
|
|
|
|
| 73.1% |
Uncovered Elements: 7 (26) |
Complexity: 5 |
Complexity Density: 0.25 |
|
564 |
122 |
@Override... |
565 |
|
public void run() |
566 |
|
{ |
567 |
122 |
String remoteBuildPropertiesUrl = Cache |
568 |
|
.getAppbaseBuildProperties(); |
569 |
|
|
570 |
122 |
String orgtimeout = System |
571 |
|
.getProperty("sun.net.client.defaultConnectTimeout"); |
572 |
122 |
if (orgtimeout == null) |
573 |
|
{ |
574 |
17 |
orgtimeout = "30"; |
575 |
17 |
Console.debug("Setting default net timeout to " + orgtimeout |
576 |
|
+ " seconds."); |
577 |
|
} |
578 |
122 |
String remoteVersion = null; |
579 |
122 |
if (remoteBuildPropertiesUrl.startsWith("http")) |
580 |
|
{ |
581 |
122 |
try |
582 |
|
{ |
583 |
122 |
System.setProperty("sun.net.client.defaultConnectTimeout", |
584 |
|
"5000"); |
585 |
|
|
586 |
122 |
URL url = new URL(remoteBuildPropertiesUrl); |
587 |
|
|
588 |
122 |
BufferedReader in = new BufferedReader( |
589 |
|
new InputStreamReader(HttpUtils.openStream(url))); |
590 |
|
|
591 |
122 |
Properties remoteBuildProperties = new Properties(); |
592 |
122 |
remoteBuildProperties.load(in); |
593 |
122 |
remoteVersion = remoteBuildProperties.getProperty("VERSION"); |
594 |
|
} catch (Exception ex) |
595 |
|
{ |
596 |
0 |
if (!Jalview.quiet()) |
597 |
|
{ |
598 |
0 |
jalview.bin.Console.errPrintln( |
599 |
|
"Non-fatal exception when checking version at " |
600 |
|
+ remoteBuildPropertiesUrl + ":"); |
601 |
0 |
jalview.bin.Console.printStackTrace(ex); |
602 |
|
} |
603 |
0 |
remoteVersion = getProperty("VERSION"); |
604 |
|
} |
605 |
|
} |
606 |
122 |
System.setProperty("sun.net.client.defaultConnectTimeout", |
607 |
|
orgtimeout); |
608 |
|
|
609 |
122 |
setProperty("LATEST_VERSION", remoteVersion); |
610 |
|
} |
611 |
|
} |
612 |
|
|
613 |
123 |
VersionChecker vc = new VersionChecker(); |
614 |
123 |
vc.start(); |
615 |
|
} |
616 |
|
else |
617 |
|
{ |
618 |
184 |
if (jnlpVersion != null) |
619 |
|
{ |
620 |
0 |
setProperty("LATEST_VERSION", jnlpVersion); |
621 |
|
} |
622 |
|
else |
623 |
|
{ |
624 |
184 |
applicationProperties.remove("LATEST_VERSION"); |
625 |
|
} |
626 |
|
} |
627 |
|
|
628 |
|
|
629 |
306 |
Cache.initUserColourSchemes(getProperty("USER_DEFINED_COLOURS")); |
630 |
306 |
jalview.io.PIRFile.useModellerOutput = Cache.getDefault("PIR_MODELLER", |
631 |
|
false); |
632 |
|
} |
633 |
|
|
634 |
|
|
635 |
|
|
636 |
|
|
637 |
|
@param |
638 |
|
@return |
639 |
|
|
|
|
| 66.7% |
Uncovered Elements: 3 (9) |
Complexity: 4 |
Complexity Density: 0.57 |
|
640 |
745 |
private static String resolveResourceURLFor(String resourcePath)... |
641 |
|
{ |
642 |
745 |
String url = null; |
643 |
745 |
if (Platform.isJS() || !Cache.class.getProtectionDomain() |
644 |
|
.getCodeSource().getLocation().toString().endsWith(".jar")) |
645 |
|
{ |
646 |
745 |
try |
647 |
|
{ |
648 |
745 |
url = Cache.class.getResource(resourcePath).toString(); |
649 |
|
} catch (Exception ex) |
650 |
|
{ |
651 |
0 |
jalview.bin.Console.errPrintln("Failed to resolve resource " |
652 |
|
+ resourcePath + ": " + ex.getMessage()); |
653 |
|
} |
654 |
|
} |
655 |
|
else |
656 |
|
{ |
657 |
0 |
url = "jar:".concat(Cache.class.getProtectionDomain().getCodeSource() |
658 |
|
.getLocation().toString().concat("!" + resourcePath)); |
659 |
|
} |
660 |
745 |
return url; |
661 |
|
} |
662 |
|
|
|
|
| 72.1% |
Uncovered Elements: 12 (43) |
Complexity: 10 |
Complexity Density: 0.34 |
|
663 |
438 |
public static void loadBuildProperties(boolean reportVersion)... |
664 |
|
{ |
665 |
438 |
String codeInstallation = getProperty("INSTALLATION"); |
666 |
438 |
boolean printVersion = codeInstallation == null; |
667 |
|
|
668 |
|
|
669 |
|
|
670 |
|
|
671 |
|
|
672 |
438 |
try |
673 |
|
{ |
674 |
438 |
String buildDetails = resolveResourceURLFor("/.build_properties"); |
675 |
438 |
URL localJarFileURL = new URL(buildDetails); |
676 |
438 |
InputStream in = localJarFileURL.openStream(); |
677 |
438 |
buildProperties.load(in); |
678 |
438 |
in.close(); |
679 |
438 |
if (buildProperties.getProperty("BUILD_DATE", null) != null) |
680 |
|
{ |
681 |
438 |
applicationProperties.put("BUILD_DATE", |
682 |
|
buildProperties.getProperty("BUILD_DATE")); |
683 |
|
} |
684 |
438 |
if (buildProperties.getProperty("INSTALLATION", null) != null) |
685 |
|
{ |
686 |
438 |
applicationProperties.put("INSTALLATION", |
687 |
|
buildProperties.getProperty("INSTALLATION")); |
688 |
|
} |
689 |
438 |
if (buildProperties.getProperty("VERSION", null) != null) |
690 |
|
{ |
691 |
438 |
applicationProperties.put("VERSION", |
692 |
|
buildProperties.getProperty("VERSION")); |
693 |
|
} |
694 |
438 |
if (buildProperties.getProperty("JAVA_COMPILE_VERSION", null) != null) |
695 |
|
{ |
696 |
438 |
applicationProperties.put("JAVA_COMPILE_VERSION", |
697 |
|
buildProperties.getProperty("JAVA_COMPILE_VERSION")); |
698 |
|
} |
699 |
|
} catch (Exception ex) |
700 |
|
{ |
701 |
0 |
if (!Jalview.quiet()) |
702 |
0 |
jalview.bin.Console |
703 |
|
.outPrintln("Error reading build details: " + ex); |
704 |
0 |
applicationProperties.remove("VERSION"); |
705 |
|
} |
706 |
438 |
String codeVersion = getProperty("VERSION"); |
707 |
438 |
codeInstallation = getProperty("INSTALLATION"); |
708 |
|
|
709 |
438 |
if (codeVersion == null) |
710 |
|
{ |
711 |
|
|
712 |
0 |
codeVersion = "Test"; |
713 |
0 |
codeInstallation = ""; |
714 |
|
} |
715 |
|
else |
716 |
|
{ |
717 |
438 |
codeInstallation = " (" + codeInstallation + ")"; |
718 |
|
} |
719 |
438 |
setProperty("VERSION", codeVersion); |
720 |
438 |
new BuildDetails(codeVersion, null, codeInstallation); |
721 |
438 |
if (printVersion && reportVersion) |
722 |
|
{ |
723 |
51 |
jalview.bin.Console |
724 |
|
.outPrintln(ChannelProperties.getProperty("app_name") |
725 |
|
+ " version: " + codeVersion + codeInstallation); |
726 |
|
} |
727 |
|
} |
728 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (7) |
Complexity: 1 |
Complexity Density: 0.14 |
|
729 |
247 |
private static void deleteBuildProperties()... |
730 |
|
{ |
731 |
247 |
applicationProperties.remove("LATEST_VERSION"); |
732 |
247 |
applicationProperties.remove("VERSION"); |
733 |
247 |
applicationProperties.remove("AUTHORS"); |
734 |
247 |
applicationProperties.remove("AUTHORFNAMES"); |
735 |
247 |
applicationProperties.remove("YEAR"); |
736 |
247 |
applicationProperties.remove("BUILD_DATE"); |
737 |
247 |
applicationProperties.remove("INSTALLATION"); |
738 |
|
} |
739 |
|
|
740 |
|
|
741 |
|
|
742 |
|
|
743 |
|
|
744 |
|
@param |
745 |
|
|
746 |
|
|
747 |
|
@return |
748 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
749 |
424831 |
public static String getProperty(String key)... |
750 |
|
{ |
751 |
424830 |
return getProperty(key, false); |
752 |
|
} |
753 |
|
|
|
|
| 78.6% |
Uncovered Elements: 3 (14) |
Complexity: 6 |
Complexity Density: 0.75 |
|
754 |
424824 |
public static String getProperty(String key,... |
755 |
|
boolean skipSessionProperties) |
756 |
|
{ |
757 |
424825 |
String prop = null; |
758 |
424824 |
if (!(skipSessionProperties || bypassSessionProperties)) |
759 |
|
{ |
760 |
424721 |
prop = getSessionProperty(key); |
761 |
|
} |
762 |
424826 |
if (prop == null) |
763 |
|
{ |
764 |
424827 |
prop = applicationProperties.getProperty(key); |
765 |
|
} |
766 |
424832 |
if (prop == null && Platform.isJS()) |
767 |
|
{ |
768 |
0 |
prop = applicationProperties.getProperty(Platform.getUniqueAppletID() |
769 |
|
+ "_" + JS_PROPERTY_PREFIX + key); |
770 |
|
} |
771 |
424832 |
return prop; |
772 |
|
} |
773 |
|
|
774 |
|
|
775 |
|
|
776 |
|
|
777 |
|
|
778 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 2 |
Complexity Density: 0.5 |
|
779 |
406693 |
public static boolean getDefault(String property, boolean def)... |
780 |
|
{ |
781 |
406693 |
String string = getProperty(property); |
782 |
406691 |
if (string != null) |
783 |
|
{ |
784 |
335502 |
def = Boolean.valueOf(string).booleanValue(); |
785 |
|
} |
786 |
|
|
787 |
406691 |
return def; |
788 |
|
} |
789 |
|
|
|
|
| 63.6% |
Uncovered Elements: 4 (11) |
Complexity: 4 |
Complexity Density: 0.57 |
|
790 |
302 |
public static int getDefault(String property, int def)... |
791 |
|
{ |
792 |
302 |
String string = getProperty(property); |
793 |
302 |
if (string != null) |
794 |
|
{ |
795 |
8 |
try |
796 |
|
{ |
797 |
8 |
def = Integer.parseInt(string); |
798 |
|
} catch (NumberFormatException e) |
799 |
|
{ |
800 |
0 |
if (!Jalview.quiet()) |
801 |
0 |
jalview.bin.Console.errPrintln("Error parsing int property '" |
802 |
|
+ property + "' with value '" + string + "'"); |
803 |
|
} |
804 |
|
} |
805 |
|
|
806 |
302 |
return def; |
807 |
|
} |
808 |
|
|
|
|
| 63.6% |
Uncovered Elements: 4 (11) |
Complexity: 4 |
Complexity Density: 0.57 |
|
809 |
43 |
public static float getDefault(String property, float def)... |
810 |
|
{ |
811 |
43 |
String string = getProperty(property); |
812 |
43 |
if (string != null) |
813 |
|
{ |
814 |
4 |
try |
815 |
|
{ |
816 |
4 |
def = Float.parseFloat(string); |
817 |
|
} catch (NumberFormatException e) |
818 |
|
{ |
819 |
0 |
if (!Jalview.quiet()) |
820 |
0 |
jalview.bin.Console.errPrintln("Error parsing float property '" |
821 |
|
+ property + "' with value '" + string + "'"); |
822 |
|
} |
823 |
|
} |
824 |
|
|
825 |
43 |
return def; |
826 |
|
} |
827 |
|
|
828 |
|
|
829 |
|
|
830 |
|
|
831 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (4) |
Complexity: 2 |
Complexity Density: 1 |
|
832 |
11902 |
public static String getDefault(String property, String def)... |
833 |
|
{ |
834 |
11902 |
String value = getProperty(property); |
835 |
11903 |
return value == null ? def : value; |
836 |
|
} |
837 |
|
|
838 |
|
|
839 |
|
|
840 |
|
|
841 |
|
@param |
842 |
|
|
843 |
|
@param |
844 |
|
|
845 |
|
|
846 |
|
@return |
847 |
|
|
|
|
| 66.7% |
Uncovered Elements: 6 (18) |
Complexity: 10 |
Complexity Density: 0.83 |
|
848 |
2539 |
public static Object setProperty(String key, String obj)... |
849 |
|
{ |
850 |
2539 |
Object oldValue = null; |
851 |
2539 |
try |
852 |
|
{ |
853 |
2539 |
oldValue = applicationProperties.setProperty(key, obj); |
854 |
2539 |
if (propertiesFile != null && !propsAreReadOnly |
855 |
|
|
856 |
|
&& !((obj == null && oldValue == null) |
857 |
|
|| (obj != null && obj.equals(oldValue)))) |
858 |
|
{ |
859 |
|
|
860 |
16 |
if (sessionProperties.containsKey(key)) |
861 |
|
{ |
862 |
0 |
sessionProperties.remove(key); |
863 |
|
} |
864 |
16 |
FileOutputStream out = new FileOutputStream(propertiesFile); |
865 |
16 |
applicationProperties.store(out, "---JalviewX Properties File---"); |
866 |
16 |
out.close(); |
867 |
|
} |
868 |
|
} catch (Exception ex) |
869 |
|
{ |
870 |
0 |
if (!Jalview.quiet()) |
871 |
0 |
jalview.bin.Console.errPrintln( |
872 |
|
"Error setting property: " + key + " " + obj + "\n" + ex); |
873 |
|
} |
874 |
2539 |
return oldValue; |
875 |
|
} |
876 |
|
|
877 |
|
|
878 |
|
|
879 |
|
|
880 |
|
@param |
881 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
882 |
7 |
public static void removeProperty(String string)... |
883 |
|
{ |
884 |
7 |
applicationProperties.remove(string); |
885 |
7 |
saveProperties(); |
886 |
|
} |
887 |
|
|
888 |
|
|
889 |
|
|
890 |
|
|
|
|
| 18.2% |
Uncovered Elements: 9 (11) |
Complexity: 4 |
Complexity Density: 0.57 |
|
891 |
7 |
public static void saveProperties()... |
892 |
|
{ |
893 |
7 |
if (!propsAreReadOnly) |
894 |
|
{ |
895 |
0 |
try |
896 |
|
{ |
897 |
0 |
FileOutputStream out = new FileOutputStream(propertiesFile); |
898 |
0 |
applicationProperties.store(out, "---JalviewX Properties File---"); |
899 |
0 |
out.close(); |
900 |
|
} catch (Exception ex) |
901 |
|
{ |
902 |
0 |
if (!Jalview.quiet()) |
903 |
0 |
jalview.bin.Console.errPrintln("Error saving properties: " + ex); |
904 |
|
} |
905 |
|
} |
906 |
|
} |
907 |
|
|
908 |
|
|
909 |
|
|
910 |
|
|
911 |
|
private static int vamsasJarsArePresent = -1; |
912 |
|
|
913 |
|
|
914 |
|
|
915 |
|
|
916 |
|
@return |
917 |
|
|
|
|
| 0% |
Uncovered Elements: 15 (15) |
Complexity: 4 |
Complexity Density: 0.36 |
|
918 |
0 |
public static boolean vamsasJarsPresent()... |
919 |
|
{ |
920 |
0 |
if (vamsasJarsArePresent == -1) |
921 |
|
{ |
922 |
0 |
try |
923 |
|
{ |
924 |
0 |
if (jalview.jbgui.GDesktop.class.getClassLoader() |
925 |
|
.loadClass("uk.ac.vamsas.client.VorbaId") != null) |
926 |
|
{ |
927 |
0 |
Console.debug( |
928 |
|
"Found Vamsas Classes (uk.ac..vamsas.client.VorbaId can be loaded)"); |
929 |
0 |
vamsasJarsArePresent = 1; |
930 |
0 |
JLoggerLog4j lvclient = JLoggerLog4j.getLogger("uk.ac.vamsas", |
931 |
|
Console.getCachedLogLevel("logs.Vamsas.Level")); |
932 |
0 |
JLoggerLog4j.addAppender(lvclient, Console.log, |
933 |
|
JALVIEW_LOGGER_NAME); |
934 |
|
|
935 |
0 |
lvclient.debug(ChannelProperties.getProperty("app_name") |
936 |
|
+ " Vamsas Client Debugging Output Follows."); |
937 |
|
} |
938 |
|
} catch (Exception e) |
939 |
|
{ |
940 |
0 |
vamsasJarsArePresent = 0; |
941 |
0 |
Console.debug("Vamsas Classes are not present"); |
942 |
|
} |
943 |
|
} |
944 |
0 |
return (vamsasJarsArePresent > 0); |
945 |
|
} |
946 |
|
|
947 |
|
|
948 |
|
|
949 |
|
|
950 |
|
private static int groovyJarsArePresent = -1; |
951 |
|
|
952 |
|
|
953 |
|
|
954 |
|
|
955 |
|
@return |
956 |
|
|
|
|
| 0% |
Uncovered Elements: 17 (17) |
Complexity: 5 |
Complexity Density: 0.38 |
|
957 |
0 |
public static boolean groovyJarsPresent()... |
958 |
|
{ |
959 |
0 |
if (groovyJarsArePresent == -1) |
960 |
|
{ |
961 |
0 |
try |
962 |
|
{ |
963 |
0 |
if (Cache.class.getClassLoader() |
964 |
|
.loadClass("groovy.lang.GroovyObject") != null) |
965 |
|
{ |
966 |
0 |
Console.debug( |
967 |
|
"Found Groovy (groovy.lang.GroovyObject can be loaded)"); |
968 |
0 |
groovyJarsArePresent = 1; |
969 |
0 |
JLoggerLog4j lgclient = JLoggerLog4j.getLogger("groovy", |
970 |
|
Console.getCachedLogLevel("logs.Groovy.Level")); |
971 |
0 |
JLoggerLog4j.addAppender(lgclient, Console.log, |
972 |
|
JALVIEW_LOGGER_NAME); |
973 |
|
|
974 |
0 |
lgclient.debug(ChannelProperties.getProperty("app_name") |
975 |
|
+ " Groovy Client Debugging Output Follows."); |
976 |
|
} |
977 |
|
} catch (Error e) |
978 |
|
{ |
979 |
0 |
groovyJarsArePresent = 0; |
980 |
0 |
Console.debug("Groovy Classes are not present", e); |
981 |
|
} catch (Exception e) |
982 |
|
{ |
983 |
0 |
groovyJarsArePresent = 0; |
984 |
0 |
Console.debug("Groovy Classes are not present"); |
985 |
|
} |
986 |
|
} |
987 |
0 |
return (groovyJarsArePresent > 0); |
988 |
|
} |
989 |
|
|
990 |
|
|
991 |
|
|
992 |
|
|
|
|
| 0% |
Uncovered Elements: 11 (11) |
Complexity: 1 |
Complexity Density: 0.09 |
|
993 |
0 |
public static void initAnalytics()... |
994 |
|
{ |
995 |
0 |
Plausible.setEnabled(true); |
996 |
|
|
997 |
0 |
String appName = ChannelProperties.getProperty("app_name") + " Desktop"; |
998 |
0 |
String version = Cache.getProperty("VERSION") + "_" |
999 |
|
+ Cache.getDefault("BUILD_DATE", "unknown"); |
1000 |
0 |
String path; |
1001 |
|
|
1002 |
|
|
1003 |
|
|
1004 |
|
|
1005 |
|
|
1006 |
|
|
1007 |
|
|
1008 |
|
|
1009 |
|
|
1010 |
0 |
List<String> pathParts = new ArrayList<>(); |
1011 |
0 |
pathParts.add(appName); |
1012 |
0 |
pathParts.add(version); |
1013 |
0 |
pathParts.add(APPLICATION_STARTED); |
1014 |
0 |
path = ("/" + String.join("/", pathParts)).replace(' ', '+'); |
1015 |
|
|
1016 |
|
|
1017 |
|
|
1018 |
0 |
Plausible plausible = Plausible.getInstance(); |
1019 |
|
|
1020 |
|
|
1021 |
|
|
1022 |
0 |
plausible.sendEvent("application_launch", path, true); |
1023 |
|
} |
1024 |
|
|
1025 |
|
private static final String APPLICATION_STARTED = "Application Started"; |
1026 |
|
|
1027 |
|
|
1028 |
|
|
1029 |
|
|
1030 |
|
@param |
1031 |
|
@param |
1032 |
|
@return |
1033 |
|
|
|
|
| 76.9% |
Uncovered Elements: 3 (13) |
Complexity: 4 |
Complexity Density: 0.57 |
|
1034 |
86 |
public static Color getDefaultColour(String property, Color defcolour)... |
1035 |
|
{ |
1036 |
86 |
String colprop = getProperty(property); |
1037 |
86 |
if (colprop == null) |
1038 |
|
{ |
1039 |
12 |
return defcolour; |
1040 |
|
} |
1041 |
74 |
Color col = ColorUtils.parseColourString(colprop); |
1042 |
74 |
if (col == null) |
1043 |
|
{ |
1044 |
0 |
Console.warn("Couldn't parse '" + colprop + "' as a colour for " |
1045 |
|
+ property); |
1046 |
|
} |
1047 |
74 |
return (col == null) ? defcolour : col; |
1048 |
|
} |
1049 |
|
|
1050 |
|
|
1051 |
|
|
1052 |
|
|
1053 |
|
@param |
1054 |
|
@param |
1055 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
1056 |
4 |
public static void setColourProperty(String property, Color colour)... |
1057 |
|
{ |
1058 |
4 |
setProperty(property, jalview.util.Format.getHexString(colour)); |
1059 |
|
} |
1060 |
|
|
1061 |
|
|
1062 |
|
|
1063 |
|
|
1064 |
|
@param |
1065 |
|
@param |
1066 |
|
@return |
1067 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0.33 |
|
1068 |
132 |
public static String setDateProperty(String propertyName, Date date)... |
1069 |
|
{ |
1070 |
132 |
String formatted = date_format.format(date); |
1071 |
132 |
setProperty(propertyName, formatted); |
1072 |
132 |
return formatted; |
1073 |
|
} |
1074 |
|
|
1075 |
|
|
1076 |
|
|
1077 |
|
|
1078 |
|
|
1079 |
|
@param |
1080 |
|
@return |
1081 |
|
|
1082 |
|
|
|
|
| 87.5% |
Uncovered Elements: 1 (8) |
Complexity: 3 |
Complexity Density: 0.5 |
|
1083 |
42 |
public static Date getDateProperty(String propertyName)... |
1084 |
|
{ |
1085 |
42 |
String val = getProperty(propertyName); |
1086 |
42 |
if (val != null) |
1087 |
|
{ |
1088 |
42 |
try |
1089 |
|
{ |
1090 |
42 |
return date_format.parse(val); |
1091 |
|
} catch (Exception ex) |
1092 |
|
{ |
1093 |
8 |
jalview.bin.Console |
1094 |
|
.errPrintln("Invalid or corrupt date in property '" |
1095 |
|
+ propertyName + "' : value was '" + val + "'"); |
1096 |
|
} |
1097 |
|
} |
1098 |
8 |
return null; |
1099 |
|
} |
1100 |
|
|
1101 |
|
|
1102 |
|
|
1103 |
|
|
1104 |
|
|
1105 |
|
@param |
1106 |
|
@return |
1107 |
|
|
|
|
| 37.5% |
Uncovered Elements: 5 (8) |
Complexity: 4 |
Complexity Density: 0.67 |
|
1108 |
76 |
public static Integer getIntegerProperty(String property)... |
1109 |
|
{ |
1110 |
76 |
String val = getProperty(property); |
1111 |
? |
if (val != null && (val = val.trim()).length() > 0) |
1112 |
|
{ |
1113 |
0 |
try |
1114 |
|
{ |
1115 |
0 |
return Integer.valueOf(val); |
1116 |
|
} catch (NumberFormatException x) |
1117 |
|
{ |
1118 |
0 |
jalview.bin.Console.errPrintln("Invalid integer in property '" |
1119 |
|
+ property + "' (value was '" + val + "')"); |
1120 |
|
} |
1121 |
|
} |
1122 |
76 |
return null; |
1123 |
|
} |
1124 |
|
|
1125 |
|
|
1126 |
|
|
1127 |
|
|
1128 |
|
|
1129 |
|
@param |
1130 |
|
@param |
1131 |
|
|
|
|
| 0% |
Uncovered Elements: 9 (9) |
Complexity: 4 |
Complexity Density: 0.8 |
|
1132 |
0 |
public static void setOrRemove(String propName, String value)... |
1133 |
|
{ |
1134 |
0 |
if (propName == null) |
1135 |
|
{ |
1136 |
0 |
return; |
1137 |
|
} |
1138 |
0 |
if (value == null || value.trim().length() < 1) |
1139 |
|
{ |
1140 |
0 |
Cache.applicationProperties.remove(propName); |
1141 |
|
} |
1142 |
|
else |
1143 |
|
{ |
1144 |
0 |
Cache.applicationProperties.setProperty(propName, value); |
1145 |
|
} |
1146 |
|
} |
1147 |
|
|
1148 |
|
|
1149 |
|
|
1150 |
|
|
1151 |
|
@param |
1152 |
|
|
1153 |
|
|
|
|
| 9.1% |
Uncovered Elements: 30 (33) |
Complexity: 10 |
Complexity Density: 0.53 |
|
1154 |
306 |
public static void initUserColourSchemes(String files)... |
1155 |
|
{ |
1156 |
306 |
if (files == null || files.length() == 0) |
1157 |
|
{ |
1158 |
306 |
return; |
1159 |
|
} |
1160 |
|
|
1161 |
|
|
1162 |
|
|
1163 |
0 |
StringBuffer coloursFound = new StringBuffer(); |
1164 |
0 |
StringTokenizer st = new StringTokenizer(files, "|"); |
1165 |
0 |
while (st.hasMoreElements()) |
1166 |
|
{ |
1167 |
0 |
String file = st.nextToken(); |
1168 |
0 |
try |
1169 |
|
{ |
1170 |
0 |
UserColourScheme ucs = ColourSchemeLoader.loadColourScheme(file); |
1171 |
0 |
if (ucs != null) |
1172 |
|
{ |
1173 |
0 |
if (coloursFound.length() > 0) |
1174 |
|
{ |
1175 |
0 |
coloursFound.append("|"); |
1176 |
|
} |
1177 |
0 |
coloursFound.append(file); |
1178 |
0 |
ColourSchemes.getInstance().registerColourScheme(ucs); |
1179 |
|
} |
1180 |
|
} catch (Exception ex) |
1181 |
|
{ |
1182 |
0 |
if (!Jalview.quiet()) |
1183 |
0 |
jalview.bin.Console |
1184 |
|
.outPrintln("Error loading User ColourFile\n" + ex); |
1185 |
|
} |
1186 |
|
} |
1187 |
0 |
if (!files.equals(coloursFound.toString())) |
1188 |
|
{ |
1189 |
0 |
if (coloursFound.toString().length() > 1) |
1190 |
|
{ |
1191 |
0 |
setProperty(UserDefinedColours.USER_DEFINED_COLOURS, |
1192 |
|
coloursFound.toString()); |
1193 |
|
} |
1194 |
|
else |
1195 |
|
{ |
1196 |
0 |
applicationProperties |
1197 |
|
.remove(UserDefinedColours.USER_DEFINED_COLOURS); |
1198 |
|
} |
1199 |
|
} |
1200 |
|
} |
1201 |
|
|
1202 |
|
|
1203 |
|
|
1204 |
|
|
1205 |
|
@param |
1206 |
|
@param |
1207 |
|
@param |
1208 |
|
|
|
|
| 86.7% |
Uncovered Elements: 2 (15) |
Complexity: 6 |
Complexity Density: 0.86 |
|
1209 |
2884 |
private static void appendIfNotNull(StringBuilder sb, String prefix,... |
1210 |
|
String value, String suffix, String defaultValue) |
1211 |
|
{ |
1212 |
2884 |
if (value == null && defaultValue == null) |
1213 |
|
{ |
1214 |
1854 |
return; |
1215 |
|
} |
1216 |
1030 |
if (prefix != null) |
1217 |
1030 |
sb.append(prefix); |
1218 |
1030 |
sb.append(value == null ? defaultValue : value); |
1219 |
1030 |
if (suffix != null) |
1220 |
1030 |
sb.append(suffix); |
1221 |
|
} |
1222 |
|
|
1223 |
|
|
1224 |
|
|
1225 |
|
@return |
1226 |
|
|
|
|
| 82.9% |
Uncovered Elements: 13 (76) |
Complexity: 10 |
Complexity Density: 0.17 |
|
1227 |
206 |
public static String getVersionDetailsForConsole()... |
1228 |
|
{ |
1229 |
206 |
boolean extra = Console.isDebugEnabled() |
1230 |
|
|| !"release".equals(ChannelProperties.getProperty("channel")); |
1231 |
206 |
StringBuilder sb = new StringBuilder(); |
1232 |
206 |
sb.append(ChannelProperties.getProperty("app_name")) |
1233 |
|
.append(" Version: "); |
1234 |
206 |
sb.append(Cache.getDefault("VERSION", "TEST")); |
1235 |
206 |
sb.append("\n"); |
1236 |
206 |
sb.append(ChannelProperties.getProperty("app_name")) |
1237 |
|
.append(" Installation: "); |
1238 |
206 |
sb.append(Cache.getDefault("INSTALLATION", "unknown")); |
1239 |
206 |
sb.append("\n"); |
1240 |
206 |
appendIfNotNull(sb, "Channel: ", |
1241 |
|
ChannelProperties.getProperty("channel"), "\n", null); |
1242 |
206 |
sb.append("Build Date: "); |
1243 |
206 |
sb.append(Cache.getDefault("BUILD_DATE", "unknown")); |
1244 |
206 |
sb.append("\n"); |
1245 |
206 |
if (extra) |
1246 |
|
{ |
1247 |
206 |
appendIfNotNull(sb, "Preferences file: ", propertiesFile, "\n", |
1248 |
|
"unknown"); |
1249 |
206 |
appendIfNotNull(sb, "Log file: ", |
1250 |
|
System.getProperty("installer.logfile"), "\n", "unknown"); |
1251 |
|
} |
1252 |
206 |
sb.append("Java version: "); |
1253 |
206 |
sb.append(System.getProperty("java.version")); |
1254 |
206 |
sb.append("\n"); |
1255 |
206 |
if (extra) |
1256 |
|
{ |
1257 |
206 |
appendIfNotNull(sb, "Java home: ", System.getProperty("java.home"), |
1258 |
|
"\n", "unknown"); |
1259 |
206 |
appendIfNotNull(sb, "Java launch class: ", |
1260 |
|
System.getProperty("sun.java.command"), "\n", "unknown"); |
1261 |
206 |
sb.append("Java platform: "); |
1262 |
206 |
sb.append(System.getProperty("os.name")); |
1263 |
206 |
sb.append(" "); |
1264 |
206 |
sb.append(System.getProperty("os.version")); |
1265 |
206 |
sb.append(" ("); |
1266 |
206 |
sb.append(System.getProperty("os.arch")); |
1267 |
206 |
sb.append(")"); |
1268 |
206 |
sb.append("\n"); |
1269 |
206 |
LookAndFeel laf = UIManager.getLookAndFeel(); |
1270 |
206 |
String lafName = laf == null ? "Not obtained" : laf.getName(); |
1271 |
206 |
String lafClass = laf == null ? "unknown" : laf.getClass().getName(); |
1272 |
206 |
sb.append("Java LAF: "); |
1273 |
206 |
sb.append(lafName); |
1274 |
206 |
sb.append(" ("); |
1275 |
206 |
sb.append(lafClass); |
1276 |
206 |
sb.append(")\n"); |
1277 |
|
|
1278 |
206 |
if (LaunchUtils.getJavaVersion() > 8) |
1279 |
|
{ |
1280 |
206 |
sb.append("Java Virtual Machine PID: "); |
1281 |
206 |
sb.append(ProcessHandle.current().pid()); |
1282 |
206 |
sb.append("\n"); |
1283 |
|
} |
1284 |
|
|
1285 |
|
} |
1286 |
206 |
appendIfNotNull(sb, "Installer version: ", |
1287 |
|
System.getProperty("sys.install4jVersion"), "\n", null); |
1288 |
206 |
if (extra) |
1289 |
|
{ |
1290 |
206 |
String installerAppdir = System.getProperty("installer.appdir"); |
1291 |
206 |
if (installerAppdir != null) |
1292 |
|
{ |
1293 |
0 |
try |
1294 |
|
{ |
1295 |
0 |
String temp = new File(installerAppdir).getCanonicalPath(); |
1296 |
0 |
installerAppdir = temp; |
1297 |
|
} catch (IOException e) |
1298 |
|
{ |
1299 |
0 |
installerAppdir = "(non-canonical) " + installerAppdir; |
1300 |
0 |
Console.warn( |
1301 |
|
"Could not get canonical path for installer appdir, leaving as is."); |
1302 |
|
} |
1303 |
|
} |
1304 |
206 |
appendIfNotNull(sb, "Installer template version: ", |
1305 |
|
System.getProperty("installer.template_version"), "\n", null); |
1306 |
206 |
appendIfNotNull(sb, "Installer appdir: ", installerAppdir, "\n", |
1307 |
|
null); |
1308 |
206 |
appendIfNotNull(sb, "Installer extrainfo: ", |
1309 |
|
System.getProperty("installer.extrainfo"), "\n", null); |
1310 |
|
} |
1311 |
206 |
appendIfNotNull(sb, "Launcher version: ", |
1312 |
|
System.getProperty("launcher.version"), "\n", null); |
1313 |
206 |
if (extra) |
1314 |
|
{ |
1315 |
206 |
appendIfNotNull(sb, "Launcher appdir: ", |
1316 |
|
System.getProperty("launcher.appdir"), "\n", null); |
1317 |
206 |
appendIfNotNull(sb, "Launcher distdir: ", |
1318 |
|
System.getProperty("launcher.distdir"), "\n", null); |
1319 |
206 |
appendIfNotNull(sb, "Launcher appbase: ", |
1320 |
|
System.getProperty("launcher.appbase"), "\n", null); |
1321 |
206 |
appendIfNotNull(sb, "Launcher script: ", |
1322 |
|
System.getProperty("launcher.script"), "\n", null); |
1323 |
|
} |
1324 |
206 |
return sb.toString(); |
1325 |
|
} |
1326 |
|
|
1327 |
|
|
1328 |
|
|
1329 |
|
@return |
1330 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
1331 |
544 |
public static String getBuildDetailsForSplash()... |
1332 |
|
{ |
1333 |
|
|
1334 |
|
|
1335 |
544 |
return Cache.getDefault("INSTALLATION", "unknown"); |
1336 |
|
} |
1337 |
|
|
|
|
| 0% |
Uncovered Elements: 4 (4) |
Complexity: 1 |
Complexity Density: 0.25 |
|
1338 |
0 |
public static String getStackTraceString(Throwable t)... |
1339 |
|
{ |
1340 |
0 |
StringWriter sw = new StringWriter(); |
1341 |
0 |
PrintWriter pw = new PrintWriter(sw); |
1342 |
0 |
t.printStackTrace(pw); |
1343 |
0 |
return sw.toString(); |
1344 |
|
} |
1345 |
|
|
1346 |
|
|
|
|
| 0% |
Uncovered Elements: 1 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
1347 |
0 |
public static void clearProxyProperties()... |
1348 |
|
{ |
1349 |
0 |
setProxyProperties(null, null, null, null, null, null, null, null, |
1350 |
|
null); |
1351 |
|
} |
1352 |
|
|
|
|
| 66.7% |
Uncovered Elements: 4 (12) |
Complexity: 7 |
Complexity Density: 1.75 |
|
1353 |
307 |
public static void resetProxyProperties()... |
1354 |
|
{ |
1355 |
307 |
setProxyProperties(startupProxyProperties[0], startupProxyProperties[1], |
1356 |
|
startupProxyProperties[2], startupProxyProperties[3], |
1357 |
|
startupProxyProperties[4], |
1358 |
307 |
startupProxyProperties[5] == null ? null |
1359 |
|
: startupProxyProperties[5].toCharArray(), |
1360 |
|
startupProxyProperties[6], |
1361 |
307 |
startupProxyProperties[7] == null ? null |
1362 |
|
: startupProxyProperties[7].toCharArray(), |
1363 |
|
startupProxyProperties[8]); |
1364 |
307 |
StringBuilder sb = new StringBuilder(); |
1365 |
307 |
sb.append("Setting proxy properties to: http.proxyHost=") |
1366 |
|
.append(startupProxyProperties[0]).append(", http.proxyPort=") |
1367 |
|
.append(startupProxyProperties[1]) |
1368 |
307 |
.append(startupProxyProperties[4] != null |
1369 |
|
&& !startupProxyProperties[4].isEmpty() |
1370 |
|
? " [" + startupProxyProperties[4] + "]" |
1371 |
|
: "") |
1372 |
|
.append(", https.proxyHost=").append(startupProxyProperties[2]) |
1373 |
|
.append(", https.proxyPort=").append(startupProxyProperties[3]) |
1374 |
307 |
.append(startupProxyProperties[6] != null |
1375 |
|
&& !startupProxyProperties[6].isEmpty() |
1376 |
|
? " [" + startupProxyProperties[6] + "]" |
1377 |
|
: ""); |
1378 |
|
|
1379 |
307 |
Console.debug(sb.toString()); |
1380 |
|
} |
1381 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
1382 |
75 |
public static void setProxyPropertiesFromPreferences()... |
1383 |
|
{ |
1384 |
75 |
setProxyPropertiesFromPreferences(Cache.PROXYTYPE_SYSTEM); |
1385 |
|
} |
1386 |
|
|
|
|
| 13.8% |
Uncovered Elements: 25 (29) |
Complexity: 11 |
Complexity Density: 0.65 |
|
1387 |
75 |
public static void setProxyPropertiesFromPreferences(... |
1388 |
|
String previousProxyType) |
1389 |
|
{ |
1390 |
75 |
String proxyType = Cache.getDefault("USE_PROXY", |
1391 |
|
Cache.PROXYTYPE_SYSTEM); |
1392 |
75 |
if (previousProxyType != null |
1393 |
|
&& !proxyType.equals(Cache.PROXYTYPE_CUSTOM) |
1394 |
|
|
1395 |
|
&& proxyType.equals(previousProxyType)) |
1396 |
|
{ |
1397 |
|
|
1398 |
75 |
return; |
1399 |
|
} |
1400 |
0 |
switch (proxyType) |
1401 |
|
{ |
1402 |
0 |
case Cache.PROXYTYPE_NONE: |
1403 |
0 |
if (!previousProxyType.equals(proxyType)) |
1404 |
|
{ |
1405 |
0 |
Console.info("Setting no proxy settings"); |
1406 |
0 |
Cache.setProxyProperties(null, null, null, null, null, null, null, |
1407 |
|
null, null); |
1408 |
|
} |
1409 |
0 |
break; |
1410 |
0 |
case Cache.PROXYTYPE_CUSTOM: |
1411 |
|
|
1412 |
|
|
1413 |
0 |
Console.info("Setting custom proxy settings"); |
1414 |
0 |
boolean proxyAuthSet = Cache.getDefault("PROXY_AUTH", false); |
1415 |
0 |
Cache.setProxyProperties(Cache.getDefault("PROXY_SERVER", null), |
1416 |
|
Cache.getDefault("PROXY_PORT", null), |
1417 |
|
Cache.getDefault("PROXY_SERVER_HTTPS", null), |
1418 |
|
Cache.getDefault("PROXY_PORT_HTTPS", null), |
1419 |
0 |
proxyAuthSet ? Cache.getDefault("PROXY_AUTH_USERNAME", "") |
1420 |
|
: null, |
1421 |
0 |
proxyAuthSet ? Cache.proxyAuthPassword : null, |
1422 |
0 |
proxyAuthSet ? Cache.getDefault("PROXY_AUTH_USERNAME", "") |
1423 |
|
: null, |
1424 |
0 |
proxyAuthSet ? Cache.proxyAuthPassword : null, "localhost"); |
1425 |
0 |
break; |
1426 |
0 |
default: |
1427 |
0 |
Console.info("Setting system proxy settings"); |
1428 |
0 |
Cache.resetProxyProperties(); |
1429 |
|
} |
1430 |
|
} |
1431 |
|
|
|
|
| 48.4% |
Uncovered Elements: 16 (31) |
Complexity: 7 |
Complexity Density: 0.3 |
|
1432 |
307 |
public static void setProxyProperties(String httpHost, String httpPort,... |
1433 |
|
String httpsHost, String httpsPort, String httpUser, |
1434 |
|
char[] httpPassword, String httpsUser, char[] httpsPassword, |
1435 |
|
String nonProxyHosts) |
1436 |
|
{ |
1437 |
307 |
setOrClearSystemProperty("http.proxyHost", httpHost); |
1438 |
307 |
setOrClearSystemProperty("http.proxyPort", httpPort); |
1439 |
307 |
setOrClearSystemProperty("https.proxyHost", httpsHost); |
1440 |
307 |
setOrClearSystemProperty("https.proxyPort", httpsPort); |
1441 |
307 |
setOrClearSystemProperty("http.proxyUser", httpUser); |
1442 |
307 |
setOrClearSystemProperty("https.proxyUser", httpsUser); |
1443 |
|
|
1444 |
|
|
1445 |
|
|
1446 |
|
|
1447 |
307 |
boolean customProxySet = getDefault("USE_PROXY", PROXYTYPE_SYSTEM) |
1448 |
|
.equals(PROXYTYPE_CUSTOM); |
1449 |
|
|
1450 |
|
|
1451 |
|
|
1452 |
|
|
1453 |
|
|
1454 |
|
|
1455 |
|
|
1456 |
|
|
1457 |
|
|
1458 |
|
|
1459 |
|
|
1460 |
|
|
1461 |
|
|
1462 |
|
|
1463 |
|
|
1464 |
|
|
1465 |
|
|
1466 |
|
|
1467 |
|
|
1468 |
|
|
1469 |
|
|
1470 |
|
|
1471 |
|
|
1472 |
307 |
if (httpUser != null || httpsUser != null) |
1473 |
|
{ |
1474 |
0 |
try |
1475 |
|
{ |
1476 |
0 |
char[] displayHttpPw = new char[httpPassword == null ? 0 |
1477 |
|
: httpPassword.length]; |
1478 |
0 |
Arrays.fill(displayHttpPw, '*'); |
1479 |
0 |
Console.debug( |
1480 |
|
"CACHE Proxy: setting new Authenticator with httpUser='" |
1481 |
|
+ httpUser + "' httpPassword='" + displayHttpPw |
1482 |
|
+ "'"); |
1483 |
0 |
if (!Platform.isJS()) |
1484 |
|
|
1485 |
|
|
1486 |
|
|
1487 |
|
|
1488 |
|
|
1489 |
|
|
1490 |
|
{ |
1491 |
0 |
Authenticator.setDefault(new Authenticator() |
1492 |
|
{ |
|
|
| 0% |
Uncovered Elements: 28 (28) |
Complexity: 20 |
Complexity Density: 1 |
|
1493 |
0 |
@Override... |
1494 |
|
protected PasswordAuthentication getPasswordAuthentication() |
1495 |
|
{ |
1496 |
0 |
if (getRequestorType() == RequestorType.PROXY) |
1497 |
|
{ |
1498 |
0 |
String protocol = getRequestingProtocol(); |
1499 |
0 |
boolean needProxyPasswordSet = false; |
1500 |
0 |
if (customProxySet && |
1501 |
|
|
1502 |
|
|
1503 |
|
(protocol.equalsIgnoreCase("http") |
1504 |
|
&& (httpUser != null && httpUser.length() > 0 |
1505 |
|
&& (httpPassword == null |
1506 |
|
|| httpPassword.length == 0))) |
1507 |
|
|| (protocol.equalsIgnoreCase("https") |
1508 |
|
&& (httpsUser != null |
1509 |
|
&& httpsUser.length() > 0 |
1510 |
|
&& (httpsPassword == null |
1511 |
|
|| httpsPassword.length == 0)))) |
1512 |
|
{ |
1513 |
|
|
1514 |
0 |
String message = MessageManager |
1515 |
|
.getString("label.proxy_password_required"); |
1516 |
0 |
Preferences.openPreferences( |
1517 |
|
Preferences.TabRef.CONNECTIONS_TAB, message); |
1518 |
0 |
Preferences.getInstance() |
1519 |
|
.proxyAuthPasswordCheckHighlight(true, true); |
1520 |
|
} |
1521 |
|
else |
1522 |
|
{ |
1523 |
0 |
try |
1524 |
|
{ |
1525 |
0 |
if (protocol.equalsIgnoreCase("http") |
1526 |
|
&& getRequestingHost() |
1527 |
|
.equalsIgnoreCase(httpHost) |
1528 |
|
&& getRequestingPort() == Integer |
1529 |
|
.valueOf(httpPort)) |
1530 |
|
{ |
1531 |
0 |
Console.debug( |
1532 |
|
"AUTHENTICATOR returning PasswordAuthentication(\"" |
1533 |
|
+ httpUser + "\", '" |
1534 |
|
+ new String(displayHttpPw) + "')"); |
1535 |
0 |
return new PasswordAuthentication(httpUser, |
1536 |
|
httpPassword); |
1537 |
|
} |
1538 |
0 |
if (protocol.equalsIgnoreCase("https") |
1539 |
|
&& getRequestingHost() |
1540 |
|
.equalsIgnoreCase(httpsHost) |
1541 |
|
&& getRequestingPort() == Integer |
1542 |
|
.valueOf(httpsPort)) |
1543 |
|
{ |
1544 |
0 |
char[] displayHttpsPw = new char[httpPassword.length]; |
1545 |
0 |
Arrays.fill(displayHttpsPw, '*'); |
1546 |
0 |
Console.debug( |
1547 |
|
"AUTHENTICATOR returning PasswordAuthentication(\"" |
1548 |
|
+ httpsUser + "\", '" + displayHttpsPw |
1549 |
|
+ "'"); |
1550 |
0 |
return new PasswordAuthentication(httpsUser, |
1551 |
|
httpsPassword); |
1552 |
|
} |
1553 |
|
} catch (NumberFormatException e) |
1554 |
|
{ |
1555 |
0 |
Console.error("Problem with proxy port values [http:" |
1556 |
|
+ httpPort + ", https:" + httpsPort + "]"); |
1557 |
|
} |
1558 |
0 |
Console.debug( |
1559 |
|
"AUTHENTICATOR after trying to get PasswordAuthentication"); |
1560 |
|
} |
1561 |
|
} |
1562 |
|
|
1563 |
0 |
Console.debug("AUTHENTICATOR returning null"); |
1564 |
0 |
return null; |
1565 |
|
} |
1566 |
|
}); |
1567 |
|
} |
1568 |
|
|
1569 |
|
|
1570 |
|
|
1571 |
0 |
Console.debug( |
1572 |
|
"AUTHENTICATOR setting property 'jdk.http.auth.tunneling.disabledSchemes' to \"\""); |
1573 |
0 |
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", ""); |
1574 |
|
} catch (SecurityException e) |
1575 |
|
{ |
1576 |
0 |
Console.error("Could not set default Authenticator"); |
1577 |
0 |
Console.debug(getStackTraceString(e)); |
1578 |
|
} |
1579 |
|
} |
1580 |
|
else |
1581 |
|
{ |
1582 |
|
|
1583 |
|
|
1584 |
|
|
1585 |
|
|
1586 |
|
|
1587 |
307 |
if (!Platform.isJS()) |
1588 |
|
|
1589 |
|
|
1590 |
|
|
1591 |
|
|
1592 |
|
|
1593 |
|
|
1594 |
|
{ |
1595 |
307 |
Console.debug( |
1596 |
|
"AUTHENTICATOR setting default Authenticator to null"); |
1597 |
307 |
Authenticator.setDefault(null); |
1598 |
|
} |
1599 |
|
} |
1600 |
|
|
1601 |
|
|
1602 |
307 |
Console.debug( |
1603 |
|
"AUTHENTICATOR setting property 'http.nonProxyHosts' to \"" |
1604 |
|
+ nonProxyHosts + "\""); |
1605 |
307 |
setOrClearSystemProperty("http.nonProxyHosts", nonProxyHosts); |
1606 |
|
} |
1607 |
|
|
|
|
| 0% |
Uncovered Elements: 3 (3) |
Complexity: 2 |
Complexity Density: 2 |
|
1608 |
0 |
public static void setOrClearSystemProperty(String key, char[] value)... |
1609 |
|
{ |
1610 |
0 |
setOrClearSystemProperty(key, |
1611 |
0 |
(value == null) ? null : new String(value)); |
1612 |
|
} |
1613 |
|
|
|
|
| 55.6% |
Uncovered Elements: 4 (9) |
Complexity: 3 |
Complexity Density: 0.6 |
|
1614 |
2149 |
public static void setOrClearSystemProperty(String key, String value)... |
1615 |
|
{ |
1616 |
2149 |
if (key == null) |
1617 |
|
{ |
1618 |
0 |
return; |
1619 |
|
} |
1620 |
2149 |
if (value == null) |
1621 |
|
{ |
1622 |
2149 |
System.clearProperty(key); |
1623 |
|
} |
1624 |
|
else |
1625 |
|
{ |
1626 |
0 |
System.setProperty(key, value); |
1627 |
|
} |
1628 |
|
} |
1629 |
|
|
1630 |
|
|
1631 |
|
|
1632 |
|
|
1633 |
|
|
1634 |
|
private static final String releaseAppbase; |
1635 |
|
|
1636 |
|
private static String getdownAppbase; |
1637 |
|
|
1638 |
|
private static String getdownDistDir; |
1639 |
|
|
|
|
| 50% |
Uncovered Elements: 5 (10) |
Complexity: 3 |
Complexity Density: 0.5 |
|
1640 |
55 |
static... |
1641 |
|
{ |
1642 |
55 |
if (!Platform.isJS()) |
1643 |
|
{ |
1644 |
55 |
Float specversion = Float |
1645 |
|
.parseFloat(System.getProperty("java.specification.version")); |
1646 |
55 |
releaseAppbase = (specversion < 9) |
1647 |
|
? "https://www.jalview.org/getdown/release/1.8" |
1648 |
|
: "https://www.jalview.org/getdown/release/11"; |
1649 |
|
} |
1650 |
|
else |
1651 |
|
{ |
1652 |
|
|
1653 |
|
|
1654 |
0 |
releaseAppbase = "https://www.jalview.org/jalview-js"; |
1655 |
0 |
getdownAppbase = releaseAppbase; |
1656 |
0 |
getdownDistDir = "/swingjs/j2s"; |
1657 |
|
} |
1658 |
|
} |
1659 |
|
|
1660 |
|
|
|
|
| 72.2% |
Uncovered Elements: 10 (36) |
Complexity: 9 |
Complexity Density: 0.45 |
|
1661 |
122 |
private static void setGetdownAppbase()... |
1662 |
|
{ |
1663 |
122 |
if (getdownAppbase != null) |
1664 |
|
{ |
1665 |
105 |
return; |
1666 |
|
} |
1667 |
17 |
String appbase = System.getProperty("launcher.appbase"); |
1668 |
17 |
if (appbase == null) |
1669 |
|
{ |
1670 |
17 |
appbase = System.getProperty("getdownappbase"); |
1671 |
|
} |
1672 |
17 |
String distDir = System.getProperty("launcher.distdir"); |
1673 |
17 |
if (distDir == null) |
1674 |
|
{ |
1675 |
17 |
distDir = System.getProperty("getdowndistdir"); |
1676 |
|
} |
1677 |
17 |
if (appbase == null) |
1678 |
|
{ |
1679 |
17 |
appbase = buildProperties.getProperty("GETDOWNAPPBASE"); |
1680 |
17 |
distDir = buildProperties.getProperty("GETDOWNAPPDISTDIR"); |
1681 |
|
} |
1682 |
17 |
if (appbase == null) |
1683 |
|
{ |
1684 |
17 |
appbase = releaseAppbase; |
1685 |
17 |
distDir = "release"; |
1686 |
|
} |
1687 |
17 |
if (appbase.endsWith("/")) |
1688 |
|
{ |
1689 |
0 |
appbase = appbase.substring(0, appbase.length() - 1); |
1690 |
|
} |
1691 |
17 |
if (distDir == null) |
1692 |
|
{ |
1693 |
0 |
distDir = appbase.equals(releaseAppbase) ? "release" : "alt"; |
1694 |
|
} |
1695 |
17 |
getdownAppbase = appbase; |
1696 |
17 |
getdownDistDir = distDir; |
1697 |
|
} |
1698 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
1699 |
122 |
public static String getGetdownAppbase()... |
1700 |
|
{ |
1701 |
122 |
setGetdownAppbase(); |
1702 |
122 |
return getdownAppbase; |
1703 |
|
} |
1704 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
1705 |
122 |
public static String getAppbaseBuildProperties()... |
1706 |
|
{ |
1707 |
122 |
String appbase = getGetdownAppbase(); |
1708 |
122 |
return appbase + "/" + getdownDistDir + "/build_properties"; |
1709 |
|
} |
1710 |
|
|
1711 |
|
private static final Collection<String> bootstrapProperties = new ArrayList<>( |
1712 |
|
Arrays.asList(JALVIEWLOGLEVEL, BOOTSTRAP_TEST)); |
1713 |
|
|
|
|
| 70.7% |
Uncovered Elements: 12 (41) |
Complexity: 11 |
Complexity Density: 0.38 |
|
1714 |
132 |
public static Properties bootstrapProperties(String filename)... |
1715 |
|
{ |
1716 |
132 |
Properties bootstrapProps = new Properties(); |
1717 |
132 |
File file = null; |
1718 |
132 |
if (filename != null) |
1719 |
|
{ |
1720 |
30 |
file = new File(filename); |
1721 |
|
} |
1722 |
132 |
if (file == null || !file.exists()) |
1723 |
|
{ |
1724 |
102 |
if (file != null) |
1725 |
|
{ |
1726 |
0 |
jalview.bin.Console |
1727 |
|
.errPrintln("Could not load bootstrap preferences file '" |
1728 |
|
+ file.getPath() + "'"); |
1729 |
|
} |
1730 |
102 |
String channelPrefsFilename = ChannelProperties |
1731 |
|
.getProperty("preferences.filename"); |
1732 |
102 |
String propertiesFilename = System.getProperty("user.home") |
1733 |
|
+ File.separatorChar + channelPrefsFilename; |
1734 |
102 |
jalview.bin.Console.errPrintln( |
1735 |
|
"Using default properties file '" + propertiesFilename + "'"); |
1736 |
102 |
file = new File(propertiesFilename); |
1737 |
|
} |
1738 |
132 |
if (file == null || !file.exists()) |
1739 |
|
|
1740 |
|
{ |
1741 |
0 |
String releasePrefsFilename = fallbackPropertiesFile; |
1742 |
0 |
String releasePropertiesFilename = System.getProperty("user.home") |
1743 |
|
+ File.separatorChar + releasePrefsFilename; |
1744 |
0 |
jalview.bin.Console.errPrintln("Falling back to properties file '" |
1745 |
|
+ releasePropertiesFilename + "'"); |
1746 |
0 |
file = new File(releasePropertiesFilename); |
1747 |
|
} |
1748 |
|
|
1749 |
132 |
if (!file.exists()) |
1750 |
|
{ |
1751 |
0 |
jalview.bin.Console |
1752 |
|
.errPrintln("Could not load bootstrap preferences file '" |
1753 |
|
+ file.getPath() + "'"); |
1754 |
0 |
return null; |
1755 |
|
} |
1756 |
|
|
1757 |
132 |
try |
1758 |
|
{ |
1759 |
132 |
FileInputStream in = new FileInputStream(file.getAbsoluteFile()); |
1760 |
132 |
Properties props = new Properties(); |
1761 |
132 |
props.load(in); |
1762 |
132 |
for (String prop : bootstrapProperties) |
1763 |
|
{ |
1764 |
264 |
if (props.containsKey(prop)) |
1765 |
9 |
bootstrapProps.put(prop, props.getProperty(prop)); |
1766 |
|
} |
1767 |
|
} catch (FileNotFoundException e) |
1768 |
|
{ |
1769 |
0 |
jalview.bin.Console |
1770 |
|
.errPrintln("Could not find bootstrap preferences file '" |
1771 |
|
+ file.getAbsolutePath() + "'"); |
1772 |
|
} catch (IOException e) |
1773 |
|
{ |
1774 |
0 |
jalview.bin.Console.errPrintln( |
1775 |
|
"IOException when loading bootstrap preferences file '" |
1776 |
|
+ file.getAbsolutePath() + "'"); |
1777 |
|
} |
1778 |
132 |
return bootstrapProps; |
1779 |
|
} |
1780 |
|
|
|
|
| 0% |
Uncovered Elements: 4 (4) |
Complexity: 2 |
Complexity Density: 1 |
|
1781 |
0 |
public static void setSessionProperty(String key, String val)... |
1782 |
|
{ |
1783 |
0 |
if (key != null) |
1784 |
|
{ |
1785 |
0 |
sessionProperties.put(key, val); |
1786 |
|
} |
1787 |
|
} |
1788 |
|
|
|
|
| 66.7% |
Uncovered Elements: 1 (3) |
Complexity: 2 |
Complexity Density: 2 |
|
1789 |
424720 |
public static String getSessionProperty(String key)... |
1790 |
|
{ |
1791 |
424723 |
return key == null ? null : sessionProperties.get(key); |
1792 |
|
} |
1793 |
|
|
|
|
| 75% |
Uncovered Elements: 1 (4) |
Complexity: 2 |
Complexity Density: 1 |
|
1794 |
75 |
public static boolean getArgCacheDefault(Arg a, String pref, boolean def)... |
1795 |
|
{ |
1796 |
75 |
ArgParser ap = Jalview.getInstance().getArgParser(); |
1797 |
75 |
return ap.isSet(a) ? ap.getBoolean(a) : getDefault(pref, def); |
1798 |
|
} |
1799 |
|
} |