Refactors commands and injection
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / Pazpar2Command.java
index a67f829..06aebf3 100644 (file)
@@ -6,28 +6,47 @@ import java.util.Map;
 \r
 import org.apache.log4j.Logger;\r
 \r
+import com.indexdata.mkjsf.pazpar2.ClientCommandResponse;\r
+import com.indexdata.mkjsf.pazpar2.HttpResponseWrapper;\r
+import com.indexdata.mkjsf.pazpar2.Pz2Bean;\r
 import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand;\r
-import com.indexdata.mkjsf.pazpar2.state.StateManager;\r
+import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
+import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
 \r
 public abstract class Pazpar2Command implements Serializable  {\r
   \r
   private static Logger logger = Logger.getLogger(Pazpar2Command.class);\r
   private static final long serialVersionUID = -6825491856480675917L;   \r
   protected String name = "";\r
-  protected Map<String,CommandParameter> parameters = new HashMap<String,CommandParameter>();\r
+  protected Map<String,CommandParameter> parameters = new HashMap<String,CommandParameter>();  \r
   \r
-  protected StateManager stateMgr;\r
+  public Pazpar2Command () {\r
     \r
-  public Pazpar2Command (String name, StateManager stateMgr) {\r
+  }\r
+  \r
+  public void setCommandName(String name) {\r
     this.name = name;\r
-    this.stateMgr = stateMgr;\r
+  }\r
+          \r
+  public Pazpar2Command (String name) {\r
+    this.name = name;    \r
   }\r
       \r
   public abstract Pazpar2Command copy ();\r
-  \r
+          \r
   public String getCommandName() {\r
     return name;\r
   }\r
+  \r
+  public ResponseDataObject run() {\r
+    logger.info("Running " + getCommandName() + " using " + Pz2Bean.get().getSearchClient());    \r
+    HttpResponseWrapper httpResponse = Pz2Bean.get().getSearchClient().executeCommand(this);\r
+    logger.info("Parsing response for " + getCommandName());\r
+    ResponseDataObject responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse) httpResponse);\r
+    logger.info("Storing response for " + getCommandName());\r
+    Pz2Bean.get().getPzresp().put(getCommandName(), responseObject);\r
+    return responseObject;\r
+  }\r
     \r
   public void setParameter (CommandParameter parameter) {\r
     Pazpar2Command copy = this.copy();\r
@@ -141,11 +160,12 @@ public abstract class Pazpar2Command implements Serializable  {
   } \r
   \r
   private void checkInState(Pazpar2Command command) {\r
-    if (stateMgr != null) {\r
-      stateMgr.checkIn(command);\r
-    } else {\r
-      logger.info("Command '" + command.getCommandName() + "' not affecting state (history) as no state manager was defined for this command.");\r
-    }\r
+    Pz2Bean.get().getStateMgr().checkIn(command);\r
+    // if (stateMgr() != null) {\r
+    //   stateMgr().checkIn(command);\r
+    // } else {\r
+    //   logger.info("Command '" + command.getCommandName() + "' not affecting state (history) as no state manager was defined for this command.");\r
+    // }\r
   }\r
   \r
   public abstract ServiceProxyCommand getSp();\r