Commit 8f96083b by Tuomas Riihimäki

Initial version of placemap rest api

1 parent 608b617d
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package fi.codecrew.moya.model; package fi.codecrew.moya.model;
import java.awt.Color;
import java.util.Calendar; import java.util.Calendar;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
...@@ -104,6 +105,40 @@ public class Place extends GenericEntity implements Comparable<Place> { ...@@ -104,6 +105,40 @@ public class Place extends GenericEntity implements Comparable<Place> {
@ManyToOne @ManyToOne
private EventUser currentUser; private EventUser currentUser;
public static enum PlaceState {
FREE, DISABLED, LOCKED, TEMP_RESERVED_FORME,
MY_PLACE, RESERVED
}
public PlaceState getState(EventUser user)
{
PlaceState ret = PlaceState.FREE;
if (isDisabled()) {
ret = PlaceState.DISABLED;
} else {
if (!isBuyable()) {
ret = PlaceState.LOCKED;
}
if (isTaken()) {
ret = PlaceState.RESERVED;
// logger.debug("Setting place Reserved {}", p);
}
}
if (user != null) {
if (isReservedFor(user)) {
ret = PlaceState.TEMP_RESERVED_FORME;
} else if (user.equals(getCurrentUser())
|| (getGroup() != null && user.equals(getGroup().getCreator()))
|| (getPlaceReserver() != null && user.equals(getPlaceReserver().getUser()))) {
ret = PlaceState.MY_PLACE;
}
}
return ret;
}
public Place() { public Place() {
super(); super();
} }
...@@ -295,7 +330,6 @@ public class Place extends GenericEntity implements Comparable<Place> { ...@@ -295,7 +330,6 @@ public class Place extends GenericEntity implements Comparable<Place> {
this.disabled = disabled; this.disabled = disabled;
} }
/** /**
* Note: this class has a natural ordering that is inconsistent with equals. * Note: this class has a natural ordering that is inconsistent with equals.
*/ */
......
package fi.codecrew.moya.rest.placemap.v1;
import java.util.ArrayList;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.codecrew.moya.model.EventMap;
import fi.codecrew.moya.model.Place;
import fi.codecrew.moya.rest.pojo.placemap.SimplePlacePojo;
import fi.codecrew.moya.rest.pojo.placemap.SimplePlacelistRoot;
@RequestScoped
@Path("/placemap/v1")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON + "; charset=UTF-8" })
public class PlacemapRestViewV1 {
@EJB
private PlaceBeanLocal placebean;
@GET
@Path("{id}/places")
public SimplePlacelistRoot getPlaces(@PathParam("id") Integer mapId)
{
EventMap map = placebean.findMap(mapId);
return SimplePlacelistRoot.wrap(map.getPlaces(), null);
}
}
package fi.codecrew.moya.rest.pojo.placemap;
import javax.xml.bind.annotation.XmlElement;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Place;
public class SimplePlacePojo {
private Place place;
private EventUser user;
public SimplePlacePojo(Place place, EventUser user) {
super();
this.place = place;
this.user = user;
}
public SimplePlacePojo() {
super();
}
@XmlElement(name = "id")
public Integer getId() {
return place.getId();
}
@XmlElement(name = "name")
public String getName() {
return place.getName();
}
@XmlElement(name = "state")
public String getState() {
String ret = null;
switch (place.getState(user))
{
case DISABLED:
ret = "D";
break;
case FREE:
ret = "F";
break;
case LOCKED:
ret = "L";
break;
case MY_PLACE:
ret = "P";
break;
case RESERVED:
ret = "R";
break;
case TEMP_RESERVED_FORME:
ret = "T";
break;
default:
break;
}
return ret;
}
@XmlElement(name = "x")
public Integer getX() {
return place.getMapX();
}
@XmlElement(name = "y")
public Integer getY() {
return place.getMapY();
}
@XmlElement(name = "w")
public Integer getWidth() {
return place.getWidth();
}
@XmlElement(name = "h")
public Integer getHeight() {
return place.getHeight();
}
}
package fi.codecrew.moya.rest.pojo.placemap;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Place;
@XmlRootElement
public class SimplePlacelistRoot {
private List<SimplePlacePojo> places;
public List<SimplePlacePojo> getPlaces() {
return places;
}
public void setPlaces(List<SimplePlacePojo> places) {
this.places = places;
}
public static SimplePlacelistRoot wrap(List<Place> places, EventUser user)
{
SimplePlacelistRoot ret = new SimplePlacelistRoot();
ArrayList<SimplePlacePojo> placeList = new ArrayList<SimplePlacePojo>();
ret.setPlaces(placeList);
for (Place p : places) {
placeList.add(new SimplePlacePojo(p, user));
}
return ret;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!