/*
* OSName.java
*
* Copyright (C) 2009 Francisco Gómez Carrasco
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* Report bugs or new features to: flikxxi@gmail.com
*
*/
//package com.softenido.core.util;
/**
*
* @author franci
*/
public class OSName {
// string for os.name property only few tested
private static final String DARWIN = "darwin";
private static final String MAC = "mac";
private static final String MAC_OS_X = "mac os x";
private static final String OPENBSD = "openbsd";
private static final String LINUX = "linux"; // tested
private static final String SOLARIS = "solaris";
private static final String SUNOS = "sunos"; // tested
private static final String FREEBSD = "freebsd";
private static final String WINDOWS = "windows"; // tested
private static final String WINDOWS_98 = "windows 98";
private static final String WINDOWS_98SE = "windows 98se";
private static final String WINDOWS_ME = "windows me";
private static final String WINDOWS_2000 = "windows 2000";
private static final String WINDOWS_XP = "windows xp"; // tested
private static final String WINDOWS_VISTA = "windows vista"; // tested
private static final String WINDOWS_CE = "windows ce";
private static final String OS_NAME = "os.name";
private final boolean linux;
private final boolean solaris;
private final boolean freebsd;
private final boolean openbsd;
private final boolean macos;
private final boolean macosx;
private final boolean posix;
private final boolean windows;
private final boolean windows98;
private final boolean windows98SE;
private final boolean windowsME;
private final boolean windows2000;
private final boolean windowsXP;
private final boolean windowsVista;
private final boolean windowsCE;
private final boolean unknown;
public static final OSName os = getInstance(System.getProperty(OS_NAME));
private final String name;
public OSName(String osName) {
name = osName;
osName = osName.toLowerCase();
boolean _linux = false;
boolean _solaris = false;
boolean _freebsd = false;
boolean _openbsd = false;
boolean _macos = false;
boolean _macosx = false;
boolean _posix = false;
boolean _windows = false;
boolean _windows98 = false;
boolean _windows98SE = false;
boolean _windowsME = false;
boolean _windows2000 = false;
boolean _windowsXP = false;
boolean _windowsVista = false;
boolean _windowsCE = false;
boolean _unknown = false;
if (osName.startsWith(LINUX)) {
_linux = true;
_posix = true;
} else if (osName.equals(SOLARIS) || osName.equals(SUNOS)) {
_solaris = true;
_posix = true;
} else if (osName.startsWith(FREEBSD)) {
_freebsd = true;
_posix = true;
} else if (osName.startsWith(OPENBSD)) {
_openbsd = true;
_posix = true;
} else if (osName.startsWith(MAC) || osName.startsWith(DARWIN)) {
_macos = true;
_posix = true;
_macosx = osName.startsWith(MAC_OS_X);
} else if (osName.startsWith(WINDOWS)) {
_windows = true;
if (osName.equals(WINDOWS_XP)) {
_windowsXP = true;
} else if (osName.equals(WINDOWS_VISTA)) {
_windowsVista = true;
} else if (osName.startsWith(WINDOWS_2000)) {
_windows2000 = true;
} else if (osName.startsWith(WINDOWS_CE)) {
_windowsCE = true;
} else if (osName.startsWith(WINDOWS_ME)) {
_windowsME = true;
} else if (osName.startsWith(WINDOWS_98SE)) {
_windows98SE = true;
} else if (osName.startsWith(WINDOWS_98)) {
_windows98 = true;
}
} else {
_unknown = true;
}
this.linux = _linux;
this.solaris = _solaris;
this.freebsd = _freebsd;
this.openbsd = _openbsd;
this.macos = _macos;
this.macosx = _macosx;
this.posix = _posix;
this.windows = _windows;
this.windows98 = _windows98;
this.windows98SE = _windows98SE;
this.windowsME = _windowsME;
this.windows2000 = _windows2000;
this.windowsXP = _windowsXP;
this.windowsVista = _windowsVista;
this.windowsCE = _windowsCE;
this.unknown = _unknown;
}
public static OSName getInstance() {
return os;
}
public static OSName getInstance(String osName) {
return new OSName(osName);
}
public boolean isFreebsd() {
return freebsd;
}
public boolean isLinux() {
return linux;
}
public boolean isMacos() {
return macos;
}
public boolean isMacosx() {
return macosx;
}
public boolean isOpenbsd() {
return openbsd;
}
public boolean isPosix() {
return posix;
}
public boolean isSolaris() {
return solaris;
}
public boolean isUnknown() {
return unknown;
}
public boolean isWindows() {
return windows;
}
public boolean isWindowsCE() {
return windowsCE;
}
public boolean isWindowsXP() {
return windowsXP;
}
public boolean isWindows2000() {
return windows2000;
}
public boolean isWindows98() {
return windows98;
}
public boolean isWindows98SE() {
return windows98SE;
}
public boolean isWindowsME() {
return windowsME;
}
public boolean isWindowsVista() {
return windowsVista;
}
public String getName() {
return name;
}
}