\r
import org.apache.log4j.Logger;\r
\r
+import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand;\r
import com.indexdata.mkjsf.pazpar2.state.StateManager;\r
\r
-public class Pazpar2Command implements Serializable {\r
+public abstract class Pazpar2Command implements Serializable {\r
\r
private static Logger logger = Logger.getLogger(Pazpar2Command.class);\r
private static final long serialVersionUID = -6825491856480675917L; \r
- private String name = "";\r
+ protected String name = "";\r
protected Map<String,CommandParameter> parameters = new HashMap<String,CommandParameter>();\r
\r
- StateManager stateMgr;\r
+ protected StateManager stateMgr;\r
\r
public Pazpar2Command (String name, StateManager stateMgr) {\r
this.name = name;\r
this.stateMgr = stateMgr;\r
}\r
\r
- public Pazpar2Command copy () {\r
- Pazpar2Command newCommand = new Pazpar2Command(name,stateMgr);\r
- for (String parameterName : parameters.keySet()) {\r
- newCommand.setParameterInState(parameters.get(parameterName).copy()); \r
- } \r
- return newCommand;\r
- }\r
+ public abstract Pazpar2Command copy ();\r
\r
- public String getName() {\r
+ public String getCommandName() {\r
return name;\r
}\r
\r
public void setParameter (CommandParameter parameter) {\r
Pazpar2Command copy = this.copy();\r
- logger.debug(name + " command: setting parameter [" + parameter.getName() + "=" + parameter.getValueWithExpressions() + "]");\r
+ logger.trace(name + " command: setting parameter [" + parameter.getName() + "=" + parameter.getValueWithExpressions() + "]");\r
copy.parameters.put(parameter.getName(),parameter);\r
checkInState(copy);\r
}\r
public void setParameters (CommandParameter... params) {\r
Pazpar2Command copy = this.copy();\r
for (CommandParameter param : params) {\r
- logger.debug(name + " command: setting parameter [" + param.getName() + "=" + param.getValueWithExpressions() + "]");\r
+ logger.trace(name + " command: setting parameter [" + param.getName() + "=" + param.getValueWithExpressions() + "]");\r
copy.parameters.put(param.getName(),param);\r
}\r
checkInState(copy);\r
\r
public void setParametersInState (CommandParameter... params) { \r
for (CommandParameter param : params) {\r
- logger.debug(name + " command: setting parameter [" + param.getName() + "=" + param.getValueWithExpressions() + "] silently");\r
+ logger.trace(name + " command: setting parameter [" + param.getName() + "=" + param.getValueWithExpressions() + "] silently");\r
parameters.put(param.getName(),param);\r
} \r
}\r
\r
public void setParameterInState (CommandParameter parameter) {\r
- logger.debug(name + " command: setting parameter [" + parameter.getName() + "=" + parameter.getValueWithExpressions() + "] silently");\r
+ logger.trace(name + " command: setting parameter [" + parameter.getName() + "=" + parameter.getValueWithExpressions() + "] silently");\r
parameters.put(parameter.getName(),parameter); \r
}\r
\r
return (parameters.keySet().size()>0);\r
}\r
\r
- public boolean hasParameterSet(String parameterName) {\r
- return (parameters.get(parameterName) != null);\r
+ public boolean hasParameterValue(String parameterName) {\r
+ return (parameters.get(parameterName) != null && parameters.get(parameterName).hasValue());\r
}\r
\r
public String getEncodedQueryString () {\r
StringBuilder queryString = new StringBuilder("command="+name);\r
for (CommandParameter parameter : parameters.values()) {\r
- queryString.append("&"+parameter.getEncodedQueryString()); \r
+ if (parameter.hasValue()) {\r
+ queryString.append("&"+parameter.getEncodedQueryString());\r
+ }\r
}\r
return queryString.toString();\r
} \r
public String getValueWithExpressions() { \r
StringBuilder value = new StringBuilder("");\r
for (CommandParameter parameter : parameters.values()) {\r
- value.append("&" + parameter.getName() + parameter.operator + parameter.getValueWithExpressions()); \r
+ if (parameter.hasValue()) {\r
+ value.append("&" + parameter.getName() + parameter.operator + parameter.getValueWithExpressions());\r
+ }\r
}\r
return value.toString();\r
}\r
}\r
\r
public String getParameterValue(String parameterName) {\r
- return getParameter(parameterName).getValueWithExpressions();\r
+ return getParameter(parameterName)==null ? "" : getParameter(parameterName).getValueWithExpressions();\r
\r
}\r
\r
if (stateMgr != null) {\r
stateMgr.checkIn(command);\r
} else {\r
- logger.info("Command '" + command.getName() + "' not affecting state (history) as no state manager was defined for this command.");\r
+ logger.info("Command '" + command.getCommandName() + "' not affecting state (history) as no state manager was defined for this command.");\r
}\r
}\r
+ \r
+ public abstract ServiceProxyCommand getSp();\r
+ \r
+ public abstract boolean spOnly(); \r
}\r