package com.indexdata.pz2utils4jsf.pazpar2.state;\r
\r
-import java.util.Arrays;\r
import java.util.HashMap;\r
import java.util.Map;\r
\r
-import com.indexdata.pz2utils4jsf.pazpar2.Pazpar2Command;\r
-\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.BytargetCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.InitCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.Pazpar2Command;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.Pazpar2Commands;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.PingCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.RecordCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.SearchCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.SettingsCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.ShowCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.StatCommand;\r
+import com.indexdata.pz2utils4jsf.pazpar2.commands.TermlistCommand;\r
\r
+/**\r
+ * Holds a 'pazpar2 state', understood as a full set of pazpar2 commands and \r
+ * all their parameter settings at a given point in time.\r
+ * \r
+ * @author Niels Erik\r
+ *\r
+ */\r
public class Pazpar2State {\r
\r
String key = null;\r
Map<String,Pazpar2Command> commands = new HashMap<String,Pazpar2Command>();;\r
\r
- public Pazpar2State () { \r
- for (String command : Arrays.asList("init","ping","settings","search","stat","show","record","termlist","bytarget")) {\r
- commands.put(command, new Pazpar2Command(command));\r
- }\r
- key = "#initial";\r
+ public Pazpar2State (StateManager mgr) {\r
+ commands.put(Pazpar2Commands.INIT, new InitCommand(mgr));\r
+ commands.put(Pazpar2Commands.PING, new PingCommand(mgr));\r
+ commands.put(Pazpar2Commands.SETTINGS, new SettingsCommand(mgr));\r
+ commands.put(Pazpar2Commands.SEARCH, new SearchCommand(mgr));\r
+ commands.put(Pazpar2Commands.STAT, new StatCommand(mgr));\r
+ commands.put(Pazpar2Commands.SHOW, new ShowCommand(mgr));\r
+ commands.put(Pazpar2Commands.RECORD, new RecordCommand(mgr));\r
+ commands.put(Pazpar2Commands.TERMLIST, new TermlistCommand(mgr));\r
+ commands.put(Pazpar2Commands.BYTARGET, new BytargetCommand(mgr)); \r
+ key = "#1";\r
}\r
- \r
+ \r
/**\r
* Creates new state by cloning all commands of the provided state and \r
* then overriding one of them with the provided state changing command.\r
*/\r
public String getKey() {\r
if (key == null) {\r
- StringBuilder querystatebuilder = new StringBuilder("#");\r
+ StringBuilder querystatebuilder = new StringBuilder("");\r
for (Pazpar2Command command : commands.values()) {\r
if (command.hasParameters()) {\r
querystatebuilder.append("||"+command.getName()+"::");\r
querystatebuilder.append(command.getValueWithExpressions());\r
} \r
} \r
- key = querystatebuilder.toString();\r
+ key = "#"+querystatebuilder.toString().hashCode();\r
return key;\r
} else { \r
return key;\r