package org.jboss.windup.tooling.data;
import java.io.File;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import org.jboss.windup.reporting.model.InlineHintModel;
/**
* This is equivalent to a {@link InlineHintModel}, however it contains no dependencies on having an open instance of the graph in order to operate.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*/
public class HintImpl implements Hint
{
private static final long serialVersionUID = 1L;
private final Object id;
private File file;
private String title;
private String hint;
private IssueCategory issueCategory;
private int effort;
private List<Link> links;
private int lineNumber;
private int column;
private int length;
private String sourceSnippit;
private String ruleID;
private List<Quickfix> quickfixes;
/**
* Constructs a {@link Hint} with the given id.
*/
public HintImpl(Object id)
{
this.id = id;
}
/**
* Contains the unique identifier for this {@link Hint}.
*/
@Override
public Object getID()
{
return id;
}
/**
* This references the {@link File} referenced by this {@link Hint}.
*/
@Override
public File getFile()
{
return file;
}
/**
* This references the {@link File} referenced by this {@link Hint}.
*/
public void setFile(File file)
{
this.file = file;
}
/**
* Contains a title for this hint. This should describe the problem itself (for example, "Usage of proprietary class: Foo")
*/
@Override
public String getTitle()
{
return title;
}
/**
* Contains a title for this hint. This should describe the problem itself (for example, "Usage of proprietary class: Foo")
*/
public void setTitle(String title)
{
this.title = title;
}
/**
* This contains descriptive text describing the problem and how the problem can be solved.
*/
@Override
public String getHint()
{
return hint;
}
/**
* This contains descriptive text describing the problem and how the problem can be solved.
*/
public void setHint(String hint)
{
this.hint = hint;
}
/**
* This is a hint as to the severity of the problem. This may be used for supplying an icon or glyph in the report to the user.
*/
@Override
@XmlElement(name = "issue-category", type = IssueCategoryImpl.class)
public IssueCategory getIssueCategory()
{
return this.issueCategory;
}
/**
* This is a hint as to the severity of the problem. This may be used for supplying an icon or glyph in the report to the user.
*/
public void setIssueCategory(IssueCategory issueCategory)
{
this.issueCategory = issueCategory;
}
/**
* This contains the effort level as an integer (Story Points). This is based on the Scrum "modified-Fibonacci" system of effort estimation.
*/
@Override
public int getEffort()
{
return effort;
}
/**
* This contains the effort level as an integer (Story Points). This is based on the Scrum "modified-Fibonacci" system of effort estimation.
*/
public void setEffort(int effort)
{
this.effort = effort;
}
/**
* This contains a list of {@link Link}s for further information about the problem and its solution.
*/
@Override
@XmlElementWrapper(name = "links")
@XmlElement(name = "link", type = LinkImpl.class)
public List<Link> getLinks()
{
return links;
}
/**
* This contains a list of {@link Link}s for further information about the problem and its solution.
*/
public void setLinks(List<Link> links)
{
this.links = links;
}
/**
* This contains the line number of the problem.
*/
@Override
@XmlElement(name = "line-number")
public int getLineNumber()
{
return lineNumber;
}
/**
* This contains the line number of the problem.
*/
public void setLineNumber(int lineNumber)
{
this.lineNumber = lineNumber;
}
/**
* This contains the column number within that line.
*/
@Override
public int getColumn()
{
return column;
}
/**
* This contains the column number within that line.
*/
public void setColumn(int column)
{
this.column = column;
}
/**
* This contains the length of the code section being referenced. For example, if the original code was "f.a()", this would be be "5".
*/
@Override
public int getLength()
{
return length;
}
/**
* This contains the length of the code section being referenced. For example, if the original code was "f.a()", this would be be "5".
*/
public void setLength(int length)
{
this.length = length;
}
/**
* This contains the original source code itself (for example, "proprietaryobject.doStuff()").
*/
@Override
@XmlElement(name = "source-snippit")
public String getSourceSnippit()
{
return sourceSnippit;
}
/**
* This contains the original source code itself (for example, "proprietaryobject.doStuff()").
*/
public void setSourceSnippit(String sourceSnippit)
{
this.sourceSnippit = sourceSnippit;
}
/**
* This contains the id of the rule that produced this {@link Hint}.
*/
@Override
@XmlElement(name = "rule-id")
public String getRuleID()
{
return ruleID;
}
/**
* This contains the id of the rule that produced this {@link Hint}.
*/
public void setRuleID(String ruleID)
{
this.ruleID = ruleID;
}
@Override
@XmlElementWrapper(name = "quickfixes")
@XmlElement(name = "quickfix", type = QuickfixImpl.class)
public List<Quickfix> getQuickfixes()
{
return quickfixes;
}
/**
* @param quickfixes the quickfixes to set
*/
public void setQuickfixes(List<Quickfix> quickfixes)
{
this.quickfixes = quickfixes;
}
}