Renames class, removes obsolete, javadoc
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / data / ResponseDataObject.java
1 package com.indexdata.mkjsf.pazpar2.data;\r
2 \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
7 \r
8 import org.apache.log4j.Logger;\r
9 \r
10 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
11 \r
12 /**\r
13  * Parent class of all response data objects, with generic methods for retrieving data elements\r
14  * \r
15  * @author Niels Erik\r
16  *\r
17  */\r
18 public class ResponseDataObject implements Serializable {\r
19 \r
20   Logger logger = Logger.getLogger(ResponseDataObject.class);\r
21   private static final long serialVersionUID = -3909755656714679959L;\r
22   String type = null;\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
27   String xml = null;\r
28   boolean isBinary = false;\r
29   byte[] binary = null;\r
30         \r
31   public void setType (String type) {\r
32     this.type = type;\r
33   }\r
34   \r
35   public String getType () {\r
36     return type;\r
37   }\r
38   \r
39   public void setAttribute (String name, String value) {\r
40     attributes.put(name, value);\r
41   }\r
42   \r
43   public String getAttribute (String name) {\r
44     return attributes.get(name);\r
45   }\r
46     \r
47   /**\r
48    * Used by the response XML parser to add child element objects to a parent element object\r
49    * \r
50    * @param name of the child element\r
51    * @param value the child object itself\r
52    */\r
53   public void addElement (String name, ResponseDataObject value) {    \r
54     if (elements.containsKey(name)) {\r
55       elements.get(name).add(value);\r
56     } else {\r
57       List<ResponseDataObject> list = new ArrayList<ResponseDataObject>();\r
58       list.add(value);      \r
59       elements.put(name,list);\r
60     }\r
61   }\r
62   \r
63   public List<ResponseDataObject> getElements (String name) {\r
64     return elements.get(name);\r
65   }\r
66     \r
67   public ResponseDataObject getOneElement (String name) {\r
68     if (elements.get(name) != null) {\r
69       return elements.get(name).get(0);\r
70     } else {\r
71       return null;\r
72     }\r
73   }\r
74   \r
75   /**\r
76    * Returns the text content of the first element found with the given\r
77    * name\r
78    * @param name of the element \r
79    * @return text value, empty string if none found\r
80    */\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
84     } else {\r
85       return "";\r
86     }\r
87   }\r
88   \r
89   /**\r
90    * Returns string array with the values of the named element(s)\r
91    *   \r
92    * @param name of the child object(s) to retrieve value(s) from\r
93    * @return\r
94    */\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
100       int i = 0;\r
101       for (ResponseDataObject element : elements) {\r
102         valueArray[i++] = element.getValue();\r
103       }      \r
104     }\r
105     return valueArray;\r
106   }\r
107     \r
108   public void appendContent (String content) {\r
109     textContent = textContent + content;\r
110   }\r
111   \r
112   public String getValue () {\r
113     return textContent;\r
114   }\r
115   \r
116   public String getProperty(String name) {\r
117     List<ResponseDataObject> els = elements.get(name);\r
118     if (els != null) {\r
119       return els.get(0).getValue();\r
120     } else {     \r
121       return null;\r
122     }\r
123   }\r
124   \r
125   public int getIntValue(String name) {\r
126     String val = getOneValue(name);\r
127     if (val.length()==0) {\r
128       return 0;\r
129     } else {\r
130       return Integer.parseInt(val);\r
131     }\r
132   }\r
133     \r
134   public boolean hasApplicationError () {\r
135     return (getOneElement("applicationerror") != null);   \r
136   }\r
137   \r
138   public CommandError getApplicationError() {\r
139     return (CommandError) getOneElement("applicationerror");\r
140   }\r
141   \r
142   public boolean hasServiceError() {\r
143     return hasApplicationError() \r
144         && getApplicationError().isServiceError();        \r
145   }\r
146   \r
147   public ServiceError getServiceError() {\r
148     return (hasServiceError()? getApplicationError().getServiceError() : null);\r
149   }\r
150       \r
151   public void setXml(String xml) {\r
152     this.xml = xml; \r
153   }\r
154   \r
155   public String getXml() {\r
156     if (type != null && type.equals("record")) {\r
157       logger.debug("Getting XML for "+type + ": "+xml);\r
158     }      \r
159     return xml == null ? "" : xml;\r
160   }\r
161   \r
162   public boolean getHasResults () {\r
163     return (xml != null && xml.length()>0) || (getIsBinary() && binary.length>0);\r
164   }\r
165   \r
166   public boolean getIsBinary () {\r
167     return isBinary;\r
168   }\r
169     \r
170   public void setBinary(byte[] bytes) {\r
171     isBinary = true;\r
172     binary = bytes;\r
173   }\r
174   \r
175   public byte[] getBinary () {\r
176     return binary;\r
177   }\r
178   \r
179   \r
180         \r
181 }\r