~ubuntu-branches/ubuntu/trusty/libcommons-validator-java/trusty

« back to all changes in this revision

Viewing changes to src/share/org/apache/commons/validator/util/ValidatorUtils.java

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Vandyck
  • Date: 2004-11-19 13:35:53 UTC
  • Revision ID: james.westby@ubuntu.com-20041119133553-qtl7whjkjv9q1rbd
Tags: upstream-1.3
ImportĀ upstreamĀ versionĀ 1.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * $Header: /home/cvs/jakarta-commons/validator/src/share/org/apache/commons/validator/util/ValidatorUtils.java,v 1.7.2.1 2004/06/22 02:24:38 husted Exp $
 
3
 * $Revision: 1.7.2.1 $
 
4
 * $Date: 2004/06/22 02:24:38 $
 
5
 *
 
6
 * ====================================================================
 
7
 * Copyright 2001-2004 The Apache Software Foundation
 
8
 *
 
9
 * Licensed under the Apache License, Version 2.0 (the "License");
 
10
 * you may not use this file except in compliance with the License.
 
11
 * You may obtain a copy of the License at
 
12
 *
 
13
 *     http://www.apache.org/licenses/LICENSE-2.0
 
14
 *
 
15
 * Unless required by applicable law or agreed to in writing, software
 
16
 * distributed under the License is distributed on an "AS IS" BASIS,
 
17
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
18
 * See the License for the specific language governing permissions and
 
19
 * limitations under the License.
 
20
 */
 
21
 
 
22
package org.apache.commons.validator.util;
 
23
 
 
24
import java.lang.reflect.InvocationTargetException;
 
25
import java.util.Collection;
 
26
import java.util.Iterator;
 
27
 
 
28
import org.apache.commons.beanutils.PropertyUtils;
 
29
import org.apache.commons.collections.FastHashMap; // DEPRECATED
 
30
import org.apache.commons.logging.Log;
 
31
import org.apache.commons.logging.LogFactory;
 
32
import org.apache.commons.validator.Arg;
 
33
import org.apache.commons.validator.Msg;
 
34
import org.apache.commons.validator.Var;
 
35
 
 
36
/**
 
37
 * Basic utility methods.
 
38
 *
 
39
 * The use of FastHashMap is deprecated and will be replaced in a future
 
40
 * release.
 
41
 */
 
42
public class ValidatorUtils {
 
43
 
 
44
    /**
 
45
     * Logger.
 
46
     */
 
47
    private static Log log = LogFactory.getLog(ValidatorUtils.class);
 
48
 
 
49
    /**
 
50
     * <p>Replace part of a <code>String</code> with another value.</p>
 
51
     *
 
52
     * @param value <code>String</code> to perform the replacement on.
 
53
     * @param key The name of the constant.
 
54
     * @param replaceValue The value of the constant.
 
55
     */
 
56
    public static String replace(
 
57
            String value,
 
58
            String key,
 
59
            String replaceValue) {
 
60
 
 
61
        if (value == null || key == null || replaceValue == null) {
 
62
            return value;
 
63
        }
 
64
 
 
65
        int pos = value.indexOf(key);
 
66
 
 
67
        if (pos < 0) {
 
68
            return value;
 
69
        }
 
70
 
 
71
        int length = value.length();
 
72
        int start = pos;
 
73
        int end = pos + key.length();
 
74
 
 
75
        if (length == key.length()) {
 
76
            value = replaceValue;
 
77
 
 
78
        } else if (end == length) {
 
79
            value = value.substring(0, start) + replaceValue;
 
80
 
 
81
        } else {
 
82
            value =
 
83
                    value.substring(0, start)
 
84
                    + replaceValue
 
85
                    + replace(value.substring(end), key, replaceValue);
 
86
        }
 
87
 
 
88
        return value;
 
89
    }
 
90
 
 
91
    /**
 
92
     * Convenience method for getting a value from a bean property as a
 
93
     * <code>String</code>.  If the property is a <code>String[]</code> or
 
94
     * <code>Collection</code> and it is empty, an empty <code>String</code>
 
95
     * "" is returned.  Otherwise, property.toString() is returned.  This method
 
96
     * may return <code>null</code> if there was an error retrieving the
 
97
     * property.
 
98
     * @param bean
 
99
     * @param property
 
100
     */
 
101
    public static String getValueAsString(Object bean, String property) {
 
102
        Object value = null;
 
103
 
 
104
        try {
 
105
            value = PropertyUtils.getProperty(bean, property);
 
106
 
 
107
        } catch(IllegalAccessException e) {
 
108
            log.error(e.getMessage(), e);
 
109
        } catch(InvocationTargetException e) {
 
110
            log.error(e.getMessage(), e);
 
111
        } catch(NoSuchMethodException e) {
 
112
            log.error(e.getMessage(), e);
 
113
        }
 
114
 
 
115
        if (value == null) {
 
116
            return null;
 
117
        }
 
118
 
 
119
        if (value instanceof String[]) {
 
120
            return ((String[]) value).length > 0 ? value.toString() : "";
 
121
 
 
122
        } else if (value instanceof Collection) {
 
123
            return ((Collection) value).isEmpty() ? "" : value.toString();
 
124
 
 
125
        } else {
 
126
            return value.toString();
 
127
        }
 
128
 
 
129
    }
 
130
 
 
131
    /**
 
132
     * Makes a deep copy of a <code>FastHashMap</code> if the values
 
133
     * are <code>Msg</code>, <code>Arg</code>,
 
134
     * or <code>Var</code>.  Otherwise it is a shallow copy.
 
135
     *
 
136
     * @param map <code>FastHashMap</code> to copy.
 
137
     * @return FastHashMap A copy of the <code>FastHashMap</code> that was
 
138
     * passed in.
 
139
     */
 
140
    public static FastHashMap copyFastHashMap(FastHashMap map) {
 
141
        FastHashMap results = new FastHashMap();
 
142
 
 
143
        Iterator i = map.keySet().iterator();
 
144
        while (i.hasNext()) {
 
145
            String key = (String) i.next();
 
146
            Object value = map.get(key);
 
147
 
 
148
            if (value instanceof Msg) {
 
149
                results.put(key, ((Msg) value).clone());
 
150
            } else if (value instanceof Arg) {
 
151
                results.put(key, ((Arg) value).clone());
 
152
            } else if (value instanceof Var) {
 
153
                results.put(key, ((Var) value).clone());
 
154
            } else {
 
155
                results.put(key, value);
 
156
            }
 
157
        }
 
158
 
 
159
        results.setFast(true);
 
160
 
 
161
        return results;
 
162
    }
 
163
 
 
164
}