/* * Copyright 2006-2012 ICEsoft Technologies Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.icepdf.core.util; import java.util.Properties; import java.util.logging.Logger; import java.util.logging.Level; public class Defs { private static final Logger logger = Logger.getLogger(Defs.class.toString()); /** * Equivalent to property(name, null) */ public static String property(String name) { return property(name, null); } /** * Return value for system property <code>name</code> or * * <code>defaultValue</code> if the property does not exist * or a security * manager denies access to it */ public static String property(String name, String defaultValue) { try { return System.getProperty(name, defaultValue); } catch (SecurityException ex) { // recal method so that property change takes effect logger.log(Level.FINE, "Security exception, property could not be set.", ex); } return defaultValue; } /** * Return value for system property <code>name</code> parsed as int or * * <code>defaultValue</code> if the property does not exist * or a security * manager denies access to it */ public static int intProperty(String name, int defaultValue) { String value = property(name); if (value != null) { try { return Integer.parseInt(value); } catch (NumberFormatException ex) { logger.log(Level.FINE, "Failed to parse property.", ex); } } return defaultValue; } /** * Shortcut for <code>booleanProperty(name, false)</code> */ public static boolean booleanProperty(String name) { return booleanProperty(name, false); } /** * If security manager allow access to the system property <b>name</b> * and * it exists, then return true if it is set to <i>yes</i>, <i>true</i> * and * false if set to <i>no</i>, <i>false</i>. Otherwise returns * * <b>defaultValue</b> */ public static boolean booleanProperty(String name, boolean defaultValue) { String value = property(name); if (value != null) { switch (value.length()) { case 2: if ("no".equals(value.toLowerCase())) return false; break; case 3: if ("yes".equals(value.toLowerCase())) return true; break; case 4: if ("true".equals(value.toLowerCase())) return true; break; case 5: if ("false".equals(value.toLowerCase())) return false; break; } } return defaultValue; } /** * Alias to property(String name) */ public static String sysProperty(String name) { return property(name); } /** * Alias to property(String name, String defaultValue) */ public static String sysProperty(String name, String defaultValue) { return property(name, defaultValue); } /** * Alias to intProperty(String name, int defaultValue) */ public static int sysPropertyInt(String name, int defaultValue) { return intProperty(name, defaultValue); } /** * Alias to booleanProperty(String name) */ public static boolean sysPropertyBoolean(String name) { return booleanProperty(name); } /** * Alias to booleanProperty(String name, boolean defaultValue) */ public static boolean sysPropertyBoolean(String name, boolean defaultValue) { return booleanProperty(name, defaultValue); } /** * Set system property to <code>value</code>. * If SecurityManager denies * property modification, silently ignore * property change. * if value is * null, property won't be set. */ public static void setProperty(String property, Object value) { try { Properties prop = System.getProperties(); if (value != null) { prop.put(property, value); } } catch (SecurityException ex) { // recall method so that property change takes effect logger.log(Level.FINE, "Security exception, property could not be set.", ex); } } /** * Set system property to <code>value</code>. * If SecurityManager denies * property modification, print debug trace */ public static void setSystemProperty(String name, String value) { setProperty(name, value); } }