/*******************************************************************************
* Copyright (C) 2003-2006, 2008, 2013, Guillaume Brocker
* Copyright (C) 2015-2017, Andre Bossert
*
* All rights reserved. This program and the accompanying materials
* are 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:
* Guillaume Brocker - Initial API and implementation
* Andre Bossert - Improvement static declaration of plugin relative identifier
* - fixed java.lang.IllegalArgumentException: endRule without matching beginRule
* https://github.com/anb0s/eclox/issues/175
*
******************************************************************************/
package eclox.core.doxygen;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import eclox.core.Plugin;
/**
* Defines some constant used with markers resulting from a build.
*
* @author gbrocker
*/
public class Marker {
private static final String SEVERITY_WARNING = "warning"; ///< Defines the warning severity string.
private static final String SEVERITY_ERROR = "error"; ///< Defines the warning severity string.
public static final String ECLOX_DOXYGEN_NAME = Plugin.getDefault().getBundle().getSymbolicName();
public static final String DOXYGEN_MARKER = ECLOX_DOXYGEN_NAME + ".doxygen.marker"; ///< Defines the doxygen marker type attribute name
public static final String SETTING = DOXYGEN_MARKER + ".setting"; ///< Defines the optional attribute name that hold the name of a setting
/**
* Creates a single marker for the given file.
*
* If @c file is null, no marker will be created.
*
* @param file a resource file to create a marker for
* @param line a line number
* @param message a message explaining the problem
* @param severity a severity level
*/
public static IMarker create( IFile file, int line, String message, int severity ) throws CoreException {
IMarker marker = null;
if( file != null && file.exists() ) {
marker = file.createMarker( Marker.DOXYGEN_MARKER );
marker.setAttribute( IMarker.MESSAGE, message );
marker.setAttribute( IMarker.LINE_NUMBER, line );
marker.setAttribute( IMarker.LOCATION, file.getProjectRelativePath().toPortableString() );
marker.setAttribute( IMarker.PRIORITY, IMarker.PRIORITY_NORMAL );
marker.setAttribute( IMarker.SEVERITY, severity );
}
return marker;
}
/**
* Creates a single marker for the given file.
*
* If @c file is null, no marker will be created.
*
* @param file a resource file to create a marker for
* @param setting a string containing the name of a setting
* @param line a line number
* @param message a message explaining the problem
* @param severity a severity level
*/
public static IMarker create( IFile file, String setting, int line, String message, int severity ) throws CoreException {
IMarker marker = create(file, line, message, severity);
if(marker != null && setting != null) {
marker.setAttribute(SETTING, setting);
}
return marker;
}
/**
* Retrieves the marker severity from the given text. The given
* text may be warning or error.
*
* @param severity a string to convert to a marker severity
*
* @return the marker severity value
*/
public static int toMarkerSeverity( String severity )
{
if( severity.compareToIgnoreCase(SEVERITY_ERROR) == 0 ) {
return IMarker.SEVERITY_ERROR;
}
else if( severity.compareToIgnoreCase(SEVERITY_WARNING) == 0 ) {
return IMarker.SEVERITY_WARNING;
}
else {
return IMarker.SEVERITY_ERROR;
}
}
}