Various fixes, clean-up, logs, documentation
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / commands / Pazpar2Command.java
index e0680c7..7ef96bd 100644 (file)
@@ -8,7 +8,7 @@ import org.apache.log4j.Logger;
 \r
 import com.indexdata.pz2utils4jsf.pazpar2.state.StateManager;\r
 \r
-public class Pazpar2Command implements CommandReadOnly, Serializable  {\r
+public class Pazpar2Command implements Serializable  {\r
   \r
   private static Logger logger = Logger.getLogger(Pazpar2Command.class);\r
   private static final long serialVersionUID = -6825491856480675917L;   \r
@@ -20,7 +20,7 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
   public Pazpar2Command (String name, StateManager stateMgr) {\r
     this.name = name;\r
     if (stateMgr == null) {\r
-      // Set one-off dummy state mgr\r
+      // Sets throw-away state\r
       this.stateMgr = new StateManager();\r
     } else {\r
       this.stateMgr = stateMgr;\r
@@ -30,7 +30,7 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
   public Pazpar2Command copy () {\r
     Pazpar2Command newCommand = new Pazpar2Command(name,stateMgr);\r
     for (String parameterName : parameters.keySet()) {\r
-      newCommand.setParameterSilently(parameters.get(parameterName).copy());      \r
+      newCommand.setParameterInState(parameters.get(parameterName).copy());      \r
     }    \r
     return newCommand;\r
   }\r
@@ -40,22 +40,30 @@ 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
-    parameters.put(parameter.getName(),parameter);\r
-    stateMgr.checkIn(this);\r
+    Pazpar2Command copy = this.copy();\r
+    logger.debug(name + " command: setting parameter [" + parameter.getName() + "=" + parameter.getValueWithExpressions() + "]");\r
+    copy.parameters.put(parameter.getName(),parameter);\r
+    stateMgr.checkIn(copy);\r
   }\r
   \r
   public void setParameters (CommandParameter... params) {\r
+    Pazpar2Command copy = this.copy();\r
     for (CommandParameter param : params) {\r
-      logger.debug("Setting parameter " + param.getName() + "=" + param.getValueWithExpressions() + " to " + this.getName());\r
-      parameters.put(param.getName(),param);\r
+      logger.debug(name + " command: setting parameter [" + param.getName() + "=" + param.getValueWithExpressions() + "]");\r
+      copy.parameters.put(param.getName(),param);\r
     }\r
-    stateMgr.checkIn(this);\r
+    stateMgr.checkIn(copy);\r
   }\r
   \r
-  \r
-  public void setParameterSilently (CommandParameter parameter) {\r
-    logger.debug("Setting parameter silently " + parameter.getName() + "=" + parameter.getValueWithExpressions() + " to " + this.getName());\r
+  public void setParametersInState (CommandParameter... params) {    \r
+    for (CommandParameter param : params) {\r
+      logger.debug(name + " command: setting parameter [" + param.getName() + "=" + param.getValueWithExpressions() + "] silently");\r
+      parameters.put(param.getName(),param);\r
+    }    \r
+  }\r
+    \r
+  public void setParameterInState (CommandParameter parameter) {\r
+    logger.debug(name + " command: setting parameter [" + parameter.getName() + "=" + parameter.getValueWithExpressions() + "] silently");\r
     parameters.put(parameter.getName(),parameter);    \r
   }\r
   \r
@@ -65,15 +73,22 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
   }\r
   \r
   public void removeParameter (String name) {\r
-    parameters.remove(name);\r
-    stateMgr.checkIn(this);\r
+    Pazpar2Command copy = this.copy();\r
+    copy.parameters.remove(name);\r
+    stateMgr.checkIn(copy);\r
   }\r
   \r
   public void removeParameters() {\r
-    parameters = new HashMap<String,CommandParameter>();\r
-    stateMgr.checkIn(this);\r
+    Pazpar2Command copy = this.copy();\r
+    copy.parameters = new HashMap<String,CommandParameter>();\r
+    stateMgr.checkIn(copy);\r
   }\r
   \r
+  public void removeParametersInState() {\r
+    parameters = new HashMap<String,CommandParameter>();    \r
+  }\r
+\r
+  \r
   public boolean hasParameters () {\r
     return (parameters.keySet().size()>0);\r
   }\r
@@ -114,17 +129,20 @@ public class Pazpar2Command implements CommandReadOnly, Serializable  {
     return parameters.toString();\r
   }\r
 \r
-  @Override\r
   public String getParameterValue(String parameterName) {\r
     return getParameter(parameterName).getValueWithExpressions();\r
     \r
   }\r
 \r
-  @Override\r
   public String getUrlEncodedParameterValue(String parameterName) {\r
     return getParameter(parameterName).getEncodedQueryString();\r
   }\r
   \r
+  public void setSession (String sessionId) {\r
+    setParameter(new CommandParameter("session","=",sessionId));\r
+  }\r
   \r
-  \r
+  public String getSession() {\r
+    return getParameterValue("session");\r
+  }  \r
 }\r