org.hibernate.cache.spi.FilterKey Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
Hibernate's core ORM functionality
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.cache.spi;
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.hibernate.Filter;
import org.hibernate.engine.spi.TypedValue;
import org.hibernate.internal.FilterImpl;
import org.hibernate.type.Type;
/**
* Allows cached queries to be keyed by enabled filters.
*
* @author Gavin King
*/
public final class FilterKey implements Serializable {
private final String filterName;
private final Map filterParameters = new HashMap();
FilterKey(String name, Map params, Map types) {
filterName = name;
for ( Map.Entry paramEntry : params.entrySet() ) {
final Type type = types.get( paramEntry.getKey() );
filterParameters.put( paramEntry.getKey(), new TypedValue( type, paramEntry.getValue() ) );
}
}
@Override
public int hashCode() {
int result = 13;
result = 37 * result + filterName.hashCode();
result = 37 * result + filterParameters.hashCode();
return result;
}
@Override
public boolean equals(Object other) {
if ( !(other instanceof FilterKey) ) {
return false;
}
final FilterKey that = (FilterKey) other;
return that.filterName.equals( filterName )
&& that.filterParameters.equals( filterParameters );
}
@Override
public String toString() {
return "FilterKey[" + filterName + filterParameters + ']';
}
/**
* Constructs a number of FilterKey instances, given the currently enabled filters
*
* @param enabledFilters The currently enabled filters
*
* @return The filter keys, one per enabled filter
*/
public static Set createFilterKeys(Map enabledFilters) {
if ( enabledFilters.size() == 0 ) {
return null;
}
final Set result = new HashSet();
for ( Filter filter : enabledFilters.values() ) {
final FilterKey key = new FilterKey(
filter.getName(),
( (FilterImpl) filter ).getParameters(),
filter.getFilterDefinition().getParameterTypes()
);
result.add( key );
}
return result;
}
}