@Override
  public List<Privilege> search(final ImmutablePair<String, ?>... constraints) {
    final Specification<Privilege> firstSpec =
        SearchSecUtil.resolveConstraint(constraints[0], Privilege.class);
    Specifications<Privilege> specifications = Specifications.where(firstSpec);
    for (int i = 1; i < constraints.length; i++) {
      specifications =
          specifications.and(SearchSecUtil.resolveConstraint(constraints[i], Privilege.class));
    }
    if (firstSpec == null) {
      return Lists.newArrayList();
    }

    return getDao().findAll(specifications);
  }
 @Override
 public T findOneByExample(final T entity, final SearchParameters sp) {
   Assert.notNull(sp, "Search parameters required");
   Specifications<T> spec =
       Specifications.where(byExampleEnhancedSpecification.byExampleOnEntity(entity, sp));
   return super.findOne(spec);
 }
 @Override
 public Page<T> findByExample(
     final T example, final List<Range<T, ?>> ranges, final Pageable pageable) {
   Specifications<T> spec = Specifications.where(byExampleSpecification.byExample(example));
   spec = RangeSpecification.andRangeIfSet(spec, ranges);
   return findAll(spec, pageable);
 }
  public List<T> findAll(UserInfo userInfo, F form) {
    logger.infoCode("I0001");

    // 必須
    Specification<T> whereUserKey =
        new Specification<T>() {
          @Override
          public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            return cb.equal(root.get("usUserTbl").get("userKey"), userInfo.getTargetUserKey());
          }
        };
    // 言語
    Specification<T> whereLanguage =
        StringUtil.isNull(form.getLanguage())
            ? null
            : new Specification<T>() {
              @Override
              public Predicate toPredicate(
                  Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("paperLanguage"), form.getLanguage());
              }
            };

    List<T> list =
        (List<T>)
            repository.findAll(
                (Specification<T>) Specifications.where(whereUserKey).and(whereLanguage));

    logger.infoCode("I0002");
    return list;
  }
