/******************************************************************************* * Copyright (c) 2007, 2013 Alphonse Van Assche and others. * 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: * Alphonse Van Assche - initial API and implementation * Red Hat Inc. - ongoing maintenance *******************************************************************************/ package org.eclipse.linuxtools.internal.rpm.rpmlint.resolutions; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IMarker; import org.eclipse.ui.IMarkerResolution; import org.eclipse.ui.IMarkerResolutionGenerator2; /** * Generator for the rpmlint marker resolutions. * */ public class RpmlintMarkerResolutionGenerator implements IMarkerResolutionGenerator2 { /** * Rpmlint error id atribute name. */ public static final String RPMLINT_ERROR_ID = "rpmlintErrorId"; //$NON-NLS-1$ /** * Rpmlint refered text */ public static final String RPMLINT_REFFERED_CONTENT = "rpmlintrefferedContent"; //$NON-NLS-1$ @Override public boolean hasResolutions(IMarker marker) { String rpmlintErrorId = getRpmlintErrorId(marker); if (rpmlintErrorId.equals(SetupNotQuiet.ID)) { return true; } else if (rpmlintErrorId.equals(PatchNotApplied.ID)) { return true; } else if (rpmlintErrorId.equals(NoBuildSection.ID)){ return true; } else if (rpmlintErrorId.equals(MacroInChangelog.ID)){ return true; } else if (rpmlintErrorId.equals(RpmBuildrootUsage.ID)){ return true; } else if (rpmlintErrorId.equals(HardcodedPrefixTag.ID)){ return true; } else if (rpmlintErrorId.equals(HardcodedPackagerTag.ID)){ return true; } else if (rpmlintErrorId.equals(NoPrepSection.ID)){ return true; } else if (rpmlintErrorId.equals(NoInstallSection.ID)){ return true; } return false; } @Override public IMarkerResolution[] getResolutions(IMarker marker) { List<IMarkerResolution> resolutions = new ArrayList<>(); String rpmlintErrorId = getRpmlintErrorId(marker); if (rpmlintErrorId.equals(SetupNotQuiet.ID)) { resolutions.add(new SetupNotQuiet()); } else if (rpmlintErrorId.equals(PatchNotApplied.ID)) { resolutions.add(new PatchNotApplied()); } else if (rpmlintErrorId.equals(NoBuildSection.ID)){ resolutions.add(new NoBuildSection()); } else if (rpmlintErrorId.equals(MacroInChangelog.ID)){ resolutions.add(new MacroInChangelog()); } else if (rpmlintErrorId.equals(RpmBuildrootUsage.ID)){ resolutions.add(new RpmBuildrootUsage()); } else if (rpmlintErrorId.equals(HardcodedPrefixTag.ID)){ resolutions.add(new HardcodedPrefixTag()); } else if (rpmlintErrorId.equals(HardcodedPackagerTag.ID)){ resolutions.add(new HardcodedPackagerTag()); } else if (rpmlintErrorId.equals(NoPrepSection.ID)){ resolutions.add(new NoPrepSection()); } else if (rpmlintErrorId.equals(NoInstallSection.ID)){ resolutions.add(new NoInstallSection()); } return resolutions.toArray(new IMarkerResolution[resolutions.size()]); } /** * Return the rpmlint error id attribute for the specified marker. * * @param marker The marker to check. * @return The rpmlint error id or <code>""</code> if none. */ private static String getRpmlintErrorId(IMarker marker) { return marker.getAttribute(RPMLINT_ERROR_ID, ""); //$NON-NLS-1$ } }