package org.opentosca.csarrepo.model;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
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.model.join.CsarWineryServer;
import org.opentosca.csarrepo.model.join.UserWineryServer;
/**
*
* Hibernate annotated class for Winery Server
*
* @author Dennis Przytarski, Thomas Kosch (mail@thomaskosch.com)
*
*/
/**
* @author kosch
*
*/
@Entity
@Table(name = "winery_server")
public class WineryServer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "winery_server_id")
private long id;
@Column(name = "address")
private URL address;
@Column(name = "name")
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "csarWineryServerId.wineryServer")
@LazyCollection(LazyCollectionOption.FALSE)
private List<CsarWineryServer> csarWineryServer;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "userWineryServerId.wineryServer")
@LazyCollection(LazyCollectionOption.FALSE)
private List<UserWineryServer> userWineryServer = new ArrayList<UserWineryServer>();
/**
* This method maps an user instance to the corresponding wineryServer in
* the database
*
* @param wineryServer
* A wineryServer object
*
*/
public void addUser(User user) {
UserWineryServer userWineryServer = new UserWineryServer(new UserWineryServer.UserWineryServerId(user, this));
userWineryServer.setUser(user);
userWineryServer.setWineryServer(this);
this.userWineryServer.add(userWineryServer);
}
/**
* @return the id
*/
public Long getId() {
return id;
}
/**
* @return the address
*/
public URL getAddress() {
return this.address;
}
/**
* @param address
* to set
*/
public void setAddress(URL address) {
this.address = address;
}
/**
* @return List containing the correlation of the respective classes
*/
public List<CsarWineryServer> getCsarWineryServer() {
return csarWineryServer;
}
/**
* @param csarWineryServer
* List containing the correlation of the respective classes
*/
public void setCsarWineryServer(List<CsarWineryServer> csarWineryServer) {
this.csarWineryServer = csarWineryServer;
}
/**
* @return the users
*/
public User getUser() {
return user;
}
/**
* @param user
* to set
*/
public void setUser(User user) {
this.user = user;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name of the winery instance
*/
public void setName(String name) {
this.name = name;
}
}