/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.builder; import java.util.Collection; import java.util.Map; import java.util.Set; import com.google.common.collect.Sets; import com.enonic.cms.core.content.access.ContentAccessEntity; import com.enonic.cms.core.content.category.CategoryAccessEntity; import com.enonic.cms.core.security.group.GroupKey; public class ContentIndexDataAccessRightsFactory extends IndexFieldNameConstants { public void create( final ContentIndexData contentIndexData, final Collection<ContentAccessEntity> contentAccessRights, Map<GroupKey, CategoryAccessEntity> categoryAccessRights ) { if ( contentAccessRights == null ) { return; } final Set<String> readAccess = Sets.newTreeSet(); final Set<String> deleteAccess = Sets.newTreeSet(); final Set<String> updateAccess = Sets.newTreeSet(); final Set<String> browseAccess = Sets.newTreeSet(); final Set<String> approveAccess = Sets.newTreeSet(); final Set<String> administrateAccess = Sets.newTreeSet(); for ( final ContentAccessEntity contentAccess : contentAccessRights ) { final GroupKey group = contentAccess.getGroup().getGroupKey(); final String groupKey = group.toString(); if ( contentAccess.isReadAccess() ) { readAccess.add( groupKey ); } if ( contentAccess.isUpdateAccess() ) { updateAccess.add( groupKey ); } if ( contentAccess.isDeleteAccess() ) { deleteAccess.add( groupKey ); } } for ( GroupKey categoryAccessGroup : categoryAccessRights.keySet() ) { CategoryAccessEntity categoryAccess = categoryAccessRights.get( categoryAccessGroup ); final String groupKey = categoryAccessGroup.toString(); if ( categoryAccess.givesAdminBrowse() ) { browseAccess.add( groupKey ); } if ( categoryAccess.givesApprove() ) { approveAccess.add( groupKey ); } if ( categoryAccess.givesAdministrate() ) { administrateAccess.add( groupKey ); } } contentIndexData.addContentIndexDataElement( CONTENT_ACCESS_READ_FIELDNAME, readAccess, false ); contentIndexData.addContentIndexDataElement( CONTENT_ACCESS_UPDATE_FIELDNAME, updateAccess, false ); contentIndexData.addContentIndexDataElement( CONTENT_ACCESS_DELETE_FIELDNAME, deleteAccess, false ); contentIndexData.addContentIndexDataElement( CONTENT_CATEGORY_ACCESS_BROWSE_FIELDNAME, browseAccess, false ); contentIndexData.addContentIndexDataElement( CONTENT_CATEGORY_ACCESS_APPROVE_FIELDNAME, approveAccess, false ); contentIndexData.addContentIndexDataElement( CONTENT_CATEGORY_ACCESS_ADMINISTRATE_FIELDNAME, administrateAccess, false ); } }