Commit 938048d9 by Tuomas Riihimäki

Map queue stuff..

Queues should not be global, but map specific
1 parent 80f50ff5
package fi.codecrew.moya.beans; package fi.codecrew.moya.beans;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -25,12 +26,15 @@ public interface QueueBeanLocal { ...@@ -25,12 +26,15 @@ public interface QueueBeanLocal {
MapReservationQueueEntry remove(EventMap map, EventUser user); MapReservationQueueEntry remove(EventMap map, EventUser user);
int getMinimumSlotsInQueue(); Date getReservationTimeout(EventMap map);
void setMinimumSlotsInQueue(int minimumSlotsInQueue); MapQueueI getMapQueue(EventMap map);
public interface MapQueueI {
Date getReservationTimeout(EventMap map); Collection<MapReservationQueueEntry> getQueue();
Collection<EventUser> getReserving();
void setReservingSize(int reservingSize); void setReservingSize(int reservingSize);
...@@ -40,21 +44,16 @@ public interface QueueBeanLocal { ...@@ -40,21 +44,16 @@ public interface QueueBeanLocal {
int getDefaultTimeoutMin(); int getDefaultTimeoutMin();
MapQueueI getMapQueue(EventMap map); int getMinimumSlotsInQueue();
public interface MapQueueI {
ConcurrentSkipListSet<MapReservationQueueEntry> getQueue();
Set<EventUser> getReserving(); void setMinimumSlotsInQueue(int minimumSlotsInQueue);
MapReservationQueueEntry getEntry(EventUser u); MapReservationQueueEntry getEntry(EventUser u);
} }
void forceAddToReserving(EventMap map, EventUser u, Date time); void forceAddToReserving(EventMap map, EventUser u, Date time);
void forceRemove(EventMap e, EventUser u);
void forceRemove(EventMap e, EventUser u);
} }
...@@ -31,6 +31,7 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl ...@@ -31,6 +31,7 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl
* *
*/ */
private static final long serialVersionUID = -1529588850152306791L; private static final long serialVersionUID = -1529588850152306791L;
private static final Logger logger = LoggerFactory.getLogger(MapReservationQueueEntry.class);
@Column() @Column()
@JoinColumn(nullable = false) @JoinColumn(nullable = false)
...@@ -46,41 +47,12 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl ...@@ -46,41 +47,12 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl
private Date reservationTimeout; private Date reservationTimeout;
@Transient @Transient
private Date seenTime; private Date seenTime = new Date();
/** Initialized in bean and repopulated when fetching from database */
@Transient @Transient
private Integer placeslotcount; private Integer placeslotcount;
// @OneToOne()
// @JoinColumn(nullable = true)
// private MapReservationQueueEntry previous;
//
// @OneToOne(mappedBy = "previous")
// private MapReservationQueueEntry next;
private static final Logger logger = LoggerFactory.getLogger(MapReservationQueueEntry.class);
// public void removeFromQueue() {
// if (previous != null) {
// if (!this.equals(previous.getNext())) {
// logger.warn("WTF!! Previous entrys next value does not match this! This '{}', Previous '{}', Next of previous '{}'", this, getPrevious(), getPrevious().getNext());
// }
// previous.setNext(next);
// previous = null;
// next = null;
// }
// }
//
// public void addToQueue(MapReservationQueueEntry previous) {
// if (previous != null) {
// next = previous.getNext();
// previous.setNext(this);
// if (next != null) {
// next.setPrevious(this);
// }
// }
// }
public MapReservationQueue getQueue() { public MapReservationQueue getQueue() {
return queue; return queue;
} }
...@@ -127,7 +99,7 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl ...@@ -127,7 +99,7 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl
return getPlaceslotcount().compareTo(o.getPlaceslotcount()); return getPlaceslotcount().compareTo(o.getPlaceslotcount());
} }
private Integer getPlaceslotcount() { public Integer getPlaceslotcount() {
if (placeslotcount == null) { if (placeslotcount == null) {
placeslotcount = 0; placeslotcount = 0;
} }
......
...@@ -3,6 +3,7 @@ package fi.codecrew.moya.web.cdiview.map; ...@@ -3,6 +3,7 @@ package fi.codecrew.moya.web.cdiview.map;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
...@@ -17,6 +18,7 @@ import fi.codecrew.moya.beans.EventBeanLocal; ...@@ -17,6 +18,7 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal; import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal; import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.QueueBeanLocal; import fi.codecrew.moya.beans.QueueBeanLocal;
import fi.codecrew.moya.beans.QueueBeanLocal.MapQueueI;
import fi.codecrew.moya.enums.apps.MapPermission; import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.exceptions.BortalCatchableException; import fi.codecrew.moya.exceptions.BortalCatchableException;
import fi.codecrew.moya.model.EventMap; import fi.codecrew.moya.model.EventMap;
...@@ -89,13 +91,13 @@ public class AjaxMapView extends GenericCDIView { ...@@ -89,13 +91,13 @@ public class AjaxMapView extends GenericCDIView {
EventUser u = userview.getSelectedUser(); EventUser u = userview.getSelectedUser();
EventMap map = initMap(); EventMap map = initMap();
List<PlaceSlot> usersPlaceslots = placebean.getPlaceslots(u); List<PlaceSlot> usersPlaceslots = placebean.getPlaceslots(u);
MapQueueI mapqueue = quebean.getMapQueue(map);
if (usersPlaceslots.isEmpty()) { if (usersPlaceslots == null || usersPlaceslots.isEmpty()) {
logger.info("There are no placeslots available for user"); logger.info("There are no placeslots available for user");
map = null; map = null;
super.navihandler.forward("/shop/createBill?faces-redirect=true"); super.navihandler.forward("/shop/createBill?faces-redirect=true");
} else if (usersPlaceslots.size() < quebean.getMinimumSlotsInQueue()) { } else if (usersPlaceslots.size() < mapqueue.getMinimumSlotsInQueue()) {
map = null; map = null;
super.navihandler.forward("/neomap/notenoughslots?faces-redirect=true"); super.navihandler.forward("/neomap/notenoughslots?faces-redirect=true");
} else { } else {
...@@ -107,7 +109,7 @@ public class AjaxMapView extends GenericCDIView { ...@@ -107,7 +109,7 @@ public class AjaxMapView extends GenericCDIView {
private static Collection<Slotcounter> countPlaceslots(List<PlaceSlot> slots) private static Collection<Slotcounter> countPlaceslots(List<PlaceSlot> slots)
{ {
HashMap<Product, Slotcounter> prodmap = new HashMap<Product, Slotcounter>(); Map<Product, Slotcounter> prodmap = new HashMap<>();
for (PlaceSlot p : slots) { for (PlaceSlot p : slots) {
if (!prodmap.containsKey(p.getProduct())) { if (!prodmap.containsKey(p.getProduct())) {
prodmap.put(p.getProduct(), new Slotcounter(p.getProduct())); prodmap.put(p.getProduct(), new Slotcounter(p.getProduct()));
...@@ -135,16 +137,16 @@ public class AjaxMapView extends GenericCDIView { ...@@ -135,16 +137,16 @@ public class AjaxMapView extends GenericCDIView {
return queEnabled; return queEnabled;
} }
public String enterQueue() // public String enterQueue()
{ // {
logger.info("Entering queue"); // logger.info("Entering queue");
if (isQueueEnabled()) // if (isQueueEnabled())
queueEntry = quebean.enterQueue(initMap(), userview.getSelectedUser()); // queueEntry = quebean.enterQueue(initMap(), userview.getSelectedUser());
else { // else {
logger.warn("QueueNot enabled. Not entering queue"); // logger.warn("QueueNot enabled. Not entering queue");
} // }
return null; // return null;
} // }
private EventMap initMap() { private EventMap initMap() {
if (map == null && mapId != null) { if (map == null && mapId != null) {
......
...@@ -6,7 +6,6 @@ import java.util.List; ...@@ -6,7 +6,6 @@ import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.enterprise.context.RequestScoped;
import javax.faces.model.ListDataModel; import javax.faces.model.ListDataModel;
import javax.inject.Named; import javax.inject.Named;
...@@ -39,7 +38,7 @@ public class QueueManageView extends GenericCDIView { ...@@ -39,7 +38,7 @@ public class QueueManageView extends GenericCDIView {
private EventMap map; private EventMap map;
private MapQueueI queue; private fi.codecrew.moya.beans.QueueBeanLocal.MapQueueI queue;
private String username; private String username;
private Date time = new Date(System.currentTimeMillis() + 1000 * 60 * 60); private Date time = new Date(System.currentTimeMillis() + 1000 * 60 * 60);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!