1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.grafana.service;
35
36 import fr.paris.lutece.plugins.grafana.business.Dashboard;
37 import fr.paris.lutece.plugins.grafana.business.DashboardHome;
38 import fr.paris.lutece.plugins.grafana.utils.constants.GrafanaConstants;
39 import fr.paris.lutece.portal.service.rbac.Permission;
40 import fr.paris.lutece.portal.service.rbac.ResourceIdService;
41 import fr.paris.lutece.portal.service.rbac.ResourceType;
42 import fr.paris.lutece.portal.service.rbac.ResourceTypeManager;
43 import fr.paris.lutece.util.ReferenceList;
44 import java.util.List;
45 import java.util.Locale;
46
47 public class DashboardIdService extends ResourceIdService
48 {
49 private static final String PROPERTY_LABEL_DASHBOARD_RESOURCE_TYPE = "grafana.rbac.dashboard.resourceType";
50 private static final String PROPERTY_LABEL_VIEW = "grafana.rbac.dashboard.permission.view";
51
52
53
54
55 @Override
56 public void register( )
57 {
58 ResourceType rt = new ResourceType( );
59 rt.setResourceIdServiceClass( DashboardIdService.class.getName( ) );
60 rt.setPluginName( GrafanaConstants.PLUGIN_NAME );
61 rt.setResourceTypeKey( GrafanaConstants.DASHBOARD_RESOURCE_TYPE );
62 rt.setResourceTypeLabelKey( PROPERTY_LABEL_DASHBOARD_RESOURCE_TYPE );
63
64 Permission p = new Permission( );
65 p.setPermissionKey( GrafanaConstants.DASHBOARD_PERMISSION_VIEW );
66 p.setPermissionTitleKey( PROPERTY_LABEL_VIEW );
67 rt.registerPermission( p );
68
69 ResourceTypeManager.registerResourceType( rt );
70 }
71
72
73
74
75 @Override
76 public ReferenceList getResourceIdList( Locale locale )
77 {
78 List<Dashboard> listDashboards = DashboardHome.getDashboardsList( );
79
80 return ReferenceList.convert( listDashboards, "id", "title", true );
81 }
82
83
84
85
86 @Override
87 public String getTitle( String strId, Locale locale )
88 {
89 Dashboard dashboard = DashboardHome.findByPrimaryKey( Integer.parseInt( strId ) );
90
91 return dashboard.getTitle( );
92 }
93 }