12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package org.dbsyncer.parser.flush;
- import org.dbsyncer.cache.CacheService;
- import org.dbsyncer.common.model.Result;
- import org.dbsyncer.common.util.CollectionUtils;
- import org.dbsyncer.common.util.StringUtil;
- import org.dbsyncer.parser.model.Meta;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.util.Assert;
- /**
- * @author AE86
- * @version 1.0.0
- * @date 2021/11/18 22:22
- */
- public abstract class AbstractFlushStrategy implements FlushStrategy {
- private static final int MAX_ERROR_LENGTH = 1000;
- @Autowired
- private FlushService flushService;
- @Autowired
- private CacheService cacheService;
- @Override
- public void flushFullData(String metaId, Result result, String event) {
- flush(metaId, result, event);
- }
- @Override
- public void flushIncrementData(String metaId, Result result, String event) {
- flush(metaId, result, event);
- }
- protected void flush(String metaId, Result result, String event) {
- refreshTotal(metaId, result);
- if (!CollectionUtils.isEmpty(result.getFailData())) {
- final String error = StringUtil.substring(result.getError().toString(), 0, MAX_ERROR_LENGTH);
- flushService.write(metaId, event, false, result.getFailData(), error);
- }
- if (!CollectionUtils.isEmpty(result.getSuccessData())) {
- flushService.write(metaId, event, true, result.getSuccessData(), "");
- }
- }
- protected void refreshTotal(String metaId, Result writer) {
- Meta meta = getMeta(metaId);
- meta.getFail().getAndAdd(writer.getFailData().size());
- meta.getSuccess().getAndAdd(writer.getSuccessData().size());
- }
- protected Meta getMeta(String metaId) {
- Assert.hasText(metaId, "Meta id can not be empty.");
- Meta meta = cacheService.get(metaId, Meta.class);
- Assert.notNull(meta, "Meta can not be null.");
- return meta;
- }
- }
|