Commit 0e8b30ed by Liv Haapala

Adding reservable boolean to place and added feature to map that users can't sel…

…ect places that have reservable set to false. Also fixed a bug in HttpRequests so that they fetch domain from Host headers correctly and not only when the host header is first header.
1 parent d99b8b82
...@@ -14,6 +14,8 @@ import javax.ejb.Stateless; ...@@ -14,6 +14,8 @@ import javax.ejb.Stateless;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.http.HttpHeaders;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.Principal; import java.security.Principal;
import java.util.Base64; import java.util.Base64;
...@@ -32,7 +34,7 @@ public class AuthHelperBean implements AuthHelperBeanLocal { ...@@ -32,7 +34,7 @@ public class AuthHelperBean implements AuthHelperBeanLocal {
@Override @Override
public String parseHostname(HttpServletRequest httpRequest) { public String parseHostname(HttpServletRequest httpRequest) {
StringBuffer url = httpRequest.getRequestURL(); StringBuffer url = httpRequest.getRequestURL();
String requestHostHeader = httpRequest.getHeader("host"); String requestHostHeader = httpRequest.getHeader(HttpHeaders.HOST);
String hostname = "localhost"; String hostname = "localhost";
if (requestHostHeader != null) { if (requestHostHeader != null) {
hostname = requestHostHeader.split(":")[0]; hostname = requestHostHeader.split(":")[0];
......
...@@ -63,9 +63,15 @@ public class Place extends GenericEntity implements Comparable<Place> { ...@@ -63,9 +63,15 @@ public class Place extends GenericEntity implements Comparable<Place> {
@BatchFetch(BatchFetchType.EXISTS) @BatchFetch(BatchFetchType.EXISTS)
private GroupMembership placeReserver; private GroupMembership placeReserver;
// define that user can buy place
@Column(name = "buyable", nullable = false) @Column(name = "buyable", nullable = false)
private boolean buyable = true; private boolean buyable = true;
// define that user can reserve place from map (does not affect to buyable)
@Column(name = "reservable", nullable = false)
private boolean reservable = true;
// define that user can see place at map (disabled places are not buyable)
@Column(nullable = false) @Column(nullable = false)
private boolean disabled = false; private boolean disabled = false;
/** /**
...@@ -112,8 +118,8 @@ public class Place extends GenericEntity implements Comparable<Place> { ...@@ -112,8 +118,8 @@ public class Place extends GenericEntity implements Comparable<Place> {
if (isDisabled()) { if (isDisabled()) {
ret = PlaceState.DISABLED; ret = PlaceState.DISABLED;
} else { } else {
// lock place at map if it is not buyable or if it is not reservable.
if (!isBuyable()) { if (!isBuyable() || !isReservable()) {
ret = PlaceState.LOCKED; ret = PlaceState.LOCKED;
} }
if (isTaken()) { if (isTaken()) {
...@@ -304,6 +310,10 @@ public class Place extends GenericEntity implements Comparable<Place> { ...@@ -304,6 +310,10 @@ public class Place extends GenericEntity implements Comparable<Place> {
return buyable; return buyable;
} }
public boolean isReservable() {
return reservable;
}
/** /**
* NOTE: you can newer be sure that this is up to date * NOTE: you can newer be sure that this is up to date
* *
...@@ -333,6 +343,10 @@ public class Place extends GenericEntity implements Comparable<Place> { ...@@ -333,6 +343,10 @@ public class Place extends GenericEntity implements Comparable<Place> {
this.disabled = disabled; this.disabled = disabled;
} }
public void setReservable(boolean reservable) {
this.reservable = reservable;
}
/** /**
* Note: this class has a natural ordering that is inconsistent with equals. * Note: this class has a natural ordering that is inconsistent with equals.
*/ */
......
...@@ -46,6 +46,15 @@ public class PlacePojo { ...@@ -46,6 +46,15 @@ public class PlacePojo {
private String description; private String description;
private Integer reserverId; private Integer reserverId;
private Integer eventuserId; private Integer eventuserId;
private Boolean reservable;
public Boolean getReservable() {
return reservable;
}
public void setReservable(Boolean reservable) {
this.reservable = reservable;
}
public String getName() { public String getName() {
return name; return name;
......
...@@ -263,6 +263,8 @@ public class MapAdminView { ...@@ -263,6 +263,8 @@ public class MapAdminView {
place.setBuyable(update.getBuyable()); place.setBuyable(update.getBuyable());
if (update.getDisabled() != null) if (update.getDisabled() != null)
place.setDisabled(update.getDisabled()); place.setDisabled(update.getDisabled());
if (update.getReservable() != null)
place.setReservable(update.getReservable());
if (update.getProductId() != null) { if (update.getProductId() != null) {
Product product = productbean.findById(update.getProductId()); Product product = productbean.findById(update.getProductId());
if (product != null) { if (product != null) {
......
...@@ -93,6 +93,7 @@ public class PojoUtils { ...@@ -93,6 +93,7 @@ public class PojoUtils {
ret.setTaken(place.isTaken()); ret.setTaken(place.isTaken());
ret.setBuyable(place.isBuyable()); ret.setBuyable(place.isBuyable());
ret.setDisabled(place.isDisabled()); ret.setDisabled(place.isDisabled());
ret.setReservable(place.isReservable());
// I cannot change REST -api without making new version, so let's simulate this ReleaseTime -feature from reserveTime // I cannot change REST -api without making new version, so let's simulate this ReleaseTime -feature from reserveTime
......
...@@ -6,6 +6,7 @@ import fi.codecrew.moya.model.ApiApplicationInstance; ...@@ -6,6 +6,7 @@ import fi.codecrew.moya.model.ApiApplicationInstance;
import fi.codecrew.moya.rest.pojo.userinfo.v1.ApiApplicationInstancePojo; import fi.codecrew.moya.rest.pojo.userinfo.v1.ApiApplicationInstancePojo;
import io.swagger.v3.oas.annotations.OpenAPIDefinition; import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info; import io.swagger.v3.oas.annotations.info.Info;
import org.apache.http.HttpHeaders;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -52,7 +53,7 @@ public class ApiAppRestViewV1 { ...@@ -52,7 +53,7 @@ public class ApiAppRestViewV1 {
principal = null; principal = null;
} }
servletRequest.getSession(true); servletRequest.getSession(true);
String domain = servletRequest.getHeader("host"); String domain = servletRequest.getHeader(HttpHeaders.HOST);
String authHeader = servletRequest.getHeader(AUTH_HEADER); String authHeader = servletRequest.getHeader(AUTH_HEADER);
logger.info("Got auth header {}", authHeader); logger.info("Got auth header {}", authHeader);
......
...@@ -226,7 +226,7 @@ public class PlacemapRestViewV1 { ...@@ -226,7 +226,7 @@ public class PlacemapRestViewV1 {
boolean success = false; boolean success = false;
if (p.isReservedFor(user)) { if (p.isReservedFor(user)) {
success = placebean.userReleasePlace(p); success = placebean.userReleasePlace(p);
} else if (p.isBuyable() && !p.isTaken()) { } else if (p.isBuyable() && !p.isTaken() && p.isReservable()) {
logger.info("Rest Reserving place for place {}", p); logger.info("Rest Reserving place for place {}", p);
success = placebean.reservePlace(p, user); success = placebean.reservePlace(p, user);
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!