| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.motorolamobility.preflighting.checkers.ui; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.core.resources.IMarker; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.ui.IMarkerResolution2; |
| import org.eclipse.ui.IMarkerResolutionGenerator2; |
| |
| import com.motorolamobility.preflighting.core.logging.PreflightingLogger; |
| |
| /** |
| * This class is responsible for checking which markers has quick fixes, and in the cases that a quick fix |
| * is available, it returns the class that implements the fix. |
| * */ |
| |
| public class QuickFixGenerator implements IMarkerResolutionGenerator2 |
| { |
| /** |
| * AppValidator quick fix identifier. |
| * */ |
| public static final String QUICK_FIX_ID = "QuickFix"; |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.IMarkerResolutionGenerator#getResolutions(org.eclipse.core.resources.IMarker) |
| */ |
| public IMarkerResolution2[] getResolutions(IMarker marker) |
| { |
| //list of possible resolutions for the given marker |
| List<IMarkerResolution2> resolutions = new ArrayList<IMarkerResolution2>(); |
| |
| try |
| { |
| //check the marker type to associate the proper marker resolution class(es). |
| if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.missingPermissionsMarker")) |
| { |
| resolutions.add(new MissingPermissionsQuickFix()); |
| } |
| else if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.unneededPermissionsMarker")) |
| { |
| resolutions.add(new UnneededPermissionsQuickFix()); |
| } |
| else if (marker |
| .getType() |
| .equals("com.motorolamobility.preflighting.checkers.ui.deviceCompatibilityUnsupportedFeaturesMarker")) |
| { |
| resolutions.add(new DeviceCompatibilityUnsupportedFeaturesQuickFix()); |
| } |
| else if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.googlePlayFiltersMissingMinSDK")) |
| { |
| resolutions.add(new MissingMinSdkQuickFix()); |
| } |
| else if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.googlePlayFiltersUneededMaxSDK")) |
| { |
| resolutions.add(new UneededMaxSdkQuickFix()); |
| } |
| } |
| catch (CoreException e) |
| { |
| PreflightingLogger.info(QuickFixGenerator.class, |
| "Problem retrieving marker resolutions: " + e.getMessage()); |
| } |
| |
| return resolutions.toArray(new IMarkerResolution2[resolutions.size()]); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.IMarkerResolutionGenerator2#hasResolutions(org.eclipse.core.resources.IMarker) |
| */ |
| public boolean hasResolutions(IMarker marker) |
| { |
| try |
| { |
| //check if the marker type has at least one resolution available. |
| if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.missingPermissionsMarker")) |
| { |
| return true; |
| } |
| else if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.unneededPermissionsMarker")) |
| { |
| return true; |
| } |
| else if (marker |
| .getType() |
| .equals("com.motorolamobility.preflighting.checkers.ui.deviceCompatibilityUnsupportedFeaturesMarker")) |
| { |
| return true; |
| } |
| else if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.googlePlayFiltersMissingMinSDK")) |
| { |
| return true; |
| } |
| else if (marker.getType().equals( |
| "com.motorolamobility.preflighting.checkers.ui.googlePlayFiltersUneededMaxSDK")) |
| { |
| return true; |
| } |
| } |
| catch (CoreException e) |
| { |
| PreflightingLogger.info(QuickFixGenerator.class, |
| "Problem checking if marker has resolutions: " + e.getMessage()); |
| } |
| |
| //no resolution found for this marker |
| return false; |
| } |
| |
| } |