Package org.joget.directory.dao

Source Code of org.joget.directory.dao.GroupDaoImpl

package org.joget.directory.dao;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.joget.commons.spring.model.AbstractSpringDao;
import org.joget.commons.util.LogUtil;
import org.joget.directory.model.Group;

public class GroupDaoImpl extends AbstractSpringDao implements GroupDao {

    private OrganizationDao organizationDao;

    public OrganizationDao getOrganizationDao() {
        return organizationDao;
    }

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

    public Boolean addGroup(Group group) {
        try {
            save("Group", group);
            return true;
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Add Group Error!");
            return false;
        }
    }

    public Boolean updateGroup(Group group) {
        try {
            merge("Group", group);
            return true;
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Update Group Error!");
            return false;
        }
    }

    public Boolean deleteGroup(String id) {
        try {
            Group group = getGroup(id);
            if (group != null && group.getUsers() != null) {
                group.getUsers().clear();
            }
            delete("Group", group);
            return true;
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Delete Group Error!");
            return false;
        }
    }

    public Group getGroup(String id) {
        try {
            return (Group) find("Group", id);
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Get Group Error!");
            return null;
        }
    }

    public Group getGroupByName(String name) {
        try {
            Group group = new Group();
            group.setName(name);
            List groups = findByExample("Group", group);

            if (groups.size() > 0) {
                return (Group) groups.get(0);
            }
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Get Group By Name Error!");
        }

        return null;
    }

    public Collection<Group> getGroupsByOrganizationId(String filterString, String organizationId, String sort, Boolean desc, Integer start, Integer rows) {
        try {
            if (filterString == null) {
                filterString = "";
            }
            Collection param = new ArrayList();
            String condition = "where (e.id like ? or e.name like ? or e.description like ?)";
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");

            if (organizationId != null) {
                condition += " and e.organization.id = ?";
                param.add(organizationId);
            }
            return find("Group", condition, param.toArray(), sort, desc, start, rows);
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Get Groups By Organization Id Error!");
        }

        return null;
    }

    public Long getTotalGroupsByOrganizationId(String filterString, String organizationId) {
        try {
            if (filterString == null) {
                filterString = "";
            }
            Collection param = new ArrayList();
            String condition = "where (e.id like ? or e.name like ? or e.description like ?)";
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");

            if (organizationId != null) {
                condition += " and e.organization.id = ?";
                param.add(organizationId);
            }
            return count("Group", condition, param.toArray());
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Get Total Groups By Organization Id Error!");
        }

        return 0L;
    }

    public Collection<Group> getGroupsByUserId(String filterString, String userId, String organizationId, Boolean inGroup, String sort, Boolean desc, Integer start, Integer rows) {
        try {
            if (filterString == null) {
                filterString = "";
            }
            Collection param = new ArrayList();
            String condition = "where (e.id like ? or e.name like ? or e.description like ?)";
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");

            if (userId != null) {
                condition += " and e.id";
                if (inGroup != null && !inGroup) {
                    condition += " not";
                }
                condition += " in (select g.id from Group g join g.users u where u.id = ?)";
                param.add(userId);
            }
            if (organizationId != null) {
                condition += " and e.organization.id = ?";
                param.add(organizationId);
            }

            return find("Group", condition, param.toArray(), sort, desc, start, rows);
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Get Groups By User Id Error!");
        }

        return null;
    }

    public Long getTotalGroupsByUserId(String filterString, String userId, String organizationId, Boolean inGroup) {
        try {
            if (filterString == null) {
                filterString = "";
            }
            Collection param = new ArrayList();
            String condition = "where (e.id like ? or e.name like ? or e.description like ?)";
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");
            param.add("%" + filterString + "%");

            if (userId != null) {
                condition += " and e.id";
                if (inGroup != null && !inGroup) {
                    condition += " not";
                }
                condition += " in (select g.id from Group g join g.users u where u.id = ?)";
                param.add(userId);
            }
            if (organizationId != null) {
                condition += " and e.organization.id = ?";
                param.add(organizationId);
            }

            return count("Group", condition, param.toArray());
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Get Total Groups By User Id Error!");
        }

        return 0L;
    }

    public Collection<Group> findGroups(String condition, Object[] params, String sort, Boolean desc, Integer start, Integer rows) {
        try {
            return find("Group", condition, params, sort, desc, start, rows);
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Find Groups Error!");
        }

        return null;
    }

    public Long countGroups(String condition, Object[] params) {
        try {
            return count("Group", condition, params);
        } catch (Exception e) {
            LogUtil.error(GroupDaoImpl.class.getName(), e, "Count Groups Error!");
        }

        return 0L;
    }
}
TOP

Related Classes of org.joget.directory.dao.GroupDaoImpl

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.