hs.hsadmin/hsarback/src/de/hsadmin/mods/pac/Pac.java

284 lines
6.3 KiB
Java
Raw Normal View History

2010-10-01 21:52:51 +02:00
package de.hsadmin.mods.pac;
import static javax.persistence.CascadeType.ALL;
import static javax.persistence.FetchType.EAGER;
import static javax.persistence.FetchType.LAZY;
import static javax.persistence.GenerationType.SEQUENCE;
import java.io.Serializable;
import java.util.Date;
2010-10-06 15:06:01 +02:00
import javax.persistence.Column;
import javax.persistence.Entity;
2010-10-01 21:52:51 +02:00
import javax.persistence.EntityManager;
2010-10-06 15:06:01 +02:00
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import de.hsadmin.core.model.AbstractEntity;
import de.hsadmin.core.model.EntityInfo;
2010-10-01 21:52:51 +02:00
import de.hsadmin.mods.cust.Customer;
import de.hsadmin.mods.user.UnixUser;
2010-10-06 15:06:01 +02:00
@Entity(name = "Pacs")
@Table(name = "packet")
@SequenceGenerator(name = "PacsSeqGen", sequenceName = "packet_packet_id_seq")
@EntityInfo(name = "Paket")
public class Pac extends AbstractEntity implements Serializable {
2010-10-01 21:52:51 +02:00
private static final long serialVersionUID = 1201899873300190132L;
2010-10-06 15:06:01 +02:00
@Id
@GeneratedValue(strategy = SEQUENCE, generator = "PacsSeqGen")
@Column(name = "packet_id")
2010-10-01 21:52:51 +02:00
private long id;
2010-10-06 15:06:01 +02:00
@Column(name = "packet_name", unique = true)
2010-10-01 21:52:51 +02:00
private String name;
2010-10-06 15:06:01 +02:00
@JoinColumn(name = "bp_id")
@ManyToOne(fetch = EAGER)
2010-10-01 21:52:51 +02:00
private Customer customer;
2010-10-06 15:06:01 +02:00
@JoinColumn(name = "hive_id")
@ManyToOne(fetch = EAGER)
2010-10-01 21:52:51 +02:00
private Hive hive;
2010-10-06 15:06:01 +02:00
@Column(name = "created")
@Temporal(TemporalType.DATE)
2010-10-01 21:52:51 +02:00
private Date created;
2010-10-06 15:06:01 +02:00
@Column(name = "cancelled", nullable = true)
@Temporal(TemporalType.DATE)
2010-10-01 21:52:51 +02:00
private Date cancelled;
2010-10-06 15:06:01 +02:00
@Column(name = "order_number", nullable = true)
2010-10-01 21:52:51 +02:00
private String orderNo;
2010-10-06 15:06:01 +02:00
@Column(name = "webserver_group", nullable = true)
2010-10-01 21:52:51 +02:00
private String webserverGroup;
2010-10-06 15:06:01 +02:00
@JoinColumn(name = "cur_inet_addr_id", nullable = true)
@ManyToOne(fetch = EAGER)
2010-10-01 21:52:51 +02:00
private INetAddress curINetAddr;
2010-10-06 15:06:01 +02:00
@JoinColumn(name = "old_inet_addr_id", nullable = true)
@ManyToOne(fetch = EAGER)
2010-10-01 21:52:51 +02:00
private INetAddress oldINetAddr;
2010-10-06 15:06:01 +02:00
@OneToMany(fetch = LAZY, cascade = ALL)
2010-10-01 21:52:51 +02:00
private java.util.Set<PacComponent> pacComponents;
2010-10-06 15:06:01 +02:00
@OneToMany(fetch = LAZY, cascade = ALL, mappedBy = "pac")
2010-10-01 21:52:51 +02:00
private java.util.Set<UnixUser> unixUser;
public Pac() {
}
public Pac(String name, Customer cust, BasePac basePac, Hive hive) {
this.name = name;
this.customer = cust;
this.hive = hive;
this.created = new java.util.Date();
this.webserverGroup = "httpd";
this.curINetAddr = hive.getInetAddr();
pacComponents = new java.util.HashSet<PacComponent>();
java.util.Date today = new java.util.Date();
for (Component comp : basePac.getComponents()) {
PacComponent pacComp = new PacComponent(basePac,
comp.getBaseComponent(), this, comp.getDefaultQuantity(),
today, null);
pacComponents.add(pacComp);
System.err.println("TRACE [Pac]: added pacComp " + pacComp + " to "
+ getName());
}
}
public static String createQueryFromStringKey(String humanKey) {
return "obj.name='" + humanKey + "'";
}
@Override
public String createStringKey() {
return getName();
}
@Override
public long id() {
return id;
}
public long getId() {
return id;
}
protected void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public Hive getHive() {
return hive;
}
public void setHive(Hive hive) {
this.hive = hive;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getCancelled() {
return cancelled;
}
public void setCancelled(Date cancelled) {
this.cancelled = cancelled;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getwebserverGroup() {
return webserverGroup;
}
public void setwebserverGroup(String webserverGroup) {
this.webserverGroup = webserverGroup;
}
public INetAddress getCurINetAddr() {
return curINetAddr;
}
public void setCurINetAddr(INetAddress curINetAddr) {
this.curINetAddr = curINetAddr;
}
public INetAddress getOldINetAddr() {
return oldINetAddr;
}
public void setOldINetAddr(INetAddress oldINetAddr) {
this.oldINetAddr = oldINetAddr;
}
// virtual attribute basePac
/*
* This does not work, JPA/Hibernate always wants to create an invalid row
* in packet_component
*
2010-10-06 15:06:01 +02:00
* @ManyToOne(fetch=EAGER, optional=true) // optional
2010-10-01 21:52:51 +02:00
* should be default anyway
*
2010-10-06 15:06:01 +02:00
* @JoinTable( name="packet_component",
* joinColumns=@JoinColumn(name="packet_id"),
* inverseJoinColumns=@JoinColumn(name="basepacket_id") )
2010-10-01 21:52:51 +02:00
*/
2010-10-06 15:06:01 +02:00
@Transient
2010-10-01 21:52:51 +02:00
public BasePac getBasePac() {
return getPacComponents().iterator().next().getBasePac();
}
public void setBasePac(BasePac basePac) {
// TODO: needs code to change basePac in all pacComponents
}
public java.util.Set<PacComponent> getPacComponents() {
return pacComponents;
}
public void setPacComponents(java.util.Set<PacComponent> pacComponents) {
this.pacComponents = pacComponents;
}
public PacComponent getPacComponent(String feature) {
for (PacComponent pc : getPacComponents())
if (feature.equals(pc.getBaseComponent().getFeature()))
return pc;
return null;
}
public java.util.Set<UnixUser> getUnixUser() {
return unixUser;
}
public void setUnixUser(java.util.Set<UnixUser> unixUser) {
this.unixUser = unixUser;
}
public String toString() {
return super.toString() + "{ name=" + name + " }";
}
@Override
public boolean isNew() {
return id == 0;
}
@Override
public String getHiveName() {
if (isNew())
return null;
else
return getHive().getHiveName();
}
@Override
public UnixUser owningUser(EntityManager em) {
return customer.owningUser(em);
}
public UnixUser getAdminUser(EntityManager em) {
// TODO Auto-generated method stub
return null;
}
public boolean isReadAllowedFor(UnixUser loginUser) {
return getName().equals(loginUser.getName())
|| super.isReadAllowedFor(loginUser);
}
public static String restriction() {
return
2010-10-06 15:06:01 +02:00
// all pacs of customer
"obj.customer.name=:loginUserName OR " +
// pac of packet admin
"obj.name=:loginUserName";
2010-10-01 21:52:51 +02:00
}
}