Example usage for org.hibernate.criterion DetachedCriteria forEntityName

List of usage examples for org.hibernate.criterion DetachedCriteria forEntityName

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria forEntityName.

Prototype

@SuppressWarnings("UnusedDeclaration")
public static DetachedCriteria forEntityName(String entityName) 

Source Link

Document

Static builder to create a DetachedCriteria for the given entity.

Usage

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Searches for Projects after criterion from searchProjectBean.
 * /*from   w  ww.ja v  a2s  .  co m*/
 * @author Adelina
 * 
 * @param searchProjectBean
 * @param statusIds
 * @param isDeleteAction
 * @return
 */
public List<Project> getFromSearch(SearchProjectBean searchProjectBean, Set<Byte> statusIds,
        Set<Integer> clientIds, boolean isDeleteAction, MessageSource messageSource) {
    logger.debug("getFromSearch - START - ");

    UserAuth userAuth = (UserAuth) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

    // set search criterion
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectAllEntity);
    DetachedCriteria dcCount = DetachedCriteria.forEntityName(IModelConstant.projectAllEntity);

    if (searchProjectBean.getOrganizationId() != -1) {
        dc.add(Restrictions.eq("organizationId", searchProjectBean.getOrganizationId()));
        dcCount.add(Restrictions.eq("organizationId", searchProjectBean.getOrganizationId()));
    }

    if (!userAuth.hasAuthority(PermissionConstant.getInstance().getCM_ProjectAdvancedSearch())) {
        // search only for projects that the user belongs to (such as manager or member)         

        List<TeamMember> members = new ArrayList<TeamMember>();

        List<ProjectTeam> projectTeams = new ArrayList<ProjectTeam>();

        List<Integer> projectIds = new ArrayList<Integer>();

        DetachedCriteria dc1 = DetachedCriteria.forEntityName(IModelConstant.teamMemberEntity);
        dc1.add(Restrictions.eq("personId", userAuth.getPersonId()));
        dc1.add(Restrictions.ne("status", IConstant.NOM_TEAM_MEMBER_STATUS_DELETED));
        members = getHibernateTemplate().findByCriteria(dc1);
        logger.debug("members = " + members);

        if (members != null && members.size() > 0) {
            for (TeamMember user : members) {
                logger.debug("user = " + user);
                DetachedCriteria dcProjTeam = DetachedCriteria.forEntityName(IModelConstant.projectTeamEntity);
                dcProjTeam.add(Restrictions.eq("projectTeamId", user.getProjectTeamId()));
                dcProjTeam.add(Restrictions.ne("status", IConstant.NOM_PROJECT_TEAM_STATUS_DELETED));
                projectTeams = getHibernateTemplate().findByCriteria(dcProjTeam);
                logger.debug("project teams = " + projectTeams);
                if (projectTeams != null && projectTeams.size() > 0) {
                    for (ProjectTeam projectTeam : projectTeams) {
                        logger.debug("project team = " + projectTeam);
                        projectIds.add(projectTeam.getProjectId());
                    }
                }
            }
        }

        if (projectTeams == null || projectTeams.size() == 0) {
            projectIds.add(new Integer(-1));
        }

        logger.debug("projectIds = " + projectIds);
        if (projectIds != null && projectIds.size() > 0) {
            dc.add(Expression.or(Expression.eq("managerId", userAuth.getPersonId()),
                    Restrictions.in("projectId", projectIds)));
            dcCount.add(Expression.or(Expression.eq("managerId", userAuth.getPersonId()),
                    Restrictions.in("projectId", projectIds)));
        }
    }

    logger.debug("managerId = " + searchProjectBean.getManagerId());

    // manager      
    if (searchProjectBean.getManagerId() != null && searchProjectBean.getManagerId() != -1) {
        dc.add(Restrictions.eq("managerId", searchProjectBean.getManagerId()));
        dcCount.add(Restrictions.eq("managerId", searchProjectBean.getManagerId()));
        logger.debug("ManagerId Id: " + searchProjectBean.getManagerId());
    }

    // name
    if (Tools.getInstance().stringNotEmpty(searchProjectBean.getName())) {
        dc.add(Restrictions.ilike("name", "%".concat(searchProjectBean.getName().concat("%"))));
        dcCount.add(Restrictions.ilike("name", "%".concat(searchProjectBean.getName().concat("%"))));
        logger.debug("name = " + searchProjectBean.getName());
    }

    logger.debug("clientId = " + searchProjectBean.getClientId());
    logger.debug("clientsIds = " + clientIds);

    // client
    if (searchProjectBean.getClientId() != null && searchProjectBean.getClientId() != 0) {
        dc.add(Restrictions.like("clientId", searchProjectBean.getClientId()));
        dcCount.add(Restrictions.like("clientId", searchProjectBean.getClientId()));
    } else {
        dc.add(Restrictions.in("clientId", clientIds));
        dcCount.add(Restrictions.in("clientId", clientIds));
    }

    //If the user didn't select at least one status then we'll make a search on all of these criterions
    // Status
    if (searchProjectBean.getStatus() != -1) {
        dc.add(Restrictions.eq("status", searchProjectBean.getStatus()));
        dcCount.add(Restrictions.eq("status", searchProjectBean.getStatus()));
    } else {
        dc.add(Restrictions.in("status", statusIds));
        dcCount.add(Restrictions.in("status", statusIds));
    }

    List<Project> res = null;

    //the order can be done while retrieving the data from the database only if the sort parameter is the project name or status;
    //this cannot be done if the results must be ordered by the client name
    if (searchProjectBean.getSortParam() != null && !"".equals(searchProjectBean.getSortParam())
            && !"clientName".equals(searchProjectBean.getSortParam())) {
        // check if I have to order the results
        // if I have to, check if I have to order them ascending or descending
        if (searchProjectBean.getSortDirection() == -1) {
            // ascending
            dc.addOrder(Order.asc(searchProjectBean.getSortParam()));
        } else {
            // descending
            dc.addOrder(Order.desc(searchProjectBean.getSortParam()));
        }

        // if the request didn't come from the pagination area, 
        // it means that I have to set the number of results and pages
        if (isDeleteAction || searchProjectBean.getNbrOfResults() == -1) {
            boolean isSearch = false;
            if (searchProjectBean.getNbrOfResults() == -1) {
                isSearch = true;
            }
            // set the count(*) restriction         
            dcCount.setProjection(Projections.countDistinct("projectId"));

            //findByCriteria must be called with firstResult and maxResults parameters; the default findByCriteria(DetachedCriteria criteria) implementation
            //sets firstResult and maxResults to -1, which kills the countDistinct Projection         
            int nbrOfResults = ((Integer) getHibernateTemplate().findByCriteria(dcCount, 0, 0).get(0))
                    .intValue();
            logger.debug("search results: ".concat(String.valueOf(nbrOfResults)));
            searchProjectBean.setNbrOfResults(nbrOfResults);

            // get the number of pages
            if (nbrOfResults % searchProjectBean.getResultsPerPage() == 0) {
                searchProjectBean.setNbrOfPages(nbrOfResults / searchProjectBean.getResultsPerPage());
            } else {
                searchProjectBean.setNbrOfPages(nbrOfResults / searchProjectBean.getResultsPerPage() + 1);
            }
            // after a project is deleted, the same page has to be displayed;
            //only when all the client from last page are deleted, the previous page will be shown 
            if (isDeleteAction && (searchProjectBean.getCurrentPage() > searchProjectBean.getNbrOfPages())) {
                searchProjectBean.setCurrentPage(searchProjectBean.getNbrOfPages());
            } else if (isSearch) {
                searchProjectBean.setCurrentPage(1);
            }
        }

        res = (List<Project>) getHibernateTemplate().findByCriteria(dc,
                (searchProjectBean.getCurrentPage() - 1) * searchProjectBean.getResultsPerPage(),
                searchProjectBean.getResultsPerPage());
    } else {
        res = (List<Project>) getHibernateTemplate().findByCriteria(dc);
        // if the request didn't come from the pagination area, 
        // it means that I have to set the number of results and pages
        if (isDeleteAction || searchProjectBean.getNbrOfResults() == -1) {
            boolean isSearch = false;
            if (searchProjectBean.getNbrOfResults() == -1) {
                isSearch = true;
            }
            int nbrOfResults = res.size();
            logger.debug("search results: ".concat(String.valueOf(nbrOfResults)));
            searchProjectBean.setNbrOfResults(nbrOfResults);

            // get the number of pages
            if (nbrOfResults % searchProjectBean.getResultsPerPage() == 0) {
                searchProjectBean.setNbrOfPages(nbrOfResults / searchProjectBean.getResultsPerPage());
            } else {
                searchProjectBean.setNbrOfPages(nbrOfResults / searchProjectBean.getResultsPerPage() + 1);
            }
            // after an exchange is deleted, the same page has to be displayed;
            //only when all the exchanges from last page are deleted, the previous page will be shown 
            if (isDeleteAction && (searchProjectBean.getCurrentPage() > searchProjectBean.getNbrOfPages())) {
                searchProjectBean.setCurrentPage(searchProjectBean.getNbrOfPages());
            } else if (isSearch) {
                searchProjectBean.setCurrentPage(1);
            }
        }
    }

    List<Project> newRes = new ArrayList<Project>();

    if (res != null && res.size() > 0) {
        // for every project
        for (Project project : res) {
            Project projectNew = getWithAll(project.getProjectId());
            if (projectNew.getClientId() != null && projectNew.getClientId() > 0) {
                Client client = projectNew.getClient();
                if (client != null) {
                    if (client.getType() == IConstant.NOM_CLIENT_TYPE_FIRM) {
                        projectNew.setClientName(client.getC_name());
                    } else {
                        projectNew.setClientName(
                                client.getP_firstName().concat(" ").concat(client.getP_lastName()));
                    }
                }
            } else {
                projectNew.setClientName(messageSource.getMessage(CLIENT_FROM_ORG, null, null));
            }

            newRes.add(projectNew);
        }
    }

    List<Project> projects = new ArrayList<Project>();
    //sorting the exchanges list
    if (searchProjectBean.getSortParam() != null && searchProjectBean.getSortParam().equals("clientName")) {
        Collections.sort(newRes, ProjectComparator.getInstance().projectClientNameComparator());

        //ascending or descending
        if (searchProjectBean.getSortDirection() == IConstant.DESCENDING) {
            Collections.reverse(newRes);
        }

        long start = (searchProjectBean.getCurrentPage() - 1) * searchProjectBean.getResultsPerPage();
        long end = searchProjectBean.getCurrentPage() * searchProjectBean.getResultsPerPage();

        // go over the entries      
        if (newRes.size() > 0) {
            for (int i = (int) start; i < end; i++) {
                if (i >= newRes.size()) {
                    continue;
                }
                projects.add(newRes.get(i));
            }
        }
    } else {
        projects = newRes;
    }

    logger.debug("getFromSearch - END - results size : ".concat(String.valueOf(projects.size())));

    return projects;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Get the projects identified by the clientId
 * //from   w  ww  . j  a  v  a 2s .co m
 * @author Adelina
 * 
 * @param clientId
 * @return
 */
