public static List<User> filterUserOnRole(List<User> users, UserRole userRole) { List<User> validUsers = new ArrayList<>(); // result of bad many-to-many mapping. should fix once.. for (User user : users) { if (user.getUserRoles().contains(userRole)) { validUsers.add(user); } } return validUsers; } }
/** * Find user on id and add PM role */ private User getAndAddPmRole(Integer userId) throws ObjectNotUniqueException { User user = userDAO.findById(userId); UserRole userRole = userRoleDAO.findById(UserRole.ROLE_PROJECTMANAGER); user.getUserRoles().add(userRole); userDAO.persist(user); return user; }
@PostConstruct @Transactional(propagation = Propagation.REQUIRES_NEW) public void init() { LOGGER.info("Finding and fixing users who are PM but don't have PM role (EHO-381)"); List<Project> projectsWithPmSet = projectDao.findAllProjectsWithPmSet(); for (Project project : projectsWithPmSet) { User pm = project.getProjectManager(); boolean hasPmRole = pm.getUserRoles().contains(UserRole.PROJECTMANAGER); if (!hasPmRole) { LOGGER.warn(String.format("%s (%s) does not have PM role but is PM for %s. Adding PM role.", pm.getFullName(), pm.getPK(), project.getFullName())); projectService.validatePMRoles(project); } } } }
@Test public void shouldDeletePmWithoutProject() { userDao.deletePmWithoutProject(); User user = userDao.findById(2); assertThat(user.getUserRoles(), not(hasItem(UserRole.PROJECTMANAGER))); }
@Transactional public User persistEditedUser(User user) throws ObjectNotUniqueException { // check username uniqueness User dbUser = userDAO.findByUsername(user.getUsername()); if (dbUser != null && !dbUser.getUserId().equals(user.getUserId())) { throw new ObjectNotUniqueException("Username already in use"); } else if (dbUser == null) { dbUser = findUserOnId(user); } dbUser.setActive(user.isActive()); dbUser.setEmail(user.getEmail()); dbUser.setFirstName(user.getFirstName()); dbUser.setLastName(user.getLastName()); dbUser.getUserDepartments().clear(); dbUser.getUserDepartments().addAll(user.getUserDepartments()); dbUser.setUsername(user.getUsername()); boolean reAddPm = dbUser.getUserRoles().contains(UserRole.PROJECTMANAGER); dbUser.setUserRoles(user.getUserRoles()); if (reAddPm && !user.getUserRoles().contains(UserRole.PROJECTMANAGER)) { dbUser.addUserRole(UserRole.PROJECTMANAGER); } userDAO.persist(dbUser); return dbUser; }
@Test @Ignore public void shouldImportManyToMany() throws XMLStreamException, InstantiationException, IllegalAccessException, ImportException { UserDepartment department = UserDepartmentObjectMother.createUserDepartment(); EntityParser parser = createParser("<USERLIST>\n <USERS>\n <USER_ID>1</USER_ID>\n <USERNAME>admin</USERNAME>\n <PASSWORD>1d798ca9dba7df61bf399a02695f9f50034bad66</PASSWORD>\n <FIRST_NAME>eHour</FIRST_NAME>\n <LAST_NAME>Admin</LAST_NAME>\n <EMAIL>t@t.net</EMAIL>\n <ACTIVE>Y</ACTIVE>\n </USERS>\n <USERS>\n <USER_ID>3</USER_ID>\n <USERNAME>thies</USERNAME>\n <PASSWORD>e2e90187007d55ae40678e11e0c9581cb7bb9928</PASSWORD>\n <FIRST_NAME>Thies</FIRST_NAME>\n <LAST_NAME>Edeling</LAST_NAME>\n <EMAIL>thies@te-con.nl</EMAIL>\n <ACTIVE>Y</ACTIVE>\n <SALT>6367</SALT>\n </USERS>\n </USERLIST>\n", department, 1); JoinTables joinTables = new JoinTables(); joinTables.put("USER_TO_DEPARTMENT", "1", "2"); joinTables.put("USER_TO_USERROLE", "1", "ADMIN"); List<User> result = parser.parse(User.class, joinTables, status); User user = result.get(0); assertEquals(1, user.getUserRoles().size()); }