Skip to content
Snippets Groups Projects
Commit a14fdc0c authored by Julian Horner's avatar Julian Horner
Browse files

Finish chapter 9

parent 3e1f3b8c
Branches
No related tags found
No related merge requests found
......@@ -25,6 +25,7 @@ import javax.persistence.Transient;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
* @author Julian
......@@ -36,6 +37,7 @@ import javax.validation.constraints.Size;
query = "SELECT a FROM Campaign a ORDER BY a.name"),
@NamedQuery(name = Campaign.getAmountDonatedSoFar,
query = "SELECT SUM(d.amount) FROM Donation d WHERE d.campaign = :campaign") })
@XmlRootElement
@Entity
@EntityListeners(EntityCreationListener.class)
public class Campaign extends DateEntity {
......
......@@ -23,7 +23,7 @@ public class CampaignResource {
@GET
@Path("/list")
@Produces(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public List<Campaign> getAllCampaigns() {
List<Campaign> allCampaigns = campaignService.getAllCampaigns();
......
......@@ -12,11 +12,13 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import de.dpunkt.myaktion.model.Account;
import de.dpunkt.myaktion.model.Donation;
import de.dpunkt.myaktion.model.Donation.Status;
import de.dpunkt.myaktion.services.DonationService;
import de.dpunkt.myaktion.services.exceptions.ObjectNotFoundException;
@Path("/")
public class DonationResource {
......@@ -38,8 +40,7 @@ public class DonationResource {
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void addDonation(@PathParam(value = "campaignId") Long campaignId,
@FormParam(value = "donorName") String donorName,
@FormParam(value = "amount") Double amount,
@FormParam(value = "iban") String iban,
@FormParam(value = "amount") Double amount, @FormParam(value = "iban") String iban,
@FormParam(value = "nameOfBank") String nameOfBank,
@FormParam(value = "receiptRequested") Boolean receiptRequested) {
Donation donation = new Donation();
......@@ -57,4 +58,18 @@ public class DonationResource {
donationService.addDonation(campaignId, donation);
}
@GET
@Path("/donation/list/{campaignId}")
@Produces(MediaType.APPLICATION_JSON)
public Response getDonationListPublic(@PathParam(value = "campaignId") Long campaignId) {
List<Donation> donations;
try {
donations = donationService.getDonationListPublic(campaignId);
return Response.ok(donations).build();
} catch (ObjectNotFoundException e) {
return Response.status(javax.ws.rs.core.Response.Status.NOT_FOUND).build();
}
}
}
......@@ -8,6 +8,7 @@ package de.dpunkt.myaktion.services;
import java.util.List;
import de.dpunkt.myaktion.model.Donation;
import de.dpunkt.myaktion.services.exceptions.ObjectNotFoundException;
/**
* @author Julian
......@@ -21,5 +22,7 @@ public interface DonationService {
void transferDonations();
List<Donation> getDonationListPublic(Long campaignId) throws ObjectNotFoundException;
//----------------------------------------------------------------------------------------------
}
\ No newline at end of file
......@@ -6,8 +6,10 @@
package de.dpunkt.myaktion.services;
import java.util.List;
import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
......@@ -19,6 +21,7 @@ import javax.persistence.TypedQuery;
import de.dpunkt.myaktion.model.Campaign;
import de.dpunkt.myaktion.model.Donation;
import de.dpunkt.myaktion.model.Donation.Status;
import de.dpunkt.myaktion.services.exceptions.ObjectNotFoundException;
import de.dpunkt.myaktion.util.Log.TecLog;
/**
......@@ -72,5 +75,25 @@ public class DonationServiceBean implements DonationService {
logger.log(Level.INFO, "log.transferDonation.done", new Object[] { donations.size() });
}
@Override
@PermitAll
public List<Donation> getDonationListPublic(Long campaignId) throws ObjectNotFoundException {
Campaign managedCampaign = entityManager.find(Campaign.class, campaignId);
if (managedCampaign == null) {
throw new ObjectNotFoundException();
}
List<Donation> donations = managedCampaign.getDonations();
final Function<Donation, Donation> donationFilter = donation -> {
Donation filtered = new Donation();
filtered.setAmount(donation.getAmount());
filtered.setDonorName(donation.getDonorName());
return filtered;
};
return donations.stream().map(donationFilter).collect(Collectors.toList());
}
//----------------------------------------------------------------------------------------------
}
package de.dpunkt.myaktion.services.exceptions;
public class ObjectNotFoundException extends Exception {
private static final long serialVersionUID = 879959260339550219L;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment