package com.redhat.rcm.version.maven;
import java.util.regex.Pattern;
import org.apache.maven.mae.project.key.ProjectKey;
import org.apache.maven.mae.project.key.VersionlessProjectKey;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Parent;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.ReportPlugin;
public class WildcardProjectKey extends VersionlessProjectKey
{
Pattern groupPattern;
Pattern artifactPattern;
public WildcardProjectKey( final String groupId, final String artifactId )
{
super (groupId, artifactId);
initPatterns();
}
public WildcardProjectKey( final Dependency dep )
{
super (dep);
initPatterns();
}
public WildcardProjectKey( final Plugin plugin )
{
super (plugin);
initPatterns();
}
public WildcardProjectKey( final Parent parent )
{
super (parent);
initPatterns();
}
public WildcardProjectKey( final String ga )
{
super (ga);
initPatterns();
}
public WildcardProjectKey( final ReportPlugin plugin )
{
super (plugin);
initPatterns();
}
public WildcardProjectKey( final ProjectKey tk )
{
super (tk);
initPatterns();
}
private void initPatterns()
{
groupPattern = Pattern.compile (this.getGroupId());
artifactPattern = Pattern.compile (this.getArtifactId());
}
@Override
public boolean equals( final Object obj )
{
if ( this == obj )
{
return true;
}
if ( obj == null )
{
return false;
}
if ( getClass() != obj.getClass() )
{
return false;
}
final WildcardProjectKey other = (WildcardProjectKey) obj;
if ( getArtifactId() == null )
{
if ( other.getArtifactId() != null )
{
return false;
}
}
else if ( !artifactPattern.matcher( other.getArtifactId() ).matches() &&
!other.artifactPattern.matcher (getArtifactId() ).matches())
{
return false;
}
if ( getGroupId() == null )
{
if ( other.getGroupId () != null )
{
return false;
}
}
else if ( !groupPattern.matcher( other.getGroupId() ).matches() &&
!other.groupPattern.matcher (getGroupId () ).matches() )
{
return false;
}
return true;
}
}