From 0364609e68b8e4f222d95f1f79a05b18ea6181d9 Mon Sep 17 00:00:00 2001 From: ymlam Date: Mon, 2 Jan 2023 17:29:26 -0500 Subject: [PATCH] Re-declare enum JobStatus as an interface so it can be virtually extended by derived Engines Thie allows for removal of entries from the original enum JobStatus that more appropriately belong to derivation of CommEngine. Such data complicates the management of the original JobStateus when adding new CommEngines. These entries can be declared in a new enums implementing the JobStatus interface, for each derived CommEngine. --- src/main/java/altk/comm/engine/Broadcast.java | 4 +- src/main/java/altk/comm/engine/Job.java | 82 +++++++------------ 2 files changed, 33 insertions(+), 53 deletions(-) diff --git a/src/main/java/altk/comm/engine/Broadcast.java b/src/main/java/altk/comm/engine/Broadcast.java index 02d4c40..9189034 100644 --- a/src/main/java/altk/comm/engine/Broadcast.java +++ b/src/main/java/altk/comm/engine/Broadcast.java @@ -22,7 +22,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.json.simple.JSONObject; -import altk.comm.engine.Job.JobStatus; +import altk.comm.engine.Job.CommJobStatus; import altk.comm.engine.exception.BroadcastError; import altk.comm.engine.exception.BroadcastException; import altk.comm.engine.exception.EngineException; @@ -1271,7 +1271,7 @@ public abstract class Broadcast */ public void postJobStatus(Job job) { - if (job.jobStatus == JobStatus.SUCCESS) successCount.incrementAndGet(); + if (job.jobStatus == CommJobStatus.SUCCESS) successCount.incrementAndGet(); if (postback != null) { JobReport report = mkJobReport(); diff --git a/src/main/java/altk/comm/engine/Job.java b/src/main/java/altk/comm/engine/Job.java index 64611b1..4cd99e7 100644 --- a/src/main/java/altk/comm/engine/Job.java +++ b/src/main/java/altk/comm/engine/Job.java @@ -5,60 +5,40 @@ package altk.comm.engine; * @author Yuk-Ming * */ + public class Job { - /** - * Because enum has no inheritance, JobStatus is the union of - * all possible job status from all backend engines built on CommEngine. - */ - static public enum JobStatus - { - // TODO: Some of them, like CANCELED and EXPIRED, should not be used, and should be cleaned out. - TRYING(false), // VoiceEngine - GO_NEXT_PHONE(false), // VoiceEngine - //TRUNK_ERROR(false), - LONG_DURATION(true), // VoiceEngine - SUCCESS(true), - NO_MORE_RETRY(true), // VoiceEngine - ADDRESS_ERROR(true), // All - SERVICE_PROVIDER_PROTOCOL_ERROR(true), // SMS - SERVICE_PROVIDER_GENERATED_ERROR(true), // SMS - SERVICE_PROVIDER_HTTP_ERROR(true), // SMS - SERVICE_PROVIDER_CONNECT_ERROR(true), // SMS - FORBIDDEN(true), // SMS - HTTP 403 - SPAM(true), // SMS - SERVICE_PROVIDER_OTHER_ERROR(true), // Email - CANCELED(true), // Voice - is it really? - EXPIRED(true), // Voice - is it really? - MESSAGE_ERROR(true), // Email, SMS - MSG_TOO_LONG(true), // SMS - NOT_FOUND(true), // SMS - INVALID_MEDIA_TYPE(true), // MMS - SERVICE_ACCESS_BLOCKED(true), // SMS - PLATFORM_ERROR(true), // SMS - FAILED(true), // SMS - UNKNOWN_ERROR(true), // SMS - NOT_AUTHORIZED(true), // SMS - BAD_REQUEST(true), // SMS - THROTTLE_LIMIT_REACHED(true), // SMS - UNPROCESSABLE_ENTITY(true), // SMS - PAYMENT_REQUIRED(true) , - ABORT(true), - ; - - private boolean isTerminal; - - private JobStatus(boolean isTerminal) - { - this.isTerminal = isTerminal; - } - - public boolean isTerminal() - { - return isTerminal; - } + /** + * Named but empty interface designed for the purpose of extending a specific enum. + */ + public interface JobStatus + { + } - } + /** + * Base JobStatus values common to all CommEngine's. + */ + static public enum CommJobStatus implements JobStatus + { + SUCCESS, + ADDRESS_ERROR, + CANCELED, + EXPIRED, + SERVICE_PROVIDER_PROTOCOL_ERROR, + SERVICE_PROVIDER_CONNECT_ERROR, + SERVICE_PROVIDER_HTTP_ERROR, + SERVICE_PROVIDER_GENERATED_ERROR, + SERVICE_PROVIDER_OTHER_ERROR, + FORBIDDEN, + UNKNOWN_ERROR, + NOT_AUTHORIZED, + BAD_REQUEST, + ABORT, + PLATFORM_ERROR, + FAILED, + NOT_FOUND, + PAYMENT_REQUIRED; + } public Recipient recipient;