Merge branch 'master' of ssh://git.indexdata.com/home/git/private/mkjsf.git into...
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / Pazpar2Commands.java
diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/commands/Pazpar2Commands.java b/src/main/java/com/indexdata/mkjsf/pazpar2/commands/Pazpar2Commands.java
new file mode 100644 (file)
index 0000000..b847e17
--- /dev/null
@@ -0,0 +1,150 @@
+package com.indexdata.mkjsf.pazpar2.commands;\r
+\r
+import java.io.Serializable;\r
+\r
+import javax.enterprise.context.SessionScoped;\r
+import javax.inject.Named;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import com.indexdata.mkjsf.pazpar2.Pz2Service;\r
+import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommands;\r
+import com.indexdata.mkjsf.utils.Utils;\r
+\r
+/**\r
+ * Pazpar2Commands holds references to all Pazpar2 commands. \r
+ * <p>\r
+ * The Pazpar2Commands object itself is exposed to the UI as <code>pzreq</code>. \r
+ * </p>\r
+ * <p>\r
+ * When the UI request a command it will be retrieved from the current state\r
+ * through the state manager, so that the command can trigger a mutation of \r
+ * the state if the user/UI modifies its parameters. \r
+ * </p>\r
+ * <p>Examples:</p>\r
+ * <ul>\r
+ *  <li><code>pzreq.show</code>    - will retrieve the show command for editing or execution\r
+ *  <li><code>pzreq.sp.auth</code> - will retrieve the Service Proxy extension command 'auth'\r
+ * </ul>\r
+ * \r
+ * @author Niels Erik\r
+ *\r
+ */\r
+@SessionScoped @Named\r
+public class Pazpar2Commands implements Serializable {\r
+\r
+  private static final long serialVersionUID = -5172466320351302413L;\r
+  private static Logger logger = Logger.getLogger(Pazpar2Commands.class);\r
+  \r
+  public static final String INIT =     "init";\r
+  public static final String PING =     "ping";\r
+  public static final String SETTINGS = "settings";\r
+  public static final String SEARCH =   "search";\r
+  public static final String STAT =     "stat";\r
+  public static final String SHOW =     "show";\r
+  public static final String RECORD =   "record";\r
+  public static final String TERMLIST = "termlist";\r
+  public static final String BYTARGET = "bytarget";  \r
+  private ServiceProxyCommands sp = null;    \r
+  \r
+  public Pazpar2Commands() {\r
+    logger.info("Initializing Pazpar2Commands [" + Utils.objectId(this) + "]");   \r
+  }\r
+  \r
+  /**\r
+   * init command - referenced from UI as <code>pzreq.init</code>\r
+   * \r
+   * @return init command from current state\r
+   */\r
+  public InitCommand getInit() {\r
+    return (InitCommand) (Pz2Service.get().getStateMgr().getCommand(INIT));    \r
+  }\r
+    \r
+  /** \r
+   * ping command - referenced from UI as <code>pzreq.ping</code>\r
+   * \r
+   * @return ping command from current state \r
+   */\r
+  public PingCommand getPing() {\r
+    return (PingCommand) (Pz2Service.get().getStateMgr().getCommand(PING));\r
+  }\r
+  \r
+  /**\r
+   * settings command - referenced from UI as <code>pzreq.settings</code>\r
+   * \r
+   * @return settings command from current state\r
+   */\r
+  public SettingsCommand getSettings() {\r
+    return (SettingsCommand) (Pz2Service.get().getStateMgr().getCommand(SETTINGS));\r
+  }\r
+\r
+  /**\r
+   * \r
+   * @return search command from current state\r
+   */\r
+  public SearchCommand getSearch() {\r
+    return (SearchCommand) (Pz2Service.get().getStateMgr().getCommand(SEARCH));\r
+  }\r
+  \r
+  /**\r
+   * \r
+   * @return stat command from current state\r
+   */\r
+  public StatCommand getStat() {\r
+    return (StatCommand) (Pz2Service.get().getStateMgr().getCommand(STAT));\r
+  }\r
+  \r
+  /**\r
+   * \r
+   * @return show command from current state\r
+   */\r
+  public ShowCommand getShow() {\r
+    return (ShowCommand) (Pz2Service.get().getStateMgr().getCommand(SHOW));\r
+  }\r
+    \r
+  /**\r
+   * \r
+   * @return record command from current state\r
+   */\r
+  public RecordCommand getRecord() {\r
+    return (RecordCommand) (Pz2Service.get().getStateMgr().getCommand(RECORD));\r
+  }\r
+\r
+  /**\r
+   * \r
+   * @return termlist command from current state\r
+   */\r
+  public TermlistCommand getTermlist() {\r
+    return (TermlistCommand) (Pz2Service.get().getStateMgr().getCommand(TERMLIST));\r
+  }\r
+  \r
+  /**\r
+   * \r
+   * @return bytarget command from current state\r
+   */\r
+  public BytargetCommand getBytarget() {\r
+    return (BytargetCommand) (Pz2Service.get().getStateMgr().getCommand(BYTARGET));\r
+  }\r
+  \r
+  /**\r
+   * Generically retrieves any command\r
+   * \r
+   * @param name name of command to retrieve\r
+   * @return command of the given type\r
+   */\r
+  public Pazpar2Command getCommand(String name) {    \r
+    return Pz2Service.get().getStateMgr().getCommand(name);\r
+  }\r
+  \r
+  /**\r
+   * Gets the object holding references to Service Proxy-only commands.\r
+   * @return\r
+   */\r
+  public ServiceProxyCommands getSp() {\r
+    if (sp == null) {\r
+      sp = new ServiceProxyCommands(Pz2Service.get().getStateMgr());\r
+    }\r
+    return sp;\r
+  }\r
+      \r
+}\r