KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > factories > RoleFactory


1 package com.dotmarketing.factories;
2
3 import java.util.HashSet JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.Set JavaDoc;
7
8 import org.apache.axis.components.logger.LogFactory;
9
10 import com.dotmarketing.cms.factories.PublicCompanyFactory;
11 import com.dotmarketing.util.Config;
12 import com.dotmarketing.util.Logger;
13 import com.liferay.portal.NoSuchRoleException;
14 import com.liferay.portal.ejb.GroupLocalManagerUtil;
15 import com.liferay.portal.ejb.RoleLocalManagerUtil;
16 import com.liferay.portal.ejb.UserLocalManagerUtil;
17 import com.liferay.portal.model.Group;
18 import com.liferay.portal.model.Role;
19 import com.liferay.portal.model.User;
20
21 /**
22  *
23  * @author maria
24  */

25 public class RoleFactory {
26
27     private static Role _cmsAdministratorRole = null;
28
29     /*
30      *
31      * This is taken care of by the portal-ext.properties
32      */

33     public static void createDefaultRoles() {
34         /*
35          * try { Logger.debug(RoleFactory.class, "Checking default roles");
36          * String companyId =
37          * com.dotmarketing.cms.factories.PublicCompanyFactory.getDefaultCompany().getCompanyId();
38          *
39          * if (!RoleLocalManagerUtil.exists(companyId,
40          * Config.getStringProperty("CMS_ADMINISTRATOR_ROLE"))) {
41          * Logger.debug(RoleFactory.class, "Role " +
42          * Config.getStringProperty("CMS_ADMINISTRATOR_ROLE") + " doesn't exist.
43          * Creating it!"); RoleLocalManagerUtil.addRole(companyId,
44          * Config.getStringProperty("CMS_ADMINISTRATOR_ROLE")); }
45          *
46          * if (!RoleLocalManagerUtil.exists(companyId,
47          * Config.getStringProperty("CMS_VIEWER_ROLE"))) {
48          * Logger.debug(RoleFactory.class, "Role " +
49          * Config.getStringProperty("CMS_VIEWER_ROLE") + " doesn't exist.
50          * Creating it!"); RoleLocalManagerUtil.addRole(companyId,
51          * Config.getStringProperty("CMS_VIEWER_ROLE")); } if
52          * (!RoleLocalManagerUtil.exists(companyId,
53          * Config.getStringProperty("CMS_ANONYMOUS_ROLE"))) {
54          * Logger.debug(RoleFactory.class, "Role " +
55          * Config.getStringProperty("CMS_ANONYMOUS_ROLE") + " doesn't exist.
56          * Creating it!"); RoleLocalManagerUtil.addRole(companyId,
57          * Config.getStringProperty("CMS_ANONYMOUS_ROLE")); }
58          * } catch (Exception e) { Logger.error(RoleFactory.class,
59          * "Exception!!!!", e); }
60          */

61     }
62
63     public static Role getRoleByName(String JavaDoc roleName) {
64         Role role = new Role();
65         try {
66             role = RoleLocalManagerUtil.getRoleByName(com.dotmarketing.cms.factories.PublicCompanyFactory
67                     .getDefaultCompany().getCompanyId(), roleName);
68         } catch (Exception JavaDoc e) {
69             Logger.warn(RoleFactory.class, "getRoleByName: Errors getting role: " + roleName);
70         }
71         return role;
72     }
73
74     public static Role getRoleById(String JavaDoc roleId) throws NoSuchRoleException {
75         Role role = new Role();
76         try {
77             role = RoleLocalManagerUtil.getRoleById(roleId);
78         } catch (NoSuchRoleException e) {
79             Logger.warn(RoleFactory.class, "getRoleById: Errors getting role: " + roleId, e);
80             throw e;
81         } catch (Exception JavaDoc e) {
82             Logger.warn(RoleFactory.class, "getRoleById: Errors getting role: " + roleId, e);
83         }
84         return role;
85     }
86
87     /*
88      * This shuold ultimatly be cached
89      */

90     @SuppressWarnings JavaDoc("unchecked")
91     public static List JavaDoc<Role> getAllRolesForUser(String JavaDoc userId) {
92         List JavaDoc<Role> myRoles = null;
93         List JavaDoc<Group> myGroups = null;
94
95         try {
96             myRoles = UserLocalManagerUtil.getRoles(userId);
97         } catch (Exception JavaDoc e) {
98         }
99
100         // get a list of groups that the user belongs to
101
try {
102             myGroups = UserLocalManagerUtil.getGroups(userId);
103         } catch (Exception JavaDoc e) {
104         }
105
106         // add the group roles to the individuals list
107
Iterator JavaDoc i = myGroups.iterator();
108         while (i.hasNext()) {
109             Group g = (Group) i.next();
110             // get a list of groups that the user belongs to
111
try {
112                 List JavaDoc<Role> groupRoles = GroupLocalManagerUtil.getRoles(g.getGroupId());
113                 myRoles.addAll(groupRoles);
114             } catch (Exception JavaDoc e) {
115             }
116
117         }
118         return myRoles;
119
120     }
121
122     /*
123      * Gets users with the given role or with a group that have this role
124      */

125     @SuppressWarnings JavaDoc("unchecked")
126     public static Set JavaDoc<User> getUsers(String JavaDoc roleId) {
127         Set JavaDoc<User> users = new HashSet JavaDoc<User>();
128
129         try {
130             users.addAll(RoleLocalManagerUtil.getUsers(roleId));
131         } catch (Exception JavaDoc e) {
132         }
133
134         // get a list of groups that the user belongs to
135
try {
136             List JavaDoc<Group> groups = (List JavaDoc<Group>) RoleLocalManagerUtil.getGroups(roleId);
137             for (Group group : groups) {
138                 users.addAll(GroupLocalManagerUtil.getUsers(group.getGroupId()));
139             }
140         } catch (Exception JavaDoc e) {
141         }
142         return users;
143
144     }
145
146     public static Role getCMSAdministratorRole() {
147         if (_cmsAdministratorRole == null) {
148             try {
149                 String JavaDoc companyId = PublicCompanyFactory.getDefaultCompanyId();
150                 _cmsAdministratorRole = RoleLocalManagerUtil.getRoleByName(companyId, Config
151                         .getStringProperty("CMS_ADMINISTRATOR_ROLE"));
152             } catch (Exception JavaDoc e) {
153                 LogFactory.getLog("RoleFactory").error("Can't find CMS_ADMINISTRATOR_ROLE !!!");
154                 e.printStackTrace();
155             }
156
157         }
158         return _cmsAdministratorRole;
159
160     }
161
162     public static boolean userHasRole(User user, String JavaDoc roleName) {
163
164         Iterator JavaDoc rolesIt = getAllRolesForUser(user.getUserId()).iterator();
165         while (rolesIt.hasNext()) {
166             Role role = (Role) rolesIt.next();
167             if (role.getName().equals(roleName)) {
168                 return true;
169             }
170         }
171         return false;
172     }
173 }
Popular Tags