package com.digiarea.closure.preferences.model;
import com.digiarea.closure.preferences.model.visitor.GenericVisitor;
import com.digiarea.closure.preferences.model.visitor.VoidVisitor;
public enum OperatingSystem {
LINUX_OS("Linux", OperatingSystemFamily.LINUX),
MAC_OSX("Mac OS X", OperatingSystemFamily.MAC),
MAC_OS("Mac OS", OperatingSystemFamily.MAC),
WINDOWS_95("Windows 95", OperatingSystemFamily.WINDOWS),
WINDOWS_98("Windows 98", OperatingSystemFamily.WINDOWS),
WINDOWS_ME("Windows Me", OperatingSystemFamily.WINDOWS),
WINDOWS_NT("Windows NT", OperatingSystemFamily.WINDOWS),
WINDOWS_2000("Windows 2000", OperatingSystemFamily.WINDOWS),
WINDOWS_XP("Windows XP", OperatingSystemFamily.WINDOWS),
WINDOWS_7("Windows 7", OperatingSystemFamily.WINDOWS),
WINDOWS_8("Windows 8", OperatingSystemFamily.WINDOWS),
WINDOWS_81("Windows 8.1", OperatingSystemFamily.WINDOWS),
WINDOWS_2003("Windows 2003", OperatingSystemFamily.WINDOWS),
WINDOWS_2008("Windows 2008", OperatingSystemFamily.WINDOWS),
SUN_OS("Sun OS ", OperatingSystemFamily.UNIX),
MPE_IX("MPE/iX", OperatingSystemFamily.UNIX),
HP_UX("HP-UX", OperatingSystemFamily.UNIX),
AIX("AIX", OperatingSystemFamily.UNIX),
OS_390("OS/390", OperatingSystemFamily.UNIX),
FREEBSD("FreeBSD", OperatingSystemFamily.UNIX),
IRIX("Irix", OperatingSystemFamily.UNIX),
DIGITAL_UNIX("Digital Unix", OperatingSystemFamily.UNIX),
NETWARE_4_11("NetWare 4.11", OperatingSystemFamily.UNIX),
OSF1("OSF1", OperatingSystemFamily.UNIX),
OPENVMS("OpenVMS", OperatingSystemFamily.DEC_OS);
private final String label;
private final OperatingSystemFamily family;
private OperatingSystem(String label, OperatingSystemFamily family) {
this.label = label;
this.family = family;
}
public String getLabel() {
return label;
}
public OperatingSystemFamily getFamily() {
return family;
}
public static OperatingSystem resolve(String osName) {
for (OperatingSystem os : OperatingSystem.values()) {
if (os.label.equalsIgnoreCase(osName)) return os;
}
return null;
}
public <C> void accept(VoidVisitor<C> v, C ctx) throws Exception {
v.visit(this, ctx);
}
public <R, C> R accept(GenericVisitor<R, C> v, C ctx) throws Exception {
return v.visit(this, ctx);
}
}