AbstractFlushStrategy.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package org.dbsyncer.parser.flush;
  2. import org.dbsyncer.cache.CacheService;
  3. import org.dbsyncer.common.model.Result;
  4. import org.dbsyncer.common.util.CollectionUtils;
  5. import org.dbsyncer.common.util.StringUtil;
  6. import org.dbsyncer.parser.model.Meta;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.util.Assert;
  9. /**
  10. * @author AE86
  11. * @version 1.0.0
  12. * @date 2021/11/18 22:22
  13. */
  14. public abstract class AbstractFlushStrategy implements FlushStrategy {
  15. private static final int MAX_ERROR_LENGTH = 1000;
  16. @Autowired
  17. private FlushService flushService;
  18. @Autowired
  19. private CacheService cacheService;
  20. @Override
  21. public void flushFullData(String metaId, Result result, String event) {
  22. flush(metaId, result, event);
  23. }
  24. @Override
  25. public void flushIncrementData(String metaId, Result result, String event) {
  26. flush(metaId, result, event);
  27. }
  28. protected void flush(String metaId, Result result, String event) {
  29. refreshTotal(metaId, result);
  30. if (!CollectionUtils.isEmpty(result.getFailData())) {
  31. final String error = StringUtil.substring(result.getError().toString(), 0, MAX_ERROR_LENGTH);
  32. flushService.write(metaId, event, false, result.getFailData(), error);
  33. }
  34. if (!CollectionUtils.isEmpty(result.getSuccessData())) {
  35. flushService.write(metaId, event, true, result.getSuccessData(), "");
  36. }
  37. }
  38. protected void refreshTotal(String metaId, Result writer) {
  39. Meta meta = getMeta(metaId);
  40. meta.getFail().getAndAdd(writer.getFailData().size());
  41. meta.getSuccess().getAndAdd(writer.getSuccessData().size());
  42. }
  43. protected Meta getMeta(String metaId) {
  44. Assert.hasText(metaId, "Meta id can not be empty.");
  45. Meta meta = cacheService.get(metaId, Meta.class);
  46. Assert.notNull(meta, "Meta can not be null.");
  47. return meta;
  48. }
  49. }