package org.jboss.windup.reporting.model; import org.jboss.windup.graph.model.FileLocationModel; import org.jboss.windup.graph.model.LinkModel; import org.jboss.windup.graph.model.resource.FileModel; import org.jboss.windup.reporting.config.Link; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.frames.Adjacency; import com.tinkerpop.frames.Property; import com.tinkerpop.frames.modules.typedgraph.TypeValue; /** * This is used to classify lines within application source {@link FileModel} instances, and to provide hints and related data regarding specific * positions within those files. */ @TypeValue(InlineHintModel.TYPE) public interface InlineHintModel extends EffortReportModel, FileLocationModel, TaggableModel { String TYPE = "Hint"; String TYPE_PREFIX = TYPE + ":"; String TITLE = TYPE_PREFIX + "title"; String HINT = TYPE_PREFIX + "hint"; String RULE_ID = TYPE_PREFIX + "ruleID"; String LINKS = TYPE_PREFIX + "links"; String FILE_LOCATION_REFERENCE = TYPE_PREFIX + "fileLocationReference"; String QUICKFIXES = TYPE_PREFIX + "quickfixes"; /** * A short descriptive text describing the problem covered by this hint */ @Property(TITLE) void setTitle(String title); /** * A short descriptive text describing the problem covered by this hint */ @Property(TITLE) String getTitle(); /** * Set the text to be displayed within this {@link InlineHintModel} in the designated {@link FileModel}. */ @Property(HINT) void setHint(String hint); /** * Get the text to be displayed within this {@link InlineHintModel} in the designated {@link FileModel}. */ @Property(HINT) String getHint(); /** * Sets the original {@link FileLocationModel} associated with this {@link InlineHintModel} */ @Adjacency(label = FILE_LOCATION_REFERENCE, direction = Direction.OUT) void setFileLocationReference(FileLocationModel m); /** * Gets the original{@link FileLocationModel} associated with this {@link InlineHintModel} */ @Adjacency(label = FILE_LOCATION_REFERENCE, direction = Direction.OUT) FileLocationModel getFileLocationReference(); /** * Add a related {@link Link} to this {@link InlineHintModel} */ @Adjacency(label = LINKS, direction = Direction.OUT) void addLink(LinkModel linkDecorator); /** * Get the related {@link Link} instances associated with this {@link InlineHintModel} */ @Adjacency(label = LINKS, direction = Direction.OUT) Iterable<LinkModel> getLinks(); @Adjacency(label = QUICKFIXES, direction = Direction.OUT) void addQuickfix(QuickfixModel quickfixModel); @Adjacency(label = QUICKFIXES, direction = Direction.OUT) Iterable<QuickfixModel> getQuickfixes(); /** * Set the ID of the rule that triggered this particular blacklist entry */ @Property(RULE_ID) void setRuleID(String ruleID); /** * Get the ID of the rule that triggered this particular blacklist entry */ @Property(RULE_ID) String getRuleID(); }