public List<Project> getProjectsByClientId(Integer clientId) {
    logger.debug("getProjectsByClientId - START , clientId : ".concat(clientId.toString()));
    List<Project> projects = null;
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectWithClientEntity);
    dc.add(Restrictions.eq("client.clientId", clientId));
    dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));
    projects = getHibernateTemplate().findByCriteria(dc);
    for (Project project : projects) {
        Person manager = new Person();
        try {
            manager = BLPerson.getInstance().get(project.getManagerId());
        } catch (BusinessException be) {
            logger.error("", be);
        } catch (Exception e) {
            logger.error("", e);
        }
        // set the manager
        project.setManager(manager);
    }
    Tools.getInstance().printList(logger, projects);
    logger.debug("getProjectsByClientId - END");
    return projects;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Get a project identified by id if it is not deleted
 * /* w w  w.  j  av a 2  s .co m*/
 * @author Adelina
 * 
 * @param projectId
 * @return
 */
public Project getWithStatus(Integer projectId) {
    logger.debug("getWithStatus - START");

    List<Project> projects = new ArrayList<Project>();
    Project project = null;

    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectForUpdateStatusEntity);
    dc.add(Restrictions.eq("projectId", projectId));
    dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));

    projects = getHibernateTemplate().findByCriteria(dc);
    if (projects != null && projects.size() > 0) {
        project = projects.get(0);
    }

    logger.debug("getWithStatus - END");
    return project;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Get the clients for certain projects/*from   w w  w . j av a 2  s. co m*/
 * 
 * @author Adelina
 * 
 * @param organizationId
 * @return
 */
