List of usage examples for org.hibernate.criterion Projections countDistinct
public static CountProjection countDistinct(String propertyName)
From source file:org.tonguetied.keywordmanagement.KeywordRepositoryImpl.java
License:Apache License
/** * Run a query to calculate the total number of records that match the * search criteria./*from w w w. j a v a 2 s . c o m*/ * * @param criterion used to create the search criteria * @param conjunction used to create the search criteria * @return the total number of matches for the search criteria */ private int calculateMaxListSize(Example criterion, Conjunction conjunction) { Criteria criteria = getSession().createCriteria(Keyword.class); criteria.add(criterion); if (conjunction != null) criteria.createCriteria(FIELD_TRANSLATIONS).add(conjunction); criteria.setProjection(Projections.countDistinct(FIELD_ID)); return (Integer) criteria.uniqueResult(); }
From source file:py.una.pol.karaku.dao.impl.BaseDAOImpl.java
License:Open Source License
@Override public Long getCount(final Where<T> where) { Map<String, String> alias = new HashMap<String, String>(); Criteria criteria = this.generateWhere(where, alias); if (where != null && where.isDistinct()) { criteria.setProjection(Projections.countDistinct("id")); } else {// www . j a v a 2 s.c om criteria.setProjection(Projections.rowCount()); } Object result = criteria.uniqueResult(); if (result == null) { throw new KarakuRuntimeException("The class " + this.getClassOfT().getSimpleName() + " is not mapped"); } return (Long) result; }
From source file:reviewbot.repository.BookRepository.java
License:Creative Commons License
@Override @SuppressWarnings("unchecked") public List<Book> readRange(Integer length, Integer offset) { final Integer len = length; final Integer offs = offset; // Solution by MattC@stackoverflow // https://stackoverflow.com/questions/11038234/pagination-with-hibernate-criteria-and-distinct-root-entity/23618190#23618190 Criteria criteria = getCurrentSession().createCriteria(Book.class); Projection idCountProjection = Projections.countDistinct("id"); criteria.setProjection(idCountProjection); int totalResultCount = ((Long) criteria.uniqueResult()).intValue(); criteria.setProjection(Projections.distinct(Projections.property("id"))); if (offs != null) criteria.setFirstResult(offs);/*from w ww.j a v a2 s . c om*/ if (len != null) criteria.setMaxResults(len); List uniqueSubList = criteria.list(); criteria.setProjection(null); criteria.setFirstResult(0); criteria.setMaxResults(Integer.MAX_VALUE); criteria.add(Restrictions.in("id", uniqueSubList)); criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); return (List<Book>) criteria.list(); }
From source file:ro.cs.cm.model.dao.impl.DaoClientImpl.java
License:Open Source License
/** * Searches for clients using the criterion defined in searchClientBean * @author Coni/* w w w . jav a 2s . com*/ * @param searchClientBean * @param isDeleteAction * @return */ public List<Client> getClientBeanFromSearch(SearchClientBean searchClientBean, boolean isDeleteAction) { logger.debug("getClientBeanFromSearch - START"); DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.clientForListingEntity); DetachedCriteria dcCount = DetachedCriteria.forEntityName(IModelConstant.clientForListingEntity); if (searchClientBean.getOrganizationId() != -1) { dc.add(Restrictions.eq("organizationId", searchClientBean.getOrganizationId())); dcCount.add(Restrictions.eq("organizationId", searchClientBean.getOrganizationId())); } //if the c_name property is set it means it is a client of type firm and the p_firstName and //p_lastName properties of a person won't be set; there is a third case when the client search is first displayed, //with no client type being selected if (searchClientBean.getC_name() != null && !"".equals(searchClientBean.getC_name()) && searchClientBean.getType() == IConstant.NOM_CLIENT_TYPE_FIRM) { dc.add(Restrictions.ilike("c_name", "%".concat(searchClientBean.getC_name().concat("%")))); dcCount.add(Restrictions.ilike("c_name", "%".concat(searchClientBean.getC_name().concat("%")))); } else if (searchClientBean.getC_name() != null && !"".equals(searchClientBean.getC_name()) && searchClientBean.getType() == -1) { //no client type is selected, but the name field isn't empty //we consider the firstname and lastname that might have been entered are split by " "; if no space is entered, we consider it as the firstName String firstName = null; String lastName = null; if (searchClientBean.getC_name().lastIndexOf(" ") != -1) { firstName = searchClientBean.getC_name().substring(0, searchClientBean.getC_name().lastIndexOf(" ")); lastName = searchClientBean.getC_name() .substring(searchClientBean.getC_name().lastIndexOf(" ") + 1); } else { firstName = searchClientBean.getC_name(); } if (firstName != null && !"".equals(firstName) && lastName != null && !"".equals(lastName)) { dc.add(Restrictions.or( Restrictions.ilike("c_name", "%".concat(searchClientBean.getC_name().concat("%"))), Restrictions.and(Restrictions.ilike("p_firstName", "%".concat(firstName).concat("%")), Restrictions.ilike("p_lastName", "%".concat(lastName).concat("%"))))); } else if (firstName != null && !"".equals(firstName)) { dc.add(Restrictions.or( Restrictions.ilike("c_name", "%".concat(searchClientBean.getC_name().concat("%"))), Restrictions.ilike("p_firstName", "%".concat(firstName).concat("%")))); } else if (lastName != null && !"".equals(lastName)) { dc.add(Restrictions.or( Restrictions.ilike("c_name", "%".concat(searchClientBean.getC_name().concat("%"))), Restrictions.ilike("p_lastName", "%".concat(lastName).concat("%")))); } } else { if (searchClientBean.getP_firstName() != null && !"".equals(searchClientBean.getP_firstName())) { dc.add(Restrictions.ilike("p_firstName", "%".concat(searchClientBean.getP_firstName().concat("%")))); dcCount.add(Restrictions.ilike("p_firstName", "%".concat(searchClientBean.getP_firstName().concat("%")))); } if (searchClientBean.getP_lastName() != null && !"".equals(searchClientBean.getP_lastName())) { dc.add(Restrictions.ilike("p_lastName", "%".concat(searchClientBean.getP_lastName().concat("%")))); dcCount.add( Restrictions.ilike("p_lastName", "%".concat(searchClientBean.getP_lastName().concat("%")))); } } if (searchClientBean.getEmail() != null && !"".equals(searchClientBean.getEmail())) { dc.add(Restrictions.ilike("email", "%".concat(searchClientBean.getEmail().concat("%")))); dcCount.add(Restrictions.ilike("email", "%".concat(searchClientBean.getEmail().concat("%")))); } if (searchClientBean.getAddress() != null && !"".equals(searchClientBean.getAddress())) { dc.add(Restrictions.ilike("address", "%".concat(searchClientBean.getAddress().concat("%")))); dcCount.add(Restrictions.ilike("address", "%".concat(searchClientBean.getAddress().concat("%")))); } if (searchClientBean.getType() != -1) { dc.add(Restrictions.eq("type", searchClientBean.getType())); dcCount.add(Restrictions.eq("type", searchClientBean.getType())); } if (searchClientBean.getStatus() != -1) { dc.add(Restrictions.eq("status", searchClientBean.getStatus())); dcCount.add(Restrictions.eq("status", searchClientBean.getStatus())); } // check if I have to order the results if (searchClientBean.getSortParam() != null && !"".equals(searchClientBean.getSortParam()) && !IConstant.NOM_CLIENT_SORT_PARAM_NAME.equals(searchClientBean.getSortParam())) { // if I have to, check if I have to order them ascending or descending if (searchClientBean.getSortDirection() == -1) { // ascending dc.addOrder(Order.asc(searchClientBean.getSortParam())); } else { // descending dc.addOrder(Order.desc(searchClientBean.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 || searchClientBean.getNbrOfResults() == -1) { boolean isSearch = false; if (searchClientBean.getNbrOfResults() == -1) { isSearch = true; } // set the count(*) restriction dcCount.setProjection(Projections.countDistinct("clientId")); //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))); searchClientBean.setNbrOfResults(nbrOfResults); // get the number of pages if (nbrOfResults % searchClientBean.getResultsPerPage() == 0) { searchClientBean.setNbrOfPages(nbrOfResults / searchClientBean.getResultsPerPage()); } else { searchClientBean.setNbrOfPages(nbrOfResults / searchClientBean.getResultsPerPage() + 1); } // after a client 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 && (searchClientBean.getCurrentPage() > searchClientBean.getNbrOfPages())) { searchClientBean.setCurrentPage(searchClientBean.getNbrOfPages()); } else if (isSearch) { searchClientBean.setCurrentPage(1); } } List<Client> res = (List<Client>) getHibernateTemplate().findByCriteria(dc, (searchClientBean.getCurrentPage() - 1) * searchClientBean.getResultsPerPage(), searchClientBean.getResultsPerPage()); logger.debug("getClientBeanFromSearch - END results size : ".concat(String.valueOf(res.size()))); return res; }
From source file:ro.cs.cm.model.dao.impl.DaoProjectImpl.java
License:Open Source License
/** * Searches for Projects after criterion from searchProjectBean. * //from w w w . ja va2s .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.DaoTeamMemberImpl.java
License:Open Source License
/** * Retrieves from search a list of team members with basic info and pagination; search method * for TS person search/*w ww. j av a 2s. c o m*/ * * @author Coni * @param searchTeamMemberBean * @return * @throws WSClientException * @throws IOException * @throws XmlMappingException * @throws BusinessException */ public List<TeamMember> getFromSearchSimpleWithPagination(SearchTeamMemberBean searchTeamMemberBean) throws XmlMappingException, IOException, WSClientException, BusinessException { logger.debug("getFromSearchSimpleWithPagination - START"); DetachedCriteria dc = DetachedCriteria .forEntityName(IModelConstant.teamMemberWithProjectTeamAndProjectEntity); DetachedCriteria dcCount = DetachedCriteria .forEntityName(IModelConstant.teamMemberWithProjectTeamAndProjectEntity); //retrieve all the team members for persons from the organization(which have personId != 0) or //not(which have firstName and lastName) that correspond to the search criteria if (searchTeamMemberBean.getFirstName() != null && !"".equals(searchTeamMemberBean.getFirstName()) && searchTeamMemberBean.getLastName() != null && !"".equals(searchTeamMemberBean.getLastName())) { dc.add(Restrictions.and( Restrictions.ilike("firstName", "%".concat(searchTeamMemberBean.getFirstName()).concat("%")), Restrictions.ilike("lastName", "%".concat(searchTeamMemberBean.getLastName()).concat("%")))); dcCount.add(Restrictions.and( Restrictions.ilike("firstName", "%".concat(searchTeamMemberBean.getFirstName()).concat("%")), Restrictions.ilike("lastName", "%".concat(searchTeamMemberBean.getLastName()).concat("%")))); } else if (searchTeamMemberBean.getFirstName() != null && !"".equals(searchTeamMemberBean.getFirstName())) { dc.add(Restrictions.ilike("firstName", "%".concat(searchTeamMemberBean.getFirstName()).concat("%"))); dcCount.add( Restrictions.ilike("firstName", "%".concat(searchTeamMemberBean.getFirstName()).concat("%"))); } else if (searchTeamMemberBean.getLastName() != null && !"".equals(searchTeamMemberBean.getLastName())) { dc.add(Restrictions.ilike("lastName", "%".concat(searchTeamMemberBean.getLastName()).concat("%"))); dcCount.add(Restrictions.ilike("lastName", "%".concat(searchTeamMemberBean.getLastName()).concat("%"))); } if (!searchTeamMemberBean.isWithDeleted()) { dc.add(Restrictions.eq("status", IConstant.NOM_TEAM_MEMBER_STATUS_ACTIVATED)); dcCount.add(Restrictions.eq("status", IConstant.NOM_TEAM_MEMBER_STATUS_ACTIVATED)); } DetachedCriteria dcOnProject = dc.createCriteria("projectTeam").createCriteria("project"); DetachedCriteria dcCountOnProject = dcCount.createCriteria("projectTeam").createCriteria("project"); if (searchTeamMemberBean.getProjectId() != null && !searchTeamMemberBean.getProjectId() .equals(Integer.valueOf(IConstant.NOM_TS_PERSON_SEARCH_IN_ORGANIZATION))) { if (searchTeamMemberBean.getProjectId() .equals(Integer.valueOf(IConstant.NOM_TS_PERSON_SEARCH_ALL_PROJECTS))) { //if the used doesn't have the permission to search in all the projects for team members, //the user must see all the persons from the projects where he is PM and only his person //for the projects where he isn't PM List<Project> userProjects = null; if (!searchTeamMemberBean.isHasPermissionToSeeAllProjects()) { if (!searchTeamMemberBean.isOnlyManager()) { userProjects = BLProject.getInstance().getProjectsByPerson( searchTeamMemberBean.getPersonId(), searchTeamMemberBean.isIncludeFinishedAndAbandonedProjects()); } else { userProjects = BLProject.getInstance().getProjectsByManager( searchTeamMemberBean.getPersonId(), searchTeamMemberBean.isIncludeFinishedAndAbandonedProjects()); } } else { userProjects = BLProject.getInstance().getAllProjects(searchTeamMemberBean.getOrganizationId(), searchTeamMemberBean.isIncludeFinishedAndAbandonedProjects()); } if (userProjects != null && !userProjects.isEmpty()) { List<Integer> projectIds = new ArrayList<Integer>(); for (Project prj : userProjects) { projectIds.add(prj.getProjectId()); } dcOnProject.add(Restrictions.in("projectId", projectIds)); dcCountOnProject.add(Restrictions.in("projectId", projectIds)); } else { return new ArrayList<TeamMember>(); } } else { //if a project is selected, the team members project team must correspond to that project dcOnProject.add(Restrictions.eq("projectId", searchTeamMemberBean.getProjectId())); dcCountOnProject.add(Restrictions.eq("projectId", searchTeamMemberBean.getProjectId())); } } if (searchTeamMemberBean.getOrganizationId() != null) { dcOnProject.add(Restrictions.eq("organizationId", searchTeamMemberBean.getOrganizationId())); dcCountOnProject.add(Restrictions.eq("organizationId", searchTeamMemberBean.getOrganizationId())); } // check if I have to order the results if (searchTeamMemberBean.getSortParam() != null && StringUtils.hasLength(searchTeamMemberBean.getSortParam())) { if (searchTeamMemberBean.getSortParam().equals("projectName")) { if (searchTeamMemberBean.getSortDirection() == IConstant.ASCENDING) { dcOnProject.addOrder(Order.asc("name")); } else { dcOnProject.addOrder(Order.desc("name")); } } else { // if I have to, check if I have to order them ascending or descending if (searchTeamMemberBean.getSortDirection() == IConstant.ASCENDING) { // ascending dc.addOrder(Order.asc(searchTeamMemberBean.getSortParam())); } else { // descending dc.addOrder(Order.desc(searchTeamMemberBean.getSortParam())); } } } // if the request didn't come from the pagination area, // it means that I have to set the number of result and pages if (searchTeamMemberBean.getNbrOfResults() == -1) { // set the countDistinct restriction dcCount.setProjection(Projections.countDistinct("memberId")); int nbrOfResults = ((Integer) getHibernateTemplate().findByCriteria(dcCount, 0, 0).get(0)).intValue(); searchTeamMemberBean.setNbrOfResults(nbrOfResults); logger.debug("NbrOfResults " + searchTeamMemberBean.getNbrOfResults()); logger.debug("----> searchPersonBean.getResults " + searchTeamMemberBean.getResultsPerPage()); // get the number of pages if (nbrOfResults % searchTeamMemberBean.getResultsPerPage() == 0) { searchTeamMemberBean.setNbrOfPages(nbrOfResults / searchTeamMemberBean.getResultsPerPage()); } else { searchTeamMemberBean.setNbrOfPages(nbrOfResults / searchTeamMemberBean.getResultsPerPage() + 1); } searchTeamMemberBean.setCurrentPage(1); } List<TeamMember> res = getHibernateTemplate().findByCriteria(dc, (searchTeamMemberBean.getCurrentPage() - 1) * searchTeamMemberBean.getResultsPerPage(), searchTeamMemberBean.getResultsPerPage()); logger.debug("getFromSearchSimpleWithPagination - END"); return res; }
From source file:ro.cs.logaudit.dao.impl.DaoAuditCmImpl.java
License:Open Source License
/** * Searches for audit after criterion from searchBean * /* w ww.ja v a 2 s. co m*/ * @author Coni * * @return A list of audit beans * @throws ParseException */ public List<AuditCmBean> getAuditBeanFromSearch(SearchAuditCmBean searchAuditCmBean, boolean isDeleteAction, Locale locale) throws ParseException { logger.debug("getAuditBeanFromSearch - START"); // set search criterion DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.auditcmEntity); DetachedCriteria dcCount = DetachedCriteria.forEntityName(IModelConstant.auditcmEntity); if (searchAuditCmBean.getOrganisationId() != -1) { dc.add(Restrictions.eq("organisationId", searchAuditCmBean.getOrganisationId())); dcCount.add(Restrictions.eq("organisationId", searchAuditCmBean.getOrganisationId())); } if (searchAuditCmBean.getEvent() != null && !"-1".equals(searchAuditCmBean.getEvent())) { dc.add(Restrictions.ilike("event", "%".concat(searchAuditCmBean.getEvent()).concat("%"))); dcCount.add(Restrictions.ilike("event", "%".concat(searchAuditCmBean.getEvent()).concat("%"))); } if (searchAuditCmBean.getPersonId() != null && !"".equals(searchAuditCmBean.getPersonId())) { dc.add(Restrictions.eq("personId", searchAuditCmBean.getPersonId())); dcCount.add(Restrictions.eq("personId", searchAuditCmBean.getPersonId())); } if (searchAuditCmBean.getMessage() != null && !"".equals(searchAuditCmBean.getMessage())) { dc.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditCmBean.getMessage()).concat("%"))); dcCount.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditCmBean.getMessage()).concat("%"))); } if (searchAuditCmBean.getStartDate() != null) { dc.add(Expression.ge("date", searchAuditCmBean.getStartDate())); dcCount.add(Expression.ge("date", searchAuditCmBean.getStartDate())); } if (searchAuditCmBean.getEndDate() != null) { dc.add(Expression.le("date", searchAuditCmBean.getEndDate())); dcCount.add(Expression.le("date", searchAuditCmBean.getEndDate())); } // check if I have to order the results if (searchAuditCmBean.getSortParam() != null && !"".equals(searchAuditCmBean.getSortParam())) { // if I have to, check if I have to order them ascending or descending if (searchAuditCmBean.getSortDirection() == -1) { // ascending dc.addOrder(Order.asc(searchAuditCmBean.getSortParam())); } else { // descending dc.addOrder(Order.desc(searchAuditCmBean.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 || searchAuditCmBean.getNbrOfResults() == -1) { boolean isSearch = false; if (searchAuditCmBean.getNbrOfResults() == -1) { isSearch = true; } // set the count(*) restriction dcCount.setProjection(Projections.countDistinct("auditId")); //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))); searchAuditCmBean.setNbrOfResults(nbrOfResults); // get the number of pages if (nbrOfResults % searchAuditCmBean.getResultsPerPage() == 0) { searchAuditCmBean.setNbrOfPages(nbrOfResults / searchAuditCmBean.getResultsPerPage()); } else { searchAuditCmBean.setNbrOfPages(nbrOfResults / searchAuditCmBean.getResultsPerPage() + 1); } // after an audit is deleted, the same page has to be displayed; //only when all the audit events from last page are deleted, the previous page will be shown if (isDeleteAction && (searchAuditCmBean.getCurrentPage() > searchAuditCmBean.getNbrOfPages())) { searchAuditCmBean.setCurrentPage(searchAuditCmBean.getNbrOfPages()); } else if (isSearch) { searchAuditCmBean.setCurrentPage(1); } } List<AuditCmBean> res = (List<AuditCmBean>) getHibernateTemplate().findByCriteria(dc, (searchAuditCmBean.getCurrentPage() - 1) * searchAuditCmBean.getResultsPerPage(), searchAuditCmBean.getResultsPerPage()); logger.debug("getAuditBeanFromSearch - END results size : ".concat(String.valueOf(res.size()))); return res; }
From source file:ro.cs.logaudit.dao.impl.DaoAuditDmImpl.java
License:Open Source License
/** * Searches for audit after criterion from searchBean * /*from w w w . ja v a 2s . c o m*/ * @author coni * * @return A list of audit beans * @throws ParseException */ public List<AuditDmBean> getAuditBeanFromSearch(SearchAuditDmBean searchAuditDmBean, boolean isDeleteAction, Locale locale) throws ParseException { logger.debug("getAuditBeanFromSearch - START"); // set search criterion DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.auditdmEntity); DetachedCriteria dcCount = DetachedCriteria.forEntityName(IModelConstant.auditdmEntity); if (searchAuditDmBean.getOrganisationId() != -1) { dc.add(Restrictions.eq("organisationId", searchAuditDmBean.getOrganisationId())); dcCount.add(Restrictions.eq("organisationId", searchAuditDmBean.getOrganisationId())); } if (searchAuditDmBean.getEvent() != null && !"-1".equals(searchAuditDmBean.getEvent())) { dc.add(Restrictions.ilike("event", "%".concat(searchAuditDmBean.getEvent()).concat("%"))); dcCount.add(Restrictions.ilike("event", "%".concat(searchAuditDmBean.getEvent()).concat("%"))); } if (searchAuditDmBean.getPersonId() != null && !"".equals(searchAuditDmBean.getPersonId())) { dc.add(Restrictions.eq("personId", searchAuditDmBean.getPersonId())); dcCount.add(Restrictions.eq("personId", searchAuditDmBean.getPersonId())); } if (searchAuditDmBean.getMessage() != null && !"".equals(searchAuditDmBean.getMessage())) { dc.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditDmBean.getMessage()).concat("%"))); dcCount.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditDmBean.getMessage()).concat("%"))); } if (searchAuditDmBean.getStartDate() != null) { dc.add(Expression.ge("date", searchAuditDmBean.getStartDate())); dcCount.add(Expression.ge("date", searchAuditDmBean.getStartDate())); } if (searchAuditDmBean.getEndDate() != null) { dc.add(Expression.le("date", searchAuditDmBean.getEndDate())); dcCount.add(Expression.le("date", searchAuditDmBean.getEndDate())); } // check if I have to order the results if (searchAuditDmBean.getSortParam() != null && !"".equals(searchAuditDmBean.getSortParam())) { // if I have to, check if I have to order them ascending or descending if (searchAuditDmBean.getSortDirection() == -1) { // ascending dc.addOrder(Order.asc(searchAuditDmBean.getSortParam())); } else { // descending dc.addOrder(Order.desc(searchAuditDmBean.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 || searchAuditDmBean.getNbrOfResults() == -1) { boolean isSearch = false; if (searchAuditDmBean.getNbrOfResults() == -1) { isSearch = true; } // set the count(*) restriction dcCount.setProjection(Projections.countDistinct("auditId")); //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))); searchAuditDmBean.setNbrOfResults(nbrOfResults); // get the number of pages if (nbrOfResults % searchAuditDmBean.getResultsPerPage() == 0) { searchAuditDmBean.setNbrOfPages(nbrOfResults / searchAuditDmBean.getResultsPerPage()); } else { searchAuditDmBean.setNbrOfPages(nbrOfResults / searchAuditDmBean.getResultsPerPage() + 1); } // after an audit is deleted, the same page has to be displayed; //only when all the roles from last page are deleted, the previous page will be shown if (isDeleteAction && (searchAuditDmBean.getCurrentPage() > searchAuditDmBean.getNbrOfPages())) { searchAuditDmBean.setCurrentPage(searchAuditDmBean.getNbrOfPages()); } else if (isSearch) { searchAuditDmBean.setCurrentPage(1); } } List<AuditDmBean> res = (List<AuditDmBean>) getHibernateTemplate().findByCriteria(dc, (searchAuditDmBean.getCurrentPage() - 1) * searchAuditDmBean.getResultsPerPage(), searchAuditDmBean.getResultsPerPage()); logger.debug("getAuditBeanFromSearch - END results size : ".concat(String.valueOf(res.size()))); return res; }
From source file:ro.cs.logaudit.dao.impl.DaoAuditOmImpl.java
License:Open Source License
/** * Searches for audit after criterion from searchBean * /*from w w w.j av a2 s .c om*/ * @author Adelina * @author Coni * * @return A list of audit beans * @throws ParseException */ public List<AuditOmBean> getAuditBeanFromSearch(SearchAuditOmBean searchAuditOmBean, boolean isDeleteAction, Locale locale) throws ParseException { logger.debug("getAuditBeanFromSearch - START"); // set search criterion DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.auditomEntity); DetachedCriteria dcCount = DetachedCriteria.forEntityName(IModelConstant.auditomEntity); if (searchAuditOmBean.getOrganisationId() != -1) { dc.add(Restrictions.eq("organisationId", searchAuditOmBean.getOrganisationId())); dcCount.add(Restrictions.eq("organisationId", searchAuditOmBean.getOrganisationId())); } if (searchAuditOmBean.getEvent() != null && !"-1".equals(searchAuditOmBean.getEvent())) { dc.add(Restrictions.ilike("event", "%".concat(searchAuditOmBean.getEvent()).concat("%"))); dcCount.add(Restrictions.ilike("event", "%".concat(searchAuditOmBean.getEvent()).concat("%"))); } if (searchAuditOmBean.getPersonId() != null && !"".equals(searchAuditOmBean.getPersonId())) { dc.add(Restrictions.eq("personId", searchAuditOmBean.getPersonId())); dcCount.add(Restrictions.eq("personId", searchAuditOmBean.getPersonId())); } if (searchAuditOmBean.getMessage() != null && !"".equals(searchAuditOmBean.getMessage())) { dc.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditOmBean.getMessage()).concat("%"))); dcCount.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditOmBean.getMessage()).concat("%"))); } if (searchAuditOmBean.getStartDate() != null) { dc.add(Expression.ge("date", searchAuditOmBean.getStartDate())); dcCount.add(Expression.ge("date", searchAuditOmBean.getStartDate())); } if (searchAuditOmBean.getEndDate() != null) { dc.add(Expression.le("date", searchAuditOmBean.getEndDate())); dcCount.add(Expression.le("date", searchAuditOmBean.getEndDate())); } // check if I have to order the results if (searchAuditOmBean.getSortParam() != null && !"".equals(searchAuditOmBean.getSortParam())) { // if I have to, check if I have to order them ascending or descending if (searchAuditOmBean.getSortDirection() == -1) { // ascending dc.addOrder(Order.asc(searchAuditOmBean.getSortParam())); } else { // descending dc.addOrder(Order.desc(searchAuditOmBean.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 || searchAuditOmBean.getNbrOfResults() == -1) { boolean isSearch = false; if (searchAuditOmBean.getNbrOfResults() == -1) { isSearch = true; } // set the count(*) restriction dcCount.setProjection(Projections.countDistinct("auditId")); //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))); searchAuditOmBean.setNbrOfResults(nbrOfResults); // get the number of pages if (nbrOfResults % searchAuditOmBean.getResultsPerPage() == 0) { searchAuditOmBean.setNbrOfPages(nbrOfResults / searchAuditOmBean.getResultsPerPage()); } else { searchAuditOmBean.setNbrOfPages(nbrOfResults / searchAuditOmBean.getResultsPerPage() + 1); } // after an audit is deleted, the same page has to be displayed; //only when all the audit events from last page are deleted, the previous page will be shown if (isDeleteAction && (searchAuditOmBean.getCurrentPage() > searchAuditOmBean.getNbrOfPages())) { searchAuditOmBean.setCurrentPage(searchAuditOmBean.getNbrOfPages()); } else if (isSearch) { searchAuditOmBean.setCurrentPage(1); } } List<AuditOmBean> res = (List<AuditOmBean>) getHibernateTemplate().findByCriteria(dc, (searchAuditOmBean.getCurrentPage() - 1) * searchAuditOmBean.getResultsPerPage(), searchAuditOmBean.getResultsPerPage()); logger.debug("getAuditBeanFromSearch - END results size : ".concat(String.valueOf(res.size()))); return res; }
From source file:ro.cs.logaudit.dao.impl.DaoAuditTsImpl.java
License:Open Source License
/** * Searches for audit after criterion from searchBean * /* w w w.ja v a 2 s . co m*/ * @author Coni * * @return A list of audit beans * @throws ParseException */ public List<AuditTsBean> getAuditBeanFromSearch(SearchAuditTsBean searchAuditTsBean, boolean isDeleteAction, Locale locale) throws ParseException { logger.debug("getAuditBeanFromSearch - START"); // set search criterion DetachedCriteria dc = DetachedCriteria.forEntityName(IModelConstant.audittsEntity); DetachedCriteria dcCount = DetachedCriteria.forEntityName(IModelConstant.audittsEntity); if (searchAuditTsBean.getOrganisationId() != -1) { dc.add(Restrictions.eq("organisationId", searchAuditTsBean.getOrganisationId())); dcCount.add(Restrictions.eq("organisationId", searchAuditTsBean.getOrganisationId())); } if (searchAuditTsBean.getEvent() != null && !"-1".equals(searchAuditTsBean.getEvent())) { dc.add(Restrictions.ilike("event", "%".concat(searchAuditTsBean.getEvent()).concat("%"))); dcCount.add(Restrictions.ilike("event", "%".concat(searchAuditTsBean.getEvent()).concat("%"))); } if (searchAuditTsBean.getPersonId() != null && !"".equals(searchAuditTsBean.getPersonId())) { dc.add(Restrictions.eq("personId", searchAuditTsBean.getPersonId())); dcCount.add(Restrictions.eq("personId", searchAuditTsBean.getPersonId())); } if (searchAuditTsBean.getMessage() != null && !"".equals(searchAuditTsBean.getMessage())) { dc.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditTsBean.getMessage()).concat("%"))); dcCount.add(Restrictions.ilike("message".concat(locale.toString().toUpperCase()), "%".concat(searchAuditTsBean.getMessage()).concat("%"))); } if (searchAuditTsBean.getStartDate() != null) { dc.add(Expression.ge("date", searchAuditTsBean.getStartDate())); dcCount.add(Expression.ge("date", searchAuditTsBean.getStartDate())); } if (searchAuditTsBean.getEndDate() != null) { dc.add(Expression.le("date", searchAuditTsBean.getEndDate())); dcCount.add(Expression.le("date", searchAuditTsBean.getEndDate())); } // check if I have to order the results if (searchAuditTsBean.getSortParam() != null && !"".equals(searchAuditTsBean.getSortParam())) { // if I have to, check if I have to order them ascending or descending if (searchAuditTsBean.getSortDirection() == -1) { // ascending dc.addOrder(Order.asc(searchAuditTsBean.getSortParam())); } else { // descending dc.addOrder(Order.desc(searchAuditTsBean.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 || searchAuditTsBean.getNbrOfResults() == -1) { boolean isSearch = false; if (searchAuditTsBean.getNbrOfResults() == -1) { isSearch = true; } // set the count(*) restriction dcCount.setProjection(Projections.countDistinct("auditId")); //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))); searchAuditTsBean.setNbrOfResults(nbrOfResults); // get the number of pages if (nbrOfResults % searchAuditTsBean.getResultsPerPage() == 0) { searchAuditTsBean.setNbrOfPages(nbrOfResults / searchAuditTsBean.getResultsPerPage()); } else { searchAuditTsBean.setNbrOfPages(nbrOfResults / searchAuditTsBean.getResultsPerPage() + 1); } // after an audit is deleted, the same page has to be displayed; //only when all the audit events from last page are deleted, the previous page will be shown if (isDeleteAction && (searchAuditTsBean.getCurrentPage() > searchAuditTsBean.getNbrOfPages())) { searchAuditTsBean.setCurrentPage(searchAuditTsBean.getNbrOfPages()); } else if (isSearch) { searchAuditTsBean.setCurrentPage(1); } } List<AuditTsBean> res = (List<AuditTsBean>) getHibernateTemplate().findByCriteria(dc, (searchAuditTsBean.getCurrentPage() - 1) * searchAuditTsBean.getResultsPerPage(), searchAuditTsBean.getResultsPerPage()); logger.debug("getAuditBeanFromSearch - END results size : ".concat(String.valueOf(res.size()))); return res; }