Adds convenience methods for UI pages
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / data / ResponseDataObject.java
index 0db67d3..572be9a 100644 (file)
@@ -19,6 +19,8 @@ public class ResponseDataObject implements Serializable {
   String textContent = "";\r
   CommandError error = null;\r
   String xml = null;\r
+  boolean isBinary = false;\r
+  byte[] binary = null;\r
         \r
   public void setType (String type) {\r
     this.type = type;\r
@@ -41,7 +43,7 @@ public class ResponseDataObject implements Serializable {
       elements.get(name).add(value);\r
     } else {\r
       List<ResponseDataObject> list = new ArrayList<ResponseDataObject>();\r
-      list.add(value);\r
+      list.add(value);      \r
       elements.put(name,list);\r
     }\r
   }\r
@@ -50,6 +52,37 @@ public class ResponseDataObject implements Serializable {
     return elements.get(name);\r
   }\r
   \r
+  public List<ResponseDataObject> getElements(String name, int maxElements) {\r
+    if (getElements(name)!=null) {\r
+      int size = getElements(name).size();\r
+      if (size>0) {\r
+        return ((ArrayList<ResponseDataObject>) getElements(name)).subList(0, Math.min(maxElements,size));        \r
+      } \r
+    }   \r
+    return getElements(name);\r
+  }\r
+  \r
+  public List<ResponseDataObject> getElements(String name, int maxElements, int maxTotalValueLength) {\r
+    if (getElements(name)!=null) {\r
+      int size = getElements(name).size();\r
+      if (size>0) {\r
+        List<ResponseDataObject> maxElementsList = ((ArrayList<ResponseDataObject>) getElements(name)).subList(0, Math.min(maxElements,size));\r
+        int i = 0;\r
+        int totalLength = 0;\r
+        for (ResponseDataObject element : maxElementsList) {\r
+          totalLength += element.getValue().length(); \r
+          i++;\r
+          if (totalLength>maxTotalValueLength) {\r
+            break;\r
+          } \r
+        }\r
+        return maxElementsList.subList(0, i);\r
+      } \r
+    }   \r
+    return getElements(name);\r
+  }\r
+\r
+  \r
   public ResponseDataObject getOneElement (String name) {\r
     if (elements.get(name) != null) {\r
       return elements.get(name).get(0);\r
@@ -64,7 +97,7 @@ public class ResponseDataObject implements Serializable {
    * @param name of the element \r
    * @return text value, empty string if none found\r
    */\r
-  public String getOneElementValue (String name) {\r
+  public String getOneValue (String name) {\r
     if (getOneElement(name)!=null && getOneElement(name).getValue().length()>0) {\r
       return getOneElement(name).getValue();\r
     } else {\r
@@ -72,6 +105,19 @@ public class ResponseDataObject implements Serializable {
     }\r
   }\r
   \r
+  public String[] getValueArray (String name) {\r
+    List<ResponseDataObject> elements = getElements(name);\r
+    String[] valueArray = {};\r
+    if (elements != null) {\r
+      valueArray = new String[elements.size()];\r
+      int i = 0;\r
+      for (ResponseDataObject element : elements) {\r
+        valueArray[i++] = element.getValue();\r
+      }      \r
+    }\r
+    return valueArray;\r
+  }\r
+    \r
   public void appendContent (String content) {\r
     textContent = textContent + content;\r
   }\r
@@ -90,7 +136,7 @@ public class ResponseDataObject implements Serializable {
   }\r
   \r
   public int getIntValue(String name) {\r
-    String val = getOneElementValue(name);\r
+    String val = getOneValue(name);\r
     if (val.length()==0) {\r
       return 0;\r
     } else {\r
@@ -106,10 +152,15 @@ public class ResponseDataObject implements Serializable {
     return (CommandError) getOneElement("applicationerror");\r
   }\r
   \r
-  public boolean hasPazpar2Error() {\r
-    return hasApplicationError() && getApplicationError().hasPazpar2Error();\r
+  public boolean hasServiceError() {\r
+    return hasApplicationError() \r
+        && getApplicationError().isServiceError();        \r
   }\r
   \r
+  public ServiceError getServiceError() {\r
+    return (hasServiceError()? getApplicationError().getServiceError() : null);\r
+  }\r
+      \r
   public void setXml(String xml) {\r
     this.xml = xml; \r
   }\r
@@ -120,5 +171,24 @@ public class ResponseDataObject implements Serializable {
     }      \r
     return xml == null ? "" : xml;\r
   }\r
+  \r
+  public boolean getHasResults () {\r
+    return (xml != null && xml.length()>0) || (getIsBinary() && binary.length>0);\r
+  }\r
+  \r
+  public boolean getIsBinary () {\r
+    return isBinary;\r
+  }\r
+    \r
+  public void setBinary(byte[] bytes) {\r
+    isBinary = true;\r
+    binary = bytes;\r
+  }\r
+  \r
+  public byte[] getBinary () {\r
+    return binary;\r
+  }\r
+  \r
+  \r
         \r
 }\r