/** | |
* | |
*/ | |
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()); | |
} | |
} |