/** * Copyright © 2006-2016 Web Cohesion (info@webcohesion.com) * * Licensed 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 com.webcohesion.enunciate.artifacts; import com.webcohesion.enunciate.Enunciate; import java.util.Date; import java.util.ArrayList; import java.util.Collection; import java.io.File; import java.io.IOException; /** * A client-side libarary artifact. * * @author Ryan Heaton */ public class ClientLibraryArtifact extends BaseArtifact implements ArtifactBundle { private final String name; private Date created; private String platform; private String description; private final ArrayList<FileArtifact> artifacts = new ArrayList<FileArtifact>(); private long size = -1; public ClientLibraryArtifact(String module, String id, String name) { super(module, id); this.name = name; this.created = new Date(); } /** * If the file to export to is an existing directoy, copy the artifacts to that directory. * Otherwise, assume that the export is a file and zip up all the artifacts to that file. * * @param file The file to write to. * @param enunciate The utilities to use. */ public void exportTo(File file, Enunciate enunciate) throws IOException { if (enunciate == null) { throw new NullPointerException(); } File dir = (file.exists() && file.isDirectory()) ? file : enunciate.createTempDir(); for (FileArtifact artifact : artifacts) { enunciate.copyFile(artifact.getFile(), new File(dir, artifact.getFile().getName())); } if (!file.exists() || !file.isDirectory()) { enunciate.zip(file, dir); size = file.length(); } } /** * The name for this library. * * @return The name for this library. */ public String getName() { return name; } /** * The artifacts that are associated with this bundle. * * @return The artifacts that are associated with this bundle. */ public Collection<? extends Artifact> getArtifacts() { return this.artifacts; } /** * If this artifact has been exported to a zip file, it will return the size in bytes of that file. Otherwise, -1. * * @return The size in bytes of the zip file, or -1 if no zip file has been created yet. */ public long getSize() { return this.size; } /** * The artifact to add. * * @param artifact The artifact to add. */ public void addArtifact(FileArtifact artifact) { if (artifact == null) { throw new NullPointerException(); } this.artifacts.add(artifact); } /** * The date this artifact was created (defaults to the date this artifact was constructed). * * @return The date this artifact was created. */ public Date getCreated() { return created; } /** * The date this artifact was created. * * @param created The date this artifact was created. */ public void setCreated(Date created) { this.created = created; } /** * A string describing the platform this library applies to. * * @return A string describing the platform this library applies to. */ public String getPlatform() { return platform; } /** * A string describing the platform this library applies to. * * @param platform A string describing the platform this library applies to. */ public void setPlatform(String platform) { this.platform = platform; } /** * A description of this library. * * @return A description of this library. */ public String getDescription() { return description; } /** * A description of this library. * * @param description A description of this library. */ public void setDescription(String description) { this.description = description; } }