BaseContext.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package cn.nosum.support.chain;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.util.StopWatch;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. /**
  7. * 整个责任链的上下文并且提供一些基础能力,对链中的节点进行操作比如日志、执行时间的监控.
  8. *
  9. * @author Young
  10. */
  11. @Slf4j
  12. public class BaseContext implements Processor {
  13. private static final List<String> CHAIN_LOGS = new ArrayList<>();
  14. private static final StopWatch STOP_WATCH = new StopWatch();
  15. /**
  16. * 是否执行下一个节点
  17. */
  18. private boolean isExecuteNextNode = true;
  19. @Override
  20. public final List<String> getNodeLog() {
  21. return CHAIN_LOGS;
  22. }
  23. @Override
  24. public StopWatch getStopWatch() {
  25. return STOP_WATCH;
  26. }
  27. @Override
  28. public String prettyPrint() {
  29. StringBuilder stringBuilder = new StringBuilder();
  30. CHAIN_LOGS.forEach(info -> stringBuilder.append(info).append("->"));
  31. String str = stringBuilder.toString();
  32. return str.substring(0, str.lastIndexOf("->"));
  33. }
  34. @Override
  35. public final void clearLog() {
  36. CHAIN_LOGS.clear();
  37. }
  38. @Override
  39. public final void addNodeLog(String chainName) {
  40. CHAIN_LOGS.add(chainName);
  41. }
  42. public boolean isExecuteNextNode() {
  43. return isExecuteNextNode;
  44. }
  45. @Override
  46. public void setExecuteNextNode(boolean executeNextNode) {
  47. isExecuteNextNode = executeNextNode;
  48. }
  49. }