package org.opentosca.csarrepo.model; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; import org.opentosca.csarrepo.exception.PersistenceException; import org.opentosca.csarrepo.model.join.CsarFileOpenToscaServer; import org.opentosca.csarrepo.model.repository.JoinRepository; /** * Hibernate class for entity CSARFile * * @author Thomas Kosch (mail@thomaskosch.com), Dennis Przytarski */ @Entity @Table(name = "csar_file") public class CsarFile { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "csar_file_id") private long id; @ManyToOne @JoinColumn(name = "csar_id") private Csar csar; @OneToMany(mappedBy = "csarFile") @LazyCollection(LazyCollectionOption.FALSE) private List<CloudInstance> cloudInstances = new ArrayList<CloudInstance>(); @OneToMany(cascade = CascadeType.ALL, mappedBy = "csarFileOpenToscaServerId.csarFile") @LazyCollection(LazyCollectionOption.FALSE) private List<CsarFileOpenToscaServer> csarFileOpenToscaServer = new ArrayList<CsarFileOpenToscaServer>(); @Column(name = "version") private long version; @Column(name = "upload_date") private Date uploadDate; @Column(name = "name") private String name; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "hashed_file_id") private HashedFile hashedFile; /** * This method maps an OpenTosca instance to the corresponding csarFile in * the database * * @param openToscaServer * An OpenToscaServer object instance */ public void addOpenToscaServer(OpenToscaServer openToscaServer, String location) { CsarFileOpenToscaServer csarFileOpenToscaServer = new CsarFileOpenToscaServer( new CsarFileOpenToscaServer.CsarFileOpenToscaServerId(this, openToscaServer)); csarFileOpenToscaServer.setCsarFile(this); csarFileOpenToscaServer.setOpenToscaServer(openToscaServer); csarFileOpenToscaServer.setLocation(location); this.csarFileOpenToscaServer.add(csarFileOpenToscaServer); } /** * This method removes the mapping of an OpenTosca instance to the csarFile * in the database * * @param openToscaServer * @throws PersistenceException */ public void removeOpenToscaServer(OpenToscaServer openToscaServer) throws PersistenceException { JoinRepository joinRepository = new JoinRepository(); joinRepository.removeCsarFileOpenToscaServer(this, openToscaServer); } /** * @return id */ public Long getId() { return id; } /** * Sets the id * * @param id */ public void setId(long id) { this.id = id; } /** * @param csar * the csar to set */ public void setCsar(Csar csar) { this.csar = csar; } /** * Get CSAR of the current CSAR file * * @return the CSAR */ public Csar getCsar() { return csar; } /** * Gets the version of a CSAR * * @return version */ public long getVersion() { return version; } /** * Sets the version of a CSAR * * @param version */ public void setVersion(long version) { this.version = version; } /** * Gets the upload date of a CSAR * * @return date of upload */ public Date getUploadDate() { return uploadDate; } /** * Sets the upload date * * @param uploadDate */ public void setUploadDate(Date uploadDate) { this.uploadDate = uploadDate; } /** * @param name * the name to set */ public void setName(String name) { this.name = name; } /** * @return the name */ public String getName() { return name; } /** * @return the hashedFile */ public HashedFile getHashedFile() { return hashedFile; } /** * @param hashedFile * the hashedFile to set */ public void setHashedFile(HashedFile hashedFile) { this.hashedFile = hashedFile; } /** * @return The cloud instances */ public List<CloudInstance> getCloudInstances() { return cloudInstances; } /** * @param cloudInstances * The cloud instances */ public void setCloudInstances(List<CloudInstance> cloudInstances) { this.cloudInstances = cloudInstances; } /** * @return List containing the correlation of the respective classes */ public List<CsarFileOpenToscaServer> getCsarFileOpenToscaServer() { return csarFileOpenToscaServer; } /** * @param csarOpenToscaServer * List containing the correlation of the respective classes */ public void setCsarFileOpenToscaServer(List<CsarFileOpenToscaServer> csarFileOpenToscaServer) { this.csarFileOpenToscaServer = csarFileOpenToscaServer; } }