package org.erlide.builder.markers; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.name.Named; import javax.inject.Singleton; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.xtext.xbase.lib.Exceptions; import org.erlide.builder.CompilerProblem; import org.erlide.builder.markers.AddMarkerEvent; import org.erlide.builder.markers.RemoveMarkersEvent; import org.erlide.common.util.ErlLogger; @Singleton @SuppressWarnings("all") public class BuilderMarkerUpdater { private EventBus builderEventBus; @Inject private ErlLogger log; @Inject public BuilderMarkerUpdater(@Named("erlangBuilder") final EventBus builderEventBus) { this.builderEventBus = builderEventBus; builderEventBus.register(this); } public void addMarker(final IFile file, final String markerType, final CompilerProblem problem) { int ln = problem.getLine(); try { final IMarker marker = file.createMarker(markerType); String _message = problem.getMessage(); marker.setAttribute(IMarker.MESSAGE, _message); int _severity = problem.getSeverity(); marker.setAttribute(IMarker.SEVERITY, _severity); int _line = problem.getLine(); int _max = Math.max(_line, 1); ln = _max; marker.setAttribute(IMarker.LINE_NUMBER, ln); } catch (final Throwable _t) { if (_t instanceof CoreException) { final CoreException e = (CoreException)_t; String _message_1 = e.getMessage(); String _plus = ((("Could not add marker for " + file) + ": ") + _message_1); this.log.warn(_plus); } else { throw Exceptions.sneakyThrow(_t); } } } public void deleteMarkers(final IResource resource, final String markerType) { try { resource.deleteMarkers(markerType, false, IResource.DEPTH_INFINITE); } catch (final Throwable _t) { if (_t instanceof CoreException) { final CoreException e = (CoreException)_t; String _message = e.getMessage(); String _plus = ((("Could not delete markers for " + resource) + ": ") + _message); this.log.warn(_plus); } else { throw Exceptions.sneakyThrow(_t); } } } @Subscribe public void handleRemoveMarkers(final RemoveMarkersEvent event) { IResource _resource = event.getResource(); String _markerType = event.getMarkerType(); this.deleteMarkers(_resource, _markerType); } @Subscribe public void handleAddMarker(final AddMarkerEvent event) { IFile _file = event.getFile(); String _markerType = event.getMarkerType(); CompilerProblem _problem = event.getProblem(); this.addMarker(_file, _markerType, _problem); } }