Commit b1c9e79a by Tuomas Riihimäki

Paikkaviilausta.

1 parent 7ac50927
Showing with 133 additions and 74 deletions
......@@ -4,11 +4,12 @@
*/
package fi.insomnia.bortal.beans;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import fi.insomnia.bortal.enums.EventStatusEnum;
import fi.insomnia.bortal.facade.EventStatusFacade;
import fi.insomnia.bortal.model.EventStatus;
import javax.ejb.EJB;
import javax.ejb.Stateless;
/**
*
......@@ -24,13 +25,14 @@ public class EventStatusBean implements EventStatusBeanLocal {
EventStatus status = eventStatusFacade.findEventStatus(eventStatusEnum);
if (status == null) {
status = new EventStatus(eventStatusEnum.name());
status = new EventStatus(eventStatusEnum);
eventStatusFacade.create(status);
}
return status;
}
@Override
public EventStatus findOrCreateDefaultEventStatus() {
return findEventStatus(EventStatusEnum.getDefaultEventStatusEnum());
}
......
......@@ -69,6 +69,7 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
@Override
@RolesAllowed("USER")
public List<GroupMembership> getMembershipsAndCreations(User user) {
List<GroupMembership> ret = gmemfacade.findMemberOrCreator(user);
return ret;
}
......
......@@ -3,9 +3,13 @@ package fi.insomnia.bortal.beans;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.facade.PlaceFacade;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent;
/**
* Session Bean implementation class PlaceMapBean
......@@ -27,6 +31,7 @@ public class PlaceMapBean implements PlaceMapBeanLocal {
private EventMapFacade eventMapFacade;
@EJB
private EventBeanLocal eventbean;
private static final Logger logger = LoggerFactory.getLogger(PlaceMapBean.class);
@Override
public Long selectablePlaceCount(EventMap map) {
......@@ -43,4 +48,17 @@ public class PlaceMapBean implements PlaceMapBeanLocal {
public Long availablePlaceCount(EventMap map) {
return eventMapFacade.countAvailable(map);
}
@Override
public EventMap getActiveMap() {
LanEvent event = eventbean.getCurrentEvent();
logger.info("Current event: {}, maps {}", event, event.getEventMaps());
for (EventMap map : event.getEventMaps()) {
logger.info("Checking active map {}, is active {}", map, map.isActive());
if (map.isActive()) {
return map;
}
}
return null;
}
}
......@@ -83,7 +83,7 @@ public class ProductBean implements ProductBeanLocal {
@Override
public Product findCreditProduct() {
List<Product> ret = productFacade.findProductsByPrice(eventBean.getCurrentEvent(), BigDecimal.ONE.negate());
List<Product> ret = productFacade.findProductsByPrice(BigDecimal.ONE.negate());
Product retProd = null;
if (ret == null || ret.isEmpty()) {
retProd = new Product(eventBean.getCurrentEvent());
......
......@@ -2,7 +2,6 @@ package fi.insomnia.bortal.facade;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
......@@ -27,9 +26,6 @@ public class AccountEventFacade extends GenericFacade<EventPk, AccountEvent> {
@PersistenceContext
private EntityManager em;
@EJB
private UserFacade userfacade;
public AccountEventFacade() {
super(AccountEvent.class);
}
......
......@@ -5,12 +5,16 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.Bill_;
import fi.insomnia.bortal.model.LanEvent;
@Stateless
......@@ -22,7 +26,7 @@ public class BillFacade extends EventChildGenericFacade<Bill> {
private EntityManager em;
@EJB
private UserFacade userfacade;
private EventBeanLocal eventbean;
public BillFacade() {
super(Bill.class);
......@@ -41,9 +45,15 @@ public class BillFacade extends EventChildGenericFacade<Bill> {
// }
public Integer getBiggestBillNumber(LanEvent e) {
TypedQuery<Integer> q = getEm().createNamedQuery("Bill.findbiggestBillNumber", Integer.class);
q.setParameter("event", e);
return getSingleNullableResult(q);
// SELECT max(b.billNumber) from Bill b where b.event = :event
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Integer> cq = cb.createQuery(Integer.class);
Root<Bill> root = cq.from(Bill.class);
cq.select(cb.max(root.get(Bill_.billNumber)));
cq.where(cb.equal(root.get(Bill_.event), eventbean.getCurrentEvent()));
return getSingleNullableResult(em.createQuery(cq));
}
}
......@@ -5,7 +5,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
......@@ -26,8 +25,6 @@ public class BillLineFacade extends EventChildGenericFacade<BillLine> {
private EntityManager em;
private static final Logger logger = LoggerFactory.getLogger(BillLineFacade.class);
@EJB
private BillFacade billfacade;
public BillLineFacade() {
super(BillLine.class);
......
......@@ -4,9 +4,12 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.EventOrganiser_;
@Stateless
@LocalBean
......@@ -19,14 +22,19 @@ public class EventOrganiserFacade extends GenericFacade<Integer, EventOrganiser>
super(EventOrganiser.class);
}
@Override
protected EntityManager getEm() {
return em;
}
public EventOrganiser findByOrganisation(String organisation) {
TypedQuery<EventOrganiser> q = em.createNamedQuery("EventOrganiser.findByOrganisation", EventOrganiser.class);
q.setParameter("organisation", organisation);
return getSingleNullableResult(q);
// @NamedQuery(name = "EventOrganiser.findByOrganisation", query =
// "SELECT e FROM EventOrganiser e WHERE e.organisation = :organisation"),
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<EventOrganiser> cq = cb.createQuery(EventOrganiser.class);
Root<EventOrganiser> root = cq.from(EventOrganiser.class);
cq.where(cb.equal(root.get(EventOrganiser_.organisation), organisation));
return getSingleNullableResult(em.createQuery(cq));
}
}
......@@ -4,10 +4,13 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.enums.EventStatusEnum;
import fi.insomnia.bortal.model.EventStatus;
import fi.insomnia.bortal.model.EventStatus_;
@Stateless
@LocalBean
......@@ -20,14 +23,24 @@ public class EventStatusFacade extends GenericFacade<Integer, EventStatus> {
super(EventStatus.class);
}
@Override
protected EntityManager getEm() {
return em;
}
public EventStatus findEventStatus(EventStatusEnum eventStatusEnum) {
TypedQuery<EventStatus> q = em.createNamedQuery("EventStatus.findByStatusName", EventStatus.class);
q.setParameter("name", eventStatusEnum.name());
return getSingleNullableResult(q);
// @NamedQuery(name = "EventStatus.findByStatusName", query =
// "SELECT e FROM EventStatus e WHERE e.name = :name") })
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<EventStatus> cq = cb.createQuery(EventStatus.class);
Root<EventStatus> root = cq.from(EventStatus.class);
cq.where(cb.equal(root.get(EventStatus_.name), eventStatusEnum));
// TypedQuery<EventStatus> q =
// em.createNamedQuery("EventStatus.findByStatusName",
// EventStatus.class);
// q.setParameter("name", eventStatusEnum.name());
return getSingleNullableResult(em.createQuery(cq));
}
}
......@@ -26,7 +26,7 @@ import fi.insomnia.bortal.utilities.PasswordFunctions;
@Stateless
@LocalBean
public class GroupMembershipFacade extends GenericFacade<Integer, GroupMembership> {
public class GroupMembershipFacade extends IntegerPkGenericFacade<GroupMembership> {
private static final Logger logger = LoggerFactory.getLogger(GroupMembershipFacade.class);
@PersistenceContext
......@@ -80,7 +80,8 @@ public class GroupMembershipFacade extends GenericFacade<Integer, GroupMembershi
Root<GroupMembership> root = cq.from(GroupMembership.class);
Path<PlaceGroup> pg = root.get(GroupMembership_.placeGroup);
cq.where(cb.or(cb.equal(root.get(GroupMembership_.user), user),
cq.where(
cb.or(cb.equal(root.get(GroupMembership_.user), user),
cb.equal(pg.get(PlaceGroup_.creator), user)
),
cb.equal(pg.get(PlaceGroup_.event), eventbean.getCurrentEvent())
......
......@@ -25,7 +25,7 @@ import fi.insomnia.bortal.model.User;
@Stateless
@LocalBean
public class PlaceFacade extends GenericFacade<Integer, Place> {
public class PlaceFacade extends IntegerPkGenericFacade<Place> {
private static final Logger logger = LoggerFactory.getLogger(PlaceFacade.class);
@PersistenceContext
......
......@@ -9,7 +9,7 @@ import fi.insomnia.bortal.model.PlaceGroup;
@Stateless
@LocalBean
public class PlaceGroupFacade extends GenericFacade<Integer, PlaceGroup> {
public class PlaceGroupFacade extends IntegerPkGenericFacade<PlaceGroup> {
@PersistenceContext
private EntityManager em;
......
......@@ -24,11 +24,13 @@ public class PrintedCardFacade extends EventChildGenericFacade<PrintedCard> {
super(PrintedCard.class);
}
@Override
protected EntityManager getEm() {
return em;
}
public List<PrintedCard> findForUser(LanEvent event, User user) {
ArrayList<PrintedCard> retlist = new ArrayList<PrintedCard>();
for (PrintedCard pc : user.getPrintedCards()) {
if (pc.getId().getEventId().equals(event.getId())) {
......
......@@ -3,26 +3,30 @@ package fi.insomnia.bortal.facade;
import java.math.BigDecimal;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Product_;
@Stateless
@LocalBean
public class ProductFacade extends GenericFacade<Integer, Product> {
public class ProductFacade extends IntegerPkGenericFacade<Product> {
@PersistenceContext
private EntityManager em;
@EJB
private EventBeanLocal eventbean;
public ProductFacade() {
super(Product.class);
}
......@@ -36,21 +40,26 @@ public class ProductFacade extends GenericFacade<Integer, Product> {
throw new RuntimeException();
}
public List<Product> findProductsByPrice(LanEvent event, BigDecimal price) {
public List<Product> findProductsByPrice(BigDecimal price) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Product> cq = cb.createQuery(Product.class);
Root<Product> root = cq.from(Product.class);
cq.where(cb.equal(root.get(Product_.event), event),
cq.where(cb.equal(root.get(Product_.event), eventbean.getCurrentEvent()),
cb.equal(root.get(Product_.price), price));
return em.createQuery(cq).getResultList();
}
public List<Product> findPrepaidProducts(LanEvent e) {
TypedQuery<Product> q = em.createQuery("select p from Product p where p.id.eventId = :eventid and p.prepaid = true", Product.class);
q.setParameter("eventid", e.getId());
return q.getResultList();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Product> cq = cb.createQuery(Product.class);
Root<Product> root = cq.from(Product.class);
cq.where(cb.equal(root.get(Product_.event), eventbean.getCurrentEvent()),
cb.isTrue(root.get(Product_.prepaid)));
return em.createQuery(cq).getResultList();
}
}
......@@ -16,6 +16,8 @@ public interface PlaceMapBeanLocal {
public Long availablePlaceCount(EventMap activeMap);
public EventMap getActiveMap();
// public List<Place> findSelectedPlaces(EventMap map);
// public EventMap findMap(int i);
......
......@@ -123,7 +123,7 @@
<entity>
<entity-name>fi.insomnia.bortal.model.EventMap</entity-name>
<entity-width>120</entity-width>
<entity-height>208</entity-height>
<entity-height>30</entity-height>
<entity-X-Coordinate>610</entity-X-Coordinate>
<entity-Y-Coordinate>1595</entity-Y-Coordinate>
<primary-collapsed>false</primary-collapsed>
......@@ -178,7 +178,7 @@
<entity>
<entity-name>fi.insomnia.bortal.model.PlaceGroup</entity-name>
<entity-width>120</entity-width>
<entity-height>268</entity-height>
<entity-height>30</entity-height>
<entity-X-Coordinate>1065</entity-X-Coordinate>
<entity-Y-Coordinate>1486</entity-Y-Coordinate>
<primary-collapsed>false</primary-collapsed>
......@@ -374,22 +374,22 @@
</entity>
<entity>
<entity-name>fi.insomnia.bortal.model.PollAnswer</entity-name>
<entity-name>fi.insomnia.bortal.model.User</entity-name>
<entity-width>120</entity-width>
<entity-height>30</entity-height>
<entity-X-Coordinate>1315</entity-X-Coordinate>
<entity-Y-Coordinate>1423</entity-Y-Coordinate>
<entity-X-Coordinate>1132</entity-X-Coordinate>
<entity-Y-Coordinate>994</entity-Y-Coordinate>
<primary-collapsed>false</primary-collapsed>
<relation-collapsed>false</relation-collapsed>
<basic-collapsed>false</basic-collapsed>
</entity>
<entity>
<entity-name>fi.insomnia.bortal.model.User</entity-name>
<entity-name>fi.insomnia.bortal.model.PollAnswer</entity-name>
<entity-width>120</entity-width>
<entity-height>30</entity-height>
<entity-X-Coordinate>1132</entity-X-Coordinate>
<entity-Y-Coordinate>994</entity-Y-Coordinate>
<entity-X-Coordinate>1315</entity-X-Coordinate>
<entity-Y-Coordinate>1423</entity-Y-Coordinate>
<primary-collapsed>false</primary-collapsed>
<relation-collapsed>false</relation-collapsed>
<basic-collapsed>false</basic-collapsed>
......
......@@ -11,8 +11,6 @@ import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
......@@ -22,10 +20,6 @@ import javax.persistence.Table;
*/
@Entity
@Table(name = "event_organiser")
@NamedQueries({
@NamedQuery(name = "EventOrganiser.findAll", query = "SELECT e FROM EventOrganiser e"),
@NamedQuery(name = "EventOrganiser.findByOrganisation", query = "SELECT e FROM EventOrganiser e WHERE e.organisation = :organisation"),
@NamedQuery(name = "EventOrganiser.findByBundleCountry", query = "SELECT e FROM EventOrganiser e WHERE e.bundleCountry = :bundleCountry") })
public class EventOrganiser extends GenericEntity {
private static final long serialVersionUID = 1L;
......
......@@ -9,25 +9,31 @@ import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import fi.insomnia.bortal.enums.EventStatusEnum;
/**
*
*/
@Entity
@Table(name = "event_status")
// , uniqueConstraints = { @UniqueConstraint(columnNames = { "status_name" }) })
@NamedQueries({
@NamedQuery(name = "EventStatus.findAll", query = "SELECT e FROM EventStatus e"),
@NamedQuery(name = "EventStatus.findByStatusName", query = "SELECT e FROM EventStatus e WHERE e.name = :name") })
// @NamedQueries({
// @NamedQuery(name = "EventStatus.findAll", query =
// "SELECT e FROM EventStatus e"),
// @NamedQuery(name = "EventStatus.findByStatusName", query =
// "SELECT e FROM EventStatus e WHERE e.name = :name") })
public class EventStatus extends GenericEntity {
private static final long serialVersionUID = 1L;
@Column(name = "status_name", nullable = false, unique = true)
private String name;
@Enumerated(EnumType.STRING)
private EventStatusEnum name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "status")
private List<LanEvent> events;
......@@ -36,16 +42,16 @@ public class EventStatus extends GenericEntity {
super();
};
public EventStatus(String name) {
public EventStatus(EventStatusEnum name) {
super();
this.name = name;
}
public String getName() {
public EventStatusEnum getName() {
return name;
}
public void setName(String statusName) {
public void setName(EventStatusEnum statusName) {
this.name = statusName;
}
......
......@@ -19,7 +19,7 @@
<h1>edit:</h1>
<h:form id="placeEdit">
<h:inputHidden value="#{placeView.place.id.id}" />
<h:inputHidden value="#{placeView.place.id}" />
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['place.name']}:" />
<h:inputText value="#{placeView.place.name}" />
......@@ -140,15 +140,16 @@
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['place.name']}" />
<h:outputText value="${i18n['placegroup.placename']}" />
</f:facet>
<h:link outcome="/place/edit" value="#{place.name}">
<f:param name="placeid" value="#{place.id.id}" />
<f:param name="placeid" value="#{place.id}" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/user/edit">
<h:outputText rendered="#{empty place.placeReserver.user}" value="#{i18n['place.noReserver']}" />
<h:link rendered="#{!empty place.placeReserver.user}" outcome="/user/edit">
<h:outputText value="#{place.placeReserver.user.wholeName}" />
(<h:outputText value="#{place.placeReserver.user.nick}" />)
<f:param name="userid" value="#{place.placeReserver.user.id}" />
......
......@@ -11,7 +11,7 @@
<h1>#{i18n['editplacegroup.header']}</h1>
<h:form id="placegroupform">
<h:inputHidden value="#{placegroupView.group.id.id}" />
<h:inputHidden value="#{placegroupView.group.id}" />
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['placegroup.name']}:" />
......@@ -67,7 +67,7 @@
<h:panelGroup rendered="#{!empty placegroupView.place}">
<h2>#{i18n['placegroupView.editplace']}</h2>
<h:form id="placeEdit">
<h:inputHidden value="#{placegroupView.place.id.id}" />
<h:inputHidden value="#{placegroupView.place.id}" />
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['place.name']}:" />
<h:inputText value="#{placegroupView.place.name}" />
......
......@@ -22,7 +22,7 @@
<f:facet name="header">
<h:outputText value="#{i18n['place.id']}" />
</f:facet>
<h:outputText value="#{place.id.id}" />
<h:outputText value="#{place.id}" />
</h:column>
<h:column>
<f:facet name="header">
......
......@@ -122,6 +122,8 @@ place.name=Nimi
place.product=Tuote
place.releasetime=Vapautusaika
place.width=Leveys
place.groupremove=Poista paikka paikkaryhmst
place.noReserver=Ei liitetty kyttjn
place.membership=Yhdistetty k\u00e4ytt\u00e4j\u00e4
placeSelect.legend.blue=Oma valittu paikka
placeSelect.legend.green=Oma ostettu paikka
......
......@@ -17,7 +17,6 @@ import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.PlaceMapBeanLocal;
import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.web.annotations.SelectedUser;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
......@@ -78,14 +77,11 @@ public class MapView extends GenericCDIView {
@Produces
public EventMap getActiveMap() {
if (activeMap == null) {
LanEvent event = eventBean.getCurrentEvent();
for (EventMap map : event.getEventMaps()) {
if (map.isActive()) {
activeMap = map;
break;
}
}
activeMap = placeMapBean.getActiveMap();
}
return activeMap;
}
......
......@@ -46,6 +46,7 @@ public class PlaceView extends GenericCDIView {
@Inject
@SelectedUser
private User user;
@Inject
private EventMap currentMap;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!