+++ /dev/null
-package com.indexdata.pz2utils4jsf.pazpar2.data;\r
-\r
-import static com.indexdata.pz2utils4jsf.utils.Utils.nl;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import com.indexdata.pz2utils4jsf.errors.ErrorInterface;\r
-import com.indexdata.pz2utils4jsf.errors.ErrorHelper;\r
-import com.indexdata.pz2utils4jsf.errors.ErrorHelper.ErrorCode;\r
-import com.indexdata.utils.XmlUtils;\r
-\r
-/**\r
- * Holds an error encountered during the execution of a command.\r
- * \r
- * An error can be received by a command thread as an exception message \r
- * or as an error XML. In both cases the error (string or xml) will be embedded\r
- * in a new 'applicationerror' element which in turn will be embedded in a\r
- * command XML (i.e. a 'search' or a 'show' response XML) \r
- * \r
- * The command response XML is subsequently parsed by Pazpar2ResponseParser, \r
- * which will then create the CommandError object.\r
- * \r
- * @author Niels Erik\r
- *\r
- */\r
-public class CommandError extends Pazpar2ResponseData implements ErrorInterface {\r
-\r
- private static final long serialVersionUID = 8878776025779714122L;\r
- private ErrorCode applicationErrorCode;\r
- private ErrorHelper errorHelper = null;\r
- \r
- \r
- public CommandError () { \r
- }\r
- \r
- public String getLabel() {\r
- return getOneElementValue("commandname");\r
- }\r
- \r
- public String getMessage() {\r
- if (hasPazpar2Error()) { \r
- return getPazpar2Error().getMsg();\r
- } else { \r
- return getOneElementValue("errormessage");\r
- }\r
- }\r
- \r
- public String getException () {\r
- return getOneElementValue("exception");\r
- }\r
- \r
- public List<String> getSuggestions() { \r
- if (errorHelper!=null) {\r
- return errorHelper.getSuggestions(this);\r
- } else {\r
- List<String> nohelper = new ArrayList<String>();\r
- nohelper.add("Tips: could not generate tips due to a programming error, error helper was not set");\r
- return nohelper;\r
- }\r
- }\r
- \r
- /**\r
- * Creates an XML string error message, embedded in an XML string document named by the command\r
- * This is the XML that Pazpar2ResponseParser will turn into a CommandError object. \r
- * @param commandName\r
- * @param exceptionName\r
- * @param errorMessage\r
- * @return\r
- */\r
- public static String createErrorXml (String commandName, String exceptionName, String errorMessage) {\r
- StringBuilder errorXml = new StringBuilder("");\r
- errorXml.append("<" + commandName + ">"+nl);\r
- errorXml.append(" <applicationerror>"+nl);\r
- errorXml.append(" <commandname>" + commandName + "</commandname>"+nl);\r
- errorXml.append(" <exception>" + XmlUtils.escape(exceptionName) + "</exception>"+nl); \r
- errorXml.append(" <errormessage>" + XmlUtils.escape(errorMessage) + "</errormessage>"+nl); \r
- errorXml.append(" </applicationerror>"+nl);\r
- errorXml.append("</" + commandName + ">"+nl);\r
- return errorXml.toString(); \r
- }\r
- \r
- /**\r
- * Embeds a Pazpar2 (or Pazpar2 client) error response document as a child element of\r
- * a command response document (like 'search' or 'show').\r
- * This is the XML that Pazpar2ResponseParser will turn into a CommandError object.\r
- * \r
- * \r
- * @param commandName The name of the command during which's execution the error was encountered\r
- * @param exceptionName The (possibly loosely defined) name of the exception that was thrown\r
- * @param pazpar2ErrorXml The error document as created by Pazpar2 -- or, for some errors, by the \r
- * Pazpar2 client. \r
- * @return\r
- */\r
- public static String insertPazpar2ErrorXml (String commandName, String exceptionName, String pazpar2ErrorXml) {\r
- StringBuilder errorXml = new StringBuilder("");\r
- errorXml.append("<" + commandName + ">"+nl);\r
- errorXml.append(" <applicationerror>"+nl);\r
- errorXml.append(" <commandname>" + commandName + "</commandname>"+nl);\r
- errorXml.append(" <exception>" + XmlUtils.escape(exceptionName) + "</exception>"+nl); \r
- errorXml.append(pazpar2ErrorXml+nl); \r
- errorXml.append(" </applicationerror>"+nl);\r
- errorXml.append("</" + commandName + ">"+nl);\r
- return errorXml.toString(); \r
- \r
- }\r
- \r
- /**\r
- * Sets the object that should be used to analyze the error\r
- * \r
- */\r
- public void setErrorHelper (ErrorHelper errorHelper) {\r
- this.errorHelper = errorHelper; \r
- }\r
-\r
- @Override\r
- public void setApplicationErrorCode(ErrorCode code) {\r
- this.applicationErrorCode = code; \r
- }\r
-\r
- @Override\r
- public ErrorCode getApplicationErrorCode() {\r
- return applicationErrorCode; \r
- }\r
- \r
- public boolean hasPazpar2Error () {\r
- return ( getOneElement("error") != null); \r
- }\r
- \r
- public Pazpar2Error getPazpar2Error() {\r
- return (Pazpar2Error) getOneElement("error");\r
- }\r
-\r
-\r
-}\r