package org.sothis.mvc;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public abstract class Parameters implements Iterable<Map.Entry<String, Object[]>> {
public abstract Object[] getValues(String name);
public abstract Iterator<String> names();
public abstract Map<String, Object[]> toMap();
@Override
public abstract Iterator<Entry<String, Object[]>> iterator();
public Object get(String name) {
return get(name, null);
}
public Object get(String name, Object defaultValue) {
Object[] values = getValues(name);
return (null == values || values.length == 0 || null == values[0]) ? defaultValue : values[0];
}
public String getString(String name) {
return getString(name, null);
}
public String getString(String name, String defaultValue) {
Object value = get(name);
return null == value ? defaultValue : (value instanceof String ? (String) value : value.toString());
}
public String[] getStrings(String name) {
Object[] values = getValues(name);
if (values instanceof String[]) {
return (String[]) values;
}
String[] ret = new String[values.length];
for (int i = 0; i < values.length; i++) {
ret[i] = null == values[i] ? null : values[i].toString();
}
return ret;
}
public Boolean getBoolean(String name) {
return getBoolean(name, null);
}
public Boolean getBoolean(String name, Boolean defaultValue) {
Object value = get(name);
return null == value ? defaultValue : (value instanceof Boolean ? (Boolean) value : Boolean.valueOf(value.toString()));
}
public Boolean[] getBooleans(String name) {
Object[] values = getValues(name);
if (values instanceof Boolean[]) {
return (Boolean[]) values;
}
Boolean[] ret = new Boolean[values.length];
for (int i = 0; i < values.length; i++) {
ret[i] = null == values[i] ? null : Boolean.valueOf(values[i].toString());
}
return ret;
}
public Integer getInteger(String name) {
return getInteger(name, null);
}
public Integer getInteger(String name, Integer defaultValue) {
Object value = get(name);
return null == value ? defaultValue : (value instanceof Integer ? (Integer) value : Integer.valueOf(value.toString()));
}
public Integer[] getIntegers(String name) {
Object[] values = getValues(name);
if (values instanceof Integer[]) {
return (Integer[]) values;
}
Integer[] ret = new Integer[values.length];
for (int i = 0; i < values.length; i++) {
ret[i] = null == values[i] ? null : Integer.valueOf(values[i].toString());
}
return ret;
}
public Long getLong(String name) {
return getLong(name, null);
}
public Long getLong(String name, Long defaultValue) {
Object value = get(name);
return null == value ? defaultValue : (value instanceof Long ? (Long) value : Long.valueOf(value.toString()));
}
public Long[] getLongs(String name) {
Object[] values = getValues(name);
if (values instanceof Long[]) {
return (Long[]) values;
}
Long[] ret = new Long[values.length];
for (int i = 0; i < values.length; i++) {
ret[i] = null == values[i] ? null : Long.valueOf(values[i].toString());
}
return ret;
}
public Double getDouble(String name) {
return getDouble(name, null);
}
public Double getDouble(String name, Double defaultValue) {
Object value = get(name);
return null == value ? defaultValue : (value instanceof Double ? (Double) value : Double.valueOf(value.toString()));
}
public Double[] getDoubles(String name) {
Object[] values = getValues(name);
if (values instanceof Double[]) {
return (Double[]) values;
}
Double[] ret = new Double[values.length];
for (int i = 0; i < values.length; i++) {
ret[i] = null == values[i] ? null : Double.valueOf(values[i].toString());
}
return ret;
}
}