Browse Source

修改代码 封装一层 runner 然后对重启线程池的操作做了一些优化 保证线程的退出

fuyu 6 years ago
parent
commit
f668c140f5
47 changed files with 888 additions and 580 deletions
  1. 424 274
      .idea/workspace.xml
  2. 0 105
      logs/sys.log
  3. 7 0
      src/main/java/com/zskk/dicom/monitor/config/Configs.java
  4. 4 0
      src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java
  5. 19 2
      src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java
  6. 13 1
      src/main/java/com/zskk/dicom/monitor/queue/IQueue.java
  7. 7 0
      src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java
  8. 7 0
      src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java
  9. 4 0
      src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java
  10. 6 0
      src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java
  11. 25 8
      src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java
  12. 5 0
      src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java
  13. 5 16
      src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java
  14. 6 16
      src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java
  15. 5 16
      src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java
  16. 6 16
      src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java
  17. 5 16
      src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java
  18. 5 16
      src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java
  19. 6 16
      src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java
  20. 295 57
      src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java
  21. 10 10
      src/main/resources/project.properties
  22. 3 0
      target/classes/META-INF/MANIFEST.MF
  23. 1 1
      target/classes/META-INF/spring-autoconfigure-metadata.properties
  24. BIN
      target/classes/com/zskk/dicom/monitor/config/Configs.class
  25. BIN
      target/classes/com/zskk/dicom/monitor/monitors/WatchDir.class
  26. BIN
      target/classes/com/zskk/dicom/monitor/queue/BaseQueue.class
  27. BIN
      target/classes/com/zskk/dicom/monitor/queue/IQueue.class
  28. BIN
      target/classes/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.class
  29. BIN
      target/classes/com/zskk/dicom/monitor/runner/AbstractUploadRunner.class
  30. BIN
      target/classes/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.class
  31. BIN
      target/classes/com/zskk/dicom/monitor/runner/BaseRemoveRunner.class
  32. BIN
      target/classes/com/zskk/dicom/monitor/runner/BaseRunner.class
  33. BIN
      target/classes/com/zskk/dicom/monitor/runner/BaseUploadRunner.class
  34. BIN
      target/classes/com/zskk/dicom/monitor/runner/CurrentUploadRunner.class
  35. BIN
      target/classes/com/zskk/dicom/monitor/runner/ErrorRunner.class
  36. BIN
      target/classes/com/zskk/dicom/monitor/runner/HistoryUploadRunner.class
  37. BIN
      target/classes/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.class
  38. BIN
      target/classes/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.class
  39. BIN
      target/classes/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.class
  40. BIN
      target/classes/com/zskk/dicom/monitor/runner/SuccessRunner.class
  41. BIN
      target/classes/com/zskk/dicom/monitor/schedules/StatRunner.class
  42. 10 10
      target/classes/project.properties
  43. 8 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  44. 2 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  45. BIN
      target/zskk-dicom-monitor-jar-with-dependencies.jar
  46. BIN
      target/zskk-dicom-monitor.jar
  47. BIN
      target/zskk-dicom-monitor.jar.original

+ 424 - 274
.idea/workspace.xml

@@ -6,8 +6,127 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="582764bc-f4d5-49fa-89c5-ed5a1070192f" name="Default" comment="">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
       <change beforePath="$PROJECT_DIR$/logs/sys.log" afterPath="$PROJECT_DIR$/logs/sys.log" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/config/Configs.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/config/Configs.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/IQueue.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/IQueue.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java" afterPath="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/project.properties" afterPath="$PROJECT_DIR$/src/main/resources/project.properties" />
+      <change beforePath="$PROJECT_DIR$/target/classes/META-INF/spring-autoconfigure-metadata.properties" afterPath="$PROJECT_DIR$/target/classes/META-INF/spring-autoconfigure-metadata.properties" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/UploaderZskkApplication.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/UploaderZskkApplication.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/config/NetCodeConfig.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/config/NetCodeConfig.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/config/OSSConfig.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/config/OSSConfig.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/config/Configs.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/config/Configs.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/config/Constants.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/config/Constants.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/config/CopyFile.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/config/CopyFile.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileActionCallback$1.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileActionCallback$1.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileActionCallback$2.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileActionCallback$2.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileActionCallback.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileActionCallback.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileChangeProc.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/BaseFileChangeProc.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/FileAction.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/FileAction.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/FileActionCallback.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/FileActionCallback.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/NowFileActionCallback.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/NowFileActionCallback.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/NowFileChangeProc.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/NowFileChangeProc.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1$1$1.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1$1$1.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1$1$2.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1$1$2.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1$1.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1$1.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc$1.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/OldFileChangeProc.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/RetryFileActionCallback.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/RetryFileActionCallback.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/RetryFileChangeProc.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/RetryFileChangeProc.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/WatchDir$1.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/WatchDir$1.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/WatchDir.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/monitors/WatchDir.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/BaseQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/BaseQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/BaseStringQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/BaseStringQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue$CurrentRetryUploadQueueHolder.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue$CurrentRetryUploadQueueHolder.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentUploadQueue$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentUploadQueue$CurrentUploadQueueHolder.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentUploadQueue$CurrentUploadQueueHolder.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentUploadQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/CurrentUploadQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/ErrorQueue$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/ErrorQueue$ErrorQueueHolder.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/ErrorQueue$ErrorQueueHolder.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/ErrorQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/ErrorQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/IQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/IQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldRetryQueue$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldRetryQueue$OldRetryQueueHolder.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldRetryQueue$OldRetryQueueHolder.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldRetryQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldRetryQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldUploadQueue$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldUploadQueue$OldUploadQueueHolder.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldUploadQueue$OldUploadQueueHolder.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldUploadQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/OldUploadQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue$RemoveFile2RetryQueueHolder.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue$RemoveFile2RetryQueueHolder.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/SuccessQueue$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/SuccessQueue$SuccessQueueHolder.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/SuccessQueue$SuccessQueueHolder.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/SuccessQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/queue/SuccessQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/report/ErrReporter.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/report/ErrReporter.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/report/ErrReporterSender.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/report/ErrReporterSender.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AbstractUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AbstractUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AddHistory2QueueRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AddHistory2QueueRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AddRetryHistory2QueueRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/AddRetryHistory2QueueRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseRemoveRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseRemoveRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/BaseUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/CurrentUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/CurrentUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/ErrorRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/ErrorRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/HistoryUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/HistoryUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/IRemove.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/IRemove.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/IUpload.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/IUpload.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RunnerAction.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/RunnerAction.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/SuccessRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/runner/SuccessRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/DirMonitor.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/DirMonitor.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/InitMonitor.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/InitMonitor.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/RetryDirMonitor.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/RetryDirMonitor.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/StartTimer.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/StartTimer.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/StatRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/schedules/StatRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/BaseFileUploader.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/BaseFileUploader.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/CurrentUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/CurrentUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/FileMover.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/FileMover.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/FileUploader.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/FileUploader.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/FileUploader_two.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/FileUploader_two.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/HistoryFileQuenuRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/HistoryFileQuenuRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/OldUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/OldUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/RetryUploadRunner.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/RetryUploadRunner.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/SuccessUploadQuenu.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/SuccessUploadQuenu.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/UploadsQueue.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/uploader/UploadsQueue.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/ExceptionUtil.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/ExceptionUtil.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/FileHashUtil.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/FileHashUtil.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/FileRemoveUtils.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/FileRemoveUtils.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/LogEnginer.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/LogEnginer.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/MailerUtil.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/MailerUtil.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/MonitorFileUtils.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/monitor/utils/MonitorFileUtils.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/oss/BaseOSSHleper.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/oss/BaseOSSHleper.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/oss/OSSFileAndCallbackHleper.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/oss/OSSFileAndCallbackHleper.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/request/bean/ALiYunOSSCallbackBodyBean.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/request/bean/ALiYunOSSCallbackBodyBean.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/BaseResponse.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/BaseResponse.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/FileUploadChcekResponse.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/FileUploadChcekResponse.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/ZskkResponseFactory$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/ZskkResponseFactory$ZskkExceptionFactoryHoler.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/ZskkResponseFactory$ZskkExceptionFactoryHoler.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/ZskkResponseFactory.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/ZskkResponseFactory.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/bean/BaseResponseBean.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/bean/BaseResponseBean.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/bean/FileUploadChcekResponseBean.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/bean/FileUploadChcekResponseBean.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/bean/FileUploadResponseBean.class" afterPath="$PROJECT_DIR$/target/classes/com/zskk/dicom/response/bean/FileUploadResponseBean.class" />
     </list>
     <ignored path="$PROJECT_DIR$/out/" />
     <ignored path="$PROJECT_DIR$/target/" />
