From 5056e46610886dd4c4ed147959e9e0fc6568ec15 Mon Sep 17 00:00:00 2001 From: Peter Hormanns Date: Mon, 21 Jan 2013 13:38:31 +0100 Subject: [PATCH] fix or-mapping of pac-components --- hsarback/src/de/hsadmin/mods/pac/BasePac.java | 1 + hsarback/src/de/hsadmin/mods/pac/Pac.java | 25 ++++++++++++++++--- .../de/hsadmin/mods/pac/PacModuleImpl.java | 2 -- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/hsarback/src/de/hsadmin/mods/pac/BasePac.java b/hsarback/src/de/hsadmin/mods/pac/BasePac.java index a58a1e4..2698b4b 100644 --- a/hsarback/src/de/hsadmin/mods/pac/BasePac.java +++ b/hsarback/src/de/hsadmin/mods/pac/BasePac.java @@ -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 components; @OneToMany(fetch = FetchType.LAZY, cascade = ALL) diff --git a/hsarback/src/de/hsadmin/mods/pac/Pac.java b/hsarback/src/de/hsadmin/mods/pac/Pac.java index 746811c..d724468 100644 --- a/hsarback/src/de/hsadmin/mods/pac/Pac.java +++ b/hsarback/src/de/hsadmin/mods/pac/Pac.java @@ -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(); 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; } diff --git a/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java b/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java index 1ed2d7d..c23525e 100644 --- a/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java +++ b/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java @@ -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);