package org.jboss.windup.rules.apps.mavenize;
import java.util.LinkedHashSet;
import java.util.Set;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.OrderedMap;
import org.apache.commons.collections4.map.LinkedMap;
/**
* A simplified POM model - just G:A:V:C:P and the dependencies.
*
* @author Ondrej Zizka, zizka at seznam.cz
*/
public class Pom implements Dependency
{
MavenCoord coord = new MavenCoord();
Pom parent;
MavenCoord bom;
String name;
String description;
Set<Dependency> dependencies = new LinkedHashSet<>();
Set<Pom> localDependencies = new LinkedHashSet<>();
OrderedMap<String, Pom> submodules = new LinkedMap<>();
boolean root = false;
ModuleRole role = ModuleRole.NORMAL;
Pom(MavenCoord coord)
{
this.coord = coord;
}
/**
* Contains the parent.
*/
public Pom getParent()
{
return parent;
}
/**
* Contains the parent.
*/
public Pom setParent(Pom parent)
{
this.parent = parent;
return this;
}
/**
* Contains the name.
*/
public String getName()
{
return name;
}
/**
* Contains the name.
*/
public Pom setName(String name)
{
this.name = name;
return this;
}
/**
* Contains the description.
*/
public String getDescription()
{
return description;
}
/**
* Contains the description.
*/
public Pom setDescription(String description)
{
this.description = description;
return this;
}
/**
* Third-party library dependencies.
*/
public Set<Dependency> getDependencies()
{
return dependencies;
}
/**
* Third-party library dependencies.
*/
public Pom setDependencies(Set<Dependency> dependencies)
{
this.dependencies = dependencies;
return this;
}
/**
* Dependencies on other modules of the project.
*/
public Set<Pom> getLocalDependencies()
{
return localDependencies;
}
/**
* Dependencies on other modules of the project.
*/
public Pom setLocalDependencies(Set<Pom> localDependencies)
{
this.localDependencies = localDependencies;
return this;
}
/**
* Contains submodules of this Maven module.
*/
public OrderedMap<String, Pom> getSubmodules()
{
return submodules;
}
/**
* Contains submodules of this Maven module.
*/
public Pom setSubmodules(OrderedMap<String, Pom> submodules)
{
this.submodules = submodules;
return this;
}
/**
* The root pom of the project.
*/
public boolean isRoot()
{
return root;
}
/**
* The root pom of the project.
*/
public Pom setRoot(boolean root)
{
this.root = root;
return this;
}
/**
* Returns a {@link MavenCoord} representing the Maven coordinates of this POM.
*/
public MavenCoord getCoord(){
return coord;
}
/**
* Sets a {@link MavenCoord} representing the Maven coordinates of this POM.
*/
public Pom setCoord(MavenCoord coord){
this.coord = coord;
return this;
}
/**
* Gets the Bom used by this POM.
*/
public MavenCoord getBom()
{
return bom;
}
/**
* Sets the Bom used by this POM.
*/
public Pom setBom(MavenCoord bom)
{
this.bom = bom;
return this;
}
@Override
public String toString()
{
return "Pom{" + role + " " + coord + ", parent=" + (parent == null ? "" : parent.coord) + ", " + "name=" + name
+ /* ", desc=" + description + */ ", " + "dependencies=" + CollectionUtils.size(dependencies) + ", " + "localDependencies="
+ CollectionUtils.size(localDependencies) + ", " + "submodules=" + CollectionUtils.size(submodules) + '}';
}
@Override
public Role getRole()
{
return Role.MODULE;
}
enum ModuleRole
{
PARENT, BOM, NORMAL
}
}