public List<Client> getClientsForProjects(Integer organizationId) {
    logger.debug("getClients - START - ");

    // set search criterion
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectAllEntity);

    List<Client> clients = new ArrayList<Client>();

    List<Project> projects = new ArrayList<Project>();
    dc.add(Restrictions.eq("organizationId", organizationId));
    dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));

    projects = getHibernateTemplate().findByCriteria(dc);

    Set<Integer> clientIds = new HashSet<Integer>();
    if (projects != null && projects.size() > 0) {
        for (Project project : projects) {
            clientIds.add(project.getClientId());
        }
        logger.debug("clientIds = " + clientIds);
        DetachedCriteria dcClient = DetachedCriteria.forEntityName(IModelConstant.clientEntity);
        dcClient.add(Restrictions.in("clientId", clientIds));
        dcClient.add(Restrictions.ne("status", IConstant.NOM_CLIENT_STATUS_DELETED));
        clients = getHibernateTemplate().findByCriteria(dcClient);
        logger.debug("clients = " + clients);
    }

    logger.debug("getClients - END - ");
    return clients;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

public Project getForView(Integer projectId) {
    logger.debug("getForView - START");

    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectForDeleteEntity);

    List<Project> projects = new ArrayList<Project>();

    dc.add(Restrictions.eq("projectId", projectId));
    dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));
    projects = getHibernateTemplate().findByCriteria(dc);

    Project project = projects.get(0);/* w  w w .  j  ava 2  s .  co  m*/

    ProjectTeam projectTeam = projectTeamDao.get(projectId, true);
    project.setProjectTeam(projectTeam);

    Integer managerId = project.getManagerId();

    logger.debug("managerId = " + managerId);
    Person manager = new Person();
    try {
        manager = BLPerson.getInstance().get(managerId);
    } catch (BusinessException be) {
        logger.error("", be);
    } catch (Exception e) {
        logger.error("", e);
    }
    // set the manager
    project.setManager(manager);

    Integer clientId = project.getClientId();
    if (clientId != null && clientId > 0) {
        Client client = new Client();
        try {
            client = BLClient.getInstance().get(clientId);
        } catch (BusinessException be) {
            logger.error("", be);
        } catch (Exception e) {
            logger.error("", e);
        }
        // set the client
        project.setClient(client);
    }

    logger.debug("getForView - END - project with id =".concat(Integer.toString(projectId)));

    return project;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Get the projects for the client//from  ww  w  .j  a v a  2 s  .  c om
 * 
 * @author Adelina
 * 
 * @param clientId
 * @return
 */
