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; } }