/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.extension.definition; import java.util.Collections; import java.util.List; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.designer.extension.Messages; /** * A validation status that has a severity and a message. * * @since 8.0 */ public class ValidationStatus implements MedStatus { private static final List<MedStatus> NO_CHILDREN = Collections.emptyList(); /** * An OK validation status with a standard, localized message. */ public static final ValidationStatus OK_STATUS = createOkMessage(Messages.okValidationMsg); /** * @param message the validation message (cannot be <code>null</code> or empty) * @return the error validation message (never <code>null</code>) */ public static ValidationStatus createErrorMessage(final String message) { return new ValidationStatus(MedStatus.Severity.ERROR, message); } /** * @param message the validation message (cannot be <code>null</code> or empty) * @return the information validation message (never <code>null</code>) */ public static ValidationStatus createInfoMessage(final String message) { return new ValidationStatus(Severity.INFO, message); } /** * @param message the validation message (cannot be <code>null</code> or empty) * @return the OK validation message (never <code>null</code>) */ public static ValidationStatus createOkMessage(final String message) { return new ValidationStatus(Severity.OK, message); } /** * @param message the validation message (cannot be <code>null</code> or empty) * @return the warning validation message (never <code>null</code>) */ public static ValidationStatus createWarningMessage(final String message) { return new ValidationStatus(Severity.WARNING, message); } private String message; private Severity severity; protected ValidationStatus(final Severity type, final String message) { assert (type != null) : "severity is null"; //$NON-NLS-1$ CoreArgCheck.isNotEmpty(message, "message is empty"); //$NON-NLS-1$ this.severity = type; this.message = message; } /** * @see java.lang.Comparable#compareTo(java.lang.Object) */ @Override public int compareTo(final MedStatus that) { if ((this == that) || (getSeverity() == that.getSeverity())) { return getMessage().compareTo(that.getMessage()); } if (isError()) { if (that.isWarning()) { return -10; } if (that.isInfo()) { return -100; } return -1000; // ok } if (isWarning()) { if (that.isError()) { return 10; } if (that.isInfo()) { return -10; } return -100; // ok } if (isInfo()) { if (that.isError()) { return 100; } if (that.isWarning()) { return 10; } return -10; // ok } // OK if (that.isError()) { return 1000; } if (that.isWarning()) { return 100; } return 10; // info } /** * @see org.teiid.designer.extension.definition.MedStatus#getChildren() */ @Override public List<MedStatus> getChildren() { return NO_CHILDREN; } /** * @see org.teiid.designer.extension.definition.MedStatus#getMessage() */ @Override public String getMessage() { return this.message; } /** * @see org.teiid.designer.extension.definition.MedStatus#getSeverity() */ @Override public Severity getSeverity() { return this.severity; } /** * @see org.teiid.designer.extension.definition.MedStatus#isError() */ @Override public boolean isError() { return (Severity.ERROR == this.severity); } /** * @see org.teiid.designer.extension.definition.MedStatus#isInfo() */ @Override public boolean isInfo() { return (Severity.INFO == this.severity); } /** * @see org.teiid.designer.extension.definition.MedStatus#isMulti() */ @Override public boolean isMulti() { return false; } /** * @see org.teiid.designer.extension.definition.MedStatus#isOk() */ @Override public boolean isOk() { return (Severity.OK == this.severity); } /** * @see org.teiid.designer.extension.definition.MedStatus#isWarning() */ @Override public boolean isWarning() { return (Severity.WARNING == this.severity); } }