package org.genedb.crawl.model;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* A model class designed for returning web service views. It defines 4 basic kinds of
* property : a Result, an Error, a Service and a ParameterList, also model classes.
*
* */
@XmlRootElement(name="response") // the root element's name is set to response for JAXB XML marshaling, but is ignored by Jackson JSON.
public class XMLResponseWrapper {
@XmlElementWrapper(name="results")
@XmlElement(name="result")
public List<Object> results;
@XmlElement(name="error")
public CrawlError error;
@XmlElement(name="service")
public Service service;
@XmlElementWrapper(name="parameters")
@XmlElement(name="parameter", type=ParameterList.class)
public List<ParameterList> parameters;
public void setParameters(Map<String, ?> map) {
parameters = new ArrayList<ParameterList>();
if (map == null) {
return;
}
for (Entry<String, ?> entry : map.entrySet()) {
ParameterList pList = new ParameterList();
pList.name = entry.getKey();
Object value = entry.getValue();
if (value instanceof String[]) {
String[] strings = (String[]) value;
for (Object v : strings) {
pList.values.add(v.toString());
}
}
else {
pList.values.add(value.toString());
}
parameters.add(pList);
}
}
static class ParameterList {
@XmlAttribute
public String name;
@XmlElementWrapper(name="values")
@XmlElement(name="value")
public List<String> values = new ArrayList<String>();
}
}