/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.vertical.engine.filters;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import com.enonic.vertical.engine.BaseEngine;
import com.enonic.vertical.engine.handlers.CategoryHandler;
import com.enonic.vertical.engine.handlers.GroupHandler;
import com.enonic.cms.core.security.user.User;
public final class UnitFilter
implements Filter
{
private User user;
public UnitFilter( User user )
{
this.user = user;
}
public boolean filter( BaseEngine engine, ResultSet resultSet )
throws SQLException
{
// allways return false if user is enterprise admin
if ( user.isEnterpriseAdmin() )
{
return false;
}
int unitKey = resultSet.getInt( "uni_lKey" );
GroupHandler gHandler = engine.getGroupHandler();
String[] groups = gHandler.getAllGroupMembershipsForUser( user );
Arrays.sort( groups );
String eaGroupKey = gHandler.getEnterpriseAdministratorGroupKey();
String saGroupKey = gHandler.getAdminGroupKey();
// allways return false if user is enterprise or site admin
if ( Arrays.binarySearch( groups, eaGroupKey ) >= 0 || Arrays.binarySearch( groups, saGroupKey ) >= 0 )
{
return false;
}
Connection con = resultSet.getStatement().getConnection();
CategoryHandler categoryHandler = engine.getCategoryHandler();
boolean isCategories;
isCategories = categoryHandler.hasCategoriesWithRights( con, user, unitKey, -1 );
return !isCategories;
}
}