org.apache.archiva.model.ArchivaArtifact Maven / Gradle / Ivy
package org.apache.archiva.model;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.commons.lang.StringUtils;
import org.apache.archiva.common.utils.VersionUtil;
/**
* ArchivaArtifact - Mutable artifact object.
*
*
*/
public class ArchivaArtifact
{
private ArchivaArtifactModel model;
private ArchivaArtifactPlatformDetails platformDetails;
private String baseVersion;
private static final int PRIME = 31;
public ArchivaArtifact( String groupId, String artifactId, String version,
String classifier, String type, String repositoryId )
{
if ( empty( groupId ) )
{
throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty groupId ["
+ Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
}
if ( empty( artifactId ) )
{
throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty artifactId ["
+ Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
}
if ( empty( version ) )
{
throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty version ["
+ Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
}
if ( empty( type ) )
{
throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty type ["
+ Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
}
if ( empty( repositoryId ) )
{
throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty repositoryId ["
+ Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
}
model = new ArchivaArtifactModel();
model.setGroupId( groupId );
model.setArtifactId( artifactId );
model.setVersion( version );
model.setClassifier( StringUtils.defaultString( classifier ) );
model.setType( type );
model.setSnapshot( VersionUtil.isSnapshot( version ) );
model.setRepositoryId(repositoryId);
this.baseVersion = VersionUtil.getBaseVersion( version );
}
public ArchivaArtifact( ArchivaArtifactModel artifactModel )
{
this.model = artifactModel;
model.setSnapshot( VersionUtil.isSnapshot( model.getVersion() ) );
this.baseVersion = VersionUtil.getBaseVersion( model.getVersion() );
}
public ArchivaArtifact( ArtifactReference ref, String repositoryId )
{
this( ref.getGroupId(), ref.getArtifactId(), ref.getVersion(), ref.getClassifier(), ref.getType(), repositoryId );
}
public ArchivaArtifactModel getModel()
{
return model;
}
public String getGroupId()
{
return model.getGroupId();
}
public String getArtifactId()
{
return model.getArtifactId();
}
public String getVersion()
{
return model.getVersion();
}
public String getBaseVersion()
{
return baseVersion;
}
public boolean isSnapshot()
{
return model.isSnapshot();
}
public String getClassifier()
{
return model.getClassifier();
}
public String getType()
{
return model.getType();
}
public boolean hasClassifier()
{
return StringUtils.isNotEmpty( model.getClassifier() );
}
public String getRepositoryId()
{
return model.getRepositoryId();
}
@Override
public int hashCode()
{
int result = 1;
if ( model != null )
{
result = PRIME * result + ( ( model.getGroupId() == null ) ? 0 : model.getGroupId().hashCode() );
result = PRIME * result + ( ( model.getArtifactId() == null ) ? 0 : model.getArtifactId().hashCode() );
result = PRIME * result + ( ( model.getVersion() == null ) ? 0 : model.getVersion().hashCode() );
result = PRIME * result + ( ( model.getClassifier() == null ) ? 0 : model.getClassifier().hashCode() );
result = PRIME * result + ( ( model.getType() == null ) ? 0 : model.getType().hashCode() );
}
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj )
{
return true;
}
if ( obj == null )
{
return false;
}
if ( getClass() != obj.getClass() )
{
return false;
}
final ArchivaArtifact other = (ArchivaArtifact) obj;
if ( model == null )
{
if ( other.model != null )
{
return false;
}
}
if ( !model.equals( other.model ) )
{
return false;
}
return true;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
if ( model.getGroupId() != null )
{
sb.append( model.getGroupId() );
sb.append( ":" );
}
appendArtifactTypeClassifierString( sb );
sb.append( ":" );
if ( model.getVersion() != null )
{
sb.append( model.getVersion() );
}
return sb.toString();
}
private void appendArtifactTypeClassifierString( StringBuilder sb )
{
sb.append( model.getArtifactId() );
sb.append( ":" );
sb.append( getType() );
if ( hasClassifier() )
{
sb.append( ":" );
sb.append( getClassifier() );
}
}
private boolean empty( String value )
{
return ( value == null ) || ( value.trim().length() < 1 );
}
public ArchivaArtifactPlatformDetails getPlatformDetails()
{
return platformDetails;
}
public void setPlatformDetails( ArchivaArtifactPlatformDetails platformDetails )
{
this.platformDetails = platformDetails;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy