/*
* 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.core.validation;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.teiid.designer.core.ModelerCore;
/**
* ValidationProblemImpl
*
* @since 8.0
*/
public class ValidationProblemImpl implements ValidationProblem {
private final int code;
private final int severity;
private final String message;
private boolean hasPreference;
private final String uri;
private final String location;
/**
* Construct an instance of ValidationProblemImpl.
* @param status - The IStatus of the problem
*/
public ValidationProblemImpl(final IStatus status) {
this(status.getCode(), status.getSeverity(), status.getMessage());
}
/**
* Construct an instance of ValidationProblemImpl.
* @param code - code for this exception
* @param severity - Severity using IStatus constants
* @param msg - Message to report to the user
*/
public ValidationProblemImpl(final int code, final int severity, final String message) {
this(code, severity, message, null, null);
}
/**
*
* @param code - code for this exception
* @param severity - Severity using IStatus constants
* @param message - Message to report to the user
* @param location - the location (generally, the parent) of the issue. May be null.
* @param uri - the URI of the EObject causing the issue. May be null.
*/
public ValidationProblemImpl(final int code, final int severity, final String message, String location, String uri) {
validateSeverity(severity);
this.code = code;
this.severity = severity;
this.message = message;
this.uri = uri;
this.location = location;
}
/**
* @param severity
*/
private void validateSeverity(final int severity) {
if(severity == IStatus.ERROR || severity == IStatus.INFO || severity == IStatus.OK || severity == IStatus.WARNING){
return;
}
throw new IllegalArgumentException(ModelerCore.Util.getString("ValidationProblemImpl.Invalid_severity.__Value_must_be_one_of_valid_status_constants_from_IStatus_class_1")); //$NON-NLS-1$
}
/**
* @return code
*/
@Override
public int getCode() {
return code;
}
/**
* @return msg
*/
@Override
public String getMessage() {
if(!hasPreference) {
return message;
}
return message+ModelerCore.Util.getString("ValidationProblemImpl.option_preference"); //$NON-NLS-1$
}
/**
* @return severity
*/
@Override
public int getSeverity() {
return severity;
}
/**
* @param hasPreference The hasPreference to set.
* @since 4.2
*/
@Override
public void setHasPreference(boolean hasPreference) {
this.hasPreference = hasPreference;
}
@Override
public String toString(){
final StringBuffer buffer = new StringBuffer();
buffer.append(getSeverityString() );
buffer.append(" - "); //$NON-NLS-1$
buffer.append(getMessage() );
return buffer.toString();
}
private String getSeverityString(){
switch (this.severity) {
case IStatus.ERROR : return ModelerCore.Util.getString("ValidationProblemImpl.Error_1"); //$NON-NLS-1$
case IStatus.INFO : return ModelerCore.Util.getString("ValidationProblemImpl.Info_2"); //$NON-NLS-1$
case IStatus.OK : return ModelerCore.Util.getString("ValidationProblemImpl.OK_3"); //$NON-NLS-1$
case IStatus.WARNING : return ModelerCore.Util.getString("ValidationProblemImpl.Warning_4"); //$NON-NLS-1$
default :
return(ModelerCore.Util.getString("ValidationProblemImpl.Unknown_Severity_5")); //$NON-NLS-1$
}
}
/**
* @see org.teiid.designer.core.validation.ValidationProblem#getStatus()
* @since 4.2
*/
@Override
public IStatus getStatus() {
return new Status(severity, ModelerCore.PLUGIN_ID, code, message, null);
}
@Override
public String getURI() {
return uri;
}
@Override
public String getLocation() {
return location;
}
}