diff --git a/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java b/src/main/java/de/dpunkt/myaktion/services/CampaignServiceBean.java index 430888ac30682e74c5c8bb3789fb086911d966c7..1cd029cf3177054862fa6c6f8c44b3c7340c5d0b 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; }