Remove an unused filter, and several unused or empty unit test classes, with data files.

This commit is contained in:
j2blake 2011-07-18 18:57:55 +00:00
parent fbf484b537
commit cf13f22f36
9 changed files with 0 additions and 2223 deletions

View file

@ -1,278 +0,0 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.dao.filtering.filters;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import net.sf.jga.fn.UnaryFunctor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.beans.DataProperty;
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.beans.ResourceBean;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.beans.BaseResourceBean.RoleLevel;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
public class HiddenFromDisplayBelowRoleLevelFilter extends VitroFiltersImpl {
protected final RoleLevel userRole;
protected final WebappDaoFactory wdf;
/* looking up data properties was taking %11 of search index build time
* So this is a cache of DataProperty objects for this filter */
protected final Map<String,DataProperty> dataPropertyMap;
/* Controls if whether to filter out individuals if the classes that
* the individual belongs to are not visible. This has been
* a minor performance problem. */
protected final static boolean FILTER_ON_INDIVIDUAL_VCLASSES = false;
private final static Log log = LogFactory.getLog(HiddenFromDisplayBelowRoleLevelFilter.class);
public HiddenFromDisplayBelowRoleLevelFilter( RoleLevel role , WebappDaoFactory wdf ){
super();
if( role == null ) {
throw new IllegalArgumentException("HiddenFromRoleLevelFilter must have a RoleLevel ");
} else {
log.debug("initializing HiddenFromDisplayBelowRoleLevelFilter with role "+role.getShorthand());
}
if( wdf == null )
throw new IllegalArgumentException("HiddenFromRoleLevelFilter must have a DaoFactory");
this.userRole = role;
this.wdf = wdf;
this.dataPropertyMap = new TreeMap<String,DataProperty>();
setIndividualFilter(new IndividualRoleFilter() );
setClassFilter(new RoleFilter<VClass>());
setDataPropertyFilter(new RoleFilter<DataProperty>() );
setObjectPropertyFilter(new RoleFilter<ObjectProperty>() );
setDataPropertyStatementFilter(new DataPropertyStatementRoleFilter<DataPropertyStatement>( ) );
setObjectPropertyStatementFilter(new ObjectPropertyStatementRoleFilter<ObjectPropertyStatement>() );
}
private boolean sameLevelOrHigher( RoleLevel other ){
if( other == null )
return true; //default to visible
int comparison = userRole.compareTo(other);
if (log.isDebugEnabled()) {
if (comparison == 0) {
log.debug("user role "+userRole.getShorthand()+" judged equal to current user role "+other.getShorthand());
} else if (comparison > 0) {
log.debug("user role "+userRole.getShorthand()+" judged greater than current user role "+other.getShorthand());
} else if (comparison < 0) {
log.debug("user role "+userRole.getShorthand()+" judged less than current user role "+other.getShorthand());
}
}
return ( comparison >= 0 );
}
private boolean canViewOddItems( ){
return sameLevelOrHigher( RoleLevel.DB_ADMIN ) ;
}
@SuppressWarnings("serial")
private class RoleFilter<E extends ResourceBean> extends UnaryFunctor<E,Boolean>{
@Override
public Boolean fn(E resource) {
try{
if( resource == null )
return canViewOddItems();
else
log.debug("checking hidden status for \"" + resource.getURI() + "\"");
return sameLevelOrHigher( resource.getHiddenFromDisplayBelowRoleLevel() );
}catch(RuntimeException th){
log.warn("Error checking hidden status for " + resource, th);
return false;
}
}
}
@SuppressWarnings("serial")
private class IndividualRoleFilter extends UnaryFunctor<Individual,Boolean>{
@Override
public Boolean fn(Individual ind){
if( ind == null ) {
log.debug("checking hidden status for null Individual");
return canViewOddItems();
}
log.debug("checking hidden status for Individual \"" + ind.getName() + "\"");
try{
if( ! sameLevelOrHigher( ind.getHiddenFromDisplayBelowRoleLevel() ) )
return false;
if( FILTER_ON_INDIVIDUAL_VCLASSES ){
List<VClass> vclasses = ind.getVClasses(true);
if( vclasses == null ){
VClass clazz = wdf.getVClassDao().getVClassByURI(ind.getVClassURI());
if( clazz == null )
return canViewOddItems();
else
return sameLevelOrHigher(clazz.getHiddenFromDisplayBelowRoleLevel() );
}
for( VClass vclass : vclasses ){
if( ! sameLevelOrHigher(vclass.getHiddenFromDisplayBelowRoleLevel() ) )
return false;
}
}
return true;
}catch(RuntimeException ex){
log.warn("Error checking hidden status for " + ind.getName() );
return false;
}
}
}
@SuppressWarnings("serial")
private class DataPropertyStatementRoleFilter<E extends DataPropertyStatement>
extends UnaryFunctor<E,Boolean>{
@Override
public Boolean fn(E dPropStmt) {
if( dPropStmt == null ) return false; //don't know why this would happen
log.debug("checking hidden status for data property statement \"" + dPropStmt.getDatapropURI() + "\"");
try {
String propUri = dPropStmt.getDatapropURI();
if (propUri == null) {
if ( ! canViewOddItems() ){ return false; }
} else {
DataProperty prop = null;
if( dataPropertyMap.containsKey(propUri) ){
prop = dataPropertyMap.get(propUri);
}else{
prop = wdf.getDataPropertyDao().getDataPropertyByURI(propUri);
dataPropertyMap.put(propUri, prop);
}
if( prop == null ) {
if( ! canViewOddItems() ){ return false; }
}else{
if( sameLevelOrHigher( prop.getHiddenFromDisplayBelowRoleLevel() ) == false)
return false;
}
}
Individual subject = dPropStmt.getIndividual();
if( subject == null ) {
if( ! canViewOddItems() ){ return false; }
}else{
if( sameLevelOrHigher( subject.getHiddenFromDisplayBelowRoleLevel() ) == false)
return false;
}
if( FILTER_ON_INDIVIDUAL_VCLASSES ){
VClass subjectClass =
(subject.getVClass() != null ? subject.getVClass() : wdf.getVClassDao().getVClassByURI(subject.getVClassURI()));
if( subjectClass == null ){
if( ! canViewOddItems() ){ return false; }
}else{
if( sameLevelOrHigher( subjectClass.getHiddenFromDisplayBelowRoleLevel() ) == false )
return false;
}
}
} catch (RuntimeException e) {
log.warn("Error checking hidden status of data property statement \"" + dPropStmt.getDatapropURI() +"\"", e);
return false;
}
return true;
}
}
@SuppressWarnings("serial")
private class ObjectPropertyStatementRoleFilter<E extends ObjectPropertyStatement>
extends UnaryFunctor<E,Boolean>{
@Override
public Boolean fn(E stmt) {
if( stmt == null ) {
log.debug("checking hidden status for null object property statement");
return false;
}
log.debug("checking hidden status for object property statement \"" + stmt.getPropertyURI() + "\"");
try {
ObjectProperty prop = stmt.getProperty();
if( prop == null ){
String objPropUri = stmt.getPropertyURI();
prop = wdf.getObjectPropertyDao().getObjectPropertyByURI(objPropUri);
}
if (prop == null){
if (!canViewOddItems()) {
return false;
}
} else {
if (sameLevelOrHigher(prop.getHiddenFromDisplayBelowRoleLevel()) == false){
return false;
}
}
Individual subject =
(stmt.getSubject() != null ?
stmt.getSubject()
: wdf.getIndividualDao().getIndividualByURI( stmt.getSubjectURI()));
if (subject == null) {
if (!canViewOddItems()) {
return false;
}
} else {
if (sameLevelOrHigher(subject
.getHiddenFromDisplayBelowRoleLevel()) == false)
return false;
}
Individual object =
(stmt.getObject() != null ?
stmt.getObject()
: wdf.getIndividualDao().getIndividualByURI( stmt.getObjectURI() ));
if (object == null) {
if (!canViewOddItems()) {
return false;
}
} else {
if (sameLevelOrHigher(object
.getHiddenFromDisplayBelowRoleLevel()) == false)
return false;
}
if( FILTER_ON_INDIVIDUAL_VCLASSES ){
VClass subjectClass =
(subject.getVClass() != null ? subject.getVClass() : wdf.getVClassDao().getVClassByURI(subject.getVClassURI()));
if( subjectClass == null ){
if( ! canViewOddItems() ){ return false; }
}else{
if( sameLevelOrHigher( subjectClass.getHiddenFromDisplayBelowRoleLevel() ) == false )
return false;
}
VClass objectClass =
(object.getVClass() != null ? object.getVClass() : wdf.getVClassDao().getVClassByURI(object.getVClassURI()));
if( objectClass == null ){
if( ! canViewOddItems() ){ return false; }
}else{
if( sameLevelOrHigher( objectClass.getHiddenFromDisplayBelowRoleLevel() ) == false )
return false;
}
}
} catch (RuntimeException e) {
log.warn("Error checking hidden status of object property statement \"" + stmt.getPropertyURI()+"\"", e);
return false;
}
return true;
}
}
}