source: josm/trunk/src/org/openstreetmap/josm/tools/Platform.java@ 13203

Last change on this file since 13203 was 12784, checked in by bastiK, 7 years ago

see #15229 - minor cleanup

File size: 2.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools;
3
4import java.util.Locale;
5
6/**
7 * Enum listing the supported platforms (operating system families).
8 * @since 12776
9 */
10public enum Platform {
11
12 /**
13 * Unik-like platform. This is the default when the platform cannot be identified.
14 */
15 UNIXOID {
16 @Override
17 public <T> T accept(PlatformVisitor<T> visitor) {
18 return visitor.visitUnixoid();
19 }
20 },
21 /**
22 * Windows platform.
23 */
24 WINDOWS {
25 @Override
26 public <T> T accept(PlatformVisitor<T> visitor) {
27 return visitor.visitWindows();
28 }
29 },
30 /**
31 * macOS (previously OS X) platform.
32 */
33 OSX {
34 @Override
35 public <T> T accept(PlatformVisitor<T> visitor) {
36 return visitor.visitOsx();
37 }
38 };
39
40 private static volatile Platform platform;
41
42 /**
43 * Support for the visitor pattern.
44 * @param <T> type that will be the result of the visiting operation
45 * @param visitor the visitor
46 * @return result of the operation
47 */
48 public abstract <T> T accept(PlatformVisitor<T> visitor);
49
50 /**
51 * Identifies the current operating system family.
52 * @return the the current operating system family
53 */
54 public static Platform determinePlatform() {
55 if (platform == null) {
56 String os = System.getProperty("os.name");
57 if (os == null) {
58 Logging.warn("Your operating system has no name, so I'm guessing its some kind of *nix.");
59 platform = Platform.UNIXOID;
60 } else if (os.toLowerCase(Locale.ENGLISH).startsWith("windows")) {
61 platform = Platform.WINDOWS;
62 } else if ("Linux".equals(os) || "Solaris".equals(os) ||
63 "SunOS".equals(os) || "AIX".equals(os) ||
64 "FreeBSD".equals(os) || "NetBSD".equals(os) || "OpenBSD".equals(os)) {
65 platform = Platform.UNIXOID;
66 } else if (os.toLowerCase(Locale.ENGLISH).startsWith("mac os x")) {
67 platform = Platform.OSX;
68 } else {
69 Logging.warn("I don't know your operating system '"+os+"', so I'm guessing its some kind of *nix.");
70 platform = Platform.UNIXOID;
71 }
72 }
73 return platform;
74 }
75
76}
Note: See TracBrowser for help on using the repository browser.