blob: ae685b993a822364a6bb55a6890c9c8181f8ea2d [file] [log] [blame]
/**
*
*/
package org.eclipse.smila.solr.params;
import org.apache.commons.lang.StringUtils;
import org.apache.solr.client.solrj.SolrRequest.METHOD;
import org.eclipse.smila.datamodel.Any;
import org.eclipse.smila.datamodel.AnyMap;
import org.eclipse.smila.datamodel.Record;
import org.eclipse.smila.datamodel.util.AnyUtil;
import org.eclipse.smila.search.api.QueryConstants;
import org.eclipse.smila.solr.params.UpdateParams.Operation;
/**
* @author pwissel
*
*/
public class ParamsHelper {
private ParamsHelper() {
; // prevent instance creation
}
public static Any setSubParam(final Record target, final String subMapName, final String key, final Object value) {
return setSubParam(target.getMetadata(), subMapName, key, value);
}
public static Any setSubParam(final AnyMap target, final String subMapName, final String key, final Object value) {
final Any val = convertToAny(key, value);
return getSub(target, subMapName).put(key, val);
}
public static Any setSolrParam(final Record target, final String key, final Object value) {
return setSolrParam(target.getMetadata(), key, value);
}
public static Any setSolrParam(final AnyMap target, final String key, final Object value) {
final Any val = convertToAny(key, value);
return getSolr(target).put(key, val);
}
public static Any setRootParam(final Record target, final String key, final Object value) {
return setRootParam(target.getMetadata(), key, value);
}
public static Any setRootParam(final AnyMap target, final String key, final Object value) {
final Any val = convertToAny(key, value);
return getRoot(target).put(key, val);
}
private static AnyMap getSub(final AnyMap target, final String sub) {
return getSolr(target).getMap(sub, true);
}
private static AnyMap getSolr(final AnyMap target) {
return getRoot(target).getMap(SolrParams.SOLR_PARAMETER_ATTRIBUTE, true);
}
private static AnyMap getRoot(final AnyMap target) {
if (target == null) {
throw new IllegalArgumentException("Target must not be null.");
}
return target;
}
private static Any convertToAny(final String key, final Object value) {
if (StringUtils.isBlank(key)) {
throw new IllegalArgumentException("Key must not be blank.");
}
if (value == null) {
throw new IllegalArgumentException("Value must not be null.");
}
return AnyUtil.objectToAny(value);
}
public static Any setUpdateAttachments(final Record target, final boolean attachments) {
return setUpdateAttachments(target.getMetadata(), attachments);
}
public static Any setUpdateAttachments(final AnyMap target, final boolean attachments) {
return setSubParam(target, UpdateParams.UPDATE, UpdateParams.ATTACHMENTS, attachments);
}
public static Any setUpdateCommitWithinMs(final Record target, final int commitWithinMs) {
return setUpdateCommitWithinMs(target.getMetadata(), commitWithinMs);
}
public static Any setUpdateCommitWithinMs(final AnyMap target, final int commitWithinMs) {
return setSubParam(target, UpdateParams.UPDATE, UpdateParams.COMMIT_WITHIN_MS, commitWithinMs);
}
public static Any setUpdateDocumentBoost(final Record target, final float documentBoost) {
return setUpdateDocumentBoost(target.getMetadata(), documentBoost);
}
public static Any setUpdateDocumentBoost(final AnyMap target, final float documentBoost) {
return setSubParam(target, UpdateParams.UPDATE, UpdateParams.DOCUMENT_BOOST, documentBoost);
}
public static Any setUpdateMapping(final Record target, final AnyMap mapping) {
return setUpdateMapping(target.getMetadata(), mapping);
}
public static Any setUpdateMapping(final AnyMap target, final AnyMap mapping) {
return setSubParam(target, UpdateParams.UPDATE, UpdateParams.MAPPING, mapping);
}
public static Any setUpdateOperation(final Record target, final Operation operation) {
return setUpdateOperation(target.getMetadata(), operation);
}
public static Any setUpdateOperation(final AnyMap target, final Operation operation) {
return setSubParam(target, UpdateParams.UPDATE, UpdateParams.OPERATION, operation.toString());
}
public static Any setUpdateDeleteQuery(final Record target, final String deleteQuery) {
return setUpdateDeleteQuery(target.getMetadata(), deleteQuery);
}
public static Any setUpdateDeleteQuery(final AnyMap target, final String deleteQuery) {
return setSubParam(target, UpdateParams.UPDATE, UpdateParams.DELETE_QUERY, deleteQuery);
}
public static Any setUpdateIndexName(final Record target, final String index) {
return setUpdateIndexName(target.getMetadata(), index);
}
public static Any setUpdateIndexName(final AnyMap target, final String index) {
return setRootParam(target, QueryConstants.INDEXNAME, index);
}
public static Any setSearchMethod(final Record target, final METHOD method) {
return setSearchMethod(target.getMetadata(), method);
}
public static Any setSearchMethod(final AnyMap target, final METHOD method) {
return setSubParam(target, SearchParams.SEARCH, SearchParams.HTTP_METHOD, method.toString());
}
}