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;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;
......@@ -25,12 +26,15 @@ public interface QueueBeanLocal {
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);
......@@ -40,21 +44,16 @@ public interface QueueBeanLocal {
int getDefaultTimeoutMin();
MapQueueI getMapQueue(EventMap map);
public interface MapQueueI {
ConcurrentSkipListSet<MapReservationQueueEntry> getQueue();
int getMinimumSlotsInQueue();
Set<EventUser> getReserving();
void setMinimumSlotsInQueue(int minimumSlotsInQueue);
MapReservationQueueEntry getEntry(EventUser u);
}
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
*
*/
private static final long serialVersionUID = -1529588850152306791L;
private static final Logger logger = LoggerFactory.getLogger(MapReservationQueueEntry.class);
@Column()
@JoinColumn(nullable = false)
......@@ -46,41 +47,12 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl
private Date reservationTimeout;
@Transient
private Date seenTime;
private Date seenTime = new Date();
/** Initialized in bean and repopulated when fetching from database */
@Transient
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() {
return queue;
}
......@@ -127,7 +99,7 @@ public class MapReservationQueueEntry extends GenericEntity implements Comparabl
return getPlaceslotcount().compareTo(o.getPlaceslotcount());
}
private Integer getPlaceslotcount() {
public Integer getPlaceslotcount() {
if (placeslotcount == null) {
placeslotcount = 0;
}
......
......@@ -3,6 +3,7 @@ package fi.codecrew.moya.web.cdiview.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
......@@ -17,6 +18,7 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.beans.QueueBeanLocal;
import fi.codecrew.moya.beans.QueueBeanLocal.MapQueueI;
import fi.codecrew.moya.enums.apps.MapPermission;
import fi.codecrew.moya.exceptions.BortalCatchableException;
import fi.codecrew.moya.model.EventMap;
......@@ -89,13 +91,13 @@ public class AjaxMapView extends GenericCDIView {
EventUser u = userview.getSelectedUser();
EventMap map = initMap();
List<PlaceSlot> usersPlaceslots = placebean.getPlaceslots(u);
if (usersPlaceslots.isEmpty()) {
MapQueueI mapqueue = quebean.getMapQueue(map);
if (usersPlaceslots == null || usersPlaceslots.isEmpty()) {
logger.info("There are no placeslots available for user");
map = null;
super.navihandler.forward("/shop/createBill?faces-redirect=true");
} else if (usersPlaceslots.size() < quebean.getMinimumSlotsInQueue()) {
} else if (usersPlaceslots.size() < mapqueue.getMinimumSlotsInQueue()) {
map = null;
super.navihandler.forward("/neomap/notenoughslots?faces-redirect=true");
} else {
......@@ -107,7 +109,7 @@ public class AjaxMapView extends GenericCDIView {
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) {
if (!prodmap.containsKey(p.getProduct())) {
prodmap.put(p.getProduct(), new Slotcounter(p.getProduct()));
......@@ -135,16 +137,16 @@ public class AjaxMapView extends GenericCDIView {
return queEnabled;
}
public String enterQueue()
{
logger.info("Entering queue");
if (isQueueEnabled())
queueEntry = quebean.enterQueue(initMap(), userview.getSelectedUser());
else {
logger.warn("QueueNot enabled. Not entering queue");
}
return null;
}
// public String enterQueue()
// {
// logger.info("Entering queue");
// if (isQueueEnabled())
// queueEntry = quebean.enterQueue(initMap(), userview.getSelectedUser());
// else {
// logger.warn("QueueNot enabled. Not entering queue");
// }
// return null;
// }
private EventMap initMap() {
if (map == null && mapId != null) {
......
......@@ -6,7 +6,6 @@ import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.enterprise.context.RequestScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named;
......@@ -39,7 +38,7 @@ public class QueueManageView extends GenericCDIView {
private EventMap map;
private MapQueueI queue;
private fi.codecrew.moya.beans.QueueBeanLocal.MapQueueI queue;
private String username;
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!