| /* |
| * 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. |
| * |
| */ |
| package org.apache.ivy.core.report; |
| |
| import java.io.File; |
| |
| import org.apache.ivy.core.cache.ArtifactOrigin; |
| import org.apache.ivy.core.module.descriptor.Artifact; |
| |
| /** |
| * Report on the download of an artifact from a repository to a local (cached) file. |
| * <p> |
| * Note that depending on cache implementation, the artifact may not be actually downloaded, but |
| * used directly from its original location. |
| * </p> |
| */ |
| public class ArtifactDownloadReport { |
| /** |
| * download details used when the download "fails" when the artifact is simply missing on the |
| * remote repository. |
| * <p> |
| * For historical reason the status can't be used to distinguish a real failure from a missing |
| * artifact by using the status, in both cases it's DownloadStatus.FAILED. The details message |
| * can be used for this purpose though. |
| * </p> |
| */ |
| public static final String MISSING_ARTIFACT = "missing artifact"; |
| |
| private Artifact artifact; |
| |
| private ArtifactOrigin origin; |
| |
| private File localFile; |
| |
| private DownloadStatus downloadStatus; |
| |
| private long size; |
| |
| private String downloadDetails = ""; |
| |
| private long downloadTimeMillis; |
| |
| private File unpackedLocalFile; |
| |
| public ArtifactDownloadReport(Artifact artifact) { |
| this.artifact = artifact; |
| } |
| |
| public DownloadStatus getDownloadStatus() { |
| return downloadStatus; |
| } |
| |
| public void setDownloadStatus(DownloadStatus downloadStatus) { |
| this.downloadStatus = downloadStatus; |
| } |
| |
| public String getName() { |
| return artifact.getName(); |
| } |
| |
| /** |
| * |
| * @return the type of the downloaded artifact |
| */ |
| public String getType() { |
| return artifact.getType(); |
| } |
| |
| public Artifact getArtifact() { |
| return artifact; |
| } |
| |
| public String getExt() { |
| return artifact.getExt(); |
| } |
| |
| public long getSize() { |
| return size; |
| } |
| |
| public void setSize(long size) { |
| this.size = size; |
| } |
| |
| public void setArtifactOrigin(ArtifactOrigin origin) { |
| this.origin = origin; |
| } |
| |
| public ArtifactOrigin getArtifactOrigin() { |
| return origin; |
| } |
| |
| public void setDownloadDetails(String message) { |
| downloadDetails = message; |
| } |
| |
| public String getDownloadDetails() { |
| return downloadDetails; |
| } |
| |
| public void setDownloadTimeMillis(long l) { |
| downloadTimeMillis = l; |
| } |
| |
| public long getDownloadTimeMillis() { |
| return downloadTimeMillis; |
| } |
| |
| public String toString() { |
| if (downloadStatus == DownloadStatus.SUCCESSFUL) { |
| return "[SUCCESSFUL ] " + artifact + " (" + downloadTimeMillis + "ms)"; |
| } else if (downloadStatus == DownloadStatus.FAILED) { |
| if (downloadDetails == MISSING_ARTIFACT) { |
| return "[NOT FOUND ] " + artifact + " (" + downloadTimeMillis + "ms)"; |
| } else { |
| return "[FAILED ] " + artifact + ": " + downloadDetails + " (" |
| + downloadTimeMillis + "ms)"; |
| } |
| } else if (downloadStatus == DownloadStatus.NO) { |
| return "[NOT REQUIRED] " + artifact; |
| } else { |
| return super.toString(); |
| } |
| } |
| |
| /** |
| * Returns the File where the artifact is available on the local filesystem, or |
| * <code>null</code> if and only if the artifact caching failed. |
| * |
| * @return the file where the artifact is now available on the local filesystem. |
| */ |
| public File getLocalFile() { |
| return localFile; |
| } |
| |
| public void setLocalFile(File localFile) { |
| this.localFile = localFile; |
| } |
| |
| public boolean isDownloaded() { |
| return DownloadStatus.SUCCESSFUL == downloadStatus; |
| } |
| |
| public void setUnpackedLocalFile(File unpackedLocalFile) { |
| this.unpackedLocalFile = unpackedLocalFile; |
| } |
| |
| public File getUnpackedLocalFile() { |
| return unpackedLocalFile; |
| } |
| |
| public int hashCode() { |
| final int prime = 31; |
| int result = 1; |
| result = prime * result + ((artifact == null) ? 0 : artifact.hashCode()); |
| return result; |
| } |
| |
| public boolean equals(Object obj) { |
| if (this == obj) { |
| return true; |
| } |
| if (obj == null) { |
| return false; |
| } |
| if (getClass() != obj.getClass()) { |
| return false; |
| } |
| ArtifactDownloadReport other = (ArtifactDownloadReport) obj; |
| if (artifact == null) { |
| if (other.artifact != null) { |
| return false; |
| } |
| } else if (!artifact.equals(other.artifact)) { |
| return false; |
| } |
| return true; |
| } |
| |
| } |