fix or-mapping of pac-components

This commit is contained in:
Peter Hormanns 2013-01-21 13:38:31 +01:00
parent 75a68d707a
commit 5056e46610
3 changed files with 23 additions and 5 deletions

View File

@ -53,6 +53,7 @@ public class BasePac implements Serializable {
private boolean valid;
@OneToMany(fetch = FetchType.LAZY, cascade = ALL)
@JoinTable(name = "component", joinColumns = @JoinColumn(name = "basepacket_id"), inverseJoinColumns = @JoinColumn(name = "basecomponent_id"))
private Set<Component> components;
@OneToMany(fetch = FetchType.LAZY, cascade = ALL)

View File

@ -8,6 +8,7 @@ import static javax.persistence.GenerationType.SEQUENCE;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.Column;
@ -18,6 +19,7 @@ import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Query;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
@ -98,7 +100,10 @@ public class Pac extends AbstractEntity implements Serializable {
this.created = new Date();
this.webserverGroup = "httpd";
this.curINetAddr = hive.getInetAddr();
initPacComponents(basePac);
}
private void initPacComponents(BasePac basePac) {
pacComponents = new HashSet<PacComponent>();
Date today = new Date();
for (Component comp : basePac.getComponents()) {
@ -109,6 +114,16 @@ public class Pac extends AbstractEntity implements Serializable {
}
}
@Override
public void initialize(EntityManager em, UnixUser loginUser) {
super.initialize(em, loginUser);
Query qBasepac = em.createQuery("SELECT b FROM BasePacs b WHERE b.valid = :valid ORDER BY b.name");
qBasepac.setParameter("valid", Boolean.TRUE);
List<?> resultList = qBasepac.getResultList();
basepac = (BasePac) resultList.get(0);
initPacComponents(basepac);
}
public static String createQueryFromStringKey(String humanKey) {
return "obj.name='" + humanKey + "'";
}
@ -226,9 +241,13 @@ public class Pac extends AbstractEntity implements Serializable {
}
public PacComponent getPacComponent(String feature) {
for (PacComponent pc : getPacComponents())
if (feature.equals(pc.getBaseComponent().getFeature()))
return pc;
if (pacComponents != null) {
for (PacComponent pc : pacComponents) {
if (feature.equals(pc.getBaseComponent().getFeature())) {
return pc;
}
}
}
return null;
}

View File

@ -115,8 +115,6 @@ public class PacModuleImpl extends AbstractModuleImpl {
UnixUser loginUser = getTransaction().getLoginUser();
if (!(entity instanceof Pac)) {
throw new AuthorisationException(loginUser, "update", entity);
// } else {
// Pac pac = (Pac) entity;
}
needsWriteAccessOn(entity, "update");
return super.update(entity);