public List<Project> getClientsProjects(Integer clientId) {
    logger.debug("getClientsProjects - START , clientId : ".concat(clientId.toString()));
    List<Project> projects = null;
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectForDeleteEntity);
    dc.add(Restrictions.eq("clientId", clientId));
    dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));
    projects = getHibernateTemplate().findByCriteria(dc);
    Tools.getInstance().printList(logger, projects);
    logger.debug("getClientsProjects - END");
    return projects;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Get all the projects by organizationId
 * //from   w  ww . jav  a  2s.  c  o  m
 * @author Adelina
 * 
 * @param organizationId
 * @param isFinishedAndAbandoned
 * @return
 */
public List<Project> getAllProjects(Integer organizationId, boolean isFinishedAndAbandoned) {
    logger.debug("getProjects - START");
    List<Project> projects = new ArrayList<Project>();
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectAllEntity);
    dc.add(Restrictions.eq("organizationId", organizationId));
    if (isFinishedAndAbandoned) {
        dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));
    } else {
        dc.add(Restrictions.eq("status", IConstant.NOM_PROJECT_STATUS_OPENED));
    }
    List<Project> res = getHibernateTemplate().findByCriteria(dc);
    if (res != null && res.size() > 0) {
        // for every project
        for (Project project : res) {
            Project projectNew = getWithAll(project.getProjectId());
            projects.add(projectNew);
        }
    }
    logger.debug("getProjects - END");
    return projects;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Get projects by person/*  w  ww .  j a va 2s  .com*/
 * 
 * @author Adelina
 * 
 * @param personId
 * @return
 */
