/*******************************************************************************
* Copyright (c) 2007-2011 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.jsf.web.validation;
import java.util.Locale;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.wst.validation.ValidatorMessage;
import org.eclipse.wst.validation.internal.core.Message;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
import org.jboss.tools.jsf.web.validation.jsf2.JSF2XMLValidator;
import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2AttrTempComponent;
import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2CompositeTempComponent;
import org.jboss.tools.jsf.web.validation.jsf2.components.JSF2URITempComponent;
import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ValidatorConstants;
/**
* @author mareshkau
*
*/
@SuppressWarnings("restriction")
public class LocalizedMessage extends Message {
private IJSFValidationComponent component;
private LocalizedMessage(){}
public static LocalizedMessage createJSF2LocalizedMessage(IJSFValidationComponent component,
IFile validateFile){
LocalizedMessage jsf2LocMessage = new LocalizedMessage();
jsf2LocMessage.component = component;
jsf2LocMessage.setAttribute("problemType", JSF2XMLValidator.JSF2_PROBLEM_ID); //$NON-NLS-1$
jsf2LocMessage.setAttribute(JSF2ValidatorConstants.JSF2_TYPE_KEY, component
.getType());
jsf2LocMessage.setAttribute(
"validateResourcePath", validateFile == null ? "" : validateFile.getFullPath().toString()); //$NON-NLS-1$//$NON-NLS-2$
jsf2LocMessage.setAttribute(JSF2ResourceUtil.COMPONENT_RESOURCE_PATH_KEY,
component.getComponentResourceLocation());
jsf2LocMessage.setAttribute(IMarker.LINE_NUMBER, jsf2LocMessage.getLineNumber());
jsf2LocMessage.setAttribute(IMarker.SEVERITY, 1);
jsf2LocMessage.setAttribute(ValidatorMessage.ValidationId, "org.jboss.tools.jsf.jsf2.source"); //$NON-NLS-1$
if (component instanceof JSF2URITempComponent) {
jsf2LocMessage.setAttribute(JSF2ValidatorConstants.JSF2_URI_NAME_KEY,
((JSF2URITempComponent) component).getURI());
} else if (component instanceof JSF2AttrTempComponent) {
jsf2LocMessage.setAttribute(JSF2ValidatorConstants.JSF2_ATTR_NAME_KEY,
((JSF2AttrTempComponent) component).getName());
jsf2LocMessage.setAttribute(JSF2ResourceUtil.JSF2_COMPONENT_NAME, ((JSF2AttrTempComponent) component).getElementName());
} else if (component instanceof JSF2CompositeTempComponent) {
String[] attrNames = ((JSF2CompositeTempComponent) component)
.getAttrNames();
if (attrNames != null) {
for (int i = 0; i < attrNames.length; i++) {
jsf2LocMessage.setAttribute(
JSF2ValidatorConstants.JSF2_ATTR_NAME_KEY
+ String.valueOf(i), attrNames[i]);
}
jsf2LocMessage.setAttribute(JSF2ResourceUtil.JSF2_COMPONENT_NAME, ((JSF2CompositeTempComponent) component).getElement().getLocalName());
}
}
jsf2LocMessage.setAttribute(IMarker.MESSAGE,jsf2LocMessage.getText());
return jsf2LocMessage;
}
@Override
public int getLineNumber() {
return component.getLine();
}
@Override
public int getLength() {
return component.getLength();
}
@Override
public int getOffset() {
return component.getStartOffSet();
}
@Override
public String getText() {
return component.getValidationMessage();
}
@Override
public String getText(Locale locale) {
return component.getValidationMessage();
}
@Override
public String getText(Locale locale, ClassLoader classLoader) {
return component.getValidationMessage();
}
@Override
public String getText(ClassLoader classLoader) {
return component.getValidationMessage();
}
@Override
public int getSeverity() {
return IMessage.NORMAL_SEVERITY;
}
}