Package org.joget.directory.model.service

Source Code of org.joget.directory.model.service.DirectoryManagerImpl

package org.joget.directory.model.service;

import org.joget.directory.model.Department;
import org.joget.directory.model.Employment;
import org.joget.directory.model.EmploymentReportTo;
import org.joget.directory.model.Grade;
import org.joget.directory.model.Group;
import org.joget.directory.model.Organization;
import org.joget.directory.model.Role;
import org.joget.directory.model.User;
import java.util.ArrayList;
import java.util.Collection;
import org.joget.commons.util.StringUtil;
import org.joget.directory.dao.DepartmentDao;
import org.joget.directory.dao.EmploymentDao;
import org.joget.directory.dao.GradeDao;
import org.joget.directory.dao.GroupDao;
import org.joget.directory.dao.OrganizationDao;
import org.joget.directory.dao.RoleDao;
import org.joget.directory.dao.UserDao;

public class DirectoryManagerImpl implements ExtDirectoryManager {

    private UserDao userDao;
    private GroupDao groupDao;
    private OrganizationDao organizationDao;
    private DepartmentDao departmentDao;
    private EmploymentDao employmentDao;
    private GradeDao gradeDao;
    private RoleDao roleDao;

    public DepartmentDao getDepartmentDao() {
        return departmentDao;
    }

    public void setDepartmentDao(DepartmentDao departmentDao) {
        this.departmentDao = departmentDao;
    }

    public EmploymentDao getEmploymentDao() {
        return employmentDao;
    }

    public void setEmploymentDao(EmploymentDao employmentDao) {
        this.employmentDao = employmentDao;
    }

    public GradeDao getGradeDao() {
        return gradeDao;
    }

    public void setGradeDao(GradeDao gradeDao) {
        this.gradeDao = gradeDao;
    }

    public GroupDao getGroupDao() {
        return groupDao;
    }

    public void setGroupDao(GroupDao groupDao) {
        this.groupDao = groupDao;
    }

    public OrganizationDao getOrganizationDao() {
        return organizationDao;
    }

    public void setOrganizationDao(OrganizationDao organizationDao) {
        this.organizationDao = organizationDao;
    }

    public RoleDao getRoleDao() {
        return roleDao;
    }

    public void setRoleDao(RoleDao roleDao) {
        this.roleDao = roleDao;
    }

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public Collection<Group> getGroupsByOrganizationId(String filterString, String organizationId, String sort, Boolean desc, Integer start, Integer rows) {
        return getGroupDao().getGroupsByOrganizationId(filterString, organizationId, sort, desc, start, rows);
    }

    public Long getTotalGroupsByOrganizationId(String filterString, String organizationId) {
        return getGroupDao().getTotalGroupsByOrganizationId(filterString, organizationId);
    }

    public Collection<User> getUsersSubordinate(String username, String sort, Boolean desc, Integer start, Integer rows) {
        return getUserDao().getUsersSubordinate(username, sort, desc, start, rows);
    }

    public Long getTotalUsersSubordinate(String username) {
        return getUserDao().getTotalUsersSubordinate(username);
    }

    public Long getTotalUserList(String filterString) {
        return getUserDao().getTotalUsers(filterString, null, null, null, null, null, null);
    }

    public Department getDepartmentByName(String name) {
        return getDepartmentDao().getDepartmentByName(name);
    }

    public Department getParentDepartment(String id) {
        return getDepartmentDao().getParentDepartment(id);
    }

    public Department getParentDepartmentByName(String name) {
        return getDepartmentDao().getDepartmentByName(name);
    }

    public Collection<Department> getDepartmentsByParentId(String filterString, String parentId, String sort, Boolean desc, Integer start, Integer rows) {
        return getDepartmentDao().getDepartmentsByParentId(filterString, parentId, sort, desc, start, rows);
    }

    public Long getTotalDepartmentsByParentId(String filterString, String parentId) {
        return getDepartmentDao().getTotalDepartmentsByParentId(filterString, parentId);
    }

    public Collection<Department> getDepartmentsByOrganizationId(String filterString, String organizationId, String sort, Boolean desc, Integer start, Integer rows) {
        return getDepartmentDao().getDepartmentsByOrganizationId(filterString, organizationId, sort, desc, start, rows);
    }

    public Long getTotalDepartmentnsByOrganizationId(String filterString, String organizationId) {
        return getDepartmentDao().getTotalDepartmentsByOrganizationId(filterString, organizationId);
    }

    public Grade getGradeByName(String name) {
        return getGradeDao().getGradeByName(name);
    }

    public Collection<Grade> getGradesByOrganizationId(String filterString, String organizationId, String sort, Boolean desc, Integer start, Integer rows) {
        return getGradeDao().getGradesByOrganizationId(filterString, organizationId, sort, desc, start, rows);
    }

