77import java .util .function .Consumer ;
88
99abstract public class AbstractFileProcessor {
10+ protected Runnable cancelHandler ;
1011 protected Runnable failureHandler ;
1112 protected Runnable startHandler ;
1213 protected Consumer <String > successHandler ;
1314
1415 private Thread processThread ;
1516 protected String statusMessage = "" ;
1617
18+ public boolean isCanceled () {
19+ return processThread != null && processThread .isInterrupted ();
20+ }
21+
1722 public boolean isRunning () {
1823 return processThread != null && processThread .isAlive ();
1924 }
@@ -22,6 +27,12 @@ public String getStatusMessage() {
2227 return statusMessage ;
2328 }
2429
30+ protected void sendCancel () {
31+ if (cancelHandler != null ) {
32+ cancelHandler .run ();
33+ }
34+ }
35+
2536 protected void sendFailure () {
2637 if (failureHandler != null ) {
2738 failureHandler .run ();
@@ -35,6 +46,10 @@ protected void sendStart(@NonNull String message) {
3546 }
3647 }
3748
49+ public void setCancelHandler (Runnable handler ) {
50+ cancelHandler = handler ;
51+ }
52+
3853 public void setFailureHandler (Runnable handler ) {
3954 failureHandler = handler ;
4055 }
@@ -47,6 +62,12 @@ public void setSuccessHandler(Consumer<String> handler) {
4762 successHandler = handler ;
4863 }
4964
65+ public void cancel () {
66+ if (isRunning ()) {
67+ processThread .interrupt ();
68+ }
69+ }
70+
5071 public boolean run (@ NonNull Activity activity ) {
5172 if (isRunning ()) {
5273 return false ;
0 commit comments