package cz.cuni.mff.d3s.been.datastore; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collection; import java.util.List; import org.apache.commons.io.IOUtils; 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.slf4j.Logger; import org.slf4j.LoggerFactory; import cz.cuni.mff.d3s.been.bpk.ArtifactIdentifier; /** * An artifact retrieved from the {@link SoftwareStore} */ public class ArtifactFromStore implements Artifact { private static final Logger log = LoggerFactory.getLogger(ArtifactFromStore.class); private final ArtifactIdentifier identifier; private final String type; private final String scope; private final StoreReader reader; private String classifier; /** * Create an artifact from the store * * @param identifier Unique identifier of the artifact * @param reader Reader capable of loading the artifact's content from the store */ public ArtifactFromStore(ArtifactIdentifier identifier, StoreReader reader) { this.identifier = identifier; this.reader = reader; this.type = "jar"; this.scope = "runtime"; } @Override public int compareTo(Artifact o) { // TODO Auto-generated method stub return 0; } @Override public String getGroupId() { return identifier.getGroupId(); } @Override public String getArtifactId() { return identifier.getArtifactId(); } @Override public String getVersion() { return identifier.getVersion(); } @Override public void setVersion(String version) { identifier.setVersion(version); } @Override public String getScope() { return scope; } @Override public String getType() { return type; } @Override public String getClassifier() { return classifier; } @Override public boolean hasClassifier() { return classifier != null; } @Override public File getFile() { File tmpFile; try { tmpFile = File.createTempFile("artifactFromStore", identifier.toString()); } catch (IOException e) { log.error("Could not create buffer file for Artifact {} - {}", identifier.toString(), e.getMessage()); return null; } FileOutputStream tempFileOs; try { tempFileOs = new FileOutputStream(tmpFile); } catch (IOException e) { log.error("Could not open file \"{}\" for writing - {}.", tmpFile.getAbsolutePath(), e.getMessage()); return null; } InputStream contentIs; try { contentIs = reader.getContentStream(); } catch (IOException e) { log.error("Failed to retrieve source stream for Artifact {} - {}", identifier.toString(), e.getMessage()); IOUtils.closeQuietly(tempFileOs); return null; } try { IOUtils.copy(contentIs, tempFileOs); } catch (IOException e) { log.error("Can't create TMP file for Artifact {}", identifier.toString()); } IOUtils.closeQuietly(tempFileOs); IOUtils.closeQuietly(contentIs); return tmpFile; } @Override public void setFile(File destination) { // TODO Auto-generated method stub } @Override public String getBaseVersion() { // TODO Auto-generated method stub return null; } @Override public void setBaseVersion(String baseVersion) { // TODO Auto-generated method stub } @Override public String getId() { // TODO Auto-generated method stub return null; } @Override public String getDependencyConflictId() { // TODO Auto-generated method stub return null; } @Override public Collection<ArtifactMetadata> getMetadataList() { throw new UnsupportedOperationException("Artifact metadata operations are not supported for this class."); } @Override public void setRepository(ArtifactRepository remoteRepository) { // TODO Auto-generated method stub } @Override public ArtifactRepository getRepository() { // TODO Auto-generated method stub return null; } @Override public void updateVersion(String version, ArtifactRepository localRepository) { // TODO Auto-generated method stub } @Override public String getDownloadUrl() { // TODO Auto-generated method stub return null; } @Override public void setDownloadUrl(String downloadUrl) { // TODO Auto-generated method stub } @Override public ArtifactFilter getDependencyFilter() { // TODO Auto-generated method stub return null; } @Override public void setDependencyFilter(ArtifactFilter artifactFilter) { // TODO Auto-generated method stub } @Override public ArtifactHandler getArtifactHandler() { // TODO Auto-generated method stub return null; } @Override public List<String> getDependencyTrail() { // TODO Auto-generated method stub return null; } @Override public void setDependencyTrail(List<String> dependencyTrail) { // TODO Auto-generated method stub } @Override public void setScope(String scope) { // TODO Auto-generated method stub } @Override public VersionRange getVersionRange() { // TODO Auto-generated method stub return null; } @Override public void setVersionRange(VersionRange newRange) { // TODO Auto-generated method stub } @Override public void selectVersion(String version) { // TODO Auto-generated method stub } @Override public void setGroupId(String groupId) { // TODO Auto-generated method stub } @Override public void setArtifactId(String artifactId) { // TODO Auto-generated method stub } @Override public boolean isSnapshot() { // TODO Auto-generated method stub return false; } @Override public void setResolved(boolean resolved) { // TODO Auto-generated method stub } @Override public boolean isResolved() { // TODO Auto-generated method stub return false; } @Override public void setResolvedVersion(String version) { // TODO Auto-generated method stub } @Override public void setArtifactHandler(ArtifactHandler handler) { // TODO Auto-generated method stub } @Override public boolean isRelease() { // TODO Auto-generated method stub return false; } @Override public void setRelease(boolean release) { // TODO Auto-generated method stub } @Override public List<ArtifactVersion> getAvailableVersions() { // TODO Auto-generated method stub return null; } @Override public void setAvailableVersions(List<ArtifactVersion> versions) { // TODO Auto-generated method stub } @Override public boolean isOptional() { // TODO Auto-generated method stub return false; } @Override public void setOptional(boolean optional) { // TODO Auto-generated method stub } @Override public ArtifactVersion getSelectedVersion() throws OverConstrainedVersionException { // TODO Auto-generated method stub return null; } @Override public boolean isSelectedVersionKnown() throws OverConstrainedVersionException { // TODO Auto-generated method stub return false; } @Override public void addMetadata(ArtifactMetadata metadata) { // TODO Auto-generated method stub } }