@Override protected ICleanUpFix createFix(CompilationUnit unit) throws CoreException { IProblemLocation[] problemLocations= convertProblems(unit.getProblems()); problemLocations= filter(problemLocations, new int[] { IProblem.AbstractMethodMustBeImplemented, IProblem.EnumConstantMustImplementAbstractMethod }); return UnimplementedCodeFix.createCleanUp(unit, isEnabled(CleanUpConstants.ADD_MISSING_METHODES), isEnabled(MAKE_TYPE_ABSTRACT), problemLocations); }
@Override public String getPreview() { StringBuilder buf= new StringBuilder(); if (isEnabled(MAKE_TYPE_ABSTRACT)) { buf.append("public abstract class Face implements IFace {\n"); //$NON-NLS-1$ } else { buf.append("public class Face implements IFace {\n"); //$NON-NLS-1$ } if (isEnabled(CleanUpConstants.ADD_MISSING_METHODES)) { boolean createComments= Boolean.valueOf(PreferenceConstants.getPreference(PreferenceConstants.CODEGEN_ADD_COMMENTS, null)).booleanValue(); if (createComments) buf.append(indent(getOverridingMethodComment(), " ")); //$NON-NLS-1$ buf.append(" @Override\n"); //$NON-NLS-1$ buf.append(" public void method() {\n"); //$NON-NLS-1$ buf.append(indent(getMethodBody(), " ")); //$NON-NLS-1$ buf.append(" }\n"); //$NON-NLS-1$ } buf.append("}\n"); //$NON-NLS-1$ return buf.toString(); }
@Override protected ICleanUpFix createFix(CompilationUnit unit, IProblemLocation[] problems) throws CoreException { IProblemLocation[] problemLocations= filter(problems, new int[] { IProblem.AbstractMethodMustBeImplemented, IProblem.EnumConstantMustImplementAbstractMethod }); return UnimplementedCodeFix.createCleanUp(unit, isEnabled(CleanUpConstants.ADD_MISSING_METHODES), isEnabled(MAKE_TYPE_ABSTRACT), problemLocations); }
private String getMethodBody() { String templateName= CodeTemplateContextType.METHODSTUB_ID; Template template= getCodeTemplate(templateName); if (template == null) return ""; //$NON-NLS-1$ CodeTemplateContext context= new CodeTemplateContext(template.getContextTypeId(), null, "\n"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_METHOD, "method"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_TYPE, "Face"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.BODY_STATEMENT, ""); //$NON-NLS-1$ return evaluateTemplate(template, context); }
@Override public String[] getStepDescriptions() { if (isEnabled(CleanUpConstants.ADD_MISSING_METHODES)) return new String[] { MultiFixMessages.UnimplementedCodeCleanUp_AddUnimplementedMethods_description }; if (isEnabled(MAKE_TYPE_ABSTRACT)) return new String[] { MultiFixMessages.UnimplementedCodeCleanUp_MakeAbstract_description }; return null; }
@Override protected AbstractCleanUp[] createPreviewCleanUps(Map<String, String> values) { return new AbstractCleanUp[] { new Java50CleanUp(values), new PotentialProgrammingProblemsCleanUp(values), new UnimplementedCodeCleanUp(values) }; }
private String getMethodBody() { String templateName= CodeTemplateContextType.METHODSTUB_ID; Template template= getCodeTemplate(templateName); if (template == null) return ""; //$NON-NLS-1$ CodeTemplateContext context= new CodeTemplateContext(template.getContextTypeId(), null, "\n"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_METHOD, "method"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_TYPE, "Face"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.BODY_STATEMENT, ""); //$NON-NLS-1$ return evaluateTemplate(template, context); }
@Override protected ICleanUpFix createFix(CompilationUnit unit, IProblemLocation[] problems) throws CoreException { IProblemLocation[] problemLocations= filter(problems, new int[] { IProblem.AbstractMethodMustBeImplemented, IProblem.EnumConstantMustImplementAbstractMethod }); return UnimplementedCodeFix.createCleanUp(unit, isEnabled(CleanUpConstants.ADD_MISSING_METHODES), isEnabled(MAKE_TYPE_ABSTRACT), problemLocations); }
@Override public String[] getStepDescriptions() { if (isEnabled(CleanUpConstants.ADD_MISSING_METHODES)) return new String[] { MultiFixMessages.UnimplementedCodeCleanUp_AddUnimplementedMethods_description }; if (isEnabled(MAKE_TYPE_ABSTRACT)) return new String[] { MultiFixMessages.UnimplementedCodeCleanUp_MakeAbstract_description }; return null; }
@Override protected AbstractCleanUp[] createPreviewCleanUps(Map<String, String> values) { return new AbstractCleanUp[] { new Java50CleanUp(values), new PotentialProgrammingProblemsCleanUp(values), new UnimplementedCodeCleanUp(values) }; }
@Override protected ICleanUpFix createFix(CompilationUnit unit) throws CoreException { IProblemLocation[] problemLocations= convertProblems(unit.getProblems()); problemLocations= filter(problemLocations, new int[] { IProblem.AbstractMethodMustBeImplemented, IProblem.EnumConstantMustImplementAbstractMethod }); return UnimplementedCodeFix.createCleanUp(unit, isEnabled(CleanUpConstants.ADD_MISSING_METHODES), isEnabled(MAKE_TYPE_ABSTRACT), problemLocations); }
@Override public String getPreview() { StringBuffer buf= new StringBuffer(); if (isEnabled(MAKE_TYPE_ABSTRACT)) { buf.append("public abstract class Face implements IFace {\n"); //$NON-NLS-1$ } else { buf.append("public class Face implements IFace {\n"); //$NON-NLS-1$ } if (isEnabled(CleanUpConstants.ADD_MISSING_METHODES)) { boolean createComments= Boolean.valueOf(PreferenceConstants.getPreference(PreferenceConstants.CODEGEN_ADD_COMMENTS, null)).booleanValue(); if (createComments) buf.append(indent(getOverridingMethodComment(), " ")); //$NON-NLS-1$ buf.append(" @Override\n"); //$NON-NLS-1$ buf.append(" public void method() {\n"); //$NON-NLS-1$ buf.append(indent(getMethodBody(), " ")); //$NON-NLS-1$ buf.append(" }\n"); //$NON-NLS-1$ } buf.append("}\n"); //$NON-NLS-1$ return buf.toString(); }
private String getOverridingMethodComment() { String templateName= CodeTemplateContextType.OVERRIDECOMMENT_ID; Template template= getCodeTemplate(templateName); if (template == null) return ""; //$NON-NLS-1$ CodeTemplateContext context= new CodeTemplateContext(template.getContextTypeId(), null, "\n"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.FILENAME, "Face.java"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.PACKAGENAME, "test"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.PROJECTNAME, "TestProject"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_TYPE, "Face"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_METHOD, "method"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.RETURN_TYPE, "void"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.SEE_TO_OVERRIDDEN_TAG, "test.IFace#foo()"); //$NON-NLS-1$ return evaluateTemplate(template, context); }
@Override public boolean canFix(ICompilationUnit compilationUnit, IProblemLocation problem) { int id= problem.getProblemId(); if (id == IProblem.AbstractMethodMustBeImplemented || id == IProblem.EnumConstantMustImplementAbstractMethod) return isEnabled(CleanUpConstants.ADD_MISSING_METHODES) || isEnabled(MAKE_TYPE_ABSTRACT); return false; }
public static void addUnimplementedMethodsProposals(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals) { IProposableFix addMethodFix= UnimplementedCodeFix.createAddUnimplementedMethodsFix(context.getASTRoot(), problem); if (addMethodFix != null) { Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE); Map<String, String> settings= new Hashtable<>(); settings.put(CleanUpConstants.ADD_MISSING_METHODES, CleanUpOptions.TRUE); ICleanUp cleanUp= new UnimplementedCodeCleanUp(settings); proposals.add(new FixCorrectionProposal(addMethodFix, cleanUp, IProposalRelevance.ADD_UNIMPLEMENTED_METHODS, image, context)); } IProposableFix makeAbstractFix= UnimplementedCodeFix.createMakeTypeAbstractFix(context.getASTRoot(), problem); if (makeAbstractFix != null) { Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE); Map<String, String> settings= new Hashtable<>(); settings.put(UnimplementedCodeCleanUp.MAKE_TYPE_ABSTRACT, CleanUpOptions.TRUE); ICleanUp cleanUp= new UnimplementedCodeCleanUp(settings); proposals.add(new FixCorrectionProposal(makeAbstractFix, cleanUp, IProposalRelevance.MAKE_TYPE_ABSTRACT, image, context)); } }
@Override public int computeNumberOfFixes(CompilationUnit compilationUnit) { if (!isEnabled(CleanUpConstants.ADD_MISSING_METHODES) && !isEnabled(MAKE_TYPE_ABSTRACT)) return 0; IProblemLocation[] locations= filter(convertProblems(compilationUnit.getProblems()), new int[] { IProblem.AbstractMethodMustBeImplemented, IProblem.EnumConstantMustImplementAbstractMethod }); HashSet<ASTNode> types= new HashSet<>(); for (int i= 0; i < locations.length; i++) { ASTNode type= UnimplementedCodeFix.getSelectedTypeNode(compilationUnit, locations[i]); if (type != null) { types.add(type); } } return types.size(); }
private String getOverridingMethodComment() { String templateName= CodeTemplateContextType.OVERRIDECOMMENT_ID; Template template= getCodeTemplate(templateName); if (template == null) return ""; //$NON-NLS-1$ CodeTemplateContext context= new CodeTemplateContext(template.getContextTypeId(), null, "\n"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.FILENAME, "Face.java"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.PACKAGENAME, "test"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.PROJECTNAME, "TestProject"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_TYPE, "Face"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.ENCLOSING_METHOD, "method"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.RETURN_TYPE, "void"); //$NON-NLS-1$ context.setVariable(CodeTemplateContextType.SEE_TO_OVERRIDDEN_TAG, "test.IFace#foo()"); //$NON-NLS-1$ return evaluateTemplate(template, context); }
@Override public boolean canFix(ICompilationUnit compilationUnit, IProblemLocation problem) { int id= problem.getProblemId(); if (id == IProblem.AbstractMethodMustBeImplemented || id == IProblem.EnumConstantMustImplementAbstractMethod) return isEnabled(CleanUpConstants.ADD_MISSING_METHODES) || isEnabled(MAKE_TYPE_ABSTRACT); return false; }
public static void addUnimplementedMethodsProposals(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals) { IProposableFix addMethodFix= UnimplementedCodeFix.createAddUnimplementedMethodsFix(context.getASTRoot(), problem); if (addMethodFix != null) { Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE); Map<String, String> settings= new Hashtable<>(); settings.put(CleanUpConstants.ADD_MISSING_METHODES, CleanUpOptions.TRUE); ICleanUp cleanUp= new UnimplementedCodeCleanUp(settings); proposals.add(new FixCorrectionProposal(addMethodFix, cleanUp, IProposalRelevance.ADD_UNIMPLEMENTED_METHODS, image, context)); } IProposableFix makeAbstractFix= UnimplementedCodeFix.createMakeTypeAbstractFix(context.getASTRoot(), problem); if (makeAbstractFix != null) { Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE); Map<String, String> settings= new Hashtable<>(); settings.put(UnimplementedCodeCleanUp.MAKE_TYPE_ABSTRACT, CleanUpOptions.TRUE); ICleanUp cleanUp= new UnimplementedCodeCleanUp(settings); proposals.add(new FixCorrectionProposal(makeAbstractFix, cleanUp, IProposalRelevance.MAKE_TYPE_ABSTRACT, image, context)); } }
@Override public int computeNumberOfFixes(CompilationUnit compilationUnit) { if (!isEnabled(CleanUpConstants.ADD_MISSING_METHODES) && !isEnabled(MAKE_TYPE_ABSTRACT)) return 0; IProblemLocation[] locations= filter(convertProblems(compilationUnit.getProblems()), new int[] { IProblem.AbstractMethodMustBeImplemented, IProblem.EnumConstantMustImplementAbstractMethod }); HashSet<ASTNode> types= new HashSet<>(); for (int i= 0; i < locations.length; i++) { ASTNode type= UnimplementedCodeFix.getSelectedTypeNode(compilationUnit, locations[i]); if (type != null) { types.add(type); } } return types.size(); }