PageRenderTime 42ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/subprojects/griffon-core/src/main/java/griffon/util/GriffonApplicationUtils.java

http://github.com/griffon/griffon
Java | 520 lines | 430 code | 64 blank | 26 comment | 41 complexity | 67e6644827027154e79f6de55735d657 MD5 | raw file
Possible License(s): Apache-2.0
  1. /*
  2. * SPDX-License-Identifier: Apache-2.0
  3. *
  4. * Copyright 2008-2021 the original author or authors.
  5. *
  6. * Licensed under the Apache License, Version 2.0 (the "License");
  7. * you may not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. package griffon.util;
  19. import griffon.annotations.core.Nonnull;
  20. import griffon.annotations.core.Nullable;
  21. import java.util.Locale;
  22. import static griffon.util.GriffonNameUtils.isBlank;
  23. /**
  24. * Assorted utility methods and constants.
  25. *
  26. * @author Andres Almiray
  27. */
  28. public final class GriffonApplicationUtils {
  29. private GriffonApplicationUtils() {
  30. // prevent instantiation
  31. }
  32. private static final boolean isWindows;
  33. private static final boolean isWindows95;
  34. private static final boolean isWindows98;
  35. private static final boolean isWindowsNT;
  36. private static final boolean isWindows2000;
  37. private static final boolean isWindows2003;
  38. private static final boolean isWindowsXP;
  39. private static final boolean isWindowsVista;
  40. private static final boolean isWindows7;
  41. private static final boolean isWindows8;
  42. private static final boolean isWindows10;
  43. /**
  44. * True if running Linux, Solaris or MacOSX
  45. */
  46. private static final boolean isUnix;
  47. private static final boolean isLinux;
  48. private static final boolean isSolaris;
  49. private static final boolean isMacOSX;
  50. private static final String osArch;
  51. private static final String osName;
  52. private static final String osVersion;
  53. private static final String javaVersion;
  54. private static final boolean is64Bit;
  55. private static final boolean isJdk8;
  56. private static final boolean isJdk9;
  57. private static final boolean isJdk10;
  58. private static final boolean isJdk11;
  59. private static final boolean isJdk12;
  60. private static final boolean isJdk13;
  61. public static final String platform;
  62. public static final String basePlatform;
  63. static {
  64. osArch = System.getProperty("os.arch");
  65. osName = System.getProperty("os.name");
  66. is64Bit = osArch.contains("64");
  67. if (osName.contains("Windows")) {
  68. basePlatform = "windows";
  69. isWindows = true;
  70. isLinux = false;
  71. isUnix = false;
  72. isMacOSX = false;
  73. isSolaris = false;
  74. if (osName.contains("95")) {
  75. isWindows95 = true;
  76. isWindows98 = false;
  77. isWindowsNT = false;
  78. isWindows2000 = false;
  79. isWindows2003 = false;
  80. isWindowsXP = false;
  81. isWindowsVista = false;
  82. isWindows7 = false;
  83. isWindows8 = false;
  84. isWindows10 = false;
  85. } else if (osName.contains("98")) {
  86. isWindows95 = false;
  87. isWindows98 = true;
  88. isWindowsNT = false;
  89. isWindows2000 = false;
  90. isWindows2003 = false;
  91. isWindowsXP = false;
  92. isWindowsVista = false;
  93. isWindows7 = false;
  94. isWindows8 = false;
  95. isWindows10 = false;
  96. } else if (osName.contains("NT")) {
  97. isWindows95 = false;
  98. isWindows98 = false;
  99. isWindowsNT = false;
  100. isWindows2000 = true;
  101. isWindows2003 = false;
  102. isWindowsXP = false;
  103. isWindowsVista = false;
  104. isWindows7 = false;
  105. isWindows8 = false;
  106. isWindows10 = false;
  107. } else if (osName.contains("2003")) {
  108. isWindows95 = false;
  109. isWindows98 = false;
  110. isWindowsNT = false;
  111. isWindows2000 = false;
  112. isWindows2003 = true;
  113. isWindowsXP = true;
  114. isWindowsVista = false;
  115. isWindows7 = false;
  116. isWindows8 = false;
  117. isWindows10 = false;
  118. } else if (osName.contains("XP")) {
  119. isWindows95 = false;
  120. isWindows98 = false;
  121. isWindowsNT = true;
  122. isWindows2000 = true;
  123. isWindows2003 = true;
  124. isWindowsXP = false;
  125. isWindowsVista = false;
  126. isWindows7 = false;
  127. isWindows8 = false;
  128. isWindows10 = false;
  129. } else if (osName.contains("Vista")) {
  130. isWindows95 = false;
  131. isWindows98 = false;
  132. isWindowsNT = false;
  133. isWindows2000 = false;
  134. isWindows2003 = false;
  135. isWindowsXP = false;
  136. isWindowsVista = true;
  137. isWindows7 = false;
  138. isWindows8 = false;
  139. isWindows10 = false;
  140. } else if (osName.contains("Windows 7")) {
  141. isWindows95 = false;
  142. isWindows98 = false;
  143. isWindowsNT = false;
  144. isWindows2000 = false;
  145. isWindows2003 = false;
  146. isWindowsXP = false;
  147. isWindowsVista = false;
  148. isWindows7 = true;
  149. isWindows8 = false;
  150. isWindows10 = false;
  151. } else if (osName.equals("Windows 8")) {
  152. isWindows95 = false;
  153. isWindows98 = false;
  154. isWindowsNT = false;
  155. isWindows2000 = false;
  156. isWindows2003 = false;
  157. isWindowsXP = false;
  158. isWindowsVista = false;
  159. isWindows7 = false;
  160. isWindows8 = true;
  161. isWindows10 = false;
  162. } else if (osName.equals("Windows 8.1") || osName.equals("Windows 10")) {
  163. isWindows95 = false;
  164. isWindows98 = false;
  165. isWindowsNT = false;
  166. isWindows2000 = false;
  167. isWindows2003 = false;
  168. isWindowsXP = false;
  169. isWindowsVista = false;
  170. isWindows7 = false;
  171. isWindows8 = false;
  172. isWindows10 = true;
  173. } else {
  174. isWindows95 = false;
  175. isWindows98 = false;
  176. isWindowsNT = false;
  177. isWindows2000 = false;
  178. isWindows2003 = false;
  179. isWindowsXP = false;
  180. isWindowsVista = false;
  181. isWindows7 = false;
  182. isWindows8 = false;
  183. isWindows10 = false;
  184. }
  185. } else if (osName.contains("Linux")) {
  186. basePlatform = "linux";
  187. isWindows = false;
  188. isLinux = true;
  189. isUnix = true;
  190. isMacOSX = false;
  191. isSolaris = false;
  192. isWindows95 = false;
  193. isWindows98 = false;
  194. isWindowsNT = false;
  195. isWindows2000 = false;
  196. isWindows2003 = false;
  197. isWindowsXP = false;
  198. isWindowsVista = false;
  199. isWindows7 = false;
  200. isWindows8 = false;
  201. isWindows10 = false;
  202. } else if (osName.contains("Solaris") || osName.contains("SunOS")) {
  203. basePlatform = "solaris";
  204. isWindows = false;
  205. isLinux = false;
  206. isUnix = true;
  207. isMacOSX = false;
  208. isSolaris = true;
  209. isWindows95 = false;
  210. isWindows98 = false;
  211. isWindowsNT = false;
  212. isWindows2000 = false;
  213. isWindows2003 = false;
  214. isWindowsXP = false;
  215. isWindowsVista = false;
  216. isWindows7 = false;
  217. isWindows8 = false;
  218. isWindows10 = false;
  219. } else if (osName.contains("Mac OS")) {
  220. basePlatform = "macosx";
  221. isWindows = false;
  222. isLinux = false;
  223. isUnix = true;
  224. isMacOSX = true;
  225. isSolaris = false;
  226. isWindows95 = false;
  227. isWindows98 = false;
  228. isWindowsNT = false;
  229. isWindows2000 = false;
  230. isWindows2003 = false;
  231. isWindowsXP = false;
  232. isWindowsVista = false;
  233. isWindows7 = false;
  234. isWindows8 = false;
  235. isWindows10 = false;
  236. } else {
  237. basePlatform = "unknown";
  238. isWindows = false;
  239. isLinux = false;
  240. isUnix = false;
  241. isMacOSX = false;
  242. isSolaris = false;
  243. isWindows95 = false;
  244. isWindows98 = false;
  245. isWindowsNT = false;
  246. isWindows2000 = false;
  247. isWindows2003 = false;
  248. isWindowsXP = false;
  249. isWindowsVista = false;
  250. isWindows7 = false;
  251. isWindows8 = false;
  252. isWindows10 = false;
  253. }
  254. osVersion = System.getProperty("os.version");
  255. javaVersion = System.getProperty("java.version");
  256. isJdk8 = true;
  257. if (javaVersion.startsWith("13")) {
  258. isJdk13 = true;
  259. isJdk12 = true;
  260. isJdk11 = true;
  261. isJdk10 = true;
  262. isJdk9 = true;
  263. } else if (javaVersion.startsWith("12")) {
  264. isJdk13 = false;
  265. isJdk12 = true;
  266. isJdk11 = true;
  267. isJdk10 = true;
  268. isJdk9 = true;
  269. } else if (javaVersion.startsWith("11")) {
  270. isJdk13 = false;
  271. isJdk12 = false;
  272. isJdk11 = true;
  273. isJdk10 = true;
  274. isJdk9 = true;
  275. } else if (javaVersion.startsWith("10")) {
  276. isJdk13 = false;
  277. isJdk12 = false;
  278. isJdk11 = false;
  279. isJdk10 = true;
  280. isJdk9 = true;
  281. } else if (javaVersion.startsWith("9")) {
  282. isJdk13 = false;
  283. isJdk12 = false;
  284. isJdk11 = false;
  285. isJdk10 = false;
  286. isJdk9 = true;
  287. } else {
  288. isJdk13 = false;
  289. isJdk12 = false;
  290. isJdk11 = false;
  291. isJdk10 = false;
  292. isJdk9 = false;
  293. }
  294. platform = basePlatform + (is64Bit && !isSolaris ? "64" : "");
  295. }
  296. public static boolean isWindows() {
  297. return isWindows;
  298. }
  299. public static boolean isWindows95() {
  300. return isWindows95;
  301. }
  302. public static boolean isWindows98() {
  303. return isWindows98;
  304. }
  305. public static boolean isWindowsNT() {
  306. return isWindowsNT;
  307. }
  308. public static boolean isWindows2000() {
  309. return isWindows2000;
  310. }
  311. public static boolean isWindows2003() {
  312. return isWindows2003;
  313. }
  314. public static boolean isWindowsXP() {
  315. return isWindowsXP;
  316. }
  317. public static boolean isWindowsVista() {
  318. return isWindowsVista;
  319. }
  320. public static boolean isWindows7() {
  321. return isWindows7;
  322. }
  323. public static boolean isWindows8() {
  324. return isWindows8;
  325. }
  326. public static boolean isWindows10() {
  327. return isWindows10;
  328. }
  329. public static boolean isUnix() {
  330. return isUnix;
  331. }
  332. public static boolean isLinux() {
  333. return isLinux;
  334. }
  335. public static boolean isSolaris() {
  336. return isSolaris;
  337. }
  338. public static boolean isMacOSX() {
  339. return isMacOSX;
  340. }
  341. public static String getOsArch() {
  342. return osArch;
  343. }
  344. public static String getOsName() {
  345. return osName;
  346. }
  347. public static String getOsVersion() {
  348. return osVersion;
  349. }
  350. public static String getJavaVersion() {
  351. return javaVersion;
  352. }
  353. public static boolean is64Bit() {
  354. return is64Bit;
  355. }
  356. public static boolean isJdk8() {
  357. return isJdk8;
  358. }
  359. public static boolean isJdk9() {
  360. return isJdk9;
  361. }
  362. public static boolean isJdk10() {
  363. return isJdk10;
  364. }
  365. public static boolean isJdk11() {
  366. return isJdk10;
  367. }
  368. public static String getPlatform() {
  369. return platform;
  370. }
  371. public static String getBasePlatform() {
  372. return basePlatform;
  373. }
  374. public static boolean getIsWindows() {
  375. return isWindows;
  376. }
  377. public static boolean getIsWindows95() {
  378. return isWindows95;
  379. }
  380. public static boolean getIsWindows98() {
  381. return isWindows98;
  382. }
  383. public static boolean getIsWindowsNT() {
  384. return isWindowsNT;
  385. }
  386. public static boolean getIsWindows2000() {
  387. return isWindows2000;
  388. }
  389. public static boolean getIsWindows2003() {
  390. return isWindows2003;
  391. }
  392. public static boolean getIsWindowsXP() {
  393. return isWindowsXP;
  394. }
  395. public static boolean getIsWindowsVista() {
  396. return isWindowsVista;
  397. }
  398. public static boolean getIsWindows7() {
  399. return isWindows7;
  400. }
  401. public static boolean getIsWindows8() {
  402. return isWindows8;
  403. }
  404. public static boolean getIsWindows10() {
  405. return isWindows10;
  406. }
  407. public static boolean getIsUnix() {
  408. return isUnix;
  409. }
  410. public static boolean getIsLinux() {
  411. return isLinux;
  412. }
  413. public static boolean getIsSolaris() {
  414. return isSolaris;
  415. }
  416. public static boolean getIsMacOSX() {
  417. return isMacOSX;
  418. }
  419. public static boolean getIs64Bit() {
  420. return is64Bit;
  421. }
  422. public static boolean getIsJdk8() {
  423. return isJdk8;
  424. }
  425. public static boolean getIsJdk9() {
  426. return isJdk9;
  427. }
  428. public static boolean getIsJdk10() {
  429. return isJdk10;
  430. }
  431. public static boolean getIsJdk11() {
  432. return isJdk11;
  433. }
  434. public static boolean getIsJdk12() {
  435. return isJdk12;
  436. }
  437. public static boolean getIsJdk13() {
  438. return isJdk13;
  439. }
  440. @Nonnull
  441. @SuppressWarnings("ConstantConditions")
  442. public static Locale parseLocale(@Nullable String locale) {
  443. if (isBlank(locale)) { return Locale.getDefault(); }
  444. String[] parts = locale.split("_");
  445. switch (parts.length) {
  446. case 1:
  447. return new Locale(parts[0]);
  448. case 2:
  449. return new Locale(parts[0], parts[1]);
  450. case 3:
  451. return new Locale(parts[0], parts[1], parts[2]);
  452. default:
  453. return Locale.getDefault();
  454. }
  455. }
  456. }