@@ -43,113 +162,120 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="RunnerAction.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RunnerAction.java">
+      <file leaf-file-name="BaseAddHistory2QueueRunner.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="311">
-              <caret line="31" column="18" lean-forward="false" selection-start-line="31" selection-start-column="18" selection-end-line="31" selection-end-column="18" />
-              <folding>
-                <element signature="e#610#611#0" expanded="true" />
-                <element signature="e#644#645#0" expanded="true" />
-                <element signature="e#676#677#0" expanded="true" />
-                <element signature="e#709#710#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="304">
+              <caret line="56" column="35" lean-forward="false" selection-start-line="56" selection-start-column="35" selection-end-line="56" selection-end-column="35" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="StartTimer.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StartTimer.java">
+      <file leaf-file-name="DirMonitor.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/DirMonitor.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="150">
-              <caret line="18" column="14" lean-forward="false" selection-start-line="18" selection-start-column="14" selection-end-line="18" selection-end-column="14" />
+            <state relative-caret-position="225">
+              <caret line="16" column="35" lean-forward="false" selection-start-line="16" selection-start-column="35" selection-end-line="16" selection-end-column="35" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="RetryDirMonitor.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/RetryDirMonitor.java">
+      <file leaf-file-name="BaseFileChangeProc.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/BaseFileChangeProc.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="195">
-              <caret line="13" column="13" lean-forward="false" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
+            <state relative-caret-position="220">
+              <caret line="49" column="22" lean-forward="false" selection-start-line="49" selection-start-column="22" selection-end-line="49" selection-end-column="22" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="InitMonitor.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/InitMonitor.java">
+      <file leaf-file-name="WatchDir.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="60">
-              <caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+            <state relative-caret-position="231">
+              <caret line="90" column="65" lean-forward="false" selection-start-line="90" selection-start-column="65" selection-end-line="90" selection-end-column="65" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="project.properties" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/project.properties">
+      <file leaf-file-name="BaseUploadRunner.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="75">
-              <caret line="5" column="29" lean-forward="false" selection-start-line="5" selection-start-column="29" selection-end-line="9" selection-end-column="27" />
+            <state relative-caret-position="15">
+              <caret line="12" column="4" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="4" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="BaseFileUploader.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/BaseFileUploader.java">
+      <file leaf-file-name="BaseRunner.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="158">
-              <caret line="78" column="30" lean-forward="false" selection-start-line="78" selection-start-column="30" selection-end-line="78" selection-end-column="30" />
-              <folding>
-                <element signature="e#2334#2335#0" expanded="true" />
-                <element signature="e#2379#2380#0" expanded="true" />
-                <element signature="e#2383#2417#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="182">
+              <caret line="58" column="20" lean-forward="false" selection-start-line="58" selection-start-column="20" selection-end-line="58" selection-end-column="64" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="CurrentUploadRunner.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/CurrentUploadRunner.java">
+      <file leaf-file-name="AddRetryHistory2QueueRunner.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddRetryHistory2QueueRunner.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="138">
-              <caret line="17" column="13" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
+            <state relative-caret-position="75">
+              <caret line="6" column="8" lean-forward="false" selection-start-line="6" selection-start-column="8" selection-end-line="6" selection-end-column="8" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="CurrentUploadRunner.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java">
+      <file leaf-file-name="StatRunner.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="60">
-              <caret line="7" column="47" lean-forward="false" selection-start-line="7" selection-start-column="47" selection-end-line="7" selection-end-column="47" />
+            <state relative-caret-position="345">
+              <caret line="106" column="33" lean-forward="false" selection-start-line="106" selection-start-column="8" selection-end-line="106" selection-end-column="33" />
               <folding>
-                <element signature="e#1222#1223#0" expanded="true" />
-                <element signature="e#1272#1273#0" expanded="true" />
+                <element signature="e#5138#5139#0" expanded="true" />
+                <element signature="e#5215#5216#0" expanded="true" />
+                <element signature="e#6131#6132#0" expanded="true" />
+                <element signature="e#6195#6196#0" expanded="true" />
+                <element signature="e#6293#6294#0" expanded="true" />
+                <element signature="e#6350#6351#0" expanded="true" />
+                <element signature="e#8480#8481#0" expanded="true" />
+                <element signature="e#8540#8541#0" expanded="true" />
+                <element signature="e#8637#8638#0" expanded="true" />
+                <element signature="e#8711#8712#0" expanded="true" />
+                <element signature="e#8802#8803#0" expanded="true" />
+                <element signature="e#8876#8877#0" expanded="true" />
+                <element signature="e#9400#9401#0" expanded="true" />
+                <element signature="e#9474#9475#0" expanded="true" />
+                <element signature="e#9571#9572#0" expanded="true" />
+                <element signature="e#9641#9642#0" expanded="true" />
+                <element signature="e#12034#12035#0" expanded="true" />
+                <element signature="e#12082#12083#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="BaseUploadRunner.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java">
+      <file leaf-file-name="AddHistory2QueueRunner.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddHistory2QueueRunner.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="309">
-              <caret line="28" column="34" lean-forward="false" selection-start-line="28" selection-start-column="34" selection-end-line="28" selection-end-column="34" />
+            <state relative-caret-position="105">
+              <caret line="8" column="62" lean-forward="true" selection-start-line="8" selection-start-column="62" selection-end-line="8" selection-end-column="62" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="StatRunner.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java">
+      <file leaf-file-name="project.properties" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/main/resources/project.properties">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="191">
-              <caret line="196" column="52" lean-forward="false" selection-start-line="196" selection-start-column="52" selection-end-line="196" selection-end-column="52" />
+            <state relative-caret-position="0">
+              <caret line="0" column="34" lean-forward="true" selection-start-line="0" selection-start-column="34" selection-end-line="4" selection-end-column="27" />
               <folding />
             </state>
           </provider>
@@ -187,7 +313,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/OldUploadRunner.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/OldUploadRunner.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/FileUploader.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/UploadRunner.java" />
@@ -201,26 +326,17 @@
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseCurrentRunner.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/utils/FileRemoveUtils.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/oss/OSSFileAndCallbackHleper.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/config/Configs.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StartTimer.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/FileActionCallback.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/NowFileActionCallback.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/NowFileChangeProc.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/RetryFileActionCallback.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseStringQueue.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddHistory2QueueRunner.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddRetryHistory2QueueRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RunnerAction.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/IRemove.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/IUpload.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/IQueue.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/CurrentUploadQueue.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/ErrorQueue.java" />
@@ -228,15 +344,25 @@
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/OldUploadQueue.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/SuccessQueue.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/BaseFileUploader.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/IQueue.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/config/Configs.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java" />
         <option value="$PROJECT_DIR$/src/main/resources/project.properties" />
       </list>
     </option>
@@ -307,7 +433,7 @@
     </navigator>
     <panes>
       <pane id="Scope" />
-      <pane id="AndroidView" />
+      <pane id="Scratches" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -439,6 +565,7 @@
           <select />
         </subPane>
       </pane>
+      <pane id="AndroidView" />
       <pane id="PackagesPane">
         <subPane>
           <expand>
@@ -450,7 +577,6 @@
           <select />
         </subPane>
       </pane>
-      <pane id="Scratches" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -662,7 +788,10 @@
       <workItem from="1553331389550" duration="8000" />
       <workItem from="1553331405111" duration="394000" />
       <workItem from="1553332295376" duration="1606000" />
-      <workItem from="1553334103392" duration="1570000" />
+      <workItem from="1553334103392" duration="1786000" />
+      <workItem from="1553416848192" duration="2112000" />
+      <workItem from="1553419231486" duration="1784000" />
+      <workItem from="1553421042073" duration="708000" />
     </task>
     <task id="LOCAL-00001" summary="new">
       <created>1553046646348</created>
@@ -731,7 +860,7 @@
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="137469000" />
+    <option name="totallyTimeSpent" value="142289000" />
   </component>
   <component name="TodoView">
     <todo-panel id="selected-file">
@@ -752,22 +881,22 @@
       <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5114449" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.48958334" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3297568" sideWeight="0.48958334" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4" sideWeight="0.4914163" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Spring" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4041488" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.42131618" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
       <window_info id="Problems" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.48958334" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24964234" sideWeight="0.47916666" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
