/*
* Copyright (C) 2015 Jan Pokorsky
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cz.cas.lib.proarc.common.workflow;
import cz.cas.lib.proarc.common.fedora.DigitalObjectValidationException.ValidationResult;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Jan Pokorsky
*/
public class WorkflowException extends Exception {
public static final String INVALID_XML_MSG = "Workflow_InvalidXml_Msg";
public static final String INVALID_XML_ID_MSG = "Workflow_InvalidXmlId_Msg";
public static final String JOB_IS_CLOSED_MSG = "Workflow_JobIsClosed_Msg";
public static final String JOB_NOT_FOUND_MSG = "Workflow_JobNotFound_Msg";
public static final String MATERIAL_NOT_FOUND_MSG = "Workflow_MaterialNotFound_Msg";
public static final String PARAM_UPDATE_FAILED_MSG = "Invalid parameter {0}!";
public static final String PARAM_NOT_NUMBER_MSG = "Workflow_ParamNotNumber_Msg";
public static final String PARAM_NOT_DATETIME_MSG = "Workflow_ParamNotDateTime_Msg";
public static final String TASK_BLOCKED_MSG = "Workflow_TaskBlocked_Msg";
public static final String TASK_CANNOT_WAIT_AGAIN_MSG = "Workflow_TaskCannotWaitAgain_Msg";
public static final String TASK_DISABLED_MSG = "Workflow_TaskDisabled";
public static final String TASK_NOT_FOUND_MSG = "Workflow_TaskNotFound_Msg";
public static final String UNEXPECTED_ERROR_MSG_MSG = "Err_UnexpectedError_Msg";
private final List<ValidationResult> validations = new ArrayList<ValidationResult>();
public WorkflowException(String message) {
super(message);
}
public WorkflowException(String message, Throwable cause) {
super(message, cause);
}
public WorkflowException copy(WorkflowException ex) {
validations.addAll(ex.getValidations());
return this;
}
public WorkflowException addUnexpectedError() {
return addValidation(null, UNEXPECTED_ERROR_MSG_MSG);
}
public WorkflowException addInvalidXml() {
return addValidation(null, INVALID_XML_MSG);
}
public WorkflowException addInvalidXmlId(String xmlId) {
return addValidation(null, INVALID_XML_ID_MSG, xmlId);
}
public WorkflowException addJobIsClosed() {
return addValidation(null, JOB_IS_CLOSED_MSG);
}
public WorkflowException addJobNotFound(Number jobId) {
return addValidation(null, JOB_NOT_FOUND_MSG, jobId);
}
public WorkflowException addMaterialNotFound(Number jobId) {
return addValidation(null, MATERIAL_NOT_FOUND_MSG, jobId);
}
public WorkflowException addParamNumberFormat(String paramName, Object value) {
return addValidation(null, PARAM_NOT_NUMBER_MSG, paramName, value);
}
public WorkflowException addParamDateTimeFormat(String paramName, Object value) {
return addValidation(null, PARAM_NOT_DATETIME_MSG, paramName, value);
}
public WorkflowException addParamUpdateFailed(String paramName) {
return addValidation(null, PARAM_UPDATE_FAILED_MSG, paramName);
}
public WorkflowException addTaskBlocked() {
return addValidation(null, TASK_BLOCKED_MSG);
}
public WorkflowException addTaskCannotWaitAgain() {
return addValidation(null, TASK_CANNOT_WAIT_AGAIN_MSG);
}
public WorkflowException addTaskDisabled(String taskXmlId) {
return addValidation(null, TASK_DISABLED_MSG, taskXmlId);
}
public WorkflowException addTaskNotFound(Number taskId) {
return addValidation(null, TASK_NOT_FOUND_MSG, taskId);
}
public WorkflowException addValidation(String name, String bundleKey, Object... values) {
ValidationResult vr = new ValidationResult();
vr.setName(name);
vr.setBundleKey(bundleKey);
vr.setValues(values);
validations.add(vr);
return this;
}
public List<ValidationResult> getValidations() {
return validations;
}
@Override
public String toString() {
return super.toString();
}
}