/** * Creates a new {@link Query} using the given {@link CriteriaDefinition}. * * @param criteriaDefinition must not be {@literal null}. * @since 1.6 */ public Query(CriteriaDefinition criteriaDefinition) { addCriteria(criteriaDefinition); }
@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(); }
@Override public List<MythTransaction> listAllByDelay(final Date date) { Query query = new Query(); query.addCriteria(Criteria.where("lastTime").lt(date)) .addCriteria(Criteria.where("status").is(MythStatusEnum.BEGIN.getCode())); 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(); }
@Override public Boolean batchRemove(final List<String> ids, final String applicationName) { if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(applicationName)) { return Boolean.FALSE; } final String mongoTableName = RepositoryPathUtils.buildMongoTableName(applicationName); ids.forEach(id -> { Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); mongoTemplate.remove(query, mongoTableName); }); return Boolean.TRUE; }
@Override public Boolean batchRemove(final List<String> ids, final String appName) { if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(appName)) { return Boolean.FALSE; } final String mongoTableName = RepositoryPathUtils.buildMongoTableName(appName); ids.forEach(id -> { Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); mongoTemplate.remove(query, mongoTableName); }); return Boolean.TRUE; }
@Override public Boolean batchRemove(final List<String> ids, final String applicationName) { if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(applicationName)) { return Boolean.FALSE; } final String mongoTableName = RepositoryPathUtils.buildMongoTableName(applicationName); ids.forEach(id -> { Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); mongoTemplate.remove(query, mongoTableName); }); return Boolean.TRUE; }
@Override public List<TransactionRecover> listAllByDelay(final Date date) { Query query = new Query(); query.addCriteria(new Criteria("status") .in(TransactionStatusEnum.BEGIN.getCode(), TransactionStatusEnum.FAILURE.getCode(), TransactionStatusEnum.ROLLBACK.getCode())) .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 null; }
@Override public List<TransactionRecover> listAll() { Query query = new Query(); query.addCriteria(new Criteria("status") .in(TransactionStatusEnum.BEGIN.getCode(), TransactionStatusEnum.FAILURE.getCode(), TransactionStatusEnum.ROLLBACK.getCode())); final List<MongoAdapter> mongoAdapterList = template.find(query, MongoAdapter.class, collectionName); if (CollectionUtils.isNotEmpty(mongoAdapterList)) { return mongoAdapterList.stream().map(this::buildByCache).collect(Collectors.toList()); } return null; }
@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 remove(final String transId) { Query query = new Query(); query.addCriteria(new Criteria("transId").is(transId)); template.remove(query, collectionName); return CommonConstant.SUCCESS; }
@Override public int remove(final String id) { AssertUtils.notNull(id); Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); template.remove(query, collectionName); return ROWS; }
@Override public MythTransaction findByTransId(final String transId) { Query query = new Query(); query.addCriteria(new Criteria("transId").is(transId)); MongoAdapter cache = template.findOne(query, MongoAdapter.class, collectionName); return buildByCache(cache); }
@Override public int remove(final String id) { Assert.notNull(id); Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); template.remove(query, collectionName); return ROWS; }
@Override public TransactionRecover 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(cache); }
@Override public Boolean updateRetry(final String id, final Integer retry, final String appName) { if (StringUtils.isBlank(id) || StringUtils.isBlank(appName) || Objects.isNull(retry)) { return Boolean.FALSE; } final String mongoTableName = RepositoryPathUtils.buildMongoTableName(appName); Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); Update update = new Update(); update.set("lastTime", DateUtils.getCurrentDateTime()); update.set("retriedCount", retry); final UpdateResult updateResult = mongoTemplate.updateFirst(query, update, MongoAdapter.class, mongoTableName); if (updateResult.getModifiedCount() <= 0) { throw new HmilyRuntimeException("更新数据异常!"); } return Boolean.TRUE; }
@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; }
@Override public int updateStatus(final String id, final Integer status) throws MythRuntimeException { Query query = new Query(); query.addCriteria(new Criteria("transId").is(id)); Update update = new Update(); update.set("status", status); final WriteResult writeResult = template.updateFirst(query, update, MongoAdapter.class, collectionName); if (writeResult.getN() <= 0) { throw new MythRuntimeException(ERROR); } return CommonConstant.SUCCESS; }
@Override public void updateFailTransaction(final MythTransaction mythTransaction) throws MythRuntimeException { Query query = new Query(); query.addCriteria(new Criteria("transId").is(mythTransaction.getTransId())); Update update = new Update(); update.set("status", mythTransaction.getStatus()); update.set("errorMsg", mythTransaction.getErrorMsg()); update.set("lastTime", new Date()); update.set("retriedCount", mythTransaction.getRetriedCount()); final WriteResult writeResult = template.updateFirst(query, update, MongoAdapter.class, collectionName); if (writeResult.getN() <= 0) { throw new MythRuntimeException(ERROR); } }
@Override public int updateParticipant(final HmilyTransaction hmilyTransaction) { Query query = new Query(); query.addCriteria(new Criteria("transId").is(hmilyTransaction.getTransId())); Update update = new Update(); try { update.set("contents", objectSerializer.serialize(hmilyTransaction.getHmilyParticipants())); } catch (HmilyException e) { e.printStackTrace(); } final UpdateResult updateResult = template.updateFirst(query, update, MongoAdapter.class, collectionName); if (updateResult.getModifiedCount() <= 0) { throw new HmilyRuntimeException("update data exception!"); } return ROWS; }
@Override public void updateParticipant(final MythTransaction mythTransaction) throws MythRuntimeException { Query query = new Query(); query.addCriteria(new Criteria("transId").is(mythTransaction.getTransId())); Update update = new Update(); try { update.set("contents", objectSerializer.serialize(mythTransaction.getMythParticipants())); } catch (MythException e) { e.printStackTrace(); } final WriteResult writeResult = template.updateFirst(query, update, MongoAdapter.class, collectionName); if (writeResult.getN() <= 0) { throw new MythRuntimeException(ERROR); } }