Avoids state changes on cascading command updates
authorNiels Erik G. Nielsen <nielserik@indexdata.com>
Sun, 14 Apr 2013 23:30:27 +0000 (19:30 -0400)
committerNiels Erik G. Nielsen <nielserik@indexdata.com>
Sun, 14 Apr 2013 23:30:27 +0000 (19:30 -0400)
.. when a new query changes the state, and the record command
   is reset due to the new search, the reset process should not
   trigger yet another state change

src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Bean.java
src/main/java/com/indexdata/pz2utils4jsf/pazpar2/commands/Pazpar2Command.java
src/main/java/com/indexdata/pz2utils4jsf/pazpar2/commands/Pazpar2Commands.java
src/main/java/com/indexdata/pz2utils4jsf/pazpar2/commands/ShowCommand.java
src/main/java/com/indexdata/pz2utils4jsf/pazpar2/state/StateManager.java

index 65706a9..d948152 100644 (file)
@@ -34,6 +34,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable {
 \r
   private static final long serialVersionUID = 3440277287081557861L;\r
   private static Logger logger = Logger.getLogger(Pz2Bean.class);\r
+  private static Logger responseLogger = Logger.getLogger("com.indexdata.pz2utils4jsf.pazpar2.responses");\r
   \r
   protected SearchClient searchClient = null;\r
   \r
@@ -94,9 +95,10 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable {
   public void doSearch() { \r
     stateMgr.hasPendingStateChange("search",false);\r
     pzresp.reset();\r
-    // TODO: avoid state proliferation here:\r
-    pzreq.getRecord().removeParameters();\r
-    pzreq.getShow().setParameter(new CommandParameter("start","=",0));    \r
+    // resets some record and show command parameters without \r
+    // changing state or creating state change feedback\r
+    pzreq.getRecordInState().removeParametersSilently();        \r
+    pzreq.getShowInState().setParameterSilently(new CommandParameter("start","=",0));    \r
     logger.debug(Utils.objectId(this) + " is searching using "+pzreq.getCommandReadOnly("search").getUrlEncodedParameterValue("query"));\r
     doCommand("search");    \r
   }\r
@@ -140,7 +142,7 @@ public class Pz2Bean implements Pz2Interface, StateListener, Serializable {
         for (CommandThread thread : threadList) {\r
            String commandName = thread.getCommand().getName();\r
            String response = thread.getResponse();\r
-           logger.debug("Response was: " + response);\r
+           responseLogger.debug("Response was: " + response);\r
            Pazpar2ResponseData responseObject = Pazpar2ResponseParser.getParser().getDataObject(response);\r
            pzresp.put(commandName, responseObject);        \r
         }\r
index 296f2ef..97be62d 100644 (file)
@@ -40,14 +40,14 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
   }\r
     \r
   public void setParameter (CommandParameter parameter) {\r
-    logger.debug("Setting parameter " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());\r
+    logger.debug(name + " setting parameter " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());\r
     parameters.put(parameter.getName(),parameter);\r
     stateMgr.checkIn(this);\r
   }\r
   \r
   public void setParameters (CommandParameter... params) {\r
     for (CommandParameter param : params) {\r
-      logger.debug("Setting parameter " + param.getName() + "=" + param.getValueWithExpressions() + " to " + this.getName());\r
+      logger.debug(name + " setting parameter " + param.getName() + "=" + param.getValueWithExpressions() + " to " + this.getName());\r
       parameters.put(param.getName(),param);\r
     }\r
     stateMgr.checkIn(this);\r
@@ -55,7 +55,7 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
   \r
   \r
   public void setParameterSilently (CommandParameter parameter) {\r
-    logger.debug("Setting parameter silently " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());\r
+    logger.debug(name + " setting parameter silently " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());\r
     parameters.put(parameter.getName(),parameter);    \r
   }\r
   \r
@@ -74,6 +74,11 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
     stateMgr.checkIn(this);\r
   }\r
   \r
+  public void removeParametersSilently() {\r
+    parameters = new HashMap<String,CommandParameter>();    \r
+  }\r
+\r
+  \r
   public boolean hasParameters () {\r
     return (parameters.keySet().size()>0);\r
   }\r
@@ -131,9 +136,5 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
   \r
   public String getSession() {\r
     return getParameterValue("session");\r
-  }\r
-\r
-  \r
-  \r
-  \r
+  }  \r
 }\r
index f1ed7f6..b91b0c6 100644 (file)
@@ -63,10 +63,18 @@ public class Pazpar2Commands implements Serializable {
     return (ShowCommand) (stateMgr.checkOut(SHOW));\r
   }\r
   \r
+  public ShowCommand getShowInState () {\r
+    return (ShowCommand) (stateMgr.getCurrentState().getCommand(SHOW));\r
+  }\r
+  \r
   public RecordCommand getRecord() {\r
     return (RecordCommand) (stateMgr.checkOut(RECORD));\r
   }\r
   \r
+  public RecordCommand getRecordInState() {\r
+    return (RecordCommand)stateMgr.getCurrentState().getCommand(RECORD);\r
+  }\r
+  \r
   public TermlistCommand getTermlist() {\r
     return (TermlistCommand) (stateMgr.checkOut(TERMLIST));\r
   }\r
index 12347c6..b783529 100644 (file)
@@ -8,6 +8,7 @@ public class ShowCommand extends Pazpar2Command {
 \r
   public ShowCommand(StateManager stateMgr) {\r
     super("show",stateMgr);\r
+    setParameterSilently(new CommandParameter("start","=","0"));\r
   }\r
 \r
   /**\r
index 618d880..3c09920 100644 (file)
@@ -89,7 +89,7 @@ public class StateManager implements Serializable {
     logger.debug("Getting " + commandName + " from state manager.");\r
     return getCurrentState().getCommand(commandName).copy();\r
   }\r
-  \r
+    \r
   public CommandReadOnly getCommand (String commandName) {\r
     return getCurrentState().getCommand(commandName);\r
   }\r