+++ /dev/null
-package com.indexdata.pz2utils4jsf.pazpar2.state;\r
-\r
-import java.io.Serializable;\r
-import java.util.Arrays;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.apache.log4j.Logger;\r
-\r
-import com.indexdata.pz2utils4jsf.pazpar2.CommandParameter;\r
-import com.indexdata.pz2utils4jsf.pazpar2.Expression;\r
-import com.indexdata.pz2utils4jsf.pazpar2.Pazpar2Command;\r
-import com.indexdata.pz2utils4jsf.pazpar2.state.QueryState;\r
-import com.indexdata.pz2utils4jsf.pazpar2.state.QueryStates;\r
-\r
-public class QueryState implements Serializable {\r
- \r
- private static final long serialVersionUID = -1465676392610954168L;\r
- private static Logger logger = Logger.getLogger(QueryState.class);\r
- private Map<String,Pazpar2Command> pz2commands = new HashMap<String,Pazpar2Command>();\r
- private String key = null; \r
- \r
- public QueryState () {\r
- for (String command : Arrays.asList("init","ping","settings","search","stat","show","record","termlist","bytarget")) {\r
- pz2commands.put(command, new Pazpar2Command(command));\r
- }\r
- } \r
- \r
- private QueryState copy() { \r
- QueryState newState = new QueryState();\r
- for (String commandName : pz2commands.keySet()) {\r
- newState.setCommand(pz2commands.get(commandName).copy());\r
- }\r
- return newState;\r
- }\r
- \r
- public void setCommandParameter(String commandName, CommandParameter parameter, QueryStates queryStates) {\r
- CommandParameter current = getCommand(commandName).getParameter(parameter.getName());\r
- if (current != null && current.equals(parameter)) {\r
- logger.debug("Recieved parameter but already have " + parameter.getValueWithExpressions() + " in this state. No state change.");\r
- } else {\r
- logger.debug("New command parameter received: " + parameter.getValueWithExpressions() + ". Initiating new state.");\r
- QueryState newState = this.copy();\r
- newState._setCommandParameter(commandName,parameter);\r
- logger.debug("Old state: " + this);\r
- logger.debug("New state: " + newState); \r
- queryStates.setCurrentState(newState);\r
- }\r
- }\r
- \r
- public void removeCommandParameter(String commandName, String parameterName, QueryStates queryStates) {\r
- QueryState newState = this.copy();\r
- newState._removeCommandParameter(commandName, parameterName);\r
- queryStates.setCurrentState(newState);\r
- }\r
- \r
- public void setCommandParameterExpression (String commandName, String parameterName, Expression expression, QueryStates queryStates) {\r
- QueryState newState = this.copy();\r
- newState._setCommandParameterExpression(commandName, parameterName, expression);\r
- queryStates.setCurrentState(newState);\r
- }\r
- \r
- public void _setCommandParameterExpression (String commandName, String parameterName, Expression expression) {\r
- getCommand(commandName).getParameter(parameterName).addExpression(expression);\r
- }\r
- \r
- public void removeCommandParameterExpression (String commandName, String parameterName, Expression expression, QueryStates queryStates) {\r
- QueryState newState = this.copy();\r
- newState._removeCommandParameterExpression(commandName, parameterName, expression);\r
- queryStates.setCurrentState(newState);\r
- }\r
- \r
- public void _removeCommandParameterExpression (String commandName, String parameterName, Expression expression) {\r
- getCommand(commandName).getParameter(parameterName).removeExpression(expression);\r
- \r
- }\r
-\r
- public void _setCommandParameter(String commandName, CommandParameter parameter) {\r
- getCommand(commandName).setParameter(parameter);\r
- }\r
- \r
- public void _removeCommandParameter(String commandName, String parameterName) {\r
- getCommand(commandName).removeParameter(parameterName);\r
- }\r
- \r
- public void _removeCommand(String commandName) {\r
- getCommand(commandName).removeParameters(); \r
- }\r
-\r
- \r
- public void removeCommand (String commandName, QueryStates queryStates) {\r
- QueryState newState = this.copy();\r
- newState._removeCommand(commandName);\r
- queryStates.setCurrentState(newState);\r
- \r
- }\r
-\r
- public Pazpar2Command getCommand(String name) {\r
- return pz2commands.get(name);\r
- }\r
- \r
- private void setCommand(Pazpar2Command command) {\r
- pz2commands.put(command.getName(), command);\r
- }\r
- \r
- public String getKey() {\r
- if (key == null) {\r
- StringBuilder querystatebuilder = new StringBuilder("#");\r
- for (Pazpar2Command command : pz2commands.values()) {\r
- if (command.hasParameters()) {\r
- querystatebuilder.append("||"+command.getName()+"::");\r
- querystatebuilder.append(command.getValueWithExpressions());\r
- } \r
- } \r
- key = querystatebuilder.toString();\r
- return key;\r
- } else { \r
- return key;\r
- }\r
- }\r
- \r
- public void setKey(String key) {\r
- logger.debug("Setting key on demand to: " + key);\r
- this.key = key;\r
- }\r
- \r
- public String toString () {\r
- return pz2commands.toString();\r
- }\r
- \r
- public boolean searchEquals(Object otherQueryState) {\r
- if (otherQueryState instanceof QueryState) {\r
- return getCommand("search").equals(((QueryState) otherQueryState).getCommand("search"));\r
- } else {\r
- return false;\r
- }\r
- }\r
- \r
- public boolean equals (Object otherQueryState) {\r
- if (otherQueryState instanceof QueryState) {\r
- return this.toString().equals(otherQueryState.toString()); \r
- } else {\r
- return false;\r
- }\r
- }\r
-\r
-}\r