1 package com.indexdata.mkjsf.pazpar2.data;
\r
3 import java.io.Serializable;
\r
4 import java.util.ArrayList;
\r
5 import java.util.HashMap;
\r
6 import java.util.List;
\r
8 import org.apache.log4j.Logger;
\r
10 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;
\r
13 * Parent class of all response data objects, with generic methods for retrieving data elements
\r
15 * @author Niels Erik
\r
18 public class ResponseDataObject implements Serializable {
\r
20 Logger logger = Logger.getLogger(ResponseDataObject.class);
\r
21 private static final long serialVersionUID = -3909755656714679959L;
\r
23 HashMap<String,String> attributes = new HashMap<String,String>();
\r
24 HashMap<String,List<ResponseDataObject>> elements = new HashMap<String,List<ResponseDataObject>>();
\r
25 String textContent = "";
\r
26 CommandError error = null;
\r
28 boolean isBinary = false;
\r
29 byte[] binary = null;
\r
31 public void setType (String type) {
\r
35 public String getType () {
\r
39 public void setAttribute (String name, String value) {
\r
40 attributes.put(name, value);
\r
43 public String getAttribute (String name) {
\r
44 return attributes.get(name);
\r
48 * Used by the response XML parser to add child element objects to a parent element object
\r
50 * @param name of the child element
\r
51 * @param value the child object itself
\r
53 public void addElement (String name, ResponseDataObject value) {
\r
54 if (elements.containsKey(name)) {
\r
55 elements.get(name).add(value);
\r
57 List<ResponseDataObject> list = new ArrayList<ResponseDataObject>();
\r
59 elements.put(name,list);
\r
63 public List<ResponseDataObject> getElements (String name) {
\r
64 return elements.get(name);
\r
67 public ResponseDataObject getOneElement (String name) {
\r
68 if (elements.get(name) != null) {
\r
69 return elements.get(name).get(0);
\r
76 * Returns the text content of the first element found with the given
\r
78 * @param name of the element
\r
79 * @return text value, empty string if none found
\r
81 public String getOneValue (String name) {
\r
82 if (getOneElement(name)!=null && getOneElement(name).getValue().length()>0) {
\r
83 return getOneElement(name).getValue();
\r
90 * Returns string array with the values of the named element(s)
\r
92 * @param name of the child object(s) to retrieve value(s) from
\r
95 public String[] getValueArray (String name) {
\r
96 List<ResponseDataObject> elements = getElements(name);
\r
97 String[] valueArray = {};
\r
98 if (elements != null) {
\r
99 valueArray = new String[elements.size()];
\r
101 for (ResponseDataObject element : elements) {
\r
102 valueArray[i++] = element.getValue();
\r
108 public void appendContent (String content) {
\r
109 textContent = textContent + content;
\r
112 public String getValue () {
\r
113 return textContent;
\r
116 public String getProperty(String name) {
\r
117 List<ResponseDataObject> els = elements.get(name);
\r
119 return els.get(0).getValue();
\r
125 public int getIntValue(String name) {
\r
126 String val = getOneValue(name);
\r
127 if (val.length()==0) {
\r
130 return Integer.parseInt(val);
\r
134 public boolean hasApplicationError () {
\r
135 return (getOneElement("applicationerror") != null);
\r
138 public CommandError getApplicationError() {
\r
139 return (CommandError) getOneElement("applicationerror");
\r
142 public boolean hasServiceError() {
\r
143 return hasApplicationError()
\r
144 && getApplicationError().isServiceError();
\r
147 public ServiceError getServiceError() {
\r
148 return (hasServiceError()? getApplicationError().getServiceError() : null);
\r
151 public void setXml(String xml) {
\r
155 public String getXml() {
\r
156 if (type != null && type.equals("record")) {
\r
157 logger.debug("Getting XML for "+type + ": "+xml);
\r
159 return xml == null ? "" : xml;
\r
162 public boolean getHasResults () {
\r
163 return (xml != null && xml.length()>0) || (getIsBinary() && binary.length>0);
\r
166 public boolean getIsBinary () {
\r
170 public void setBinary(byte[] bytes) {
\r
175 public byte[] getBinary () {
\r