| BrowserLauncher.java |
1 /**
2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3 *
4 *
5 *
6 *
7 * The contents of this file are subject to the terms of the Liferay Enterprise
8 * Subscription License ("License"). You may not use this file except in
9 * compliance with the License. You can obtain a copy of the License by
10 * contacting Liferay, Inc. See the License for the specific language governing
11 * permissions and limitations under the License, including but not limited to
12 * distribution rights of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23 package com.liferay.portal.util;
24
25 import com.liferay.portal.kernel.util.Validator;
26
27 import java.net.HttpURLConnection;
28 import java.net.URL;
29
30 /**
31 * <a href="BrowserLauncher.java.html"><b><i>View Source</i></b></a>
32 *
33 * @author Brian Wing Shun Chan
34 *
35 */
36 public class BrowserLauncher implements Runnable {
37
38 public void run() {
39 if (Validator.isNull(PropsValues.BROWSER_LAUNCHER_URL)) {
40 return;
41 }
42
43 for (int i = 0; i < 5; i++) {
44 try {
45 Thread.sleep(3000);
46 }
47 catch (InterruptedException ie) {
48 }
49
50 try {
51 URL url = new URL(PropsValues.BROWSER_LAUNCHER_URL);
52
53 HttpURLConnection urlc =
54 (HttpURLConnection)url.openConnection();
55
56 int responseCode = urlc.getResponseCode();
57
58 if (responseCode == HttpURLConnection.HTTP_OK) {
59 try {
60 launchBrowser();
61 }
62 catch (Exception e2) {
63 }
64
65 break;
66 }
67 }
68 catch (Exception e1) {
69 }
70 }
71 }
72
73 protected void launchBrowser() throws Exception {
74 String os = System.getProperty("os.name").toLowerCase();
75
76 Runtime runtime = Runtime.getRuntime();
77
78 if (os.indexOf("mac") >= 0) {
79 launchBrowserApple(runtime);
80 }
81 else if (os.indexOf("win") >= 0) {
82 launchBrowserWindows(runtime);
83 }
84 else {
85 launchBrowserUnix(runtime);
86 }
87 }
88
89 protected void launchBrowserApple(Runtime runtime) throws Exception {
90 runtime.exec("open " + PropsValues.BROWSER_LAUNCHER_URL);
91 }
92
93 protected void launchBrowserUnix(Runtime runtime) throws Exception {
94 StringBuilder sb = new StringBuilder();
95
96 for (int i = 0; i < _BROWSERS.length; i++) {
97 if (i != 0) {
98 sb.append(" || ");
99 }
100
101 sb.append(_BROWSERS[i]);
102 sb.append(" \"");
103 sb.append(PropsValues.BROWSER_LAUNCHER_URL);
104 sb.append("\" ");
105 }
106
107 runtime.exec(new String[] {"sh", "-c", sb.toString()});
108 }
109
110 protected void launchBrowserWindows(Runtime runtime) throws Exception {
111 runtime.exec("cmd.exe /c start " + PropsValues.BROWSER_LAUNCHER_URL);
112 }
113
114 private static final String[] _BROWSERS = {
115 "firefox", "mozilla", "konqueror", "opera"
116 };
117
118 }