summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/util/OpenLinks.java
blob: 2bde54bf26f8d6f24ee0e43e6da878494efbab1c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package util;

import java.awt.Desktop;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JOptionPane;

import org.apache.log4j.Logger;

public class OpenLinks {

	/**
	 * Logger instance for this class
	 */
	private final static Logger LOGGER = Logger.getLogger(OpenLinks.class);

	/**
	 * Map containing the links
	 */
	@SuppressWarnings("serial")
	private static Map<String, String> links = Collections.unmodifiableMap(new HashMap<String, String>(){{
		put("faq", "http://bwlehrpool.hs-offenburg.de");
		put("otrs", "http://bwlehrpool.hs-offenburg.de");
		put("vmware", "https://my.vmware.com/de/web/vmware/free#desktop_end_user_computing/vmware_player/6_0");
		put("intro", "http://www.hs-offenburg.de/fileadmin/Einrichtungen/hrz/Projekte/bwLehrpool/3_bwLehrpool_-_Image_einbinden_und_starten.pdf");
		
	}});

	/**
	 * Static URIs
	 */

	private static Map<String, URI> uris;
	static {
		// temp map
		Map<String, URI> tmpUris = new HashMap<String, URI>();
		for (String key : links.keySet()) {
			URI tmp;
			try {
				tmp = new URI(links.get(key));
			} catch (URISyntaxException e) {
				// should never happen!
				LOGGER.error("Bad URI syntax of '" + key + "', see trace: ", e);
				tmp = null;
			}
			tmpUris.put(key, tmp);
		}
		// check sizes of maps to be equal
		if (links.size() != tmpUris.size()) {
			LOGGER.error("Links and URIs have different sizes, this should not happen. Contact a developper.");
		}
		
		// all good, save it to the actual 'uris' map
		uris = Collections.unmodifiableMap(tmpUris);
	}

	
	public static void openWebpage(String key) {
		// first check if we have the link for the request key
		if (!uris.containsKey(key)) {
			LOGGER.error("OpenLinks has to link to '" + key + "'. Check if the given key actually exists.");
			return;
		}
		Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop()
				: null;
		if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
			try {
				desktop.browse(uris.get(key));
			} catch (Exception e) {
				e.printStackTrace();
				JOptionPane.showMessageDialog(null,
						e.getCause() + "\n" + e.getStackTrace(),
						"Debug-Message", JOptionPane.ERROR_MESSAGE);
			}
		}
	}// end openWebpage

}