Exemple #5
0
  @Test
  public void testUser() {
    User user = new User();
    user.setUserName("MyName1");
    user.setEmail("*****@*****.**");
    user.setCreatedUser(getUser("user"));
    user.setCreatedDate(new Date());
    user.setUserId("hello");
    user.setRole(Role.USER);
    user = userRepository.save(user);
    User user2 = new User();
    user2.setUserId("hello2");
    user2.setUserName("MyName2");
    user2.setEmail("*****@*****.**");
    user2.setCreatedUser(getUser("user"));
    user2.setCreatedDate(new Date());
    user2.setRole(Role.USER);
    userRepository.save(user2);

    assertThat(userRepository.count(), is(2L));

    assertThat(userRepository.findAll(UserSpecification.emailLike("gmail")).size(), is(1));

    assertThat(
        userRepository
            .findAll(
                Specifications.where(UserSpecification.emailLike("@paran"))
                    .and(UserSpecification.nameLike("MyName2")))
            .size(),
        is(1));
  }
 public T findOne(String gyosekiKey, String userKey, Timestamp updDate) {
   // 必須
   Specification<T> whereGyosekiKey =
       new Specification<T>() {
         @Override
         public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
           return cb.equal(root.get("gyosekiKey"), gyosekiKey);
         }
       };
   // 必須
   Specification<T> whereUserKey =
       new Specification<T>() {
         @Override
         public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
           return cb.equal(root.get("usUserTbl").get("userKey"), userKey);
         }
       };
   // 更新日
   Specification<T> whereUpdDate =
       updDate == null
           ? null
           : new Specification<T>() {
             @Override
             public Predicate toPredicate(
                 Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
               return cb.equal(root.get("updDate"), updDate);
             }
           };
   return (T)
       repository.findOne(
           (Specification<T>)
               Specifications.where(whereGyosekiKey).and(whereUserKey).and(whereUpdDate));
 }
  /**
   * 支援制度キーとデータ更新日指定取得
   *
   * @param supportKey
   * @param updDate
   * @return
   */
  public SpSupportTbl findOne(final String supportKey, final Timestamp updDate) {
    logger.infoCode("I0001"); // I0001=メソッド開始:{0}

    // キー
    Specification<SpSupportTbl> whereSupportKey =
        StringUtil.isNull(supportKey)
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("supportKey"), supportKey);
              }
            };
    // データ更新日
    Specification<SpSupportTbl> whereUpdDate =
        DateUtil.isNull(updDate)
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("updDate"), updDate);
              }
            };

    logger.infoCode("I0002"); // I0002=メソッド終了:{0}
    return spSupportTblRepository.findOne(Specifications.where(whereSupportKey).and(whereUpdDate));
  }
  public EvEventTbl findOne(UserInfo userInfo, EventForm form) {
    logger.infoCode("I0001"); // I0001=メソッド開始:{0}

    // 定数区分
    Specification<EvEventTbl> whereEventKey =
        StringUtil.isNull(form.getEventKey())
            ? null
            : new Specification<EvEventTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<EvEventTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("eventKey"), form.getEventKey());
              }
            };
    Specification<EvEventTbl> whereUpdDate =
        DateUtil.isNull(form.getUpdDate())
            ? null
            : new Specification<EvEventTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<EvEventTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("updDate"), form.getUpdDate());
              }
            };

    logger.infoCode("I0002"); // I0002=メソッド終了:{0}
    return evEventTblRepository.findOne(Specifications.where(whereEventKey).and(whereUpdDate));
  }
 public List<Railway> findAll(Railway criteria) {
   PlainSpecification<Railway> spec1 =
       new PlainSpecification<Railway>(new SearchCriteria("id", "=", criteria.getId()));
   PlainSpecification<Railway> spec2 =
       new PlainSpecification<Railway>(
           new SearchCriteria("railwayCode", "like", criteria.getRailwayCode()));
   return railwayRepository.findAll(Specifications.where(spec1).and(spec2));
 }
 @Transactional(readOnly = true)
 public Page<Map<String, Object>> findAll(
     CustomRepositorySelector<Usuario> customRepositorySelector,
     Specification<Usuario> specification,
     Pageable pageable) {
   return usuarioRepository.findAll(
       customRepositorySelector, Specifications.where(specification), pageable);
 }
 @Override
 public List<T> findByExample(final T entity, final SearchParameters sp) {
   Assert.notNull(sp, "Search parameters required");
   if (sp.hasNamedQuery()) {
     return getNamedQueryUtil().findByNamedQuery(sp);
   }
   Specifications<T> spec =
       Specifications.where(byExampleEnhancedSpecification.byExampleOnEntity(entity, sp));
   return findAll(spec);
 }
  @Override
  public long countByExample(final T entity, final SearchParameters sp) {
    Validate.notNull(entity, "The entity cannot be null");
    if (sp.hasNamedQuery()) {
      return getNamedQueryUtil().numberByNamedQuery(sp).intValue();
    }
    Specifications<T> spec =
        Specifications.where(byExampleEnhancedSpecification.byExampleOnEntity(entity, sp));

    return super.count(spec);
  }
  @Transactional(readOnly = true)
  private Specification<Usuario> childrenBelongsToPessoaId(final Long pessoaId) {
    Pessoa pessoa = pessoaService.findOne(pessoaId);

    if (pessoa instanceof Estabelecimento) {
      Estabelecimento pai = null;

      Specifications<Usuario> pessoaIdEqualsSpecifications =
          Specifications.where(pessoaIdEquals(pessoaId));

      while ((pai = pai == null ? ((Estabelecimento) pessoa).getPai() : pai.getPai()) != null) {
        pessoaIdEqualsSpecifications =
            pessoaIdEqualsSpecifications.or(pessoaIdEquals(pai.getPessoaId()));
      }

      return pessoaIdEqualsSpecifications;
    } else {
      return Specifications.where(pessoaIdEquals(pessoaId));
    }
  }
 @Transactional(readOnly = true)
 public Page<Map<String, Object>> findAll(
     CustomRepositorySelector<Usuario> customRepositorySelector,
     Specification<Usuario> specification,
     Pageable pageable,
     Long pessoaId,
     Long paiPessoaId) {
   return usuarioRepository.findAll(
       customRepositorySelector,
       Specifications.where(specification)
           .and(pessoaIdEqualsOrPaiPessoaIdEquals(pessoaId, paiPessoaId)),
       pageable);
 }
  /**
   * 一覧取得
   *
   * @param form
   * @param locale
   * @return
   */
  public List<SpSupportDto> findSupportBatchTarget(SupportForm form, Locale locale) {
    logger.infoCode("I0001"); // I0001=メソッド開始:{0}

    Date today = DateUtil.toDate(DateUtil.getSysdate("yyyyMMdd"));

    // 取得条件:公開
    Specification<SpSupportTbl> wherePublicFlag =
        StringUtil.isNull(form.getSearchPublicFlag())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("publicFlag"), form.getSearchPublicFlag());
              }
            };

    // 取得条件:日付
    Specification<SpSupportTbl> whereEnDay =
        StringUtil.isNull(form.getSearchDateType())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                // batch処理
                if (SEARCH_DATE_TYPE_BATCH.equals(form.getSearchDateType().toLowerCase())) {
                  Predicate predicate = cb.conjunction();
                  Predicate predicate2 = cb.conjunction();
                  predicate2 =
                      cb.and(predicate2, cb.equal(root.get("updDate").as(Date.class), today));
                  predicate2 =
                      cb.and(
                          predicate2, cb.lessThan(root.get("eventSendDate").as(Date.class), today));

                  predicate =
                      cb.and(predicate, cb.equal(root.get("eventSendDate").as(Date.class), today));
                  predicate = cb.or(predicate2);
                  return predicate;
                }
                return null;
              }
            };

    List<SpSupportTbl> list =
        spSupportTblRepository.findAll(Specifications.where(wherePublicFlag).and(whereEnDay));

    logger.infoCode("I0002"); // I0002=メソッド終了:{0}
    return getDtoList(list, locale);
  }
  public List<F> findAllProfileView(UserInfo userInfo, String[] publicFlags) {
    logger.infoCode("I0001");

    //
    Specification<T> whereUserKey =
        new Specification<T>() {
          @Override
          public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            return cb.equal(root.get("usUserTbl").get("userKey"), userInfo.getTargetUserKey());
          }
        };

    // 取得条件:
    Specification<T> wherePublicFlags =
        publicFlags == null
            ? null
            : new Specification<T>() {
              @Override
              public Predicate toPredicate(
                  Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                Predicate predicate = cb.conjunction();
                for (int i = 0; i < publicFlags.length; i++) {
                  String keyword = publicFlags[i];
                  if (i == 0) {
                    predicate = cb.and(predicate, cb.equal(root.get("publicFlag"), keyword));
                  } else {
                    predicate = cb.or(predicate, cb.equal(root.get("publicFlag"), keyword));
                  }
                }
                return predicate;
              }
            };

    List<T> list =
        (List<T>)
            repository.findAll(
                (Specification<T>) Specifications.where(whereUserKey).and(wherePublicFlags));

    logger.infoCode("I0002");
    return getDtoList(list);
  }
  @Transactional(readOnly = true)
  private Specification<Usuario> pessoaIdEqualsOrPaiPessoaIdEquals(
      final Long pessoaId, final Long paiPessoaId) {
    Specification<Usuario> pessoaIdEqualsSpecification = pessoaIdEquals(pessoaId);

    Specification<Usuario> paiPessoaIdEqualsSpecification =
        new Specification<Usuario>() {
          @Override
          public Predicate toPredicate(
              Root<Usuario> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
            Subquery<Long> estabelecimentoQuery = criteriaQuery.subquery(Long.class);
            Root<Estabelecimento> estabelecimentoRoot =
                estabelecimentoQuery.from(Estabelecimento.class);
            Join<Estabelecimento, Usuario> usuarios = estabelecimentoRoot.join("usuarios");
            estabelecimentoQuery.select(usuarios.get("usuarioId").as(Long.class));
            estabelecimentoQuery.where(
                criteriaBuilder.equal(estabelecimentoRoot.get("pai").get("pessoaId"), paiPessoaId));

            return criteriaBuilder.in(root.get("usuarioId")).value(estabelecimentoQuery);
          }
        };

    return Specifications.where(pessoaIdEqualsSpecification).or(paiPessoaIdEqualsSpecification);
  }
 @Override
 public Page<T> findByExample(final T example, final Pageable pageable) {
   Specifications<T> spec = Specifications.where(byExampleSpecification.byExample(example));
   return findAll(spec, pageable);
 }
 @Override
 public List<T> find(final String pattern) {
   Specifications<T> spec =
       Specifications.where(byExampleSpecification.byPatternOnStringAttributes(pattern, type));
   return findAll(spec, new PageRequest(0, MAX_VALUES_RETREIVED)).getContent();
 }
 @Transactional(readOnly = true)
 public Page<Usuario> findAll(Specification<Usuario> specification, Pageable pageable) {
   return usuarioRepository.findAll(Specifications.where(specification), pageable);
 }
  /**
   * 一覧取得
   *
   * @param form
   * @param locale
   * @return
   */
  public List<SpSupportDto> findAllLikeKeyWords(SupportForm form, Locale locale) {
    logger.infoCode("I0001"); // I0001=メソッド開始:{0}

    Date today = DateUtil.toDate(DateUtil.getSysdate("yyyyMMdd"));

    // 取得条件:区分
    Specification<SpSupportTbl> whereSupportSpkikiKbn =
        StringUtil.isNull(form.getSearchSpkikiKbn())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("supportSpkikiKbn"), form.getSearchSpkikiKbn());
              }
            };

    // 取得条件:公開
    Specification<SpSupportTbl> wherePublicFlag =
        StringUtil.isNull(form.getSearchPublicFlag())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("publicFlag"), form.getSearchPublicFlag());
              }
            };

    // 取得条件:HIRAKUリンク区分
    Specification<SpSupportTbl> whereSupportHirakuKbn =
        StringUtil.isNull(form.getSearchHirakuKbn())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("supportHirakuKbn"), form.getSearchHirakuKbn());
              }
            };

    // 取得条件:地域区分
    Specification<SpSupportTbl> whereSupportAreaKbn =
        StringUtil.isNull(form.getSearchAreaKbn())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("supportAreaKbn"), form.getSearchAreaKbn());
              }
            };

    // 取得条件:組織コード
    Specification<SpSupportTbl> wherePartyCode =
        StringUtil.isNull(form.getSearchPartyCode())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                return cb.equal(root.get("partyCode"), form.getSearchPartyCode());
              }
            };

    // 取得条件:キーワード
    Specification<SpSupportTbl> whereKeywords =
        StringUtil.isNull(form.getSearchKeyword())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                String[] keywords = form.getSearchKeyword().split(",");
                Predicate predicate = cb.conjunction();
                for (int i = 0; i < keywords.length; i++) {
                  String keyword = keywords[i];
                  predicate =
                      cb.and(predicate, cb.like(root.get("supportKeyword"), "%" + keyword + "%"));
                }
                return predicate;
              }
            };

    // 取得条件:支援制度種別コード
    Specification<SpSupportTbl> whereSyb =
        StringUtil.isNull(form.getSearchSybCode())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                String[] sybcodes = form.getSearchSybCodeArray();
                Predicate predicate = cb.conjunction();
                for (int i = 0; i < sybcodes.length; i++) {
                  String sybcode = sybcodes[i];
                  predicate =
                      cb.and(predicate, cb.like(root.get("supportSybCode"), "%" + sybcode + "%"));
                }
                return predicate;
              }
            };

    // 取得条件:日付(期間)
    Specification<SpSupportTbl> whereDate =
        StringUtil.isNull(form.getSearchDateType())
            ? null
            : new Specification<SpSupportTbl>() {
              @Override
              public Predicate toPredicate(
                  Root<SpSupportTbl> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                // batch処理
                if (SEARCH_DATE_TYPE_BATCH.equals(form.getSearchDateType().toLowerCase())) {
                  Predicate predicate = cb.conjunction();
                  Predicate predicate2 = cb.conjunction();
                  predicate2 =
                      cb.and(predicate2, cb.equal(root.get("updDate").as(Date.class), today));
                  predicate2 =
                      cb.and(
                          predicate2,
                          cb.lessThan(root.get("supportStartDate").as(Date.class), today));
                  predicate =
                      cb.and(
                          predicate, cb.equal(root.get("supportStartDate").as(Date.class), today));
                  predicate = cb.or(predicate2);
                  return predicate;
                }
                // 期間中
                if (SEARCH_DATE_TYPE_CURRENT.equals(form.getSearchDateType())) {
                  Predicate predicate = cb.conjunction();
                  predicate =
                      cb.and(
                          predicate,
                          cb.lessThanOrEqualTo(root.get("supportStartDate").as(Date.class), today));
                  predicate =
                      cb.and(
                          predicate,
                          cb.greaterThanOrEqualTo(
                              root.get("supportEndDate").as(Date.class), today));
                  return predicate;
                }
                // 過去情報
                if (SEARCH_DATE_TYPE_PAST.equals(form.getSearchDateType())) {
                  return cb.lessThan(root.get("supportEndDate").as(Date.class), today);
                }
                // 終了前
                if (SEARCH_DATE_TYPE_PRESENT.equals(form.getSearchDateType())) {
                  return cb.greaterThanOrEqualTo(root.get("supportEndDate").as(Date.class), today);
                }
                return null;
              }
            };

    List<SpSupportTbl> list =
        spSupportTblRepository.findAll(
            Specifications.where(whereSupportSpkikiKbn)
                .and(whereSupportHirakuKbn)
                .and(whereSupportAreaKbn)
                .and(wherePublicFlag)
                .and(wherePartyCode)
                .and(whereKeywords)
                .and(whereSyb)
                .and(whereDate),
            orderBy());

    logger.infoCode("I0002"); // I0002=メソッド終了:{0}
    return getDtoList(list, locale);
  }