@@ -832,13 +961,6 @@
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/response/BaseResponse.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="60">
-          <caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/response/FileUploadChcekResponse.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="30">
@@ -860,21 +982,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/config/Configs.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2520">
-          <caret line="171" column="0" lean-forward="false" selection-start-line="171" selection-start-column="0" selection-end-line="171" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/DirMonitor.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="195">
-          <caret line="13" column="13" lean-forward="false" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/UploaderZskkApplication.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="345">
@@ -942,14 +1049,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/BaseFileChangeProc.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="15">
-          <caret line="11" column="13" lean-forward="false" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/FileAction.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="120">
@@ -958,54 +1057,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="195">
-          <caret line="13" column="34" lean-forward="false" selection-start-line="13" selection-start-column="34" selection-end-line="13" selection-end-column="34" />
-          <folding>
-            <element signature="e#192#193#0" expanded="false" />
-            <element signature="e#223#224#0" expanded="false" />
-            <element signature="e#276#277#0" expanded="false" />
-            <element signature="e#318#319#0" expanded="false" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="13" column="34" lean-forward="false" selection-start-line="13" selection-start-column="34" selection-end-line="13" selection-end-column="34" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddHistory2QueueRunner.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="6" column="22" lean-forward="false" selection-start-line="6" selection-start-column="3" selection-end-line="6" selection-end-column="22" />
-          <folding>
-            <element signature="e#279#280#0" expanded="false" />
-            <element signature="e#350#351#0" expanded="false" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/IQueue.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="585">
-          <caret line="39" column="13" lean-forward="false" selection-start-line="39" selection-start-column="13" selection-end-line="39" selection-end-column="13" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="10" column="47" lean-forward="false" selection-start-line="10" selection-start-column="47" selection-end-line="10" selection-end-column="47" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseStringQueue.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="75">
@@ -1036,28 +1087,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/ErrorQueue.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="12" column="26" lean-forward="false" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" />
-          <folding>
-            <element signature="e#221#222#0" expanded="false" />
-            <element signature="e#256#257#0" expanded="false" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/OldRetryQueue.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="12" column="28" lean-forward="false" selection-start-line="12" selection-start-column="28" selection-end-line="12" selection-end-column="28" />
-          <folding>
-            <element signature="e#232#233#0" expanded="false" />
-            <element signature="e#269#270#0" expanded="false" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/OldUploadQueue.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="150">
@@ -1091,180 +1120,223 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/IRemove.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="206">
-          <caret line="36" column="67" lean-forward="false" selection-start-line="36" selection-start-column="67" selection-end-line="36" selection-end-column="67" />
-          <folding>
-            <element signature="e#1244#1245#0" expanded="false" />
-            <element signature="e#1300#1301#0" expanded="false" />
-          </folding>
+        <state relative-caret-position="120">
+          <caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/IUpload.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-462">
-          <caret line="84" column="72" lean-forward="false" selection-start-line="84" selection-start-column="72" selection-end-line="84" selection-end-column="72" />
+        <state relative-caret-position="120">
+          <caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/BaseFileUploader.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="615">
-          <caret line="46" column="11" lean-forward="false" selection-start-line="46" selection-start-column="11" selection-end-line="46" selection-end-column="11" />
+        <state relative-caret-position="975">
+          <caret line="78" column="30" lean-forward="false" selection-start-line="78" selection-start-column="30" selection-end-line="78" selection-end-column="30" />
           <folding>
-            <element signature="e#922#923#0" expanded="false" />
-            <element signature="e#956#957#0" expanded="false" />
+            <element signature="e#2334#2335#0" expanded="false" />
+            <element signature="e#2379#2380#0" expanded="false" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddRetryHistory2QueueRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/CurrentUploadRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="6" column="8" lean-forward="false" selection-start-line="6" selection-start-column="8" selection-end-line="6" selection-end-column="8" />
-          <folding>
-            <element signature="e#290#291#0" expanded="false" />
-            <element signature="e#365#366#0" expanded="false" />
-          </folding>
+        <state relative-caret-position="180">
+          <caret line="17" column="13" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/IRemove.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StartTimer.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
+        <state relative-caret-position="150">
+          <caret line="18" column="14" lean-forward="false" selection-start-line="18" selection-start-column="14" selection-end-line="18" selection-end-column="14" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/IUpload.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/RetryDirMonitor.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
+        <state relative-caret-position="195">
+          <caret line="13" column="13" lean-forward="false" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/InitMonitor.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="185">
-          <caret line="36" column="58" lean-forward="false" selection-start-line="36" selection-start-column="58" selection-end-line="36" selection-end-column="58" />
+        <state relative-caret-position="60">
+          <caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/ErrorQueue.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="12" column="26" lean-forward="false" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="105">
+          <caret line="10" column="50" lean-forward="false" selection-start-line="10" selection-start-column="50" selection-end-line="10" selection-end-column="50" />
           <folding>
-            <element signature="e#1210#1211#0" expanded="false" />
-            <element signature="e#1260#1261#0" expanded="false" />
+            <element signature="e#1153#1154#0" expanded="false" />
+            <element signature="e#1220#1221#0" expanded="false" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/IQueue.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="326">
-          <caret line="26" column="0" lean-forward="true" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
+        <state relative-caret-position="210">
+          <caret line="14" column="22" lean-forward="false" selection-start-line="14" selection-start-column="22" selection-end-line="14" selection-end-column="22" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/config/Configs.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="196">
-          <caret line="29" column="54" lean-forward="false" selection-start-line="29" selection-start-column="54" selection-end-line="29" selection-end-column="54" />
+        <state relative-caret-position="150">
+          <caret line="13" column="43" lean-forward="false" selection-start-line="13" selection-start-column="26" selection-end-line="13" selection-end-column="43" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="9" column="4" lean-forward="false" selection-start-line="9" selection-start-column="4" selection-end-line="9" selection-end-column="4" />
           <folding>
-            <element signature="e#608#609#0" expanded="false" />
-            <element signature="e#670#671#0" expanded="false" />
-            <element signature="e#990#991#0" expanded="false" />
-            <element signature="e#1038#1039#0" expanded="false" />
+            <element signature="e#240#241#0" expanded="false" />
+            <element signature="e#268#269#0" expanded="false" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="199">
-          <caret line="29" column="65" lean-forward="false" selection-start-line="29" selection-start-column="65" selection-end-line="29" selection-end-column="65" />
+        <state relative-caret-position="135">
+          <caret line="9" column="4" lean-forward="false" selection-start-line="9" selection-start-column="4" selection-end-line="9" selection-end-column="4" />
           <folding>
-            <element signature="e#663#664#0" expanded="false" />
-            <element signature="e#736#737#0" expanded="false" />
-            <element signature="e#1071#1072#0" expanded="false" />
-            <element signature="e#1119#1120#0" expanded="false" />
+            <element signature="e#240#241#0" expanded="false" />
+            <element signature="e#268#269#0" expanded="false" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/queue/OldRetryQueue.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="75">
+          <caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="273">
-          <caret line="36" column="57" lean-forward="false" selection-start-line="36" selection-start-column="57" selection-end-line="36" selection-end-column="57" />
+        <state relative-caret-position="150">
+          <caret line="10" column="4" lean-forward="false" selection-start-line="10" selection-start-column="4" selection-end-line="10" selection-end-column="4" />
           <folding>
-            <element signature="e#1193#1194#0" expanded="false" />
-            <element signature="e#1249#1250#0" expanded="false" />
+            <element signature="imports" expanded="false" />
+            <element signature="e#277#278#0" expanded="false" />
+            <element signature="e#305#306#0" expanded="false" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285">
-          <caret line="29" column="56" lean-forward="false" selection-start-line="29" selection-start-column="56" selection-end-line="29" selection-end-column="56" />
+        <state relative-caret-position="90">
+          <caret line="9" column="11" lean-forward="false" selection-start-line="9" selection-start-column="11" selection-end-line="9" selection-end-column="11" />
           <folding>
