001 /* 002 Galois, a framework to exploit amorphous data-parallelism in irregular 003 programs. 004 005 Copyright (C) 2010, The University of Texas at Austin. All rights reserved. 006 UNIVERSITY EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES CONCERNING THIS SOFTWARE 007 AND DOCUMENTATION, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR ANY 008 PARTICULAR PURPOSE, NON-INFRINGEMENT AND WARRANTIES OF PERFORMANCE, AND ANY 009 WARRANTY THAT MIGHT OTHERWISE ARISE FROM COURSE OF DEALING OR USAGE OF TRADE. 010 NO WARRANTY IS EITHER EXPRESS OR IMPLIED WITH RESPECT TO THE USE OF THE 011 SOFTWARE OR DOCUMENTATION. Under no circumstances shall University be liable 012 for incidental, special, indirect, direct or consequential damages or loss of 013 profits, interruption of business, or related expenses which may arise from use 014 of Software or Documentation, including but not limited to those resulting from 015 defects in Software and/or Documentation, or loss or inaccuracy of data of any 016 kind. 017 018 File: SystemProperties.java 019 020 */ 021 022 023 024 package util; 025 026 /** 027 * Utility class to deal with retrieving properties from System. 028 */ 029 public class SystemProperties { 030 /** 031 * Returns the enum value associated with the given system property or the 032 * default if the property was unset or set to an unparseable value. 033 * 034 * @param name Name of the System.getProperty() property to fetch 035 * @param def Default value if property not found 036 * @return The value associated with the property or the default value 037 */ 038 public static <T extends Enum<T>> T getEnumProperty(String name, Class<T> enumType, T def) { 039 String value = System.getProperty(name); 040 if (value == null) { 041 return def; 042 } 043 try { 044 return Enum.valueOf(enumType, value); 045 } catch (IllegalArgumentException _) { 046 return def; 047 } 048 } 049 050 /** 051 * Returns the integer value associated with the given system property, or the 052 * default if the property was unset or set to an unparseable string. 053 * 054 * @param name Name of the System.getProperty() property to fetch 055 * @param def Default value if property not found 056 * @return The value associated with the property or the default value 057 */ 058 public static int getIntProperty(String name, int def) { 059 return Integer.getInteger(name, def); 060 } 061 062 /** 063 * Returns the long value associated with the given system property, or the 064 * default if the property was unset or set to an unparseable string. 065 * 066 * @param name Name of the System.getProperty() property to fetch 067 * @param def Default value if property not found 068 * @return The value associated with the property or the default value 069 */ 070 public static long getLongProperty(String name, long def) { 071 return Long.getLong(name, def); 072 } 073 074 /** 075 * Returns the double value associated with the given system property, or the 076 * default if the property was unset or set to an unparseable string. 077 * 078 * @param name Name of the System.getProperty() property to fetch 079 * @param def Default value if property not found 080 * @return The value associated with the property or the default value 081 */ 082 public static double getDoubleProperty(String name, double def) { 083 String value = System.getProperty(name); 084 if (value == null) { 085 return def; 086 } 087 try { 088 return Double.parseDouble(value); 089 } catch (NumberFormatException _) { 090 return def; 091 } 092 } 093 094 /** 095 * Returns the boolean value associated with the given system property, or the 096 * default if the property was unset or a string other than "true" or "false." 097 * 098 * @param name Name of the System.getProperty() property to fetch 099 * @param def Default value if property not found 100 * @return The value associated with the property or the default value 101 */ 102 public static boolean getBooleanProperty(String name, boolean def) { 103 String value = System.getProperty(name); 104 if (value == null) { 105 return def; 106 } 107 if (value.equalsIgnoreCase("true")) { 108 return true; 109 } 110 if (value.equalsIgnoreCase("false")) { 111 return false; 112 } 113 return def; 114 } 115 }