Ammends some fringe scenarios with state keys and states
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / commands / Pazpar2Commands.java
1 package com.indexdata.pz2utils4jsf.pazpar2.commands;\r
2 \r
3 import java.io.Serializable;\r
4 \r
5 import javax.annotation.PostConstruct;\r
6 import javax.enterprise.context.SessionScoped;\r
7 import javax.inject.Inject;\r
8 import javax.inject.Named;\r
9 \r
10 import org.apache.log4j.Logger;\r
11 \r
12 import com.indexdata.pz2utils4jsf.pazpar2.state.StateManager;\r
13 import com.indexdata.pz2utils4jsf.utils.Utils;\r
14 \r
15 @Named("pzreq") @SessionScoped\r
16 public class Pazpar2Commands implements Serializable {\r
17 \r
18   private static final long serialVersionUID = -5172466320351302413L;\r
19   private static Logger logger = Logger.getLogger(Pazpar2Commands.class);\r
20 \r
21   public static final String INIT =     "init";\r
22   public static final String PING =     "ping";\r
23   public static final String SETTINGS = "settings";\r
24   public static final String SEARCH =   "search";\r
25   public static final String STAT =     "stat";\r
26   public static final String SHOW =     "show";\r
27   public static final String RECORD =   "record";\r
28   public static final String TERMLIST = "termlist";\r
29   public static final String BYTARGET = "bytarget";\r
30     \r
31   @Inject StateManager stateMgr; \r
32   \r
33   public Pazpar2Commands() {\r
34     logger.info("Initializing Pazpar2Commands [" + Utils.objectId(this) + "]");\r
35   }\r
36   \r
37   @PostConstruct\r
38   public void postConstruct() {\r
39     logger.info("in post-construct stateMgr is " + stateMgr);\r
40   }\r
41     \r
42   public InitCommand getInit() {\r
43     return (InitCommand) (stateMgr.checkOut(INIT));\r
44   }\r
45   \r
46   public PingCommand getPing() {\r
47     return (PingCommand) (stateMgr.checkOut(PING));\r
48   }\r
49   \r
50   public SettingsCommand getSettings() {\r
51     return (SettingsCommand) (stateMgr.checkOut(SETTINGS));\r
52   }\r
53 \r
54   public SearchCommand getSearch() {\r
55     return (SearchCommand) (stateMgr.checkOut(SEARCH));\r
56   }\r
57   \r
58   /**\r
59    * Gets a mutable SearchCommand from current state (no checkout)\r
60    * Can be used for updating Search parameters without spawning new state.\r
61    * @return\r
62    */\r
63   public SearchCommand getSearchInState() {\r
64     return (SearchCommand) (stateMgr.getCurrentState().getCommand(SEARCH));\r
65   }\r
66 \r
67   public StatCommand getStat() {\r
68     return (StatCommand) (stateMgr.checkOut(STAT));\r
69   }\r
70   \r
71   public ShowCommand getShow() {\r
72     return (ShowCommand) (stateMgr.checkOut(SHOW));\r
73   }\r
74   \r
75   /**\r
76    * Gets a mutable ShowCommand from current state (no checkout)\r
77    * Can be used for updating show parameters without spawning new state.\r
78    * @return\r
79    */\r
80   public ShowCommand getShowInState () {\r
81     return (ShowCommand) (stateMgr.getCurrentState().getCommand(SHOW));\r
82   }\r
83   \r
84   /**\r
85    * Gets a detached (copied) record command from the current state\r
86    * \r
87    * @return\r
88    */\r
89   public RecordCommand getRecord() {\r
90     return (RecordCommand) (stateMgr.checkOut(RECORD));\r
91   }\r
92 \r
93   /**\r
94    * Gets a mutable RecordCommand from current state (no checkout)\r
95    * Can be used for updating record parameters without spawning new state.\r
96    * @return\r
97    */  \r
98   public RecordCommand getRecordInState() {\r
99     return (RecordCommand)stateMgr.getCurrentState().getCommand(RECORD);\r
100   }\r
101   \r
102   /**\r
103    * Gets a detached (copied) termlist command from the current state\r
104    * \r
105    * @return Mutable termlist command\r
106    */\r
107   public TermlistCommand getTermlist() {\r
108     return (TermlistCommand) (stateMgr.checkOut(TERMLIST));\r
109   }\r
110   \r
111   /**\r
112    * \r
113    * @return\r
114    */\r
115   public BytargetCommand getBytarget() {\r
116     return (BytargetCommand) (stateMgr.checkOut(BYTARGET));\r
117   }\r
118   \r
119   public Pazpar2Command getCommand(String name) {\r
120     return stateMgr.checkOut(name);\r
121   }\r
122   \r
123   public CommandReadOnly getCommandReadOnly(String name) {\r
124     return stateMgr.getCommand(name);\r
125   }\r
126     \r
127 }\r