AccessImportBatchResourceIdService.java

package fr.paris.lutece.plugins.identityimport.rbac;

import fr.paris.lutece.plugins.identityimport.business.Client;
import fr.paris.lutece.plugins.identityimport.business.ClientHome;
import fr.paris.lutece.portal.service.rbac.Permission;
import fr.paris.lutece.portal.service.rbac.ResourceIdService;
import fr.paris.lutece.portal.service.rbac.ResourceType;
import fr.paris.lutece.portal.service.rbac.ResourceTypeManager;
import fr.paris.lutece.util.ReferenceList;

import java.util.Locale;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class AccessImportBatchResourceIdService extends ResourceIdService {

    private static final String PLUGIN_NAME = "identityimport";
    private static final String PROPERTY_LABEL_RESOURCE_TYPE = "identityimport.rbac.access.import.batch.label";
    private static final String PROPERTY_LABEL_READ = "identityimport.rbac.access.import.batch.permission.read";
    private static final String PROPERTY_LABEL_WRITE = "identityimport.rbac.access.import.batch.permission.write";
    private static final String PROPERTY_LABEL_CREATE = "identityimport.rbac.access.import.batch.permission.create";
    private static final String PROPERTY_LABEL_MANUAL_TREATMENT = "identityimport.rbac.access.import.batch.permission.manual.treatment";

    @Override
    public void register() {
        final ResourceType rt = new ResourceType( );
        rt.setResourceIdServiceClass( this.getClass().getName() );
        rt.setPluginName( PLUGIN_NAME );
        rt.setResourceTypeKey( AccessImportBatchResource.RESOURCE_TYPE );
        rt.setResourceTypeLabelKey( PROPERTY_LABEL_RESOURCE_TYPE );

        final Permission permRead = new Permission( );
        permRead.setPermissionKey( AccessImportBatchResource.PERMISSION_READ );
        permRead.setPermissionTitleKey( PROPERTY_LABEL_READ );
        rt.registerPermission( permRead );

        final Permission permWrite = new Permission( );
        permWrite.setPermissionKey( AccessImportBatchResource.PERMISSION_WRITE );
        permWrite.setPermissionTitleKey( PROPERTY_LABEL_WRITE );
        rt.registerPermission( permWrite );

        final Permission permCreate = new Permission( );
        permCreate.setPermissionKey( AccessImportBatchResource.PERMISSION_CREATE );
        permCreate.setPermissionTitleKey( PROPERTY_LABEL_CREATE );
        rt.registerPermission( permCreate );

        final Permission permManual = new Permission( );
        permManual.setPermissionKey( AccessImportBatchResource.PERMISSION_MANUAL_TREATMENT );
        permManual.setPermissionTitleKey( PROPERTY_LABEL_MANUAL_TREATMENT );
        rt.registerPermission( permManual );

        ResourceTypeManager.registerResourceType(rt);
    }

    @Override
    public ReferenceList getResourceIdList(final Locale locale) {
        final Map<String, String> importClientCodes =
                ClientHome.getClientsList().stream().map(Client::getClientCode).distinct().collect(Collectors.toMap(Function.identity(), Function.identity()));
        return ReferenceList.convert(importClientCodes);
    }

    @Override
    public String getTitle(final String strClientCode, final Locale locale) {
        return strClientCode;
    }
}