| package org.eclipse.jst.jsf.validation.internal.strategy; |
| |
| import java.util.Locale; |
| |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.emf.common.util.BasicDiagnostic; |
| import org.eclipse.emf.common.util.Diagnostic; |
| import org.eclipse.jst.jsf.common.dom.TagIdentifier; |
| import org.eclipse.jst.jsf.core.internal.JSFCorePlugin; |
| import org.eclipse.jst.jsf.validation.internal.appconfig.ILocalizedMessage; |
| import org.eclipse.osgi.util.NLS; |
| import org.eclipse.wst.validation.internal.core.Message; |
| import org.eclipse.wst.validation.internal.provisional.core.IMessage; |
| |
| /** |
| * Diagnostic factory for JSF views |
| * |
| */ |
| public final class DiagnosticFactory { |
| |
| /** |
| * The id used in the source field of all Diagnostic's created by this factory |
| * to uniquely identify tag validation as their source type. |
| */ |
| public final static String SOURCE_ID = "org.eclipse.jst.jsf.validation.tag.Diagnostics";//$NON-NLS-1$ |
| |
| /** |
| * Problem id |
| */ |
| public final static int CONTAINMENT_ERROR_MISSING_VIEW = 1; |
| |
| /** |
| * Problem id |
| */ |
| public final static int CONTAINMENT_ERROR_MISSING_FORM = 2; |
| |
| /** |
| * Problem id |
| */ |
| public static final int CONTAINMENT_ERROR_MISSING_ANCESTOR = 3; |
| |
| |
| /** |
| * @param tagName |
| * @return message indicating a JSF view tag is missing as an ancestor |
| */ |
| public static Diagnostic create_CONTAINMENT_ERROR_MISSING_VIEW(final String tagName) |
| { |
| return create(CONTAINMENT_ERROR_MISSING_VIEW, |
| NLS.bind(Messages.CONTAINMENT_ERROR_MISSING_VIEW, tagName)); |
| } |
| |
| /** |
| * @param tagName |
| * @return message indicating a JSF form tag is missing as an ancestor |
| */ |
| public static Diagnostic create_CONTAINMENT_ERROR_MISSING_FORM(final String tagName) |
| { |
| return create(CONTAINMENT_ERROR_MISSING_FORM, |
| NLS.bind(Messages.CONTAINMENT_ERROR_MISSING_FORM, tagName)); |
| } |
| |
| /** |
| * @param tagName |
| * @param missingTag |
| * @return message indicating some tag is missing as an ancestor |
| */ |
| public static Diagnostic create_CONTAINMENT_ERROR_MISSING_ANCESTOR(final String tagName, final TagIdentifier missingTag) |
| { |
| |
| return create(CONTAINMENT_ERROR_MISSING_ANCESTOR, |
| NLS.bind(Messages.CONTAINMENT_ERROR_MISSING_ANCESTOR, |
| new Object[]{ tagName, missingTag.getUri(), missingTag.getTagName()})); |
| } |
| |
| private static BasicDiagnostic create(final int diagnosticId, final String message) |
| { |
| final int severity = IMessage.NORMAL_SEVERITY;//ELValidationPreferences.getDefaultSeverity(diagnosticId); |
| return new BasicDiagnostic(severity, SOURCE_ID |
| , diagnosticId |
| , message |
| , null); |
| } |
| /** |
| * Customized localizable message for view validation |
| * @author cbateman |
| * |
| */ |
| static class MyLocalizedMessage extends Message implements ILocalizedMessage |
| { |
| private final String _message; |
| private final int _errorCode; |
| |
| /** |
| * @param severity |
| * @param messageText |
| * @param targetObject |
| * @param errorCode |
| */ |
| public MyLocalizedMessage(int severity, String messageText, IResource targetObject, int errorCode) { |
| this(severity, messageText, (Object) targetObject, errorCode); |
| } |
| |
| /** |
| * @param severity |
| * @param messageText |
| * @param targetObject |
| * @param errorCode |
| */ |
| private MyLocalizedMessage(int severity, String messageText, Object targetObject, int errorCode) { |
| super(JSFCorePlugin.getDefault().getBundle().getSymbolicName(), severity, |
| messageText); |
| _message = messageText; |
| setTargetObject(targetObject); |
| _errorCode = errorCode; |
| } |
| |
| /** |
| * @return the localized message |
| */ |
| public String getLocalizedMessage() { |
| return _message; |
| } |
| |
| /** |
| * @see org.eclipse.wst.validation.internal.core.Message#getText() |
| */ |
| public String getText() { |
| return getLocalizedMessage(); |
| } |
| |
| /** |
| * @see org.eclipse.wst.validation.internal.core.Message#getText(java.lang.ClassLoader) |
| */ |
| public String getText(ClassLoader cl) { |
| return getLocalizedMessage(); |
| } |
| |
| /** |
| * @see org.eclipse.wst.validation.internal.core.Message#getText(java.util.Locale) |
| */ |
| public String getText(Locale l) { |
| return getLocalizedMessage(); |
| } |
| |
| public String getText(Locale l, ClassLoader cl) { |
| return getLocalizedMessage(); |
| } |
| |
| /** |
| * @return the error code related to this message |
| */ |
| public int getErrorCode() { |
| return _errorCode; |
| } |
| |
| |
| /** |
| * @param offset |
| * @return true if this message applies to document offset |
| */ |
| public boolean appliesTo(int offset) |
| { |
| return (offset >= getOffset() && offset < getOffset()+getLength()); |
| } |
| } |
| |
| |
| } |