package org.jboss.windup.reporting.model;
import org.jboss.windup.graph.model.FileReferenceModel;
import org.jboss.windup.graph.model.WindupVertexFrame;
import org.jboss.windup.graph.model.resource.FileModel;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.frames.Adjacency;
import com.tinkerpop.frames.annotations.gremlin.GremlinGroovy;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
/**
* Extends the file model with some convenience accessors for getting to {@link InlineHintModel} and other reporting related data.
*/
@TypeValue(ReportFileModel.TYPE)
public interface ReportFileModel extends FileModel
{
String TYPE = "ReportFileModel";
String RELATED_HINTS_QUERY = "it.in(\"" + FileReferenceModel.FILE_MODEL
+ "\").has(\"" + WindupVertexFrame.TYPE_PROP
+ "\", com.thinkaurelius.titan.core.attribute.Text.CONTAINS, \"" + InlineHintModel.TYPE + "\")";
String RELATED_CLASSIFICATIONS_QUERY = "it.in(\"" + ClassificationModel.FILE_MODEL + "\")";
/**
* Get the number of {@link InlineHintModel} instances attached to this {@link ReportFileModel}
*/
@GremlinGroovy(frame = false, value = RELATED_HINTS_QUERY + ".count()")
long getInlineHintCount();
/**
* Get all {@link InlineHintModel} instances attached to this {@link ReportFileModel}
*/
@GremlinGroovy(frame = true, value = RELATED_HINTS_QUERY)
Iterable<InlineHintModel> getInlineHints();
/**
* Get all {@link ClassificationModel} instances attached to this {@link ReportFileModel}
*/
@Adjacency(label = ClassificationModel.FILE_MODEL, direction = Direction.IN)
Iterable<ClassificationModel> getClassificationModels();
/**
* Get the number of {@link ClassificationModel} instances attached to this {@link ReportFileModel}
*/
@GremlinGroovy(frame = false, value = RELATED_CLASSIFICATIONS_QUERY + ".count()")
long getClassificationCount();
}