package weiboclient4j.params; import org.scribe.model.OAuthRequest; import org.scribe.model.Verb; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author Hover Ruan */ public final class Parameters { private List<Parameter> parameterList = new ArrayList<Parameter>(); private Parameters() { } public static Parameters create() { return new Parameters(); } public Parameters add(String key, String value) { parameterList.add(new Parameter(key, value)); return this; } public Parameters add(Paging paging) { for (Map.Entry<String, String> entry : paging.buildParameters().entrySet()) { add(entry.getKey(), entry.getValue()); } return this; } public Parameters add(String key, long value) { return add(key, String.valueOf(value)); } public Parameters add(String key, boolean value) { return add(key, String.valueOf(value)); } public Parameters add(String key, float value) { return add(key, String.valueOf(value)); } public Parameters add(String key, long[] valueArray) { if (valueArray != null && valueArray.length > 0) { StringBuilder result = new StringBuilder(String.valueOf(valueArray[0])); for (int i = 1; i < valueArray.length; i++) { long value = valueArray[i]; result.append(',').append(value); } add(key, result.toString()); } return this; } public boolean isEmpty() { return parameterList.size() == 0; } public boolean isNotEmpty() { return parameterList.size() > 0; } public String get(String key) { for (Parameter parameter : parameterList) { if (key.equals(parameter.getKey())) { return parameter.getValue(); } } return null; } public int size() { return parameterList.size(); } public List<Parameter> getParameterList() { return parameterList; } public void appendTo(OAuthRequest request) { if (request.getVerb() == Verb.GET) { for (Parameter p : parameterList) { request.addQuerystringParameter(p.getKey(), p.getValue()); } } else { for (Parameter p : parameterList) { request.addBodyParameter(p.getKey(), p.getValue()); } } } public Parameters addAll(ParameterAction[] actions) { for (ParameterAction action : actions) { if (action != null) { action.addParameter(this); } } return this; } public static final class Parameter { private String key; private String value; private Parameter(String key, String value) { this.key = key; this.value = value; } public String getKey() { return key; } public String getValue() { return value; } } }