| /******************************************************************************* |
| * Copyright (c) 2018 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| * Red Hat Inc. - copied and modified in jdt.core.manipulation |
| *******************************************************************************/ |
| package org.eclipse.jdt.internal.ui.text.correction; |
| |
| import org.eclipse.jdt.core.IJavaModelMarker; |
| import org.eclipse.jdt.core.compiler.CategorizedProblem; |
| import org.eclipse.jdt.core.compiler.IProblem; |
| import org.eclipse.jdt.core.dom.ASTNode; |
| import org.eclipse.jdt.core.dom.CompilationUnit; |
| import org.eclipse.jdt.core.dom.NodeFinder; |
| |
| /** |
| * |
| */ |
| public class ProblemLocationCore implements IProblemLocationCore { |
| |
| private final int fId; |
| private final String[] fArguments; |
| private final int fOffset; |
| private final int fLength; |
| private final boolean fIsError; |
| private final String fMarkerType; |
| |
| public ProblemLocationCore(int offset, int length, int id, String[] arguments, boolean isError, String markerType) { |
| fId= id; |
| fArguments= arguments; |
| fOffset= offset; |
| fLength= length; |
| fIsError= isError; |
| fMarkerType= markerType; |
| } |
| |
| public ProblemLocationCore(IProblem problem) { |
| fId= problem.getID(); |
| fArguments= problem.getArguments(); |
| fOffset= problem.getSourceStart(); |
| fLength= problem.getSourceEnd() - fOffset + 1; |
| fIsError= problem.isError(); |
| fMarkerType= problem instanceof CategorizedProblem ? ((CategorizedProblem) problem).getMarkerType() : IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER; |
| } |
| |
| |
| @Override |
| public int getProblemId() { |
| return fId; |
| } |
| |
| @Override |
| public String[] getProblemArguments() { |
| return fArguments; |
| } |
| |
| @Override |
| public int getLength() { |
| return fLength; |
| } |
| |
| @Override |
| public int getOffset() { |
| return fOffset; |
| } |
| |
| @Override |
| public boolean isError() { |
| return fIsError; |
| } |
| |
| @Override |
| public String getMarkerType() { |
| return fMarkerType; |
| } |
| |
| @Override |
| public ASTNode getCoveringNode(CompilationUnit astRoot) { |
| NodeFinder finder= new NodeFinder(astRoot, fOffset, fLength); |
| return finder.getCoveringNode(); |
| } |
| |
| @Override |
| public ASTNode getCoveredNode(CompilationUnit astRoot) { |
| NodeFinder finder= new NodeFinder(astRoot, fOffset, fLength); |
| return finder.getCoveredNode(); |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder buf= new StringBuilder(); |
| buf.append("Id: ").append(getErrorCode(fId)).append('\n'); //$NON-NLS-1$ |
| buf.append('[').append(fOffset).append(", ").append(fLength).append(']').append('\n'); //$NON-NLS-1$ |
| String[] arg= fArguments; |
| for (int i= 0; i < arg.length; i++) { |
| buf.append(arg[i]); |
| buf.append('\n'); |
| } |
| return buf.toString(); |
| } |
| |
| private String getErrorCode(int code) { |
| StringBuilder buf= new StringBuilder(); |
| |
| if ((code & IProblem.TypeRelated) != 0) { |
| buf.append("TypeRelated + "); //$NON-NLS-1$ |
| } |
| if ((code & IProblem.FieldRelated) != 0) { |
| buf.append("FieldRelated + "); //$NON-NLS-1$ |
| } |
| if ((code & IProblem.ConstructorRelated) != 0) { |
| buf.append("ConstructorRelated + "); //$NON-NLS-1$ |
| } |
| if ((code & IProblem.MethodRelated) != 0) { |
| buf.append("MethodRelated + "); //$NON-NLS-1$ |
| } |
| if ((code & IProblem.ImportRelated) != 0) { |
| buf.append("ImportRelated + "); //$NON-NLS-1$ |
| } |
| if ((code & IProblem.Internal) != 0) { |
| buf.append("Internal + "); //$NON-NLS-1$ |
| } |
| if ((code & IProblem.Syntax) != 0) { |
| buf.append("Syntax + "); //$NON-NLS-1$ |
| } |
| if ((code & IProblem.Javadoc) != 0) { |
| buf.append("Javadoc + "); //$NON-NLS-1$ |
| } |
| buf.append(code & IProblem.IgnoreCategoriesMask); |
| |
| return buf.toString(); |
| } |
| |
| |
| } |