import org.xml.sax.XMLReader;\r
import org.xml.sax.helpers.DefaultHandler;\r
\r
-import com.indexdata.mkjsf.pazpar2.data.ByTarget;\r
-import com.indexdata.mkjsf.pazpar2.data.Hit;\r
-import com.indexdata.mkjsf.pazpar2.data.Location;\r
-import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
-import com.indexdata.mkjsf.pazpar2.data.RecordResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.ShowResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.StatResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.Target;\r
-import com.indexdata.mkjsf.pazpar2.data.TermListResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.TermListsResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.TermResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.TermXTargetResponse;\r
+import com.indexdata.mkjsf.pazpar2.ClientCommandResponse;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.AuthResponse;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.TargetCategory;\r
\r
public class ResponseParser extends DefaultHandler {\r
\r
private String xml = null;\r
private static Logger logger = Logger.getLogger(ResponseParser.class);\r
\r
- public static final List<String> docTypes = \r
- Arrays.asList("bytarget","termlist","show","stat","record","search");\r
+ public static List<String> docTypes = Arrays.asList( "bytarget","termlist","show","stat","record","search","init",\r
+ /* SP extras */ "auth", "categories" ); \r
\r
- public ResponseParser() { \r
+ public ResponseParser() {\r
try {\r
initSax();\r
} catch (ParserConfigurationException e) {\r
* @param response XML response string from Pazpar2\r
* @return Response data object\r
*/\r
- public ResponseDataObject getDataObject (String response) {\r
- this.xml = response;\r
+ public ResponseDataObject getDataObject (ClientCommandResponse response) {\r
+ this.xml = response.getResponseString();\r
try { \r
- xmlReader.parse(new InputSource(new ByteArrayInputStream(response.getBytes("UTF-8"))));\r
+ xmlReader.parse(new InputSource(new ByteArrayInputStream(response.getResponseToParse())));\r
} catch (UnsupportedEncodingException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace(); \r
+ e.printStackTrace(); \r
} catch (IOException e) {\r
- // TODO Auto-generated catch block\r
e.printStackTrace();\r
} catch (SAXException e) {\r
- // TODO Auto-generated catch block\r
e.printStackTrace(); \r
}\r
return result;\r
*/\r
@Override\r
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {\r
- if (localName.equals("show")) {\r
+ if (localName.equals("init")) {\r
+ currentElement = new InitResponse();\r
+ } else if (localName.equals("search")) {\r
+ currentElement = new SearchResponse();\r
+ } else if (localName.equals("show")) {\r
currentElement = new ShowResponse(); \r
} else if (localName.equals("hit")) {\r
currentElement = new Hit();\r
} else if (localName.equals("location")) {\r
currentElement = new Location();\r
+ } else if (localName.equals("record")) {\r
+ currentElement = new RecordResponse(); \r
} else if (localName.equals("bytarget")) {\r
currentElement = new ByTarget(); \r
} else if (localName.equals("target")) {\r
currentElement = new TermResponse();\r
}\r
((TermListResponse)dataElements.peek()).addTerm((TermResponse)currentElement);\r
- } else if (localName.equals("record")) {\r
- currentElement = new RecordResponse(); \r
- } else if (localName.equals("search")) {\r
- currentElement = new SearchResponse();\r
} else if (localName.equals("applicationerror")) {\r
currentElement = new CommandError();\r
} else if (localName.equals("error") && dataElements.peek().getType().equals("applicationerror")) {\r
- currentElement = new Pazpar2Error(); \r
+ currentElement = new ServiceError(); \r
+ // Service Proxy extras \r
+ } else if (localName.equals("auth")) { \r
+ currentElement = new AuthResponse();\r
+ } else if (localName.equals("categories")) {\r
+ currentElement = new CategoriesResponse();\r
+ } else if (localName.equals("category") && dataElements.peek().getType().equals("categories")) {\r
+ currentElement = new TargetCategory();\r
+ // Catch all\r
} else {\r
currentElement = new ResponseDataObject();\r
}\r