Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Specification<GrievanceForwarding> getListViewSpecification(Long officeOrganogramId,
- Long officeId,
- ListViewType listType) {
- Specification<GrievanceForwarding> specification = new Specification<GrievanceForwarding>() {
- public Predicate toPredicate(Root<GrievanceForwarding> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
- List<Predicate> predicates = new ArrayList<Predicate>();
- predicates.add(builder.equal(root.get("isCurrent"), true));
- if (listType.toString().contains("OUTBOX")) {
- predicates.add(builder.equal(root.get("fromGROPost").<Long>get("id"), officeOrganogramId));
- predicates.add(builder.equal(root.get("fromOffice").<Long>get("id"), officeId));
- predicates.add(builder.notEqual(root.get("toGROPost").<Long>get("id"), officeOrganogramId));
- //SELECT COUNT(*) FROM complaint_movements c WHERE c.complaint_id = cm.complaint_id and c.to_office_id = ?1 and c.to_office_unit_organogram_id = ?2 and is_current = 1
- Subquery<Long> subquery = query.subquery(Long.class);
- Root<GrievanceForwarding> subqueryRoot = subquery.from(GrievanceForwarding.class);
- subquery.select(builder.count(subqueryRoot.get("grievance").get("id")));
- subquery.where(
- builder.and(
- builder.equal(subqueryRoot.get("toGROPost").<Long>get("id"), officeOrganogramId),
- builder.equal(subqueryRoot.get("toOffice").<Long>get("id"), officeId),
- builder.equal(subqueryRoot.get("isCurrent"), true),
- builder.equal(subqueryRoot.get("grievance").get("id"),root.get("grievance").get("id"))
- )
- );
- predicates.add(builder.equal(subquery.getSelection(),0L));
- } else if (listType.toString().contains("INBOX")) {
- predicates.add(builder.equal(root.get("toGROPost").<Long>get("id"), officeOrganogramId));
- predicates.add(builder.equal(root.get("toOffice").<Long>get("id"), officeId));
- } else {
- predicates.add(builder.or(
- builder.and(
- builder.equal(root.get("toGROPost").<Long>get("id"), officeOrganogramId),
- builder.equal(root.get("toOffice").<Long>get("id"), officeId)),
- builder.and(
- builder.equal(root.get("fromGROPost").<Long>get("id"), officeOrganogramId),
- builder.equal(root.get("fromOffice").<Long>get("id"), officeId))
- )
- );
- }
- if (listType.toString().contains("EXPIRED")) {
- Date date = new Date();
- predicates.add(builder.lessThan(root.<Date>get("deadlineDate"), date));
- }
- ListViewConditionOnCurrentStatusGenerator statusGenerator = new ListViewConditionOnCurrentStatusGenerator();
- List<GrievanceCurrentStatus> grievanceCurrentStatusList = statusGenerator.getCurrentStatusListBasedOnListViewType(listType);
- predicates.add(builder.in(root.get("grievance").get("grievanceCurrentStatus")).value(grievanceCurrentStatusList));
- query.orderBy(builder.desc(root.get("createdAt")));
- query.groupBy(root.get("grievance"));
- return builder.and(predicates.toArray(new Predicate[predicates.size()]));
- }
- };
- return specification;
- }
- public Specification<GrievanceForwarding> getListViewSpecificationWithSearch(Long officeOrganogramId,
- Long officeId,
- ListViewType listType,
- Map<String, String> searchCriterias) {
- Specification<GrievanceForwarding> specification = new Specification<GrievanceForwarding>() {
- public Predicate toPredicate(Root<GrievanceForwarding> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
- List<Predicate> predicates = new ArrayList<Predicate>();
- predicates.add(builder.equal(root.get("isCurrent"), true));
- if (listType.toString().contains("OUTBOX")) {
- predicates.add(builder.equal(root.get("fromGROPost").<Long>get("id"), officeOrganogramId));
- predicates.add(builder.equal(root.get("fromOffice").<Long>get("id"), officeId));
- predicates.add(builder.notEqual(root.get("toGROPost").<Long>get("id"), officeOrganogramId));
- //SELECT COUNT(*) FROM complaint_movements c WHERE c.complaint_id = cm.complaint_id and c.to_office_id = ?1 and c.to_office_unit_organogram_id = ?2 and is_current = 1
- Subquery<Long> subquery = query.subquery(Long.class);
- Root<GrievanceForwarding> subqueryRoot = subquery.from(GrievanceForwarding.class);
- subquery.select(builder.count(subqueryRoot.get("grievance").get("id")));
- subquery.where(
- builder.and(
- builder.equal(subqueryRoot.get("toGROPost").<Long>get("id"), officeOrganogramId),
- builder.equal(subqueryRoot.get("toOffice").<Long>get("id"), officeId),
- builder.equal(subqueryRoot.get("isCurrent"), true),
- builder.equal(subqueryRoot.get("grievance").get("id"),root.get("grievance").get("id"))
- )
- );
- predicates.add(builder.equal(subquery.getSelection(),0L));
- } else if (listType.toString().contains("INBOX")) {
- predicates.add(builder.equal(root.get("toGROPost").<Long>get("id"), officeOrganogramId));
- predicates.add(builder.equal(root.get("toOffice").<Long>get("id"), officeId));
- } else {
- predicates.add(builder.or(
- builder.and(
- builder.equal(root.get("toGROPost").<Long>get("id"), officeOrganogramId),
- builder.equal(root.get("toOffice").<Long>get("id"), officeId)),
- builder.and(
- builder.equal(root.get("fromGROPost").<Long>get("id"), officeOrganogramId),
- builder.equal(root.get("fromOffice").<Long>get("id"), officeId))
- )
- );
- }
- if (listType.toString().contains("EXPIRED")) {
- Date date = new Date();
- predicates.add(builder.lessThan(root.<Date>get("deadlineDate"), date));
- }
- ListViewConditionOnCurrentStatusGenerator statusGenerator = new ListViewConditionOnCurrentStatusGenerator();
- List<GrievanceCurrentStatus> grievanceCurrentStatusList = statusGenerator.getCurrentStatusListBasedOnListViewType(listType);
- predicates.add(builder.in(root.get("grievance").get("grievanceCurrentStatus")).value(grievanceCurrentStatusList));
- for (Map.Entry<String, String> entry : searchCriterias.entrySet()) {
- String searchType = entry.getKey();
- String searchValue = entry.getValue();
- //TODO:, , , , , serviceName, designation, , closeStartDate, closeEndDate,
- if (searchType.equals("caseNumber")) {
- if (BanglaConverter.isABanglaDigit(searchValue)) {
- searchValue = BanglaConverter.convertToEnglish(searchValue);
- }
- predicates.add(builder.like(root.join("grievance").<String>get("caseNumber"), searchValue + "%"));
- } else if (searchType.equals("trackingNumber")) {
- if (BanglaConverter.isABanglaDigit(searchValue)) {
- searchValue = BanglaConverter.convertToEnglish(searchValue);
- }
- predicates.add(builder.like(root.join("grievance").<String>get("trackingNumber"), searchValue + "%"));
- } else if (searchType.equals("serviceType")) {
- ServiceType serviceType;
- try {
- serviceType = ServiceType.valueOf(searchValue);
- predicates.add(builder.equal(root.join("grievance").<ServiceType>get("grievanceType"), serviceType));
- } catch (Exception e) {
- }
- } else if (searchType.equals("status")) {
- GrievanceCurrentStatus searchStatus;
- try {
- searchStatus = GrievanceCurrentStatus.valueOf(searchValue);
- predicates.add(builder.equal(root.join("grievance").<GrievanceCurrentStatus>get("grievanceCurrentStatus"), searchStatus));
- } catch (Exception e) {
- }
- } else if (searchType.equals("subject")) {
- predicates.add(builder.like(root.join("grievance").<String>get(searchType), "%" + searchValue + "%"));
- } else if (searchType.equals("createdAtStart")) {
- predicates.add(builder.greaterThanOrEqualTo(root.join("grievance").<Date>get("createdAt"), DateTimeConverter.convertToDate(searchValue)));
- } else if (searchType.equals("createdAtEnd")) {
- predicates.add(builder.lessThanOrEqualTo(root.join("grievance").<Date>get("createdAt"), DateTimeConverter.convertToDate(searchValue)));
- }
- }
- query.orderBy(builder.desc(root.get("createdAt")));
- query.groupBy(root.get("grievance"));
- return builder.and(predicates.toArray(new Predicate[predicates.size()]));
- }
- };
- return specification;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement