
import java.util.HashMap;

/**
 * Enumeration for all System properties
 *
 * @author Vassilios Karakoidas (bkarak@aueb.gr);
 */
public enum Properties {
	JAVA_VERSION,
	JAVA_VENDOR,
	JAVA_VENDOR_URL,
	JAVA_HOME,
	JAVA_VM_SPECIFICATION_VERSION,
	JAVA_VM_SPECIFICATION_VENDOR,
	JAVA_VM_SPECIFICATION_NAME,
	JAVA_VM_VERSION,
	JAVA_VM_VENDOR,
	JAVA_VM_NAME,
	JAVA_SPECIFICATION_VERSION,
	JAVA_SPECIFICATION_VENDOR,
	JAVA_SPECIFICATION_NAME,
	JAVA_CLASS_VERSION,
	JAVA_CLASS_PATH,
	JAVA_LIBRARY_PATH,
	JAVA_IO_TMPDIR,
	JAVA_COMPILER,
	JAVA_EXT_DIRS,
	OS_NAME,
	OS_ARCH,
	OS_VERSION,
	FILE_SEPARATOR,
	PATH_SEPARATOR,
	LINE_SEPARATOR,
	USER_NAME,
	USER_HOME,
	USER_DIR;
	
	// attributes
    private static HashMap<String,Properties> options;

    static {
        options = new HashMap<String,Properties>();
		options.put("java.version",JAVA_VERSION);
		options.put("java.vendor",JAVA_VENDOR);
		options.put("java.vendor.url",JAVA_VENDOR_URL);
		options.put("java.home",JAVA_HOME);
		options.put("java.vm.specification.version",JAVA_VM_SPECIFICATION_VERSION);
		options.put("java.vm.specification.vendor",JAVA_VM_SPECIFICATION_VENDOR);
		options.put("java.vm.specification.name",JAVA_VM_SPECIFICATION_NAME);
		options.put("java.vm.version",JAVA_VM_VERSION);
		options.put("java.vm.vendor",JAVA_VM_VENDOR);
		options.put("java.vm.name",JAVA_VM_NAME);
		options.put("java.specification.version",JAVA_SPECIFICATION_VERSION);
		options.put("java.specification.vendor",JAVA_SPECIFICATION_VENDOR);
		options.put("java.specification.name",JAVA_SPECIFICATION_NAME);
		options.put("java.class.version",JAVA_CLASS_VERSION);
		options.put("java.class.path",JAVA_CLASS_PATH);
		options.put("java.library.path",JAVA_LIBRARY_PATH);
		options.put("java.io.tmpdir",JAVA_IO_TMPDIR);
		options.put("java.compiler",JAVA_COMPILER);
		options.put("java.ext.dirs",JAVA_EXT_DIRS);
		options.put("os.name",OS_NAME);
		options.put("os.arch",OS_ARCH);
		options.put("os.version",OS_VERSION);
		options.put("file.separator",FILE_SEPARATOR);
		options.put("path.separator",PATH_SEPARATOR);
		options.put("line.separator",LINE_SEPARATOR);
		options.put("user.name",USER_NAME);
		options.put("user.home",USER_HOME);
		options.put("user.dir",USER_DIR);
    }
	
	public static Properties get(String key) {
		return options.get(key);
	}
}
