WorkflowResourceIdService.java
package fr.paris.lutece.plugins.workflow.service;
import fr.paris.lutece.plugins.workflow.utils.WorkflowUtils;
import fr.paris.lutece.plugins.workflowcore.business.workflow.Workflow;
import fr.paris.lutece.plugins.workflowcore.business.workflow.WorkflowFilter;
import fr.paris.lutece.plugins.workflowcore.service.workflow.IWorkflowService;
import fr.paris.lutece.plugins.workflowcore.service.workflow.WorkflowService;
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.portal.service.spring.SpringContextService;
import fr.paris.lutece.util.ReferenceList;
import java.util.List;
import java.util.Locale;
/**
*
* class WorkflowResourceIdService
*
*/
public class WorkflowResourceIdService extends ResourceIdService
{
public static final String RESOURCE_TYPE_KEY = "WORKFLOW";
public static final String PERM_WORKFLOW_READ = "PERM_WORKFLOW_READ";
public static final String PERM_WORKFLOW_EDIT = "PERM_WORKFLOW_EDIT";
public static final String PERM_WORKFLOW_EDIT_STATES = "PERM_WORKFLOW_EDIT_STATES";
public static final String PERM_WORKFLOW_EDIT_ACTIONS = "PERM_WORKFLOW_EDIT_ACTIONS";
public static final String PERM_WORKFLOW_DELETE = "PERM_WORKFLOW_DELETE";
public static final String PERM_WORKFLOW_DELETE_STATES = "PERM_WORKFLOW_DELETE_STATES";
public static final String PERM_WORKFLOW_DELETE_ACTIONS = "PERM_WORKFLOW_DELETE_ACTIONS";
private static final String PROPERTY_LABEL_RESOURCE_TYPE = "workflow.permission.label.resource_type_workflow";
private static final String PROPERTY_LABEL_READ = "workflow.permission.label.read_workflow";
private static final String PROPERTY_LABEL_EDIT = "workflow.permission.label.edit_workflow";
private static final String PROPERTY_LABEL_EDIT_STATES = "workflow.permission.label.edit_workflow_states";
private static final String PROPERTY_LABEL_EDIT_ACTIONS = "workflow.permission.label.edit_workflow_actions";
private static final String PROPERTY_LABEL_DELETE = "workflow.permission.label.delete_workflow";
private static final String PROPERTY_LABEL_DELETE_STATES = "workflow.permission.label.delete_workflow_states";
private static final String PROPERTY_LABEL_DELETE_ACTIONS = "workflow.permission.label.delete_workflow_actions";
public WorkflowResourceIdService( )
{
setPluginName( WorkflowPlugin.PLUGIN_NAME );
}
@Override
public void register( )
{
ResourceType rt = new ResourceType( );
rt.setResourceIdServiceClass( getClass( ).getName( ) );
rt.setPluginName( WorkflowPlugin.PLUGIN_NAME );
rt.setResourceTypeKey( RESOURCE_TYPE_KEY );
rt.setResourceTypeLabelKey( PROPERTY_LABEL_RESOURCE_TYPE );
Permission p = new Permission( );
p.setPermissionKey( PERM_WORKFLOW_READ );
p.setPermissionTitleKey( PROPERTY_LABEL_READ );
rt.registerPermission( p );
p = new Permission( );
p.setPermissionKey( PERM_WORKFLOW_EDIT );
p.setPermissionTitleKey( PROPERTY_LABEL_EDIT );
rt.registerPermission( p );
p = new Permission( );
p.setPermissionKey( PERM_WORKFLOW_EDIT_STATES );
p.setPermissionTitleKey( PROPERTY_LABEL_EDIT_STATES );
rt.registerPermission( p );
p = new Permission( );
p.setPermissionKey( PERM_WORKFLOW_EDIT_ACTIONS );
p.setPermissionTitleKey( PROPERTY_LABEL_EDIT_ACTIONS );
rt.registerPermission( p );
p = new Permission( );
p.setPermissionKey( PERM_WORKFLOW_DELETE );
p.setPermissionTitleKey( PROPERTY_LABEL_DELETE );
rt.registerPermission( p );
p = new Permission( );
p.setPermissionKey( PERM_WORKFLOW_DELETE_STATES );
p.setPermissionTitleKey( PROPERTY_LABEL_DELETE_STATES );
rt.registerPermission( p );
p = new Permission( );
p.setPermissionKey( PERM_WORKFLOW_DELETE_ACTIONS );
p.setPermissionTitleKey( PROPERTY_LABEL_DELETE_ACTIONS );
rt.registerPermission( p );
ResourceTypeManager.registerResourceType( rt );
}
@Override
public ReferenceList getResourceIdList( Locale locale )
{
IWorkflowService workflowService = SpringContextService.getBean( WorkflowService.BEAN_SERVICE );
List<Workflow> listWorkflow = workflowService.getListWorkflowsByFilter( new WorkflowFilter( ) );
ReferenceList list = new ReferenceList( );
listWorkflow.forEach( wf -> list.addItem( wf.getId( ), wf.getName( ) ) );
return list;
}
@Override
public String getTitle( String strId, Locale locale )
{
IWorkflowService workflowService = SpringContextService.getBean( WorkflowService.BEAN_SERVICE );
int id = WorkflowUtils.convertStringToInt( strId );
Workflow wf = workflowService.findByPrimaryKey( id );
return wf != null ? wf.getName( ) : null;
}
}