Commit 923d4f4f by Tuomas Riihimäki

Automatically release slot when place is released by timeout

1 parent a680baac
......@@ -40,6 +40,7 @@ import fi.codecrew.moya.model.EventMap_;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.model.PlaceSlot;
import fi.codecrew.moya.model.Place_;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.Product_;
......@@ -51,7 +52,10 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
private static final Logger logger = LoggerFactory.getLogger(PlaceFacade.class);
@EJB
EventBeanLocal eventBean;
private EventBeanLocal eventBean;
@EJB
private PlaceSlotFacade placeslotfacade;
public PlaceFacade() {
......@@ -74,6 +78,12 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
for (Place p : q.getResultList()) {
logger.debug("Releasing place {} at automagic timed place check.", p);
if (p.checkReleased()) {
PlaceSlot slot = placeslotfacade.findSlotForPlace(p);
if (slot != null) {
slot.setPlace(null);
slot.setUsed(null);
}
++updated;
}
}
......@@ -159,23 +169,19 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
}
public Long countSelectable(Product product) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.product), product),
cb.isNull(root.get(Place_.releaseTime)),
cb.isNull(root.get(Place_.group)),
cb.isFalse(root.get(Place_.disabled))
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.product), product),
cb.isNull(root.get(Place_.releaseTime)),
cb.isNull(root.get(Place_.group)),
cb.isFalse(root.get(Place_.disabled))
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
public Long findCountForProduct(Product product) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
......@@ -186,14 +192,10 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
cq.where(
cb.equal(root.get(Place_.product), product),
cb.isFalse(root.get(Place_.disabled))
);
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
public Long countAvailable(EventMap map) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!