From 5056e46610886dd4c4ed147959e9e0fc6568ec15 Mon Sep 17 00:00:00 2001 From: Peter Hormanns <peter.hormanns@jalin.de> 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 ++++++++++++++++++++++--- hsarback/src/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 @@ 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) 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 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.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 @@ 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()) { @@ -107,6 +112,16 @@ today, null); pacComponents.add(pacComp); } + } + + @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) { @@ -226,9 +241,13 @@ } 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 @@ 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); -- Gitblit v1.9.3