-            <element signature="e#1005#1006#0" expanded="true" />
-            <element signature="e#1055#1056#0" expanded="true" />
+            <element signature="e#364#365#0" expanded="true" />
+            <element signature="e#392#393#0" expanded="true" />
+            <element signature="e#456#457#0" expanded="true" />
+            <element signature="e#505#506#0" expanded="true" />
+            <element signature="e#567#568#0" expanded="true" />
+            <element signature="e#625#626#0" expanded="true" />
+            <element signature="e#683#684#0" expanded="true" />
+            <element signature="e#744#745#0" expanded="true" />
+            <element signature="e#798#799#0" expanded="true" />
+            <element signature="e#842#843#0" expanded="true" />
+            <element signature="e#888#889#0" expanded="true" />
+            <element signature="e#923#924#0" expanded="true" />
+            <element signature="e#976#977#0" expanded="true" />
+            <element signature="e#1026#1027#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="191">
-          <caret line="196" column="52" lean-forward="false" selection-start-line="196" selection-start-column="52" selection-end-line="196" selection-end-column="52" />
-          <folding />
+        <state relative-caret-position="90">
+          <caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
+          <folding>
+            <element signature="e#285#286#0" expanded="true" />
+            <element signature="e#313#314#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="60">
-          <caret line="7" column="47" lean-forward="false" selection-start-line="7" selection-start-column="47" selection-end-line="7" selection-end-column="47" />
+        <state relative-caret-position="90">
+          <caret line="9" column="11" lean-forward="false" selection-start-line="9" selection-start-column="11" selection-end-line="9" selection-end-column="11" />
           <folding>
-            <element signature="e#1222#1223#0" expanded="true" />
-            <element signature="e#1272#1273#0" expanded="true" />
+            <element signature="e#360#361#0" expanded="true" />
+            <element signature="e#388#389#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="309">
-          <caret line="28" column="34" lean-forward="false" selection-start-line="28" selection-start-column="34" selection-end-line="28" selection-end-column="34" />
-          <folding />
+        <state relative-caret-position="90">
+          <caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
+          <folding>
+            <element signature="e#318#319#0" expanded="true" />
+            <element signature="e#346#347#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/BaseFileUploader.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="158">
-          <caret line="78" column="30" lean-forward="false" selection-start-line="78" selection-start-column="30" selection-end-line="78" selection-end-column="30" />
+        <state relative-caret-position="90">
+          <caret line="9" column="10" lean-forward="false" selection-start-line="9" selection-start-column="4" selection-end-line="9" selection-end-column="10" />
           <folding>
-            <element signature="e#2334#2335#0" expanded="true" />
-            <element signature="e#2379#2380#0" expanded="true" />
-            <element signature="e#2383#2417#0" expanded="true" />
+            <element signature="e#368#369#0" expanded="true" />
+            <element signature="e#396#397#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/uploader/CurrentUploadRunner.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="138">
-          <caret line="17" column="13" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
-          <folding />
+        <state relative-caret-position="90">
+          <caret line="9" column="11" lean-forward="false" selection-start-line="9" selection-start-column="11" selection-end-line="9" selection-end-column="11" />
+          <folding>
+            <element signature="e#358#359#0" expanded="true" />
+            <element signature="e#386#387#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/RunnerAction.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="311">
+        <state relative-caret-position="465">
           <caret line="31" column="18" lean-forward="false" selection-start-line="31" selection-start-column="18" selection-end-line="31" selection-end-column="18" />
           <folding>
             <element signature="e#610#611#0" expanded="true" />
@@ -1275,34 +1347,112 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StartTimer.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="150">
-          <caret line="18" column="14" lean-forward="false" selection-start-line="18" selection-start-column="14" selection-end-line="18" selection-end-column="14" />
+        <state relative-caret-position="90">
+          <caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
+          <folding>
+            <element signature="e#291#292#0" expanded="true" />
+            <element signature="e#319#320#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="345">
+          <caret line="106" column="33" lean-forward="false" selection-start-line="106" selection-start-column="8" selection-end-line="106" selection-end-column="33" />
+          <folding>
+            <element signature="e#5138#5139#0" expanded="true" />
+            <element signature="e#5215#5216#0" expanded="true" />
+            <element signature="e#6131#6132#0" expanded="true" />
+            <element signature="e#6195#6196#0" expanded="true" />
+            <element signature="e#6293#6294#0" expanded="true" />
+            <element signature="e#6350#6351#0" expanded="true" />
+            <element signature="e#8480#8481#0" expanded="true" />
+            <element signature="e#8540#8541#0" expanded="true" />
+            <element signature="e#8637#8638#0" expanded="true" />
+            <element signature="e#8711#8712#0" expanded="true" />
+            <element signature="e#8802#8803#0" expanded="true" />
+            <element signature="e#8876#8877#0" expanded="true" />
+            <element signature="e#9400#9401#0" expanded="true" />
+            <element signature="e#9474#9475#0" expanded="true" />
+            <element signature="e#9571#9572#0" expanded="true" />
+            <element signature="e#9641#9642#0" expanded="true" />
+            <element signature="e#12034#12035#0" expanded="true" />
+            <element signature="e#12082#12083#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddRetryHistory2QueueRunner.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="75">
+          <caret line="6" column="8" lean-forward="false" selection-start-line="6" selection-start-column="8" selection-end-line="6" selection-end-column="8" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/RetryDirMonitor.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/AddHistory2QueueRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="195">
-          <caret line="13" column="13" lean-forward="false" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
+        <state relative-caret-position="105">
+          <caret line="8" column="62" lean-forward="true" selection-start-line="8" selection-start-column="62" selection-end-line="8" selection-end-column="62" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/InitMonitor.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="60">
-          <caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+        <state relative-caret-position="15">
+          <caret line="12" column="4" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="4" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="304">
+          <caret line="56" column="35" lean-forward="false" selection-start-line="56" selection-start-column="35" selection-end-line="56" selection-end-column="35" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="182">
+          <caret line="58" column="20" lean-forward="false" selection-start-line="58" selection-start-column="20" selection-end-line="58" selection-end-column="64" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/schedules/DirMonitor.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="225">
+          <caret line="16" column="35" lean-forward="false" selection-start-line="16" selection-start-column="35" selection-end-line="16" selection-end-column="35" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/BaseFileChangeProc.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="220">
+          <caret line="49" column="22" lean-forward="false" selection-start-line="49" selection-start-column="22" selection-end-line="49" selection-end-column="22" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="231">
+          <caret line="90" column="65" lean-forward="false" selection-start-line="90" selection-start-column="65" selection-end-line="90" selection-end-column="65" />
           <folding />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/resources/project.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="5" column="29" lean-forward="false" selection-start-line="5" selection-start-column="29" selection-end-line="9" selection-end-column="27" />
+        <state relative-caret-position="0">
+          <caret line="0" column="34" lean-forward="true" selection-start-line="0" selection-start-column="34" selection-end-line="4" selection-end-column="27" />
           <folding />
         </state>
       </provider>

+ 0 - 105
logs/sys.log

@@ -8,108 +8,3 @@ Dicom dir monitor...
 Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
 --------------------------------------------------
 
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:D:\ZSKK_SYSTEM\ScpServer\Release\DICOM
---------------------------------------------------
-
-Dicom dir monitor...
---------------------------------------------------
-Monitoring directory:/Users/fuyu/Desktop/zzp/test/src
---------------------------------------------------
-

+ 7 - 0
src/main/java/com/zskk/dicom/monitor/config/Configs.java

