package org.jboss.windup.reporting.model;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.Adjacency;
import com.tinkerpop.frames.Property;
import com.tinkerpop.frames.modules.javahandler.JavaHandler;
import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
import org.jboss.windup.graph.Indexed;
import org.jboss.windup.graph.model.ToFileModelTransformable;
import org.jboss.windup.graph.model.resource.FileModel;
import org.jboss.windup.reporting.model.association.LinkableModel;
import org.ocpsoft.rewrite.config.Rule;
/**
* This classifies files and provides general background information about a specific {@link FileModel}. (For instance,
* an XML file may be classified as a "XYZ Configuration File".) A {@link ClassificationModel} may also contain links to
* additional information, or auto-translated/generated/updated versions of the source file.
*/
@TypeValue(ClassificationModel.TYPE)
public interface ClassificationModel extends EffortReportModel, LinkableModel, ToFileModelTransformable, TaggableModel
{
String TYPE = "ClassificationModel";
String TYPE_PREFIX = TYPE + ":";
String RULE_ID = TYPE_PREFIX + "ruleID";
String CLASSIFICATION = TYPE_PREFIX + "classification";
String DESCRIPTION = TYPE_PREFIX + "description";
String FILE_MODEL = TYPE_PREFIX + "classificationModelToFileModel";
String QUICKFIXES = TYPE_PREFIX + "quickfixes";
/**
* Add a {@link FileModel} associated with this {@link ClassificationModel}.
*/
@Adjacency(label = FILE_MODEL, direction = Direction.OUT)
void addFileModel(FileModel fileModel);
/**
* Get the {@link FileModel} associated with this {@link ClassificationModel}.
*/
@Adjacency(label = FILE_MODEL, direction = Direction.OUT)
Iterable<FileModel> getFileModels();
/**
* Set text of this {@link ClassificationModel}.
*/
@Indexed
@Property(CLASSIFICATION)
void setClassification(String classification);
/**
* Get text of this {@link ClassificationModel}.
*/
@Property(CLASSIFICATION)
String getClassification();
/**
* Set the description text of this {@link ClassificationModel}.
*/
@Property(DESCRIPTION)
void setDescription(String description);
/**
* Get the description text of this {@link ClassificationModel}.
*/
@Property(DESCRIPTION)
String getDescription();
/**
* Set ID of the {@link Rule} that added this {@link ClassificationModel}.
*/
@Property(RULE_ID)
void setRuleID(String ruleID);
/**
* Get ID of the {@link Rule} that added this {@link ClassificationModel}.
*/
@Property(RULE_ID)
String getRuleID();
@Adjacency(label = QUICKFIXES, direction = Direction.OUT)
void addQuickfix(QuickfixModel quickfixModel);
@Adjacency(label = QUICKFIXES, direction = Direction.OUT)
Iterable<QuickfixModel> getQuickfixes();
@JavaHandler
@Override
Iterable<FileModel> transformToFileModel();
abstract class Impl implements ClassificationModel, JavaHandlerContext<Vertex>
{
@Override
public Iterable<FileModel> transformToFileModel() {
return this.getFileModels();
}
}
}