package org.infinispan.objectfilter.impl;
import java.util.Collections;
import java.util.Comparator;
import java.util.Map;
import java.util.Set;
import org.infinispan.objectfilter.ObjectFilter;
import org.infinispan.objectfilter.SortField;
import org.infinispan.objectfilter.impl.logging.Log;
import org.infinispan.objectfilter.impl.syntax.parser.IckleParsingResult;
import org.jboss.logging.Logger;
/**
* @author anistor@redhat.com
* @since 9.0
*/
abstract class ObjectFilterBase<TypeMetadata> implements ObjectFilter {
private static final Log log = Logger.getMessageLogger(Log.class, ObjectFilterBase.class.getName());
protected final IckleParsingResult<TypeMetadata> parsingResult;
protected final Map<String, Object> namedParameters;
protected ObjectFilterBase(IckleParsingResult<TypeMetadata> parsingResult, Map<String, Object> namedParameters) {
this.parsingResult = parsingResult;
this.namedParameters = namedParameters != null ? Collections.unmodifiableMap(namedParameters) : null;
}
protected void validateParameters(Map<String, Object> namedParameters) {
if (namedParameters == null) {
throw log.getNamedParametersCannotBeNull();
}
for (String paramName : getParameterNames()) {
if (namedParameters.get(paramName) == null) {
throw new IllegalArgumentException("Query parameter '" + paramName + "' was not set");
}
}
}
@Override
public String getEntityTypeName() {
return parsingResult.getTargetEntityName();
}
@Override
public String[] getProjection() {
return null;
}
@Override
public Class<?>[] getProjectionTypes() {
return null;
}
@Override
public SortField[] getSortFields() {
return null;
}
@Override
public Comparator<Comparable[]> getComparator() {
return null;
}
@Override
public Set<String> getParameterNames() {
return parsingResult.getParameterNames();
}
@Override
public Map<String, Object> getParameters() {
return namedParameters;
}
}