    public Long getTotalGradesByOrganizationId(String filterString, String organizationId) {
        return getGradeDao().getTotalGradesByOrganizationId(filterString, organizationId);
    }

    public Organization getOrganization(String id) {
        return getOrganizationDao().getOrganization(id);
    }

    public Organization getOrganizationByName(String name) {
        return getOrganizationDao().getOrganizationByName(name);
    }

    public Collection<Organization> getOrganizationsByFilter(String filterString, String sort, Boolean desc, Integer start, Integer rows) {
        return getOrganizationDao().getOrganizationsByFilter(filterString, sort, desc, start, rows);
    }

    public Long getTotalOrganizationsByFilter(String filterString) {
        return getOrganizationDao().getTotalOrganizationsByFilter(filterString);
    }

    public Employment getEmployment(String id) {
        return getEmploymentDao().getEmployment(id);
    }

    public boolean authenticate(String username, String password) {
        User user = getUserByUsername(username);

        String userPassword = (user != null) ? user.getPassword() : null;

        // temporary code to check for unencrypted password and encrypt it for comparison
        if (userPassword != null && userPassword.length() != 32) {
            userPassword = StringUtil.md5Base16(userPassword);
        }

        // compare passwords
        boolean validLogin = (user != null && userPassword != null && password != null && userPassword.equals(StringUtil.md5Base16(password)));

        if (!validLogin) {
            validLogin = (user != null && userPassword != null && user.getLoginHash().equalsIgnoreCase(password));
        }

        // check for active flag
        boolean active = (user != null && user.getActive() == User.ACTIVE);

        if (!validLogin || !active) {
            return false;
        } else {
            return true;
        }
    }

    public Group getGroupById(String groupId) {
        return getGroupDao().getGroup(groupId);
    }

    public Group getGroupByName(String groupName) {
        return getGroupDao().getGroupByName(groupName);
    }

    public Collection<Group> getGroupByUsername(String username) {
        User user = getUserDao().getUser(username);
        if (user != null) {
            return getGroupDao().getGroupsByUserId("", user.getId(), null, true, "name", false, null, null);
        }
        return null;
    }

    public Collection<Group> getGroupList() {
        return getGroupDao().getGroupsByOrganizationId(null, null, null, null, null, null);
    }

    public Collection<Group> getGroupList(String filterString, String sort, Boolean desc, Integer start, Integer rows) {
        return getGroupDao().getGroupsByOrganizationId(filterString, null, sort, desc, start, rows);
    }

    public Long getTotalGroups() {
        return getGroupDao().getTotalGroupsByOrganizationId(null, null);
    }

    public Collection<User> getUserByDepartmentId(String departmentId) {
        return getUserDao().getUsers(null, null, departmentId, null, null, null, null, "username", false, null, null);
    }

    public Collection<User> getUserByGradeId(String gradeId) {
        return getUserDao().getUsers(null, null, null, null, null, gradeId, null, "username", false, null, null);
    }

    public Collection<User> getUserByGroupId(String groupId) {
        return getUserDao().getUsers(null, null, null, null, groupId, null, null, "username", false, null, null);
    }

    public Collection<User> getUserByGroupName(String groupName) {
        Group group = getGroupDao().getGroupByName(groupName);
        if (group != null) {
            return getUserDao().getUsers(null, null, null, null, group.getId(), null, null, "username", false, null, null);
        }
        return null;
    }

    public User getUserById(String userId) {
        return getUserDao().getUserById(userId);
    }

    public User getUserByUsername(String username) {
        return getUserDao().getUser(username);
    }

    public Collection<User> getUserList() {
        return getUserDao().getUsers(null, null, null, null, null, null, null, "username", false, null, null);
    }

    public Collection<User> getUserList(String filterString, String sort, Boolean desc, Integer start, Integer rows) {
        return getUserDao().getUsers(filterString, null, null, null, null, null, null, sort, desc, start, rows);
    }

    public Long getTotalUsers() {
        return getUserDao().getTotalUsers(null, null, null, null, null, null, null);
    }

    public boolean isUserInGroup(String username, String groupName) {
        Group group = getGroupDao().getGroupByName(groupName);

        if (group != null) {
            Collection<User> users = getUserDao().getUsers(username, null, null, null, group.getId(), null, null, null, null, null, null);

            if (users != null) {
                for (User user : users) {
                    if (user.getUsername().equals(username)) {
                        return true;
                    }
                }
            }
        }

        return false;
    }

    public Collection<Role> getUserRoles(String username) {
        return getRoleDao().getUserRoles(username, null, null, null, null);
    }

    public User getDepartmentHod(String departmentId) {
        Department department = getDepartmentDao().getDepartment(departmentId);
        if (department != null) {
            User hod = getDepartmentHod(department);
            while (department != null && hod == null) {
                // no HOD or user is HOD, so look for HOD of parent department
                department = department.getParent();
                if (department != null) {
                    hod = getDepartmentHod(department);
                }
            }
            return hod;
        }
        return null;
    }
   
