
org.arakhne.maven.ExtendedArtifact Maven / Gradle / Ivy
/*
* $Id: org/arakhne/maven/ExtendedArtifact.java v12.0 2015-04-09 01:25:33$
*
* Copyright (C) 2010-11 Stephane GALLAND This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* This program is free software; you can redistribute it and/or modify
*/
package org.arakhne.maven;
import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Contributor;
import org.apache.maven.model.Developer;
import org.apache.maven.model.License;
import org.apache.maven.model.Organization;
import org.apache.maven.model.Scm;
import org.apache.maven.plugin.logging.Log;
/**
* Artifact implementation which also includes the artifact name,
* contributors, authors, and website.
*
* @author Stéphane GALLAND
* @version 12.0 2015-04-09 01:25:33
* @mavengroupid org.arakhne.afc.maven
* @mavenartifactid maventools
*/
@SuppressWarnings("deprecation")
public final class ExtendedArtifact implements Artifact {
/** Empty string constant.
*/
public static final String EMPTY_STRING = ""; //$NON-NLS-1$
private final String artifactName;
private final Artifact original;
private final List extends Developer> developers;
private final List extends Contributor> contributors;
private final String website;
private final Organization organization;
private final Scm scm;
private final String scmRevision;
private final List extends License> licenses;
/**
* @param a
* @param name
* @param website
* @param organization
* @param scmRevision
* @param scm
* @param developers
* @param contributors
* @param licenses
*/
public ExtendedArtifact(
Artifact a, String name,
String website, Organization organization,
String scmRevision,
Scm scm,
List extends Developer> developers,
List extends Contributor> contributors,
List extends License> licenses) {
this.original = a;
this.artifactName = name;
this.developers = developers;
this.contributors = contributors;
this.website = website;
this.organization = organization;
this.scm = scm;
this.scmRevision = scmRevision;
this.licenses = licenses;
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return this.original.toString();
}
/** Replies the licenses of this artifact.
*
* @return the licenses of this artifact.
*/
public List extends License> getLicenses() {
return this.licenses;
}
/** Replies the SCM definition of this artifact.
*
* @return the SCM definition of this artifact.
*/
public Scm getScm() {
return this.scm;
}
/** Replies the organization of this artifact.
*
* @return the organization of this artifact.
*/
public Organization getOrganization() {
return this.organization;
}
/** Replies the URL of the website for this artifact.
*
* @return the URL of the website for this artifact.
*/
public String getWebsite() {
return this.website;
}
/** Replies the list of contributors.
*
* @return the list of contributors.
*/
public List extends Contributor> getContributors() {
return this.contributors==null ? Collections.emptyList() : this.contributors;
}
/** Replies the list of developers.
*
* @return the list of developers.
*/
public List extends Developer> getDevelopers() {
return this.developers==null ? Collections.emptyList() : this.developers;
}
/** Replies the people with the given login.
* This function checks the peoples replied
* by {@link #getDevelopers()} and
* {@link #getContributors()}.
*
* @param login
* @return the people or null
*/
public Contributor getPeople(String login) {
return getPeople(login, null);
}
/** Replies the people with the given login.
* This function checks the peoples replied
* by {@link #getDevelopers()} and
* {@link #getContributors()}.
*
* @param login
* @param logger
* @return the people or null
*/
public Contributor getPeople(String login, Log logger) {
for(Developer devel : getDevelopers()) {
if (devel!=null) {
if (logger!=null && logger.isDebugEnabled()) {
logger.debug(
"Comparing '"+login //$NON-NLS-1$
+" to the developer [ID="+devel.getId() //$NON-NLS-1$
+";NAME="+devel.getName() //$NON-NLS-1$
+";EMAIL="+devel.getEmail() //$NON-NLS-1$
+"]"); //$NON-NLS-1$
}
String idprop = null;
Properties props = devel.getProperties();
if (props!=null) {
idprop = props.getProperty("id", null); //$NON-NLS-1$
if (idprop==null)
idprop = props.getProperty("login", null); //$NON-NLS-1$
}
if (login.equals(devel.getId())
||login.equals(devel.getName())
||login.equals(devel.getEmail())
||login.equals(idprop)) {
if (logger!=null && logger.isDebugEnabled()) {
logger.debug(
"Selecting the developer [ID="+devel.getId() //$NON-NLS-1$
+";NAME="+devel.getName() //$NON-NLS-1$
+";EMAIL="+devel.getEmail() //$NON-NLS-1$
+"]"); //$NON-NLS-1$
}
return devel;
}
}
}
for(Contributor contrib : getContributors()) {
if (contrib!=null) {
if (logger!=null && logger.isDebugEnabled()) {
logger.debug(
"Comparing '"+login //$NON-NLS-1$
+" to the contributor [NAME="+contrib.getName() //$NON-NLS-1$
+";EMAIL="+contrib.getEmail() //$NON-NLS-1$
+"]"); //$NON-NLS-1$
}
String idprop = null;
Properties props = contrib.getProperties();
if (props!=null) {
idprop = props.getProperty("id", null); //$NON-NLS-1$
if (idprop==null)
idprop = props.getProperty("login", null); //$NON-NLS-1$
}
if (login.equals(contrib.getName())
||login.equals(contrib.getEmail())
||login.equals(idprop)) {
if (logger!=null && logger.isDebugEnabled()) {
logger.debug(
"Selecting the contributor [NAME="+contrib.getName() //$NON-NLS-1$
+";EMAIL="+contrib.getEmail() //$NON-NLS-1$
+"]"); //$NON-NLS-1$
}
return contrib;
}
}
}
if (logger!=null && logger.isDebugEnabled()) {
logger.debug("No people found for: "+login); //$NON-NLS-1$
logger.debug("Developers are: "+this.developers.toString()); //$NON-NLS-1$
logger.debug("Contributors are: "+this.contributors.toString()); //$NON-NLS-1$
}
return null;
}
/** Replies the name of the artifact.
*
* @return the name of the artifact.
*/
public String getName() {
if (this.artifactName==null || EMPTY_STRING.equals(this.artifactName))
return getArtifactId();
return this.artifactName;
}
/**
* {@inheritDoc}
* @deprecated
*/
@Override
@Deprecated
public void addMetadata(ArtifactMetadata metadata) {
this.original.addMetadata(metadata);
}
/**
* {@inheritDoc}
*/
@Override
public ArtifactHandler getArtifactHandler() {
return this.original.getArtifactHandler();
}
/**
* {@inheritDoc}
*/
@Override
public String getArtifactId() {
return this.original.getArtifactId();
}
/**
* {@inheritDoc}
*/
@Override
public List getAvailableVersions() {
return this.original.getAvailableVersions();
}
/**
* {@inheritDoc}
*/
@Override
public String getBaseVersion() {
return this.original.getBaseVersion();
}
/**
* {@inheritDoc}
*/
@Override
public String getClassifier() {
return this.original.getClassifier();
}
/**
* {@inheritDoc}
*/
@Override
public String getDependencyConflictId() {
return this.original.getDependencyConflictId();
}
/**
* {@inheritDoc}
*/
@Override
public ArtifactFilter getDependencyFilter() {
return this.original.getDependencyFilter();
}
/**
* {@inheritDoc}
*/
@Override
public List getDependencyTrail() {
return this.original.getDependencyTrail();
}
/**
* {@inheritDoc}
*/
@Override
public String getDownloadUrl() {
return this.original.getDownloadUrl();
}
/**
* {@inheritDoc}
*/
@Override
public File getFile() {
return this.original.getFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getGroupId() {
return this.original.getGroupId();
}
/**
* {@inheritDoc}
*/
@Override
public String getId() {
return this.original.getId();
}
/**
* {@inheritDoc}
* @deprecated
*/
@Override
@Deprecated
public Collection getMetadataList() {
return this.original.getMetadataList();
}
/**
* {@inheritDoc}
*/
@Override
public ArtifactRepository getRepository() {
return this.original.getRepository();
}
/**
* {@inheritDoc}
*/
@Override
public String getScope() {
return this.original.getScope();
}
/**
* {@inheritDoc}
*/
@Override
public ArtifactVersion getSelectedVersion() throws OverConstrainedVersionException {
return this.original.getSelectedVersion();
}
/**
* {@inheritDoc}
*/
@Override
public String getType() {
return this.original.getType();
}
/**
* {@inheritDoc}
*/
@Override
public String getVersion() {
return this.original.getVersion();
}
/**
* {@inheritDoc}
*/
@Override
public VersionRange getVersionRange() {
return this.original.getVersionRange();
}
/**
* {@inheritDoc}
*/
@Override
public boolean hasClassifier() {
return this.original.hasClassifier();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isOptional() {
return this.original.isOptional();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isRelease() {
return this.original.isRelease();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isResolved() {
return this.original.isResolved();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isSelectedVersionKnown() throws OverConstrainedVersionException {
return this.original.isSelectedVersionKnown();
}
/**
* {@inheritDoc}
*/
@Override
public boolean isSnapshot() {
return this.original.isSnapshot();
}
/**
* {@inheritDoc}
*/
@Override
public void selectVersion(String version) {
this.original.selectVersion(version);
}
/**
* {@inheritDoc}
*/
@Override
public void setArtifactHandler(ArtifactHandler handler) {
this.original.setArtifactHandler(handler);
}
/**
* {@inheritDoc}
*/
@Override
public void setArtifactId(String artifactId) {
this.original.setArtifactId(artifactId);
}
/**
* {@inheritDoc}
*/
@Override
public void setBaseVersion(String baseVersion) {
this.original.setBaseVersion(baseVersion);
}
/**
* {@inheritDoc}
*/
@Override
public void setDependencyFilter(ArtifactFilter artifactFilter) {
this.original.setDependencyFilter(artifactFilter);
}
/**
* {@inheritDoc}
*/
@Override
public void setDownloadUrl(String downloadUrl) {
this.original.setDownloadUrl(downloadUrl);
}
/**
* {@inheritDoc}
*/
@Override
public void setFile(File destination) {
this.original.setFile(destination);
}
/**
* {@inheritDoc}
*/
@Override
public void setGroupId(String groupId) {
this.original.setGroupId(groupId);
}
/**
* {@inheritDoc}
*/
@Override
public void setRelease(boolean release) {
this.original.setRelease(release);
}
/**
* {@inheritDoc}
*/
@Override
public void setRepository(ArtifactRepository remoteRepository) {
this.original.setRepository(remoteRepository);
}
/**
* {@inheritDoc}
*/
@Override
public void setResolved(boolean resolved) {
this.original.setResolved(resolved);
}
/**
* {@inheritDoc}
*/
@Override
public void setResolvedVersion(String version) {
this.original.setResolvedVersion(version);
}
/**
* {@inheritDoc}
*/
@Override
public void setScope(String scope) {
this.original.setScope(scope);
}
/**
* {@inheritDoc}
*/
@Override
public void setVersion(String version) {
this.original.setVersion(version);
}
/**
* {@inheritDoc}
*/
@Override
public void setVersionRange(VersionRange newRange) {
this.original.setVersionRange(newRange);
}
/**
* {@inheritDoc}
*/
@Override
public void updateVersion(String version, ArtifactRepository localRepository) {
this.original.updateVersion(version, localRepository);
}
/**
* {@inheritDoc}
*/
@Override
public int compareTo(Artifact o) {
return this.original.compareTo(o);
}
/**
* {@inheritDoc}
*/
@Override
public void setAvailableVersions(List versions) {
this.original.setAvailableVersions(versions);
}
/**
* {@inheritDoc}
*/
@Override
public void setDependencyTrail(List dependencyTrail) {
this.original.setDependencyTrail(dependencyTrail);
}
/**
* {@inheritDoc}
*/
@Override
public void setOptional(boolean optional) {
this.original.setOptional(optional);
}
/** Replies the SCM revision for the artifact.
*
* @return the revision number in the SCM repository.
*/
public String getScmRevision() {
return this.scmRevision;
}
} // class ExtendedArtifact
© 2015 - 2025 Weber Informatics LLC | Privacy Policy