1 package com.indexdata.pz2utils4jsf.pazpar2.state;
\r
3 import java.io.Serializable;
\r
4 import java.util.HashMap;
\r
5 import java.util.Map;
\r
7 import org.apache.log4j.Logger;
\r
9 import com.indexdata.pz2utils4jsf.pazpar2.Pazpar2Command;
\r
10 import com.indexdata.pz2utils4jsf.pazpar2.state.QueryState;
\r
11 import com.indexdata.pz2utils4jsf.pazpar2.state.QueryStates;
\r
13 public class QueryStates implements Serializable {
\r
15 private static final long serialVersionUID = 6131720167974584659L;
\r
16 private static Logger logger = Logger.getLogger(QueryStates.class);
\r
18 Map<String, QueryState> queryStates = new HashMap<String, QueryState>();
\r
19 String currentStateKey = "";
\r
20 Map<String,Boolean> pendingStateChanges = new HashMap<String,Boolean>();
\r
22 public QueryStates () {
\r
23 queryStates.put("#initial", new QueryState());
\r
24 currentStateKey = "#initial";
\r
25 for (String command : Pazpar2Command.allCommands) {
\r
26 pendingStateChanges.put(command, new Boolean(false));
\r
30 public String getCurrentStateKey() {
\r
31 return currentStateKey;
\r
34 public void setCurrentStateKey(String key) {
\r
36 if (currentStateKey.equals(key)) {
\r
37 logger.debug("setCurrentStateKey: no key change detected");
\r
39 logger.debug("State key change. Was: [" + currentStateKey + "]. Will be ["+key+"]");
\r
40 if (queryStates.get(key).getCommand("search").equals(getCurrentState().getCommand("search"))) {
\r
41 logger.debug("No search change detected");
\r
43 hasPendingStateChange("search",true);
\r
45 if (queryStates.get(key).getCommand("record").equals(getCurrentState().getCommand("record"))) {
\r
46 logger.debug("No record change detected");
\r
48 hasPendingStateChange("record",true);
\r
50 currentStateKey = key;
\r
54 public QueryState getCurrentState() {
\r
55 if (queryStates.get(currentStateKey) == null) {
\r
56 return new QueryState();
\r
58 return queryStates.get(currentStateKey);
\r
62 public void setCurrentState(QueryState queryState) {
\r
63 logger.debug("Setting current state: " + queryState.getKey());
\r
64 queryStates.put(queryState.getKey(), queryState);
\r
65 setCurrentStateKey(queryState.getKey());
\r
68 public void hasPendingStateChange(String command, boolean bool) {
\r
69 pendingStateChanges.put(command, new Boolean(bool));
\r
72 public boolean hasPendingStateChange (String command) {
\r
73 return pendingStateChanges.get(command).booleanValue();
\r