001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.DuplicateTeamException;
018 import com.liferay.portal.TeamNameException;
019 import com.liferay.portal.kernel.dao.orm.QueryUtil;
020 import com.liferay.portal.kernel.exception.PortalException;
021 import com.liferay.portal.kernel.exception.SystemException;
022 import com.liferay.portal.kernel.util.CharPool;
023 import com.liferay.portal.kernel.util.OrderByComparator;
024 import com.liferay.portal.kernel.util.Validator;
025 import com.liferay.portal.model.ResourceConstants;
026 import com.liferay.portal.model.Role;
027 import com.liferay.portal.model.RoleConstants;
028 import com.liferay.portal.model.Team;
029 import com.liferay.portal.model.User;
030 import com.liferay.portal.service.base.TeamLocalServiceBaseImpl;
031
032 import java.util.Date;
033 import java.util.LinkedHashMap;
034 import java.util.List;
035
036
039 public class TeamLocalServiceImpl extends TeamLocalServiceBaseImpl {
040
041 public Team addTeam(
042 long userId, long groupId, String name, String description)
043 throws PortalException, SystemException {
044
045
046
047 User user = userPersistence.findByPrimaryKey(userId);
048 Date now = new Date();
049
050 validate(0, groupId, name);
051
052 long teamId = counterLocalService.increment();
053
054 Team team = teamPersistence.create(teamId);
055
056 team.setUserId(userId);
057 team.setCompanyId(user.getCompanyId());
058 team.setUserName(user.getFullName());
059 team.setCreateDate(now);
060 team.setModifiedDate(now);
061 team.setGroupId(groupId);
062 team.setName(name);
063 team.setDescription(description);
064
065 teamPersistence.update(team);
066
067
068
069 resourceLocalService.addResources(
070 user.getCompanyId(), groupId, userId, Team.class.getName(),
071 team.getTeamId(), false, true, true);
072
073
074
075 roleLocalService.addRole(
076 userId, Team.class.getName(), teamId, String.valueOf(teamId), null,
077 null, RoleConstants.TYPE_PROVIDER, null, null);
078
079 return team;
080 }
081
082 @Override
083 public Team deleteTeam(long teamId)
084 throws PortalException, SystemException {
085
086 Team team = teamPersistence.findByPrimaryKey(teamId);
087
088 return deleteTeam(team);
089 }
090
091 @Override
092 public Team deleteTeam(Team team) throws PortalException, SystemException {
093
094
095
096 teamPersistence.remove(team);
097
098
099
100 resourceLocalService.deleteResource(
101 team.getCompanyId(), Team.class.getName(),
102 ResourceConstants.SCOPE_INDIVIDUAL, team.getTeamId());
103
104
105
106 Role role = team.getRole();
107
108 roleLocalService.deleteRole(role);
109
110 return team;
111 }
112
113 public void deleteTeams(long groupId)
114 throws PortalException, SystemException {
115
116 List<Team> teams = teamPersistence.findByGroupId(groupId);
117
118 for (Team team : teams) {
119 deleteTeam(team.getTeamId());
120 }
121 }
122
123 public List<Team> getGroupTeams(long groupId) throws SystemException {
124 return teamPersistence.findByGroupId(groupId);
125 }
126
127 public Team getTeam(long groupId, String name)
128 throws PortalException, SystemException {
129
130 return teamPersistence.findByG_N(groupId, name);
131 }
132
133 public List<Team> getUserTeams(long userId, long groupId)
134 throws SystemException {
135
136 LinkedHashMap<String, Object> params =
137 new LinkedHashMap<String, Object>();
138
139 params.put("usersTeams", userId);
140
141 return search(
142 groupId, null, null, params, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
143 null);
144 }
145
146 public List<Team> search(
147 long groupId, String name, String description,
148 LinkedHashMap<String, Object> params, int start, int end,
149 OrderByComparator obc)
150 throws SystemException {
151
152 return teamFinder.findByG_N_D(
153 groupId, name, description, params, start, end, obc);
154 }
155
156 public int searchCount(
157 long groupId, String name, String description,
158 LinkedHashMap<String, Object> params)
159 throws SystemException {
160
161 return teamFinder.countByG_N_D(groupId, name, description, params);
162 }
163
164 public Team updateTeam(long teamId, String name, String description)
165 throws PortalException, SystemException {
166
167 Date now = new Date();
168
169 Team team = teamPersistence.findByPrimaryKey(teamId);
170
171 validate(teamId, team.getGroupId(), name);
172
173 team.setModifiedDate(now);
174 team.setName(name);
175 team.setDescription(description);
176
177 teamPersistence.update(team);
178
179 return team;
180 }
181
182 protected void validate(long teamId, long groupId, String name)
183 throws PortalException, SystemException {
184
185 if (Validator.isNull(name) || Validator.isNumber(name) ||
186 (name.indexOf(CharPool.COMMA) != -1) ||
187 (name.indexOf(CharPool.STAR) != -1)) {
188
189 throw new TeamNameException();
190 }
191
192 Team team = teamPersistence.fetchByG_N(groupId, name);
193
194 if (team != null) {
195 if ((teamId <= 0) || (team.getTeamId() != teamId)) {
196 throw new DuplicateTeamException();
197 }
198 }
199 }
200
201 }