public List<Project> getProjectsByPerson(Integer personId, boolean isFinishedAndAbandoned) {
    logger.debug("getProjectsByPerson - START");

    logger.debug("personId = " + personId);

    List<Project> projects = new ArrayList<Project>();

    List<TeamMember> members = new ArrayList<TeamMember>();

    List<ProjectTeam> projectTeams = new ArrayList<ProjectTeam>();

    List<Integer> projectIds = new ArrayList<Integer>();
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.teamMemberEntity);
    dc.add(Restrictions.eq("personId", personId));
    dc.add(Restrictions.ne("status", IConstant.NOM_TEAM_MEMBER_STATUS_DELETED));
    members = getHibernateTemplate().findByCriteria(dc);
    logger.debug("members = " + members);

    if (members != null && members.size() > 0) {
        for (TeamMember user : members) {
            logger.debug("user = " + user);
            DetachedCriteria dcProjTeam = DetachedCriteria.forEntityName(IModelConstant.projectTeamEntity);
            dcProjTeam.add(Restrictions.eq("projectTeamId", user.getProjectTeamId()));
            dcProjTeam.add(Restrictions.ne("status", IConstant.NOM_PROJECT_TEAM_STATUS_DELETED));
            projectTeams = getHibernateTemplate().findByCriteria(dcProjTeam);
            logger.debug("project teams = " + projectTeams);
            if (projectTeams != null && projectTeams.size() > 0) {
                for (ProjectTeam projectTeam : projectTeams) {
                    logger.debug("project team = " + projectTeam);
                    projectIds.add(projectTeam.getProjectId());
                }
            }
        }
        if (projectTeams == null || projectTeams.size() == 0) {
            projectIds.add(new Integer(-1));
        }

    } else {
        projectIds.add(new Integer(-1));
    }

    logger.debug("projectIds = " + projectIds);
    DetachedCriteria dc1 = DetachedCriteria.forEntityName(IModelConstant.projectAllEntity);
    dc1.add(Expression.or(Expression.eq("managerId", personId), Restrictions.in("projectId", projectIds)));

    if (isFinishedAndAbandoned) {
        dc1.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));
    } else {
        dc1.add(Restrictions.eq("status", IConstant.NOM_PROJECT_STATUS_OPENED));
    }

    List<Project> res = getHibernateTemplate().findByCriteria(dc1);
    if (res != null && res.size() > 0) {
        // for every project
        for (Project project : res) {
            logger.debug("project = " + project);
            Project projectNew = getWithAll(project.getProjectId());
            projects.add(projectNew);
        }
    }

    logger.debug("getProjectsByPerson - END");
    return projects;

}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Get the project for a certain manager
 * /* w  w w  .  j av a 2  s . c  om*/
 * @author Adelina
 * 
 * @param managerId
 * @return
 */
public List<Project> getProjectsByManager(Integer managerId, boolean isFinishedAndAbandoned) {
    logger.debug("getProjectsByManager - START");
    List<Project> projects = new ArrayList<Project>();
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectAllEntity);
    dc.add(Restrictions.eq("managerId", managerId));
    if (isFinishedAndAbandoned) {
        dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));
    } else {
        dc.add(Restrictions.eq("status", IConstant.NOM_PROJECT_STATUS_OPENED));
    }
    List<Project> res = getHibernateTemplate().findByCriteria(dc);
    if (res != null && res.size() > 0) {
        // for every project
        for (Project project : res) {
            Project projectNew = getWithAll(project.getProjectId());
            projects.add(projectNew);
        }
    }
    logger.debug("getProjectsByManager - END");
    return projects;
}

From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java

License:Open Source License

/**
 * Gets the projects whose project teams include the person with the specified id
 * //from  w w  w  .  ja v a 2  s .  c o  m
 * @author Coni
 * 
 * @param personId
 * @return
 * @throws BusinessException
 */
public List<Project> getProjectsByTeamMember(Integer personId) {
    logger.debug("getProjectsByTeamMember - START");
    List<Project> projects = null;
    DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.projectWithProjectTeamEntity);
    List<ProjectTeam> projectTeams = projectTeamDao.getByPerson(personId);

    if (projectTeams != null) {
        List<Integer> projectIds = new ArrayList<Integer>();
        for (ProjectTeam projectTeam : projectTeams) {
            projectIds.add(new Integer(projectTeam.getProjectId()));
        }
        dc.add(Restrictions.in("projectId", projectIds));
        dc.add(Restrictions.ne("status", IConstant.NOM_PROJECT_STATUS_DELETED));
        projects = getHibernateTemplate().findByCriteria(dc);
    }
    logger.debug("getProjectsByTeamMember - END");
    return projects;
}