    protected User getDepartmentHod(Department department) {
        if (department != null && department.getHod() != null) {
            return employmentDao.getEmployment(department.getHod().getId()).getUser();
        }
        return null;
    }

    public Collection<User> getUserHod(String username) {
        Collection<User> userList = new ArrayList();

        User user = getUserByUsername(username);
        if (user != null && user.getEmployments() != null) {
            Collection<Employment> employments = user.getEmployments();

            //get only 1st employment record, currently only support 1 employment per user
            Employment employment = employments.iterator().next();

            if (employment.getEmploymentReportTo() != null) {
                EmploymentReportTo employmentReportTo = employment.getEmploymentReportTo();
                userList.add(employmentReportTo.getReportTo().getUser());
            } else {
                Department dept = employment.getDepartment();
                User hod = getDepartmentHod(dept.getId());
               
                if (hod != null) {
                    userList.add(hod);
                }
            }
        }

        return userList;
    }

    public Collection<User> getUserSubordinate(String username) {
        return getUserDao().getUsersSubordinate(username, null, null, null, null);
    }

    public Collection<User> getUserDepartmentUser(String username) {
        User user = getUserDao().getUser(username);
        if (user != null && user.getEmployments() != null) {
            Collection<Employment> employments = user.getEmployments();
            //get only 1st employment record, currently only support 1 employment per user
            Employment employment = employments.iterator().next();
            if (employment.getDepartment() != null) {
                return getUserDao().getUsers(null, null, employment.getDepartment().getId(), null, null, null, null, "username", false, null, null);
            }
        }
        return null;
    }

    public Collection<User> getDepartmentUserByGradeId(String departmentId, String gradeId) {
        return getUserDao().getUsers("", null, departmentId, gradeId, null, null, null, "username", false, null, null);
    }

    public Department getDepartmentById(String departmentId) {
        return getDepartmentDao().getDepartment(departmentId);
    }

    public Collection<Department> getDepartmentList() {
        return getDepartmentDao().getDepartmentsByOrganizationId(null, null, null, null, null, null);
    }

    public Collection<Department> getDepartmentList(String sort, Boolean desc, Integer start, Integer rows) {
        return getDepartmentDao().getDepartmentsByOrganizationId(null, null, sort, desc, start, rows);
    }

    public Collection<Department> getDepartmentListByOrganization(String organizationId, String sort, Boolean desc, Integer start, Integer rows) {
        return getDepartmentDao().getDepartmentsByOrganizationId(null, organizationId, sort, desc, start, rows);
    }

    public Long getTotalDepartments(String organizationId) {
        return getDepartmentDao().getTotalDepartmentsByOrganizationId(null, organizationId);
    }

    public Grade getGradeById(String gradeId) {
        return getGradeDao().getGrade(gradeId);
    }

    public Collection<Grade> getGradeList() {
        return getGradeDao().getGradesByOrganizationId(null, null, null, null, null, null);
    }

    public Collection<User> getUsers(String filterString, String organizationId, String departmentId, String gardeId, String groupId, String roleId, String active, String sort, Boolean desc, Integer start, Integer rows) {
        return getUserDao().getUsers(filterString, organizationId, departmentId, gardeId, groupId, roleId, active, sort, desc, start, rows);
    }

    public Long getTotalUsers(String filterString, String organizationId, String departmentId, String gardeId, String groupId, String roleId, String active) {
        return getUserDao().getTotalUsers(filterString, organizationId, departmentId, gardeId, groupId, roleId, active);
    }

    public Collection<User> getUserByOrganizationId(String organizationId) {
        return getUserDao().getUsers(null, organizationId, null, null, null, null, null, "username", false, null, null);
    }

    public Collection<Employment> getEmployments(String filterString, String organizationId, String departmentId, String gradeId, String sort, Boolean desc, Integer start, Integer rows) {
        return getEmploymentDao().getEmployments(filterString, organizationId, departmentId, gradeId, sort, desc, start, rows);
    }

    public Long getTotalEmployments(String filterString, String organizationId, String departmentId, String gradeId) {
        return getEmploymentDao().getTotalEmployments(filterString, organizationId, departmentId, gradeId);
    }

    public Collection<Group> getGroupsByUserId(String filterString, String userId, String organizationId, Boolean inGroup, String sort, Boolean desc, Integer start, Integer rows) {
        return getGroupDao().getGroupsByUserId(filterString, userId, organizationId, inGroup, sort, desc, start, rows);
    }

    public Long getTotalGroupsByUserId(String filterString, String userId, String organizationId, Boolean inGroup) {
        return getGroupDao().getTotalGroupsByUserId(filterString, userId, organizationId, inGroup);
    }
}
TOP

Related Classes of org.joget.directory.model.service.DirectoryManagerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.