blob: 809bff23754a10e7214d3bef9b0ff69f084e3879 [file] [log] [blame]
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());
}
}
}