@@ -6,6 +6,13 @@ import java.io.File;
 import java.util.ResourceBundle;
 
 public class Configs {
+
+
+    /**
+     * 线程池启动中标识
+     */
+    public static boolean poolsStartingFlag = false;
+
     /**
      * 成功移除线程数
      */

+ 4 - 0
src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java

@@ -87,6 +87,10 @@ public class WatchDir {
 	@SuppressWarnings("rawtypes")
 	void processEvents(FileActionCallback callback) {
 		for (;;) {
+			if(Configs.poolsStartingFlag) {
+				Configs.sysLog.warn("pools restart watch shutdown");
+				return;
+			}
 			WatchKey key;
 			try {
 				key = watcher.take();

+ 19 - 2
src/main/java/com/zskk/dicom/monitor/queue/BaseQueue.java

@@ -60,8 +60,25 @@ public abstract class BaseQueue<T> implements IQueue<T>{
 
     @Override
     public boolean empty() {
-        checkSecurity();
-        return this.queue.size() == 0;
+        return this.queue == null || this.queue.size() == 0;
+    }
+
+    @Override
+    public void init() {
+        Configs.sysLog.info("the queue \t: " + getQueueName() + "\t is init");
+        if(this.queue != null) {
+            this.queue.clear();
+        }
+        this.queue = new ArrayList<T>();
+    }
+
+    @Override
+    public void destroy() {
+        Configs.sysLog.info("the queue \t: " + getQueueName() + "\t is destroy");
+        if(this.queue != null) {
+            this.queue.clear();
+            this.queue = null;
+        }
     }
 
     /**

+ 13 - 1
src/main/java/com/zskk/dicom/monitor/queue/IQueue.java

@@ -12,7 +12,7 @@ public interface IQueue<T> {
     int size();
 
     /**
-     * 出队列
+     * 出队列(删除队列首个元素并返回)
      * @return
      */
     T pop();
@@ -41,4 +41,16 @@ public interface IQueue<T> {
      * @return
      */
     String getQueueName();
+
+    /**
+     * 队列初始化
+     * @return
+     */
+    void init();
+
+    /**
+     * 队列销毁
+     * @return
+     */
+    void destroy();
 }

+ 7 - 0
src/main/java/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.java

@@ -1,9 +1,16 @@
 package com.zskk.dicom.monitor.runner;
 
+import com.zskk.dicom.monitor.queue.IQueue;
+
 /**
  * 移动文件runner抽象类
  */
 public abstract class AbstractRemoveRunner extends BaseRunner implements IRemove{
+
+    AbstractRemoveRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected boolean handle() {
         return remove();

+ 7 - 0
src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java

@@ -1,9 +1,16 @@
 package com.zskk.dicom.monitor.runner;
 
+import com.zskk.dicom.monitor.queue.IQueue;
+
 /**
  * 上传方法runner抽象类
  */
 public abstract class AbstractUploadRunner extends BaseRunner implements IUpload{
+
+    AbstractUploadRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected boolean handle() {
         return upload();

+ 4 - 0
src/main/java/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.java

@@ -53,6 +53,10 @@ public abstract class BaseAddHistory2QueueRunner implements Runnable {
             if(file.exists() && file.isFile()) {
                 queue.push(file.getAbsolutePath());
             }
+            if(Configs.poolsStartingFlag) {
+                Configs.sysLog.warn("pools restart return");
+                return;
+            }
         }
     }
 }

+ 6 - 0
src/main/java/com/zskk/dicom/monitor/runner/BaseRemoveRunner.java

@@ -1,11 +1,17 @@
 package com.zskk.dicom.monitor.runner;
 
+import com.zskk.dicom.monitor.queue.IQueue;
 import com.zskk.dicom.monitor.utils.FileRemoveUtils;
 
 /**
  * 移动文件runner的基类
  */
 public abstract class BaseRemoveRunner extends AbstractRemoveRunner {
+
+    BaseRemoveRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     public boolean remove() {
         String sourceFilePath = getSourceFilePath();

+ 25 - 8
src/main/java/com/zskk/dicom/monitor/runner/BaseRunner.java

@@ -1,6 +1,7 @@
 package com.zskk.dicom.monitor.runner;
 
 import com.zskk.dicom.monitor.config.Configs;
+import com.zskk.dicom.monitor.queue.IQueue;
 
 import java.util.concurrent.TimeUnit;
 
@@ -9,6 +10,12 @@ import java.util.concurrent.TimeUnit;
  */
 public abstract class BaseRunner implements Runnable{
 
+    private IQueue<String> queue = null;
+
+    BaseRunner(IQueue<String> queue) {
+        this.queue = queue;
+    }
+
     /**
      * 操作失败最小休眠时间(s)
      */
@@ -48,11 +55,13 @@ public abstract class BaseRunner implements Runnable{
     public void run() {
         while (true) {
             try {
-                while (empty()) {
+                if(exit()) {
+                    Configs.sysLog.warn("pools restart return");
+                    return;
+                }
+                if(empty()) {
                     printEmptyAndSleep();
-                    if(exit()) {
-                        return;
-                    }
+                    continue;
                 }
                 if(handle()) {
                     printSuccessAndSleep();
@@ -110,19 +119,25 @@ public abstract class BaseRunner implements Runnable{
      * 队列是否为空
      * @return
      */
-    protected abstract boolean empty();
+    protected boolean empty() {
+        return queue.empty();
+    }
 
     /**
      * 当前队列大小
      * @return
      */
-    protected abstract int size();
+    protected int size() {
+        return queue.size();
+    }
 
     /**
      * 获取队列名称
      * @return
      */
-    protected abstract String getQueueName();
+    protected String getQueueName() {
+        return queue.getQueueName();
+    }
 
     /**
      * 获取runner名称
@@ -140,5 +155,7 @@ public abstract class BaseRunner implements Runnable{
      * 是否runner执行完毕退出
      * @return
      */
-    protected abstract boolean exit();
+    protected  boolean exit() {
+        return Configs.poolsStartingFlag;
+    }
 }

+ 5 - 0
src/main/java/com/zskk/dicom/monitor/runner/BaseUploadRunner.java

@@ -9,6 +9,11 @@ import org.apache.http.util.TextUtils;
  */
 public abstract class BaseUploadRunner extends  AbstractUploadRunner {
 
+
+    BaseUploadRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     public boolean upload() {
         boolean flag = false;

+ 5 - 16
src/main/java/com/zskk/dicom/monitor/runner/CurrentUploadRunner.java

@@ -7,6 +7,10 @@ import com.zskk.dicom.monitor.queue.SuccessQueue;
 
 public class CurrentUploadRunner extends BaseUploadRunner {
 
+    public CurrentUploadRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected IQueue<String> getSuccessQueue() {
         return SuccessQueue.getInstance();
@@ -22,21 +26,6 @@ public class CurrentUploadRunner extends BaseUploadRunner {
         return CurrentUploadQueue.getInstance().pop();
     }
 
-    @Override
-    protected boolean empty() {
-        return CurrentUploadQueue.getInstance().empty();
-    }
-
-    @Override
-    protected int size() {
-        return CurrentUploadQueue.getInstance().size();
-    }
-
-    @Override
-    protected String getQueueName() {
-        return CurrentUploadQueue.getInstance().getQueueName();
-    }
-
     @Override
     protected String getRunnerName() {
         return "CurrentUploadRunner";
@@ -44,7 +33,7 @@ public class CurrentUploadRunner extends BaseUploadRunner {
 
     @Override
     protected boolean exit() {
-        return false;
+        return super.exit();
     }
 
     @Override

+ 6 - 16
src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java

@@ -1,13 +1,18 @@
 package com.zskk.dicom.monitor.runner;
 
 import com.zskk.dicom.monitor.queue.ErrorQueue;
+import com.zskk.dicom.monitor.queue.IQueue;
 import com.zskk.dicom.monitor.utils.MonitorFileUtils;
 
 public class ErrorRunner extends BaseRemoveRunner {
 
+    public ErrorRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected boolean exit() {
-        return false;
+        return super.exit();
     }
 
     @Override
@@ -15,21 +20,6 @@ public class ErrorRunner extends BaseRemoveRunner {
         return "ErrorRunner";
     }
 
-    @Override
-    protected boolean empty() {
-        return ErrorQueue.getInstance().empty();
-    }
-
-    @Override
-    protected int size() {
-        return ErrorQueue.getInstance().size();
-    }
-
-    @Override
-    protected String getQueueName() {
-        return ErrorQueue.getInstance().getQueueName();
-    }
-
     @Override
     protected String getSourceFilePath() {
         return (String) ErrorQueue.getInstance().pop();

+ 5 - 16
src/main/java/com/zskk/dicom/monitor/runner/HistoryUploadRunner.java

@@ -7,6 +7,10 @@ import com.zskk.dicom.monitor.queue.SuccessQueue;
 
 public class HistoryUploadRunner extends BaseUploadRunner {
 
+    public HistoryUploadRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected IQueue<String> getSuccessQueue() {
         return SuccessQueue.getInstance();
@@ -22,21 +26,6 @@ public class HistoryUploadRunner extends BaseUploadRunner {
         return (String) OldUploadQueue.getInstance().pop();
     }
 
-    @Override
-    protected boolean empty() {
-        return OldUploadQueue.getInstance().empty();
-    }
-
-    @Override
-    protected int size() {
-        return OldUploadQueue.getInstance().size();
-    }
-
-    @Override
-    protected String getQueueName() {
-        return OldUploadQueue.getInstance().getQueueName();
-    }
-
     @Override
     protected String getRunnerName() {
         return "HistoryUploadRunner";
@@ -44,7 +33,7 @@ public class HistoryUploadRunner extends BaseUploadRunner {
 
     @Override
     protected boolean exit() {
-        return true;
+        return super.exit() || empty();
     }
 
     @Override

+ 6 - 16
src/main/java/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.java

@@ -1,13 +1,18 @@
 package com.zskk.dicom.monitor.runner;
 
+import com.zskk.dicom.monitor.queue.IQueue;
 import com.zskk.dicom.monitor.queue.RemoveFile2RetryQueue;
 import com.zskk.dicom.monitor.utils.MonitorFileUtils;
 
 public class RemoveFile2RetryRunner extends BaseRemoveRunner {
 
+    public RemoveFile2RetryRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected boolean exit() {
-        return false;
+        return super.exit();
     }
 
     @Override
@@ -15,21 +20,6 @@ public class RemoveFile2RetryRunner extends BaseRemoveRunner {
         return "RemoveFile2RetryRunner";
     }
 
-    @Override
-    protected boolean empty() {
-        return RemoveFile2RetryQueue.getInstance().empty();
-    }
-
-    @Override
-    protected int size() {
-        return RemoveFile2RetryQueue.getInstance().size();
-    }
-
-    @Override
-    protected String getQueueName() {
-        return RemoveFile2RetryQueue.getInstance().getQueueName();
-    }
-
     @Override
     protected String getSourceFilePath() {
         return (String) RemoveFile2RetryQueue.getInstance().pop();

+ 5 - 16
src/main/java/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.java

@@ -7,6 +7,10 @@ import com.zskk.dicom.monitor.queue.SuccessQueue;
 
 public class RetryCurrentUploadRunner extends BaseUploadRunner {
 
+    public RetryCurrentUploadRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected IQueue<String> getSuccessQueue() {
         return SuccessQueue.getInstance();
@@ -22,21 +26,6 @@ public class RetryCurrentUploadRunner extends BaseUploadRunner {
         return (String) CurrentRetryUploadQueue.getInstance().pop();
     }
 
-    @Override
-    protected boolean empty() {
-        return CurrentRetryUploadQueue.getInstance().empty();
-    }
-
-    @Override
-    protected int size() {
-        return CurrentRetryUploadQueue.getInstance().size();
-    }
-
-    @Override
-    protected String getQueueName() {
-        return CurrentRetryUploadQueue.getInstance().getQueueName();
-    }
-
     @Override
     protected String getRunnerName() {
         return "RetryCurrentUploadRunner";
@@ -44,7 +33,7 @@ public class RetryCurrentUploadRunner extends BaseUploadRunner {
 
     @Override
     protected boolean exit() {
-        return false;
+        return super.exit();
     }
 
     @Override

+ 5 - 16
src/main/java/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.java

@@ -7,6 +7,10 @@ import com.zskk.dicom.monitor.queue.SuccessQueue;
 
 public class RetryHistoryUploadRunner extends BaseUploadRunner {
 
+    public RetryHistoryUploadRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected IQueue<String> getSuccessQueue() {
         return SuccessQueue.getInstance();
@@ -22,21 +26,6 @@ public class RetryHistoryUploadRunner extends BaseUploadRunner {
         return (String) OldRetryQueue.getInstance().pop();
     }
 
-    @Override
-    protected boolean empty() {
-        return OldRetryQueue.getInstance().empty();
-    }
-
-    @Override
-    protected int size() {
-        return OldRetryQueue.getInstance().size();
-    }
-
-    @Override
-    protected String getQueueName() {
-        return OldRetryQueue.getInstance().getQueueName();
-    }
-
     @Override
     protected String getRunnerName() {
         return "RetryHistoryUploadRunner";
@@ -44,7 +33,7 @@ public class RetryHistoryUploadRunner extends BaseUploadRunner {
 
     @Override
     protected boolean exit() {
-        return true;
+        return super.exit() || empty();
     }
 
     @Override

+ 6 - 16
src/main/java/com/zskk/dicom/monitor/runner/SuccessRunner.java

@@ -1,13 +1,18 @@
 package com.zskk.dicom.monitor.runner;
 
+import com.zskk.dicom.monitor.queue.IQueue;
 import com.zskk.dicom.monitor.queue.SuccessQueue;
 import com.zskk.dicom.monitor.utils.MonitorFileUtils;
 
 public class SuccessRunner extends BaseRemoveRunner {
 
+    public SuccessRunner(IQueue<String> queue) {
+        super(queue);
+    }
+
     @Override
     protected boolean exit() {
-        return false;
+        return super.exit();
     }
 
     @Override
@@ -15,21 +20,6 @@ public class SuccessRunner extends BaseRemoveRunner {
         return "SuccessRunner";
     }
 
-    @Override
-    protected boolean empty() {
-        return SuccessQueue.getInstance().empty();
-    }
-
-    @Override
-    protected int size() {
-        return SuccessQueue.getInstance().size();
-    }
-
-    @Override
-    protected String getQueueName() {
-        return SuccessQueue.getInstance().getQueueName();
-    }
-
     @Override
     protected String getSourceFilePath() {
         return (String) SuccessQueue.getInstance().pop();

+ 295 - 57
src/main/java/com/zskk/dicom/monitor/schedules/StatRunner.java

@@ -1,8 +1,11 @@
 package com.zskk.dicom.monitor.schedules;
 
 import com.zskk.dicom.monitor.config.Configs;
+import com.zskk.dicom.monitor.queue.*;
 import com.zskk.dicom.monitor.runner.*;
 
+import java.util.HashSet;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
@@ -18,6 +21,10 @@ import java.util.concurrent.TimeUnit;
  */
 public class StatRunner {
 
+    /**
+     * 休眠30s等待线程全部退出
+     */
+    private static final int WAIT_TIME = 30;
     /**
      * dcm文件产生文件夹监听线程(池)
      */
@@ -73,36 +80,85 @@ public class StatRunner {
      */
     private static ExecutorService successPools = null;
 
+    /**
+     * 队列集合数组
+     */
+    private static Set<IQueue<String>> queueSet = null;
+
+    /**
+     * 线程池启动次数
+     */
+    private static int poolsStartCount = 0;
+
     /**
      * 初始化各种线程池并启动线程
      */
     public static void start() {
+
+        Configs.sysLog.info("call start runner count: " + poolsStartCount);
+        if(poolsStartCount == 0) {
+            initQueueSet();
+            initPools();
+            startRunner();
+            poolsStartCount++;
+            return;
+        }
+        // 线程池启动标识设置为true
+        Configs.poolsStartingFlag = true;
+
+        // 销毁队列集合
+        destroyQueueSet();
+
+        // 初始化队列集合
+        initQueueSet();
+
+        // 初始化线程池
+        initPools();
+
+        // 等待runner销毁
+        waitRunningDestroy();
+
+        // 线程池启动标识设置为false
+        Configs.poolsStartingFlag = false;
+
+        // 启动线程
+        startRunner();
+
+        // 线程启动次数加一
+        poolsStartCount++;
+    }
+
+
+    /**
+     * 启动各个线程
+     */
+    private static void startRunner() {
         // 监听目标文件
-        startDirMonitorPools();
+        startDirMonitorRunner();
 
         // 监听重试文件
-        startRetryMonitorPools();
+        startRetryMonitorRunner();
 
         //老文件加入老上传队列
-        startAddHistoryFile2UploadPools();
+        startAddHistoryFile2UploadRunner();
 
         //老重试文件加入老重试上传队列
-        startAddHistoryRetryFile2UploadPools();
+        startAddHistoryRetryFile2UploadRunner();
 
         //新重试上传
-        startCurrentRetryPools();
+        startCurrentRetryRunner();
 
         //重试移动文件
-        startRemove2RetryPools();
+        startRemove2RetryRunner();
 
         //错误移动文件
-        startErrorPools();
+        startErrorRunner();
 
         // 成功移动
-        startSuccessPools(Math.max(Configs.successPoolsLength, 1));
+        startSuccessRunner(Math.max(Configs.successPoolsLength, 1));
 
         // 当前上传
-        startCurrentUploadPools(Math.max(Configs.currentUploadPoolsLength, 1));
+        startCurrentUploadRunner(Math.max(Configs.currentUploadPoolsLength, 1));
 
         try {
             TimeUnit.SECONDS.sleep(1);
@@ -111,117 +167,299 @@ public class StatRunner {
         }
 
         // 老文件上传
-        startOldUploadPools(Math.max(Configs.oldUploadPoolsLength, 1));
+        startOldUploadRunner(Math.max(Configs.oldUploadPoolsLength, 1));
 
         // 老重试上传
-        startOldRetryPools(Math.max(Configs.oldRetryPoolsLength, 1));
+        startOldRetryRunner(Math.max(Configs.oldRetryPoolsLength, 1));
     }
 
     /**
-     * 启动文件移动到错误文件夹的线程池(单线程)
+     * 启动遗留重试文件上传的线程池
+     * @param oldRetryPoolsLength 线程池数量
      */
-    private static void startErrorPools() {
-        errorPools = generateSinglePools(errorPools);
-        errorPools.execute(new ErrorRunner());
+    private static void startOldRetryRunner(int oldRetryPoolsLength) {
+        int count = 0;
+        while (count < oldRetryPoolsLength) {
+            oldRetryPools.execute(new RetryHistoryUploadRunner(OldRetryQueue.getInstance()));
+            count++;
+        }
+    }
+
+    /**
+     * 启动遗留文件上传的线程池
+     * @param oldUploadPoolsLength 线程池数量
+     */
+    private static void startOldUploadRunner(int oldUploadPoolsLength) {
+        int count = 0;
+        while (count < oldUploadPoolsLength) {
+            oldUploadPools.execute(new HistoryUploadRunner(OldUploadQueue.getInstance()));
+            count++;
+        }
+    }
+
+    /**
+     * 启动当前文件上传的线程池
+     * @param currentUploadPoolsLength 线程池数量
+     */
+    private static void startCurrentUploadRunner(int currentUploadPoolsLength) {
+        int count = 0;
+        while (count < currentUploadPoolsLength) {
+            currentUploadPools.execute(new CurrentUploadRunner(CurrentUploadQueue.getInstance()));
+            count++;
+        }
+    }
+
+    /**
+     * 启动上传成功后文件移动到备份文件夹的线程池
+     * @param successPoolsLength 线程池数量
+     */
+    private static void startSuccessRunner(int successPoolsLength) {
+        int count = 0;
+        while (count < successPoolsLength) {
+            successPools.execute(new SuccessRunner(SuccessQueue.getInstance()));
+            count++;
+        }
     }
 
     /**
      * 启动文件移动到重试文件夹的线程池(单线程)
      */
-    private static void startRemove2RetryPools() {
-        remove2RetryPools = generateSinglePools(remove2RetryPools);
-        remove2RetryPools.execute(new RemoveFile2RetryRunner());
+    private static void startErrorRunner() {
+        errorPools.execute(new ErrorRunner(ErrorQueue.getInstance()));
+    }
+
+    /**
+     * 启动文件移动到重试文件夹的线程池(单线程)
+     */
+    private static void startRemove2RetryRunner() {
+        remove2RetryPools.execute(new RemoveFile2RetryRunner(RemoveFile2RetryQueue.getInstance()));
     }
 
     /**
      * 启动重试上传的线程池(单线程)
      */
-    private static void startCurrentRetryPools() {
-        currentRetryPools = generateSinglePools(currentRetryPools);
-        currentRetryPools.execute(new RetryCurrentUploadRunner());
+    private static void startCurrentRetryRunner() {
+        currentRetryPools.execute(new RetryCurrentUploadRunner(CurrentRetryUploadQueue.getInstance()));
     }
 
     /**
-     * 启动遍历重试文件夹并把遗留重试文件放入队列的线程池(单线程)
+     * 启动遍历dcm产生文件夹并把遗留上传文件放入上传队列的线程池(单线程)
      */
-    private static void startAddHistoryRetryFile2UploadPools() {
-        addHistoryRetryFile2QueuePools = generateSinglePools(addHistoryRetryFile2QueuePools);
+    private static void startAddHistoryRetryFile2UploadRunner() {
         addHistoryRetryFile2QueuePools.execute(new AddRetryHistory2QueueRunner());
     }
 
     /**
      * 启动遍历dcm产生文件夹并把遗留上传文件放入上传队列的线程池(单线程)
      */
-    private static void startAddHistoryFile2UploadPools() {
-        addHistoryFile2QueuePools = generateSinglePools(addHistoryFile2QueuePools);
+    private static void startAddHistoryFile2UploadRunner() {
         addHistoryFile2QueuePools.execute(new AddHistory2QueueRunner());
     }
 
     /**
      * 启动重试文件夹监听的线程池(单线程)
      */
-    private static void startRetryMonitorPools() {
-        retryMonitorPools = generateSinglePools(retryMonitorPools);
+    private static void startRetryMonitorRunner() {
         retryMonitorPools.execute(new RetryDirMonitor());
     }
 
     /**
      * 启动目标dcm产生文件夹监听的线程池(单线程)
      */
-    private static void startDirMonitorPools() {
-        dirMonitorPools = generateSinglePools(dirMonitorPools);
+    private static void startDirMonitorRunner() {
         dirMonitorPools.execute(new DirMonitor());
     }
 
     /**
-     * 启动遗留重试文件上传的线程池
+     * 等待runner销毁
+     */
+    private static void waitRunningDestroy() {
+        try {
+            TimeUnit.SECONDS.sleep(WAIT_TIME);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 初始化线程池
+     */
+    private static void initPools() {
+        // 监听目标文件线程池
+        initDirMonitorPools();
+
+        // 监听重试文件线程池
+        initRetryMonitorPools();
+
+        // 老文件加入老上传队列线程池
+        initAddHistoryFile2UploadPools();
+
+        // 老重试文件加入老重试上传队列线程池
+        initAddHistoryRetryFile2UploadPools();
+
+        // 新重试上传线程池
+        initCurrentRetryPools();
+
+        // 重试移动文件线程池
+        initRemove2RetryPools();
+
+        // 错误移动文件线程池
+        initErrorPools();
+
+        // 成功移动线程池
+        initSuccessPools(Math.max(Configs.successPoolsLength, 1));
+
+        // 当前上传线程池
+        initCurrentUploadPools(Math.max(Configs.currentUploadPoolsLength, 1));
+
+        // 老文件上传线程池
+        initOldUploadPools(Math.max(Configs.oldUploadPoolsLength, 1));
+
+        // 老重试上传线程池
+        initOldRetryPools(Math.max(Configs.oldRetryPoolsLength, 1));
+    }
+
+    /**
+     * 初始化遗留重试文件上传的线程池
      * @param oldRetryPoolsLength 线程池数量
      */
-    private static void startOldRetryPools(int oldRetryPoolsLength) {
-        int count = 0;
+    private static void initOldRetryPools(int oldRetryPoolsLength) {
         oldRetryPools = generatePools(oldRetryPools, oldRetryPoolsLength);
-        while (count < oldRetryPoolsLength) {
-            oldRetryPools.execute(new RetryHistoryUploadRunner());
-            count++;
-        }
     }
 
     /**
-     * 启动遗留文件上传的线程池
+     * 初始化遗留文件上传的线程池
      * @param oldUploadPoolsLength 线程池数量
      */
-    private static void startOldUploadPools(int oldUploadPoolsLength) {
-        int count = 0;
+    private static void initOldUploadPools(int oldUploadPoolsLength) {
         oldUploadPools = generatePools(oldUploadPools, oldUploadPoolsLength);
-        while (count < oldUploadPoolsLength) {
-            oldUploadPools.execute(new HistoryUploadRunner());
-            count++;
-        }
     }
 
     /**
-     * 启动当前文件上传的线程池
+     * 初始化当前文件上传的线程池
      * @param currentUploadPoolsLength 线程池数量
      */
-    private static void startCurrentUploadPools(int currentUploadPoolsLength) {
-        int count = 0;
+    private static void initCurrentUploadPools(int currentUploadPoolsLength) {
         currentUploadPools = generatePools(currentUploadPools, currentUploadPoolsLength);
-        while (count < currentUploadPoolsLength) {
-            currentUploadPools.execute(new CurrentUploadRunner());
-            count++;
-        }
     }
 
     /**
-     * 启动上传成功后文件移动到备份文件夹的线程池
+     * 初始化上传成功后文件移动到备份文件夹的线程池
      * @param successPoolsLength 线程池数量
      */
-    private static void startSuccessPools(int successPoolsLength) {
-        int count = 0;
+    private static void initSuccessPools(int successPoolsLength) {
         successPools = generatePools(successPools, successPoolsLength);
-        while (count < successPoolsLength) {
-            successPools.execute(new SuccessRunner());
-            count++;
+    }
+
+    /**
+     * 初始化文件移动到错误文件夹的线程池(单线程)
+     */
+    private static void initErrorPools() {
+        errorPools = generateSinglePools(errorPools);
+    }
+
+    /**
+     * 初始化文件移动到重试文件夹的线程池(单线程)
+     */
+    private static void initRemove2RetryPools() {
+        remove2RetryPools = generateSinglePools(remove2RetryPools);
+    }
+
+    /**
+     * 初始化重试上传的线程池(单线程)
+     */
+    private static void initCurrentRetryPools() {
+        currentRetryPools = generateSinglePools(currentRetryPools);
+    }
+
+    /**
+     * 初始化遍历重试文件夹并把遗留重试文件放入队列的线程池(单线程)
+     */
+    private static void initAddHistoryRetryFile2UploadPools() {
+        addHistoryRetryFile2QueuePools = generateSinglePools(addHistoryRetryFile2QueuePools);
+    }
+
+    /**
+     * 初始化遍历dcm产生文件夹并把遗留上传文件放入上传队列的线程池(单线程)
+     */
+    private static void initAddHistoryFile2UploadPools() {
+        addHistoryFile2QueuePools = generateSinglePools(addHistoryFile2QueuePools);
+    }
+
+    /**
+     * 初始化重试文件夹监听的线程池(单线程)
+     */
+    private static void initRetryMonitorPools() {
+        retryMonitorPools = generateSinglePools(retryMonitorPools);
+    }
+
+    /**
+     * 初始化目标dcm产生文件夹监听的线程池(单线程)
+     */
+    private static void initDirMonitorPools() {
+        dirMonitorPools = generateSinglePools(dirMonitorPools);
+    }
+
+    /**
+     * 销毁队列集合
+     */
+    private static void destroyQueueSet() {
+        if(queueSet != null) {
+            queueSet = destroyQueue(queueSet);
+        }
+        if(queueSet != null) {
+            Configs.sysLog.info("queueSet destroy fail!");
+            queueSet.clear();
+            queueSet = null;
+        }
+    }
+
+    /**
+     * 销毁已存在的队列集合
+     * @param set
+     * @return
+     */
+    private static Set<IQueue<String>> destroyQueue(Set<IQueue<String>> set) {
+        for (IQueue<String> queue : queueSet) {
+            if(queue != null) {
+                queue.destroy();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 初始化队列集合
+     */
+    private static void initQueueSet() {
+        queueSet = new HashSet<>();
+        createQueue(queueSet);
+        initQueue(queueSet);
+    }
+
+    /**
+     * 创建队列
+     * @param set
+     */
+    private static void createQueue(Set<IQueue<String>> set) {
+        set.add(CurrentRetryUploadQueue.getInstance());
+        set.add(CurrentUploadQueue.getInstance());
+        set.add(ErrorQueue.getInstance());
+        set.add(OldRetryQueue.getInstance());
+        set.add(OldUploadQueue.getInstance());
+        set.add(RemoveFile2RetryQueue.getInstance());
+        set.add(SuccessQueue.getInstance());
+    }
+
+    /**
+     * 初始化所有队列
+     * @param queueSet
+     */
+    private static void initQueue(Set<IQueue<String>> queueSet) {
+        for (IQueue<String> queue : queueSet) {
+            if(queue != null) {
+                queue.init();
+            }
         }
     }
 

+ 10 - 10
src/main/resources/project.properties

@@ -1,13 +1,13 @@
-#monitor.monitorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM
-#monitor.monitorBackDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_BCK
-#monitor.monitorRetryDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_RETRY
-#monitor.errorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_ERROR
-#monitor.hospitalId=13000003
-monitor.monitorDir=/Users/fuyu/Desktop/zzp/test/src
-monitor.monitorBackDir=/Users/fuyu/Desktop/zzp/test/target
-monitor.monitorRetryDir=/Users/fuyu/Desktop/zzp/test/retry
-monitor.errorDir=/Users/fuyu/Desktop/zzp/test/error
-monitor.hospitalId=test_zzp
+monitor.monitorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM
+monitor.monitorBackDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_BCK
+monitor.monitorRetryDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_RETRY
+monitor.errorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_ERROR
+monitor.hospitalId=13000003
+#monitor.monitorDir=/Users/fuyu/Desktop/zzp/test/src
+#monitor.monitorBackDir=/Users/fuyu/Desktop/zzp/test/target
+#monitor.monitorRetryDir=/Users/fuyu/Desktop/zzp/test/retry
+#monitor.errorDir=/Users/fuyu/Desktop/zzp/test/error
+#monitor.hospitalId=test_zzp
 monitor.pool.successPoolsLength=2
 monitor.pool.oldRetryPoolsLength=2
 monitor.pool.currentUploadPoolsLength=4

+ 3 - 0
target/classes/META-INF/MANIFEST.MF

@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: com.zskk.dicom.UploaderZskkApplication
+

+ 1 - 1
target/classes/META-INF/spring-autoconfigure-metadata.properties

@@ -1,3 +1,3 @@
-#Sat Mar 23 18:00:41 CST 2019
+#Sun Mar 24 18:02:32 CST 2019
 com.zskk.dicom.UploaderZskkApplication.Configuration=
 com.zskk.dicom.UploaderZskkApplication=

BIN
target/classes/com/zskk/dicom/monitor/config/Configs.class


BIN
target/classes/com/zskk/dicom/monitor/monitors/WatchDir.class


BIN
target/classes/com/zskk/dicom/monitor/queue/BaseQueue.class


BIN
target/classes/com/zskk/dicom/monitor/queue/IQueue.class


BIN
target/classes/com/zskk/dicom/monitor/runner/AbstractRemoveRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/AbstractUploadRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/BaseAddHistory2QueueRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/BaseRemoveRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/BaseRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/BaseUploadRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/CurrentUploadRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/ErrorRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/HistoryUploadRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/RemoveFile2RetryRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/RetryCurrentUploadRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/RetryHistoryUploadRunner.class


BIN
target/classes/com/zskk/dicom/monitor/runner/SuccessRunner.class


BIN
target/classes/com/zskk/dicom/monitor/schedules/StatRunner.class


+ 10 - 10
target/classes/project.properties

@@ -1,13 +1,13 @@
-#monitor.monitorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM
-#monitor.monitorBackDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_BCK
-#monitor.monitorRetryDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_RETRY
-#monitor.errorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_ERROR
-#monitor.hospitalId=13000003
-monitor.monitorDir=/Users/fuyu/Desktop/zzp/test/src
-monitor.monitorBackDir=/Users/fuyu/Desktop/zzp/test/target
-monitor.monitorRetryDir=/Users/fuyu/Desktop/zzp/test/retry
-monitor.errorDir=/Users/fuyu/Desktop/zzp/test/error
-monitor.hospitalId=test_zzp
+monitor.monitorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM
+monitor.monitorBackDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_BCK
+monitor.monitorRetryDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_RETRY
+monitor.errorDir=D:\\ZSKK_SYSTEM\\ScpServer\\Release\\DICOM_ERROR
+monitor.hospitalId=13000003
+#monitor.monitorDir=/Users/fuyu/Desktop/zzp/test/src
+#monitor.monitorBackDir=/Users/fuyu/Desktop/zzp/test/target
+#monitor.monitorRetryDir=/Users/fuyu/Desktop/zzp/test/retry
+#monitor.errorDir=/Users/fuyu/Desktop/zzp/test/error
+#monitor.hospitalId=test_zzp
 monitor.pool.successPoolsLength=2
 monitor.pool.oldRetryPoolsLength=2
 monitor.pool.currentUploadPoolsLength=4

+ 8 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,8 @@
+com/zskk/dicom/monitor/queue/CurrentUploadQueue$1.class
+com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue$1.class
+com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue$1.class
+com/zskk/dicom/monitor/queue/ErrorQueue$1.class
+com/zskk/dicom/monitor/queue/OldUploadQueue$1.class
+com/zskk/dicom/monitor/queue/OldRetryQueue$1.class
+com/zskk/dicom/response/ZskkResponseFactory$1.class
+com/zskk/dicom/monitor/queue/SuccessQueue$1.class

+ 2 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -8,6 +8,7 @@
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/monitors/RetryFileActionCallback.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/runner/ErrorRunner.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/schedules/RetryDirMonitor.java
+/Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/queue/BaseStringQueue.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/queue/CurrentRetryUploadQueue.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/utils/MailerUtil.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/runner/AbstractUploadRunner.java
@@ -51,6 +52,7 @@
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/monitors/WatchDir.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/report/ErrReporterSender.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/response/FileUploadChcekResponse.java
+/Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/runner/RunnerAction.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/utils/FileHashUtil.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/monitor/queue/RemoveFile2RetryQueue.java
 /Users/fuyu/Desktop/zzp/demo/src/main/java/com/zskk/dicom/config/OSSConfig.java

BIN
target/zskk-dicom-monitor-jar-with-dependencies.jar


BIN
target/zskk-dicom-monitor.jar


BIN
target/zskk-dicom-monitor.jar.original