package org.jboss.windup.reporting.model; import org.jboss.windup.graph.Indexed; 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.Property; import com.tinkerpop.frames.modules.typedgraph.TypeValue; /** * Represents a technology that is used or implemented by a particular file. For example, this might indicate that a file uses "EJB" or that the file * is a Hibernate Configuration File. * * * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> */ @TypeValue(TechnologyTagModel.TYPE) public interface TechnologyTagModel extends WindupVertexFrame { String TYPE = "TechnologyTag"; String TECH_TAG_TO_FILE_MODEL = "techTagToFileModel"; String NAME = "name"; String VERSION = "version"; String LEVEL = "level"; /** * This should be a short tag representing the technology (eg, EJB) */ @Property(NAME) String getName(); /** * This should be a short tag representing the technology (eg, EJB) */ @Indexed @Property(NAME) void setName(String tag); /** * This should be a short tag representing the technology version (eg, 3.1) */ @Property(VERSION) String getVersion(); /** * This should be a short tag representing the technology version (eg, 3.1) */ @Property(VERSION) void setVersion(String tag); /** * Contains information about the relative importance of this tag. */ @Property(LEVEL) TechnologyTagLevel getLevel(); /** * Contains information about the relative importance of this tag. */ @Property(LEVEL) void setLevel(TechnologyTagLevel level); /** * References the {@link FileModel}s that use this technology. */ @Adjacency(label = TECH_TAG_TO_FILE_MODEL, direction = Direction.OUT) void addFileModel(FileModel fileModel); /** * References the {@link FileModel}s that use this technology. */ @Adjacency(label = TECH_TAG_TO_FILE_MODEL, direction = Direction.OUT) void removeFileModel(FileModel fileModel); /** * References the {@link FileModel}s that use this technology. */ @Adjacency(label = TECH_TAG_TO_FILE_MODEL, direction = Direction.OUT) Iterable<FileModel> getFileModels(); }