X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2Fcommands%2FSearchCommand.java;fp=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2Fcommands%2FSearchCommand.java;h=671e723f26fcee8a0505157542659a1aff50915f;hb=969f879c807d127cbf47c5656771fcf5adc27a02;hp=e36b239c728162585cb085070cb47a81e3c8f7c5;hpb=8f451e761c251dcb4b01a2a11ee759e2ec3c1105;p=mkjsf-moved-to-github.git
diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/commands/SearchCommand.java b/src/main/java/com/indexdata/mkjsf/pazpar2/commands/SearchCommand.java
index e36b239..671e723 100644
--- a/src/main/java/com/indexdata/mkjsf/pazpar2/commands/SearchCommand.java
+++ b/src/main/java/com/indexdata/mkjsf/pazpar2/commands/SearchCommand.java
@@ -12,6 +12,12 @@ import com.indexdata.mkjsf.pazpar2.Pz2Service;
import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand;
import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;
+/**
+ * Represents a Pazpar2 search
command.
+ *
+ * @author Niels Erik
+ *
+ */
@SessionScoped @Named
public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand {
@@ -31,7 +37,10 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
Pz2Service.get().getSearchClient().setSearchCommand(this);
return super.run();
}
-
+
+ /**
+ * Sets the query
parameter. See Pazpar2 documentation for details.
+ */
public void setQuery(String query) {
setParameter(new QueryParameter("query","=",query));
}
@@ -42,14 +51,24 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
checkInState(copy);
}
+ /**
+ * Returns the simple part of the query
parameter value, excluding parts that
+ * were added as expressions (that is, not set with setQuery()
).
+ */
public String getQuery () {
return getParameter("query") == null ? null : getParameter("query").getSimpleValue();
}
-
+
+ /**
+ * Returns the complete query
parameter value, including expressions.
+ */
public String getExtendedQuery () {
return getParameter("query") == null ? null : getParameter("query").getValueWithExpressions();
}
-
+
+ /**
+ * Sets the filter
parameter. See Pazpar2 documentation for details.
+ */
public void setFilter(String filterExpression) {
if (filterExpression != null && filterExpression.length()>0) {
if (filterExpression.split("[=~]").length==1) {
@@ -62,10 +81,18 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
}
}
+ /**
+ * Sets the filter
parameter. See Pazpar2 documentation for details.
+ */
public void setFilter(String field, String operator, String value, String label) {
setParameter(new FilterParameter(new Expression(field,operator,value,label)));
}
-
+
+ /**
+ * Checks if there are any filter expressions matching any of the given expressionFields
+ * @param expressionFields expression fields (left-of-operator entities) to look for
+ * @return true if expression(s) found with any of expressionFields
+ */
public boolean hasFilterExpression(String... expressionFields) {
logger.trace("Checking for filter expression for " + Arrays.deepToString(expressionFields));
for (String field : expressionFields) {
@@ -79,10 +106,18 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
}
+ /**
+ * Returns the filter
parameter value.
+ */
public String getFilter() {
return getParameter("filter") == null ? null : ((FilterParameter)getParameter("filter")).getValueWithExpressions();
}
+ /**
+ * Returns the first filter expression of the given type
+ * @param expressionField expression field (left-of-operator entity) to look for
+ * @return the first filter expression found with the field expressionField
or null if none found
+ */
public Expression getOneFilterExpression(String expressionField) {
List exprs = getFilterExpressions(expressionField);
if (exprs != null && exprs.size()>0) {
@@ -96,10 +131,14 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
}
+ /**
+ * Returns list of all filter expressions
+ */
public List getFilterExpressions() {
return getParameter("filter").getExpressions();
}
+
public List getFilterExpressions(String... expressionFields) {
logger.trace("Checking for filter parameter");
if (parameters.get("filter")!=null) {
@@ -114,7 +153,16 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
public boolean hasFilter () {
return getFilter().length()>0;
}
-
+
+ /**
+ * Adds a filter expression with a label for display. The filter is added to the end
+ * of an ordered list.
+ *
+ * @param field
+ * @param operator
+ * @param value
+ * @param label
+ */
public void addFilter(String field, String operator, String value, String label) {
if (getParameter("filter") == null) {
setFilter(field + operator + value);
@@ -122,37 +170,75 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
addExpression("filter",new Expression(field,operator,value,(label != null ? label : value)));
}
}
-
+
+ /**
+ * Clears the filter parameter
+ */
public void removeFilters () {
removeParameter("filter");
}
-
+
+ /**
+ * Removes a filter expression by exact attributes
+ *
+ * @param field
+ * @param operator
+ * @param value
+ */
public void removeFilter(String field, String operator, String value) {
removeExpression("filter",new Expression(field, operator, value, null));
}
+ /**
+ * Removes all filter expressions matching a field listed in fieldsToRemove
+ * @param fieldsToRemove
+ */
public void removeFilters(String... fieldsToRemove) {
removeExpressions("filter",fieldsToRemove);
}
-
+
+ /**
+ * Removes filter expressions coming after the expression matching the provided filter expression,
+ * if they have a field listed in fieldsToRemove
. To be used for bread crumb like UI
+ * controls.
+ *
+ * @param field
+ * @param operator
+ * @param value
+ * @param fieldsToRemove
+ */
public void removeFiltersAfter(String field, String operator, String value, String... fieldsToRemove) {
removeExpressionsAfter("filter",new Expression(field,operator,value,null),fieldsToRemove);
}
+ /**
+ * Sets the limit
parameter. See Pazpar2 documentation for details.
+ */
public void setLimit (String limitExpression) {
if (limitExpression != null && limitExpression.length()>0) {
setParameter(new LimitParameter(new Expression(limitExpression)));
}
}
+ /**
+ * Sets the limit
parameter including a label. See Pazpar2 documentation for details.
+ */
public void setLimit(String field, String operator, String value, String label) {
setParameter(new LimitParameter(new Expression(field,operator,value,label)));
}
+ /**
+ * Returns the limit
parameter value.
+ */
public String getLimit () {
return getParameter("limit") == null ? null : ((FilterParameter)getParameter("limit")).getValueWithExpressions();
}
+ /**
+ * Checks if there are any limit expressions matching any of the given expressionFields
+ * @param expressionFields expression fields (left-of-operator entities) to look for
+ * @return true if expression(s) found with any of expressionFields
+ */
public boolean hasLimitExpression(String... expressionFields) {
logger.trace("Checking for limit expression for " + Arrays.deepToString(expressionFields));
for (String field : expressionFields) {
@@ -165,6 +251,11 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
return false;
}
+ /**
+ * Returns the first limit expression of the given type
+ * @param expressionField expression field (left-of-operator entity) to look for
+ * @return the first limit expression found with the field expressionField
or null if none found
+ */
public Expression getOneLimitExpression(String expressionField) {
List exprs = getLimitExpressions(expressionField);
if (exprs != null && exprs.size()>0) {
@@ -177,10 +268,18 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
}
}
+ /**
+ * Return a list of all current limit expressions
+ */
public List getLimitExpressions() {
return getParameter("limit").getExpressions();
}
+ /**
+ * Returns a list of limit expressions with fields that matches on of expressionFields
+ *
+ * @param expressionFields limit expressions to look for
+ */
public List getLimitExpressions(String... expressionFields) {
logger.trace("Checking for limit parameter");
if (parameters.get("limit")!=null) {
@@ -192,6 +291,15 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
}
}
+ /**
+ * Adds a limit expression with a label for display. The limit is added to the end
+ * of an ordered list.
+ *
+ * @param field
+ * @param operator
+ * @param value
+ * @param label
+ */
public void addLimit(String field, String operator, String value, String label) {
if (getParameter("limit") == null) {
setLimit(field, operator, value, label);
@@ -200,59 +308,112 @@ public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand
}
}
+ /**
+ * Clears the limit parameter
+ */
public void removeLimits() {
removeParameter("limit");
}
+ /**
+ * Removes all limit expressions that have fields as listed in fieldsToRemove
+ * @param fieldsToRemove
+ */
public void removeLimits(String... fieldsToRemove) {
removeExpressions("limit",fieldsToRemove);
}
+ /**
+ * Removes a limit expression by exact attributes
+ *
+ * @param field
+ * @param operator
+ * @param value
+ */
public void removeLimit(String field, String operator, String value) {
removeExpression("limit",new Expression(field, operator, value, null));
}
+ /**
+ * Removes limit expressions coming after the provided limit expression, if they have a field listed in
+ * fieldsToRemove
. To be used for bread crumb like UI controls.
+ *
+ * @param field
+ * @param operator
+ * @param value
+ * @param fieldsToRemove
+ */
public void removeLimitsAfter(String field, String operator, String value, String... fieldsToRemove) {
removeExpressionsAfter("limit",new Expression(field,operator,value,null),fieldsToRemove);
}
+ /**
+ * Sets the startrecs
parameter. See Pazpar2 documentation for details.
+ */
public void setStartrecs (String startrecs) {
setParameter(new CommandParameter("startrecs","=",startrecs));
}
+ /**
+ * Returns the startrecs
parameter value.
+ */
public String getStartrecs () {
return getParameterValue("startrecs");
}
+ /**
+ * Sets the maxrecs
parameter. See Pazpar2 documentation for details.
+ */
public void setMaxrecs (String maxrecs) {
setParameter(new CommandParameter("maxrecs","=",maxrecs));
}
+ /**
+ * Returns the maxrecs
parameter value.
+ */
public String getMaxrecs () {
return getParameterValue("maxrecs");
}
+ /**
+ * Sets the sort
parameter. See Pazpar2 documentation for details.
+ */
public void setSort (String sort) {
setParameter(new CommandParameter("sort","=",sort));
}
+ /**
+ * Returns the sort
parameter value.
+ */
public String getSort () {
return getParameterValue("sort");
}
+ /**
+ * Sets the rank
parameter. See Pazpar2 documentation for details.
+ */
public void setRank (String rank) {
setParameter(new CommandParameter("rank","=",rank));
}
+ /**
+ * Returns the rank
parameter value.
+ */
public String getRank () {
return getParameterValue("rank");
}
+ /**
+ * Sets the mergekey
parameter. See Pazpar2 documentation for details.
+ */
public void setMergekey (String mergekey) {
setParameter(new CommandParameter("mergekey","=",mergekey));
}
+ /**
+ * Returns the mergekey
parameter value.
+ */
public String getMergekey () {
return getParameterValue("mergekey");
}