From 70e4a3edf44fdb80e74e8bd4de580d60f348bdf2 Mon Sep 17 00:00:00 2001 From: Julian Horner <julianhorner@web.de> Date: Thu, 23 Jul 2020 14:11:42 +0200 Subject: [PATCH] Query donation sum with OGM session --- .../services/CampaignServiceBean.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java index 430888a..1cd029c 100644 --- a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java +++ b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java @@ -5,7 +5,6 @@ package de.dpunkt.myaktion.services; -import java.math.BigDecimal; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -18,6 +17,8 @@ import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; +import org.hibernate.ogm.OgmSession; + import de.dpunkt.myaktion.model.Campaign; import de.dpunkt.myaktion.model.Organizer; import de.dpunkt.myaktion.util.Log.TecLog; @@ -25,7 +26,7 @@ import de.dpunkt.myaktion.util.Log.TecLog; /** * @author Julian */ -//@RolesAllowed("Organizer") +@RolesAllowed("Organizer") @Stateless public class CampaignServiceBean implements CampaignService { // ---------------------------------------------------------------------------------------------- @@ -47,12 +48,15 @@ public class CampaignServiceBean implements CampaignService { TypedQuery<Campaign> query = entityManager.createNamedQuery(Campaign.findByOrganizer, Campaign.class); query.setParameter("organizer", getLoggedinOrganizer()); + List<Campaign> campaigns = query.getResultList(); - campaigns.forEach( - campaign -> campaign.setAmountDonatedSoFar(getAmountDonatedSoFar(campaign))); + for (Campaign campaign : campaigns) { + campaign.setAmountDonatedSoFar(getAmountDonatedSoFar(campaign)); + } - logger.log(Level.INFO, "Loaded all campaign entities with query " + Campaign.findAll); + logger.log(Level.INFO, + "Loaded all campaign entities with query " + Campaign.findByOrganizer); return campaigns; } @@ -62,6 +66,7 @@ public class CampaignServiceBean implements CampaignService { @Override public Campaign addCampaign(Campaign campaign) { Organizer organizer = getLoggedinOrganizer(); + campaign.setOrganizer(organizer); entityManager.persist(campaign); @@ -98,14 +103,13 @@ public class CampaignServiceBean implements CampaignService { // ---------------------------------------------------------------------------------------------- - private BigDecimal getAmountDonatedSoFar(Campaign campaign) { - TypedQuery<BigDecimal> query = - entityManager.createNamedQuery(Campaign.getAmountDonatedSoFar, BigDecimal.class); - query.setParameter("campaign", campaign); + private Double getAmountDonatedSoFar(Campaign campaign) { + OgmSession session = entityManager.unwrap(OgmSession.class); - BigDecimal result = query.getSingleResult(); + Double result = session.createNamedQuery(Campaign.getAmountDonatedSoFar, Double.class) + .setParameter("campaign", campaign).uniqueResult(); if (result == null) - result = BigDecimal.ZERO; + result = 0d; return result; } @@ -113,9 +117,11 @@ public class CampaignServiceBean implements CampaignService { // ---------------------------------------------------------------------------------------------- private Organizer getLoggedinOrganizer() { - String organizerEmail = sessionContext.getCallerPrincipal().getName(); + String organizerEmail = sessionContext.getCallerPrincipal().getName(); + Organizer organizer = entityManager.createNamedQuery(Organizer.findByEmail, Organizer.class) .setParameter("email", organizerEmail).getSingleResult(); + return organizer; } -- GitLab