72 lines
2.8 KiB
Java
72 lines
2.8 KiB
Java
package org.apache.commons.beanutils.converters;
|
|
|
|
import java.util.List;
|
|
import org.apache.commons.beanutils.ConversionException;
|
|
|
|
public final class BooleanArrayConverter extends AbstractArrayConverter {
|
|
public BooleanArrayConverter() {
|
|
this.defaultValue = null;
|
|
this.useDefault = false;
|
|
}
|
|
|
|
public BooleanArrayConverter(Object defaultValue) {
|
|
this.defaultValue = defaultValue;
|
|
this.useDefault = true;
|
|
}
|
|
|
|
private static boolean[] model = new boolean[0];
|
|
|
|
public Object convert(Class type, Object value) {
|
|
if (value == null) {
|
|
if (this.useDefault)
|
|
return this.defaultValue;
|
|
throw new ConversionException("No value specified");
|
|
}
|
|
if (model.getClass() == value.getClass())
|
|
return value;
|
|
if (AbstractArrayConverter.strings.getClass() == value.getClass())
|
|
try {
|
|
String[] values = (String[])value;
|
|
boolean[] results = new boolean[values.length];
|
|
for (int i = 0; i < values.length; i++) {
|
|
String stringValue = values[i];
|
|
if (stringValue.equalsIgnoreCase("yes") || stringValue.equalsIgnoreCase("y") || stringValue.equalsIgnoreCase("true") || stringValue.equalsIgnoreCase("on") || stringValue.equalsIgnoreCase("1")) {
|
|
results[i] = true;
|
|
} else if (stringValue.equalsIgnoreCase("no") || stringValue.equalsIgnoreCase("n") || stringValue.equalsIgnoreCase("false") || stringValue.equalsIgnoreCase("off") || stringValue.equalsIgnoreCase("0")) {
|
|
results[i] = false;
|
|
} else {
|
|
if (this.useDefault)
|
|
return this.defaultValue;
|
|
throw new ConversionException(value.toString());
|
|
}
|
|
}
|
|
return results;
|
|
} catch (Exception e) {
|
|
if (this.useDefault)
|
|
return this.defaultValue;
|
|
throw new ConversionException(value.toString(), e);
|
|
}
|
|
try {
|
|
List list = parseElements(value.toString());
|
|
boolean[] results = new boolean[list.size()];
|
|
for (int i = 0; i < results.length; i++) {
|
|
String stringValue = list.get(i);
|
|
if (stringValue.equalsIgnoreCase("yes") || stringValue.equalsIgnoreCase("y") || stringValue.equalsIgnoreCase("true") || stringValue.equalsIgnoreCase("on") || stringValue.equalsIgnoreCase("1")) {
|
|
results[i] = true;
|
|
} else if (stringValue.equalsIgnoreCase("no") || stringValue.equalsIgnoreCase("n") || stringValue.equalsIgnoreCase("false") || stringValue.equalsIgnoreCase("off") || stringValue.equalsIgnoreCase("0")) {
|
|
results[i] = false;
|
|
} else {
|
|
if (this.useDefault)
|
|
return this.defaultValue;
|
|
throw new ConversionException(value.toString());
|
|
}
|
|
}
|
|
return results;
|
|
} catch (Exception e) {
|
|
if (this.useDefault)
|
|
return this.defaultValue;
|
|
throw new ConversionException(value.toString(), e);
|
|
}
|
|
}
|
|
}
|