001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.commons.beanutils.converters;
019:
020: import java.util.List;
021: import org.apache.commons.beanutils.ConversionException;
022:
023: /**
024: * <p>Standard {@link org.apache.commons.beanutils.Converter} implementation that converts an incoming
025: * String into a primitive array of double. On a conversion failure, returns
026: * a specified default value or throws a {@link ConversionException} depending
027: * on how this instance is constructed.</p>
028: *
029: * @author Craig R. McClanahan
030: * @version $Revision: 556229 $ $Date: 2007-07-14 07:11:19 +0100 (Sat, 14 Jul 2007) $
031: * @since 1.4
032: * @deprecated Replaced by the new {@link ArrayConverter} implementation
033: */
034:
035: public final class DoubleArrayConverter extends AbstractArrayConverter {
036:
037: // ----------------------------------------------------------- Constructors
038:
039: /**
040: * Create a {@link org.apache.commons.beanutils.Converter} that will throw
041: * a {@link ConversionException} if a conversion error occurs.
042: */
043: public DoubleArrayConverter() {
044:
045: this .defaultValue = null;
046: this .useDefault = false;
047:
048: }
049:
050: /**
051: * Create a {@link org.apache.commons.beanutils.Converter} that will return
052: * the specified default value if a conversion error occurs.
053: *
054: * @param defaultValue The default value to be returned
055: */
056: public DoubleArrayConverter(Object defaultValue) {
057:
058: this .defaultValue = defaultValue;
059: this .useDefault = true;
060:
061: }
062:
063: // ------------------------------------------------------- Static Variables
064:
065: /**
066: * <p>Model object for type comparisons.</p>
067: */
068: private static final double[] MODEL = new double[0];
069:
070: // --------------------------------------------------------- Public Methods
071:
072: /**
073: * Convert the specified input object into an output object of the
074: * specified type.
075: *
076: * @param type Data type to which this value should be converted
077: * @param value The input value to be converted
078: * @return the converted value
079: * @exception ConversionException if conversion cannot be performed
080: * successfully
081: */
082: public Object convert(Class type, Object value) {
083:
084: // Deal with a null value
085: if (value == null) {
086: if (useDefault) {
087: return (defaultValue);
088: } else {
089: throw new ConversionException("No value specified");
090: }
091: }
092:
093: // Deal with the no-conversion-needed case
094: if (MODEL.getClass() == value.getClass()) {
095: return (value);
096: }
097:
098: // Deal with input value as a String array
099: if (strings.getClass() == value.getClass()) {
100: try {
101: String[] values = (String[]) value;
102: double[] results = new double[values.length];
103: for (int i = 0; i < values.length; i++) {
104: results[i] = Double.parseDouble(values[i]);
105: }
106: return (results);
107: } catch (Exception e) {
108: if (useDefault) {
109: return (defaultValue);
110: } else {
111: throw new ConversionException(value.toString(), e);
112: }
113: }
114: }
115:
116: // Parse the input value as a String into elements
117: // and convert to the appropriate type
118: try {
119: List list = parseElements(value.toString());
120: double[] results = new double[list.size()];
121: for (int i = 0; i < results.length; i++) {
122: results[i] = Double.parseDouble((String) list.get(i));
123: }
124: return (results);
125: } catch (Exception e) {
126: if (useDefault) {
127: return (defaultValue);
128: } else {
129: throw new ConversionException(value.toString(), e);
130: }
131: }
132:
133: }
134:
135: }
|