| | |
| | | * This class implements the workflow result code. The workflow result code |
| | | * contains an LDAP result code along with an LDAP error message. |
| | | */ |
| | | public class WorkflowResultCode |
| | | class WorkflowResultCode |
| | | { |
| | | // The global result code. |
| | | /** The global result code. */ |
| | | private ResultCode resultCode = ResultCode.UNDEFINED; |
| | | |
| | | // The global error message. |
| | | /** The global error message. */ |
| | | private LocalizableMessageBuilder errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY); |
| | | |
| | | |
| | | /** |
| | | * Creates a new instance of a workflow result. By default the result code |
| | | * is set to UNDEFINED and there is no error message. |
| | |
| | | // Nothing to implement. |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Creates a new instance of a workflow result code and initializes it |
| | | * with a result code and an error message. |
| | |
| | | * @param resultCode the initial value for the result code |
| | | * @param errorMessage the initial value for the error message |
| | | */ |
| | | public WorkflowResultCode( |
| | | ResultCode resultCode, |
| | | LocalizableMessageBuilder errorMessage |
| | | ) |
| | | WorkflowResultCode(ResultCode resultCode, LocalizableMessageBuilder errorMessage) |
| | | { |
| | | this.resultCode = resultCode; |
| | | this.errorMessage = errorMessage; |
| | |
| | | * has to take into account all the subordinate result codes to elaborate |
| | | * a global result code. |
| | | * |
| | | * Sometimes, a referral result code has to be turned into a reference |
| | | * entry. When such case is occurring the elaborateGlobalResultCode method |
| | | * Sometimes, a referral result code has to be turned into a reference entry. |
| | | * When such case is occurring the elaborateGlobalResultCode method |
| | | * will return true. |
| | | * |
| | | * The global result code is elaborated as follows: |
| | |
| | | * </PRE> |
| | | * |
| | | * @param newResultCode the new result code to take into account |
| | | * @param newErrorMessage the new error message associated to the new |
| | | * error code |
| | | * @return <code>true</code> if a referral result code must be turned |
| | | * into a reference entry |
| | | * @param newErrorMessage the new error message associated to the new error code |
| | | * @return <code>true</code> if a referral result code must be turned into a reference entry |
| | | */ |
| | | public boolean elaborateGlobalResultCode( |
| | | ResultCode newResultCode, |
| | | LocalizableMessageBuilder newErrorMessage |
| | | ) |
| | | boolean elaborateGlobalResultCode(ResultCode newResultCode, LocalizableMessageBuilder newErrorMessage) |
| | | { |
| | | // Returned value |
| | | boolean sendReferenceEntry = false; |
| | | |
| | | // if global result code has not been set yet then just take the new |
| | | // result code as is |
| | | if (resultCode == ResultCode.UNDEFINED) |
| | | { |
| | | resultCode = newResultCode; |
| | | errorMessage = new LocalizableMessageBuilder (newErrorMessage); |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | // Elaborate the new result code (see table in the description header). |
| | | |
| | | |
| | | // Elaborate the new result code (see table in the description header). |
| | | switch (newResultCode.asEnum()) |
| | | { |
| | | case SUCCESS: |
| | | // |
| | | // Received SUCCESS |
| | | // ---------------- |
| | | // |
| | | switch (resultCode.asEnum()) |
| | | { |
| | | case NO_SUCH_OBJECT: |
| | | resultCode = ResultCode.SUCCESS; |
| | | errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY); |
| | | break; |
| | | return false; |
| | | case REFERRAL: |
| | | resultCode = ResultCode.SUCCESS; |
| | | errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY); |
| | | sendReferenceEntry = true; |
| | | break; |
| | | return true; |
| | | default: |
| | | // global resultCode remains the same |
| | | break; |
| | | return false; |
| | | } |
| | | break; |
| | | |
| | | case NO_SUCH_OBJECT: |
| | | // |
| | | // Received NO SUCH OBJECT |
| | | // ----------------------- |
| | | // |
| | | // global resultCode remains the same |
| | | break; |
| | | return false; |
| | | |
| | | case REFERRAL: |
| | | // |
| | | // Received REFERRAL |
| | | // ----------------- |
| | | // |
| | | switch (resultCode.asEnum()) |
| | | { |
| | | case REFERRAL: |
| | | resultCode = ResultCode.SUCCESS; |
| | | errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY); |
| | | sendReferenceEntry = true; |
| | | break; |
| | | return true; |
| | | case NO_SUCH_OBJECT: |
| | | resultCode = ResultCode.REFERRAL; |
| | | errorMessage = new LocalizableMessageBuilder (LocalizableMessage.EMPTY); |
| | | break; |
| | | return false; |
| | | default: |
| | | // global resultCode remains the same |
| | | sendReferenceEntry = true; |
| | | break; |
| | | return true; |
| | | } |
| | | break; |
| | | |
| | | default: |
| | | // |
| | | // Received other result codes |
| | | // --------------------------- |
| | | // |
| | | switch (resultCode.asEnum()) |
| | | { |
| | | case REFERRAL: |
| | | resultCode = newResultCode; |
| | | errorMessage = new LocalizableMessageBuilder (newErrorMessage); |
| | | sendReferenceEntry = true; |
| | | break; |
| | | return true; |
| | | case SUCCESS: |
| | | resultCode = newResultCode; |
| | | errorMessage = new LocalizableMessageBuilder (newErrorMessage); |
| | | break; |
| | | case NO_SUCH_OBJECT: |
| | | resultCode = newResultCode; |
| | | errorMessage = new LocalizableMessageBuilder (newErrorMessage); |
| | | break; |
| | | return false; |
| | | default: |
| | | // Do nothing (we don't want to override the first error) |
| | | break; |
| | | } |
| | | break; |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | return sendReferenceEntry; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns the global result code. |
| | | * |
| | | * @return the global result code. |
| | | */ |
| | | public ResultCode resultCode() |
| | | ResultCode resultCode() |
| | | { |
| | | return resultCode; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns the global error message. |
| | | * |
| | | * @return the global error message. |
| | | */ |
| | | public LocalizableMessageBuilder errorMessage() |
| | | LocalizableMessageBuilder errorMessage() |
| | | { |
| | | return errorMessage; |
| | | } |