1 /*** 2 * Copyright (c) 2003, 2004, Chess iT 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * - Redistributions of source code must retain the above copyright notice, this 9 * list of conditions and the following disclaimer. 10 * 11 * - Redistributions in binary form must reproduce the above copyright notice, 12 * this list of conditions and the following disclaimer in the documentation 13 * and/or other materials provided with the distribution. 14 * 15 * - Neither the name of Chess iT, nor the names of its contributors may be used 16 * to endorse or promote products derived from this software without specific 17 * prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 * 31 */ 32 package nl.chess.it.util.config; 33 34 /*** 35 * Simple place holder that can be used to display the value of a property. Most properties are read 36 * from a Properties, then the original values and key-name will be stored as well. For hard-coded 37 * properties (i.e., public getMethods that don't use the Properties). 38 * 39 * @author Guus Bosman (Chess iT) 40 * @version $Revision: 1.1.1.1 $ 41 */ 42 public class PropertyDisplayItem implements Comparable { 43 44 /*** 45 * Never <code>null</code>. 46 */ 47 private final String methodName; 48 private final String originalValue; 49 private final String parseValue; 50 private final String propertyName; 51 52 /*** 53 * Creates a new PropertyDisplayItem object. 54 * 55 * @param methodName Name of the method. Cannot be <code>null</code>. 56 * @param propertyName Name of the property. Can be <code>null</code>. 57 * @param originalValue Original value of the property. Can be <code>null</code>. 58 * @param parseValue Value as interpreted by Java Config. This is a String representation. Can 59 * be <code>null</code>. 60 */ 61 public PropertyDisplayItem(String methodName, String propertyName, String originalValue, String parseValue) { 62 if (methodName == null) { 63 throw new NullPointerException("methodName cannot be null here."); 64 } 65 66 this.methodName = methodName; 67 this.propertyName = propertyName; 68 this.originalValue = originalValue; 69 this.parseValue = parseValue; 70 } 71 72 public String toString() { 73 String result = methodName + " = " + parseValue; 74 75 if (propertyName == null) { 76 result += " (hard-coded)"; 77 } else { 78 result += ", from property " + propertyName + " = " 79 + (originalValue == null ? "<null>" : "'" + originalValue + "'"); 80 } 81 82 return result; 83 } 84 85 /*** 86 * Name of the method for the property. 87 * 88 * @return String. Never <code>null</code>. 89 */ 90 public String getMethodName() { 91 return methodName; 92 } 93 94 /*** 95 * Original, unparsed value of the element in the property file. 96 * 97 * @return String. Might be <code>null</code> if the element isn't read from the properties. 98 */ 99 public String getOriginalValue() { 100 return originalValue; 101 } 102 103 /*** 104 * Parsed value of the element in the property file. 105 * 106 * @return String. Never <code>null</code>. 107 */ 108 public String getParseValue() { 109 return parseValue; 110 } 111 112 /*** 113 * Name of the element in the property file. 114 * 115 * @return String. Might be <code>null</code> if the element isn't read from the properties. 116 */ 117 public String getPropertyName() { 118 return propertyName; 119 } 120 121 public int hashCode() { 122 return (methodName.hashCode()); 123 } 124 125 public boolean equals(Object o) { 126 if (o == this) { 127 return true; 128 } 129 130 if (o == null) { 131 return false; 132 } 133 134 if (o instanceof PropertyDisplayItem) { 135 PropertyDisplayItem other = (PropertyDisplayItem) o; 136 137 return (other.methodName.equals(methodName) && areEquals(propertyName, other.propertyName) 138 && areEquals(originalValue, other.originalValue) && areEquals(parseValue, other.parseValue)); 139 } else { 140 return false; 141 } 142 } 143 144 public int compareTo(Object o) { 145 PropertyDisplayItem rhs = (PropertyDisplayItem) o; 146 int result = compareStrings(methodName, rhs.methodName); 147 if (result != 0) return result; 148 result = compareStrings(propertyName, rhs.propertyName); 149 if (result != 0) return result; 150 result = compareStrings(originalValue, rhs.originalValue); 151 if (result != 0) return result; 152 result = compareStrings(parseValue, rhs.parseValue); 153 return result; 154 } 155 156 private boolean areEquals(String string1, String string2) { 157 if (string1 == null) { 158 if (string2 == null) { 159 return true; 160 } else { 161 return false; 162 } 163 } 164 return string1.equals(string2); 165 } 166 167 private int compareStrings(String string1, String string2) { 168 if (string1 == string2) return 0; 169 if (string1 == null) return -1; 170 if (string2 == null) return 1; 171 return (string1.compareTo(string2)); 172 } 173 }