| 
001 /*002  * Copyright 2008-2015 the original author or authors.
 003  *
 004  * Licensed under the Apache License, Version 2.0 (the "License");
 005  * you may not use this file except in compliance with the License.
 006  * You may obtain a copy of the License at
 007  *
 008  *     http://www.apache.org/licenses/LICENSE-2.0
 009  *
 010  * Unless required by applicable law or agreed to in writing, software
 011  * distributed under the License is distributed on an "AS IS" BASIS,
 012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 013  * See the License for the specific language governing permissions and
 014  * limitations under the License.
 015  */
 016 package griffon.util;
 017
 018 import javax.annotation.Nonnull;
 019 import javax.annotation.Nullable;
 020 import java.util.Locale;
 021
 022 import static griffon.util.GriffonNameUtils.isBlank;
 023
 024 /**
 025  * Assorted utility methods and constants.
 026  *
 027  * @author Andres Almiray
 028  */
 029 public final class GriffonApplicationUtils {
 030     private GriffonApplicationUtils() {
 031     }
 032
 033     private static final boolean isWindows;
 034     private static final boolean isWindows95;
 035     private static final boolean isWindows98;
 036     private static final boolean isWindowsNT;
 037     private static final boolean isWindows2000;
 038     private static final boolean isWindows2003;
 039     private static final boolean isWindowsXP;
 040     private static final boolean isWindowsVista;
 041     private static final boolean isWindows7;
 042     private static final boolean isWindows8;
 043
 044     /**
 045      * True if running Linux, Solaris or MacOSX
 046      */
 047     private static final boolean isUnix;
 048
 049     private static final boolean isLinux;
 050     private static final boolean isSolaris;
 051     private static final boolean isMacOSX;
 052
 053     private static final String osArch;
 054     private static final String osName;
 055     private static final String osVersion;
 056     private static final String javaVersion;
 057     private static final boolean is64Bit;
 058
 059     private static final boolean isJdk14;
 060     private static final boolean isJdk15;
 061     private static final boolean isJdk16;
 062     private static final boolean isJdk17;
 063     private static final boolean isJdk18;
 064
 065     public static final String platform;
 066     public static final String basePlatform;
 067
 068     static {
 069         osArch = System.getProperty("os.arch");
 070         osName = System.getProperty("os.name");
 071         is64Bit = osArch.contains("64");
 072
 073         if (osName.contains("Windows")) {
 074             basePlatform = "windows";
 075             isWindows = true;
 076             isLinux = false;
 077             isUnix = false;
 078             isMacOSX = false;
 079             isSolaris = false;
 080             if (osName.contains("95")) {
 081                 isWindows95 = true;
 082                 isWindows98 = false;
 083                 isWindowsNT = false;
 084                 isWindows2000 = false;
 085                 isWindows2003 = false;
 086                 isWindowsXP = false;
 087                 isWindowsVista = false;
 088                 isWindows7 = false;
 089                 isWindows8 = false;
 090             } else if (osName.contains("98")) {
 091                 isWindows95 = false;
 092                 isWindows98 = true;
 093                 isWindowsNT = false;
 094                 isWindows2000 = false;
 095                 isWindows2003 = false;
 096                 isWindowsXP = false;
 097                 isWindowsVista = false;
 098                 isWindows7 = false;
 099                 isWindows8 = false;
 100             } else if (osName.contains("NT")) {
 101                 isWindows95 = false;
 102                 isWindows98 = false;
 103                 isWindowsNT = false;
 104                 isWindows2000 = true;
 105                 isWindows2003 = false;
 106                 isWindowsXP = false;
 107                 isWindowsVista = false;
 108                 isWindows7 = false;
 109                 isWindows8 = false;
 110             } else if (osName.contains("2003")) {
 111                 isWindows95 = false;
 112                 isWindows98 = false;
 113                 isWindowsNT = false;
 114                 isWindows2000 = false;
 115                 isWindows2003 = true;
 116                 isWindowsXP = true;
 117                 isWindowsVista = false;
 118                 isWindows7 = false;
 119                 isWindows8 = false;
 120             } else if (osName.contains("XP")) {
 121                 isWindows95 = false;
 122                 isWindows98 = false;
 123                 isWindowsNT = true;
 124                 isWindows2000 = true;
 125                 isWindows2003 = true;
 126                 isWindowsXP = false;
 127                 isWindowsVista = false;
 128                 isWindows7 = false;
 129                 isWindows8 = false;
 130             } else if (osName.contains("Vista")) {
 131                 isWindows95 = false;
 132                 isWindows98 = false;
 133                 isWindowsNT = false;
 134                 isWindows2000 = false;
 135                 isWindows2003 = false;
 136                 isWindowsXP = false;
 137                 isWindowsVista = true;
 138                 isWindows7 = false;
 139                 isWindows8 = 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             } else if (osName.equals("Windows 8")) {
 151                 isWindows95 = false;
 152                 isWindows98 = false;
 153                 isWindowsNT = false;
 154                 isWindows2000 = false;
 155                 isWindows2003 = false;
 156                 isWindowsXP = false;
 157                 isWindowsVista = false;
 158                 isWindows7 = false;
 159                 isWindows8 = true;
 160             } else {
 161                 isWindows95 = false;
 162                 isWindows98 = false;
 163                 isWindowsNT = false;
 164                 isWindows2000 = false;
 165                 isWindows2003 = false;
 166                 isWindowsXP = false;
 167                 isWindowsVista = false;
 168                 isWindows7 = false;
 169                 isWindows8 = false;
 170             }
 171         } else if (osName.contains("Linux")) {
 172             basePlatform = "linux";
 173             isWindows = false;
 174             isLinux = true;
 175             isUnix = true;
 176             isMacOSX = false;
 177             isSolaris = false;
 178             isWindows95 = false;
 179             isWindows98 = false;
 180             isWindowsNT = false;
 181             isWindows2000 = false;
 182             isWindows2003 = false;
 183             isWindowsXP = false;
 184             isWindowsVista = false;
 185             isWindows7 = false;
 186             isWindows8 = false;
 187         } else if (osName.contains("Solaris") || osName.contains("SunOS")) {
 188             basePlatform = "solaris";
 189             isWindows = false;
 190             isLinux = false;
 191             isUnix = true;
 192             isMacOSX = false;
 193             isSolaris = true;
 194             isWindows95 = false;
 195             isWindows98 = false;
 196             isWindowsNT = false;
 197             isWindows2000 = false;
 198             isWindows2003 = false;
 199             isWindowsXP = false;
 200             isWindowsVista = false;
 201             isWindows7 = false;
 202             isWindows8 = false;
 203         } else if (osName.contains("Mac OS")) {
 204             basePlatform = "macosx";
 205             isWindows = false;
 206             isLinux = false;
 207             isUnix = true;
 208             isMacOSX = true;
 209             isSolaris = false;
 210             isWindows95 = false;
 211             isWindows98 = false;
 212             isWindowsNT = false;
 213             isWindows2000 = false;
 214             isWindows2003 = false;
 215             isWindowsXP = false;
 216             isWindowsVista = false;
 217             isWindows7 = false;
 218             isWindows8 = false;
 219         } else {
 220             basePlatform = "unknown";
 221             isWindows = false;
 222             isLinux = false;
 223             isUnix = false;
 224             isMacOSX = false;
 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         }
 236
 237         osVersion = System.getProperty("os.version");
 238         javaVersion = System.getProperty("java.version");
 239         String version = javaVersion.substring(0, 3);
 240         isJdk14 = true;
 241         switch (version) {
 242             case "1.8":
 243                 isJdk18 = true;
 244                 isJdk17 = true;
 245                 isJdk16 = true;
 246                 isJdk15 = true;
 247                 break;
 248             case "1.7":
 249                 isJdk18 = false;
 250                 isJdk17 = true;
 251                 isJdk16 = true;
 252                 isJdk15 = true;
 253                 break;
 254             case "1.6":
 255                 isJdk18 = false;
 256                 isJdk17 = false;
 257                 isJdk16 = true;
 258                 isJdk15 = true;
 259                 break;
 260             case "1.5":
 261                 isJdk18 = false;
 262                 isJdk17 = false;
 263                 isJdk16 = false;
 264                 isJdk15 = true;
 265                 break;
 266             default:
 267                 isJdk18 = false;
 268                 isJdk17 = false;
 269                 isJdk16 = false;
 270                 isJdk15 = false;
 271                 break;
 272         }
 273
 274         platform = basePlatform + (is64Bit && !isSolaris ? "64" : "");
 275     }
 276
 277     public static boolean isWindows() {
 278         return isWindows;
 279     }
 280
 281     public static boolean isWindows95() {
 282         return isWindows95;
 283     }
 284
 285     public static boolean isWindows98() {
 286         return isWindows98;
 287     }
 288
 289     public static boolean isWindowsNT() {
 290         return isWindowsNT;
 291     }
 292
 293     public static boolean isWindows2000() {
 294         return isWindows2000;
 295     }
 296
 297     public static boolean isWindows2003() {
 298         return isWindows2003;
 299     }
 300
 301     public static boolean isWindowsXP() {
 302         return isWindowsXP;
 303     }
 304
 305     public static boolean isWindowsVista() {
 306         return isWindowsVista;
 307     }
 308
 309     public static boolean isWindows7() {
 310         return isWindows7;
 311     }
 312
 313     public static boolean isWindows8() {
 314         return isWindows8;
 315     }
 316
 317     public static boolean isUnix() {
 318         return isUnix;
 319     }
 320
 321     public static boolean isLinux() {
 322         return isLinux;
 323     }
 324
 325     public static boolean isSolaris() {
 326         return isSolaris;
 327     }
 328
 329     public static boolean isMacOSX() {
 330         return isMacOSX;
 331     }
 332
 333     public static String getOsArch() {
 334         return osArch;
 335     }
 336
 337     public static String getOsName() {
 338         return osName;
 339     }
 340
 341     public static String getOsVersion() {
 342         return osVersion;
 343     }
 344
 345     public static String getJavaVersion() {
 346         return javaVersion;
 347     }
 348
 349     public static boolean is64Bit() {
 350         return is64Bit;
 351     }
 352
 353     public static boolean isJdk14() {
 354         return isJdk14;
 355     }
 356
 357     public static boolean isJdk15() {
 358         return isJdk15;
 359     }
 360
 361     public static boolean isJdk16() {
 362         return isJdk16;
 363     }
 364
 365     public static boolean isJdk17() {
 366         return isJdk17;
 367     }
 368
 369     public static boolean isJdk18() {
 370         return isJdk18;
 371     }
 372
 373     public static String getPlatform() {
 374         return platform;
 375     }
 376
 377     public static String getBasePlatform() {
 378         return basePlatform;
 379     }
 380
 381     public static boolean getIsWindows() {
 382         return isWindows;
 383     }
 384
 385     public static boolean getIsWindows95() {
 386         return isWindows95;
 387     }
 388
 389     public static boolean getIsWindows98() {
 390         return isWindows98;
 391     }
 392
 393     public static boolean getIsWindowsNT() {
 394         return isWindowsNT;
 395     }
 396
 397     public static boolean getIsWindows2000() {
 398         return isWindows2000;
 399     }
 400
 401     public static boolean getIsWindows2003() {
 402         return isWindows2003;
 403     }
 404
 405     public static boolean getIsWindowsXP() {
 406         return isWindowsXP;
 407     }
 408
 409     public static boolean getIsWindowsVista() {
 410         return isWindowsVista;
 411     }
 412
 413     public static boolean getIsWindows7() {
 414         return isWindows7;
 415     }
 416
 417     public static boolean getIsWindows8() {
 418         return isWindows8;
 419     }
 420
 421     public static boolean getIsUnix() {
 422         return isUnix;
 423     }
 424
 425     public static boolean getIsLinux() {
 426         return isLinux;
 427     }
 428
 429     public static boolean getIsSolaris() {
 430         return isSolaris;
 431     }
 432
 433     public static boolean getIsMacOSX() {
 434         return isMacOSX;
 435     }
 436
 437     public static boolean getIs64Bit() {
 438         return is64Bit;
 439     }
 440
 441     public static boolean getIsJdk14() {
 442         return isJdk14;
 443     }
 444
 445     public static boolean getIsJdk15() {
 446         return isJdk15;
 447     }
 448
 449     public static boolean getIsJdk16() {
 450         return isJdk16;
 451     }
 452
 453     public static boolean getIsJdk17() {
 454         return isJdk17;
 455     }
 456
 457     public static boolean getIsJdk18() {
 458         return isJdk18;
 459     }
 460
 461     @Nonnull
 462     @SuppressWarnings("ConstantConditions")
 463     public static Locale parseLocale(@Nullable String locale) {
 464         if (isBlank(locale)) return Locale.getDefault();
 465         String[] parts = locale.split("_");
 466         switch (parts.length) {
 467             case 1:
 468                 return new Locale(parts[0]);
 469             case 2:
 470                 return new Locale(parts[0], parts[1]);
 471             case 3:
 472                 return new Locale(parts[0], parts[1], parts[2]);
 473             default:
 474                 return Locale.getDefault();
 475         }
 476     }
 477 }
 |