package org.jboss.windup.rules.apps.javaee.model;
import com.tinkerpop.frames.modules.javahandler.JavaHandler;
import org.jboss.windup.graph.model.BelongsToProject;
import org.jboss.windup.graph.model.ProjectModel;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext;
import java.util.HashSet;
import java.util.Set;
/**
* @author <a href="mailto:dklingenberg@gmail.com">David Klingenberg</a>
*/
public interface HasApplications extends BelongsToProject
{
Iterable<ProjectModel> getApplications();
@Override
@JavaHandler
boolean belongsToProject(ProjectModel projectModel);
@Override
@JavaHandler
Iterable<ProjectModel> getRootProjectModels();
abstract class Impl implements HasApplications, JavaHandlerContext<Vertex>, BelongsToProject
{
@Override
public boolean belongsToProject(ProjectModel project)
{
ProjectModel canonicalProjectModel = this.getCanonicalProjectModel(project);
for (ProjectModel currentProject : this.getApplications())
{
if (currentProject.equals(canonicalProjectModel))
{
return true;
}
}
return false;
}
@Override
public Iterable<ProjectModel> getRootProjectModels()
{
Set<ProjectModel> projectModelSet = new HashSet<>();
for (ProjectModel currentProjectModel : this.getApplications())
{
ProjectModel rootProjectModel = currentProjectModel.getRootProjectModel();
projectModelSet.add(rootProjectModel);
}
return projectModelSet;
}
}
}