package com.uas.report.axis;

import java.io.Serializable;
import java.text.MessageFormat;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "error")
public class ValidationError implements Serializable {

	private static final long serialVersionUID = 1L;

	private String errorCode;
	private Object[] arguments;
	private String defaultMessage;
	private String field;

	public ValidationError() {
	}

	public ValidationError(String errorCode, Object[] arguments, String defaultMessage, String field) {
		this.errorCode = errorCode;
		this.arguments = arguments;
		this.defaultMessage = defaultMessage;
		this.field = field;
	}

	public ValidationError(String errorCode, Object[] arguments, String defaultMessage) {
		this(errorCode, arguments, defaultMessage, null);
	}

	public String getErrorCode() {
		return errorCode;
	}

	public Object[] getErrorArguments() {
		return arguments;
	}

	public String getDefaultMessage() {
		return defaultMessage;
	}

	public String getField() {
		return field;
	}

	public void setErrorCode(String errorCode) {
		this.errorCode = errorCode;
	}

	public void setArguments(Object[] arguments) {
		this.arguments = arguments;
	}

	public void setErrorArguments(Object... arguments) {
		this.setArguments(arguments);
	}

	public void setDefaultMessage(String defaultMessage) {
		this.defaultMessage = defaultMessage;
	}

	public void setField(String field) {
		this.field = field;
	}

	public String toString() {
		if (getDefaultMessage() != null) {
			return MessageFormat.format(getDefaultMessage(), getErrorArguments());
		}

		if (getField() == null) {
			return getErrorCode();
		}

		return getErrorCode() + "." + getField();
	}

}
