/*******************************************************************************
* Copyright (c) 2011 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.internal.client.httpclient.request;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.openshift.client.OpenShiftException;
/**
* @author Andre Dietisheim
*/
public class ParameterValueMap extends ParameterValue<Map<String, Parameter>> {
public ParameterValueMap(List<Parameter> parameters) {
this();
addAll(parameters);
}
public ParameterValueMap(Parameter... parameters) {
this();
addAll(Arrays.asList(parameters));
}
public ParameterValueMap() {
super(new LinkedHashMap<String, Parameter>());
}
public ParameterValueMap addAll(List<? extends Parameter> parameters) {
for (Parameter parameter : parameters) {
add(parameter);
}
return this;
}
public ParameterValueMap add(String name, String value) {
add(new StringParameter(name, value));
return this;
}
public ParameterValueMap add(Parameter parameter) {
if (getValue().put(parameter.getName(), parameter) != null) {
throw new OpenShiftException(
"Duplicate parameter found. There's already a parameter named {0}", parameter.getName());
}
return this;
}
public Parameter getParameter(String name) {
return getValue().get(name);
}
public boolean isEmpty() {
Map<String, Parameter> values = getValue();
return values == null
|| values.isEmpty();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
@SuppressWarnings("rawtypes")
ParameterValue other = (ParameterValue) obj;
if (getValue() == null) {
if (other.getValue() != null)
return false;
} else if (!getValue().equals(other.getValue()))
return false;
return true;
}
@Override
public String toString() {
return "ParameterValueMap ["
+ "values=" + getValue() + "]";
}
}