@Override public <S extends T> List<S> findAll(Example<S> example, Sort sort) { Assert.notNull(example, "Sample must not be null!"); Assert.notNull(sort, "Sort must not be null!"); Query q = new Query(new Criteria().alike(example)).with(sort); return mongoOperations.find(q, example.getProbeType(), entityInformation.getCollectionName()); }
@Override public int remove(final String transId) { Query query = new Query(); query.addCriteria(new Criteria("transId").is(transId)); template.remove(query, collectionName); return CommonConstant.SUCCESS; }
@Override public List<HmilyTransaction> listAllByDelay(final Date date) { Query query = new Query(); query.addCriteria(Criteria.where("lastTime").lt(date)); final List<MongoAdapter> mongoBeans = template.find(query, MongoAdapter.class, collectionName); if (CollectionUtils.isNotEmpty(mongoBeans)) { return mongoBeans.stream().map(this::buildByCache).collect(Collectors.toList()); } return Collections.emptyList(); }
private boolean doUpdate(Object id, DBObject data, String... fieldsToDelete) { Assert.notNull(id); data.removeField("_id"); Update update = new Update(); setField("", data, update); for (String field : fieldsToDelete) { update.unset(field); } WriteResult result = mongoOperations.updateFirst(Query.query(Criteria.where("_id").is(id)), update, metadata.getCollectionName()); return result.getN() != 0; }
@Override public Flux<T> findAllById(Iterable<ID> ids) { Assert.notNull(ids, "The given Iterable of Id's must not be null!"); return findAll(new Query(new Criteria(entityInformation.getIdAttribute()) .in(Streamable.of(ids).stream().collect(StreamUtils.toUnmodifiableList())))); }
@Nullable @Override public <T> T findOne(Query query, Class<T> entityClass, String collectionName) { Assert.notNull(query, "Query must not be null!"); Assert.notNull(entityClass, "EntityClass must not be null!"); Assert.notNull(collectionName, "CollectionName must not be null!"); if (ObjectUtils.isEmpty(query.getSortObject()) && !query.getCollation().isPresent()) { return doFindOne(collectionName, query.getQueryObject(), query.getFieldsObject(), entityClass); } else { query.limit(1); List<T> results = find(query, entityClass, collectionName); return results.isEmpty() ? null : results.get(0); } }
/** * Get the {@code value} for the provided {@code key} performing {@code findOne} MongoDB operation. * @param key the metadata entry key * @return the metadata entry value or null if doesn't exist. * @see MongoTemplate#findOne(Query, Class, String) */ @Override public String get(String key) { Assert.hasText(key, "'key' must not be empty."); Query query = new Query(Criteria.where(ID_FIELD).is(key)); query.fields().exclude(ID_FIELD); @SuppressWarnings("unchecked") Map<String, String> result = this.template.findOne(query, Map.class, this.collectionName); return result == null ? null : result.get(VALUE); }
/** * Remove the metadata entry for the provided {@code key} and return its {@code value}, if any, * using {@code findAndRemove} MongoDB operation. * @param key the metadata entry key * @return the metadata entry value or null if doesn't exist. * @see MongoTemplate#findAndRemove(Query, Class, String) */ @Override public String remove(String key) { Assert.hasText(key, "'key' must not be empty."); Query query = new Query(Criteria.where(ID_FIELD).is(key)); query.fields().exclude(ID_FIELD); @SuppressWarnings("unchecked") Map<String, String> result = this.template.findAndRemove(query, Map.class, this.collectionName); return result == null ? null : result.get(VALUE); }
/** * If the specified key is not already associated with a value, associate it with the given value. * This is equivalent to * <pre> {@code * if (!map.containsKey(key)) * return map.put(key, value); * else * return map.get(key); * }</pre> * except that the action is performed atomically. * <p> * @param key the metadata entry key * @param value the metadata entry value to store * @return null if successful, the old value otherwise. * @see java.util.concurrent.ConcurrentMap#putIfAbsent(Object, Object) */ @Override public String putIfAbsent(String key, String value) { Assert.hasText(key, "'key' must not be empty."); Assert.hasText(value, "'value' must not be empty."); Query query = new Query(Criteria.where(ID_FIELD).is(key)); query.fields().exclude(ID_FIELD); @SuppressWarnings("unchecked") Map<String, String> result = this.template.findAndModify(query, new Update().setOnInsert(VALUE, value), new FindAndModifyOptions().upsert(true), Map.class, this.collectionName); return result == null ? null : result.get(VALUE); }
final PageParameter pageParameter = query.getPageParameter(); final int pageSize = pageParameter.getPageSize(); Query baseQuery = new Query(); if (StringUtils.isNoneBlank(query.getTransId())) { baseQuery.addCriteria(new Criteria("transId").is(query.getTransId())); baseQuery.addCriteria(new Criteria("retriedCount").lt(query.getRetry())); final long totalCount = mongoTemplate.count(baseQuery, mongoTableName); if (totalCount <= 0) { return voCommonPager; int start = (currentPage - 1) * pageSize; voCommonPager.setPage(PageHelper.buildPage(query.getPageParameter(), (int) totalCount)); baseQuery.skip(start).limit(pageSize); final List<MongoAdapter> mongoAdapters = mongoTemplate.find(baseQuery, MongoAdapter.class, mongoTableName); if (CollectionUtils.isNotEmpty(mongoAdapters)) { final List<HmilyCompensationVO> recoverVOS =
@Override public MongoEndpointProfile findByKeyHash(byte[] endpointKeyHash) { LOG.debug("Find endpoint profile by endpoint key hash [{}] ", endpointKeyHash); DBObject dbObject = query(where(EP_ENDPOINT_KEY_HASH) .is(endpointKeyHash)) .getQueryObject(); DBObject result = mongoTemplate.getDb() .getCollection(getCollectionName()) .findOne(dbObject); return mongoTemplate.getConverter().read(getDocumentClass(), result); }
@Override public HmilyTransaction findById(final String id) { Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); MongoAdapter cache = template.findOne(query, MongoAdapter.class, collectionName); return buildByCache(Objects.requireNonNull(cache)); }
@Override public int updateStatus(final String id, final Integer status) { Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); Update update = new Update(); update.set("status", status); final UpdateResult updateResult = template.updateFirst(query, update, MongoAdapter.class, collectionName); if (updateResult.getModifiedCount() <= 0) { throw new HmilyRuntimeException("update data exception!"); } return ROWS; }