package service.rest;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import persistency.entities.LoggedUser;
import persistency.entities.Session;
import persistency.exposed.LoggedUserExposed;
import persistency.exposed.SessionExposedBasic;
import utils.Constants;
import utils.ICalendarConverter;
import com.google.gson.Gson;
@Produces({ MediaType.APPLICATION_JSON })
@Path("/sessions")
public class SessionResource {
@Context
private HttpHeaders httpHeaders;
private Gson g;
public SessionResource() {
g = new Gson();
}
@GET
@Produces({ MediaType.APPLICATION_JSON })
public Response listAllSessions(@Context HttpServletRequest hsr, @QueryParam("date") int date) throws Exception {
SessionExposedBasic sessionExposed = new SessionExposedBasic();
return Response.status(Response.Status.OK)
.entity(g.toJson(sessionExposed.allEntitiesOnDate(hsr, date))).build();
}
@GET
@Path("{id}")
public Response readConfiguration0(@PathParam("id") String id, @Context HttpServletRequest hsr)
throws Exception {
SessionExposedBasic sessionExposed = new SessionExposedBasic();
LoggedUserExposed pe = new LoggedUserExposed();
LoggedUser currentUser = pe.getCurrentUser(hsr);
if (id != null) {
return Response.status(Response.Status.OK)
.entity(g.toJson(sessionExposed.findSessionByIdWrapped(id, currentUser))).build();
}
return Response.status(Response.Status.BAD_REQUEST)
.entity(g.toJson("")).build();
}
@GET
@Path("/name")
public Response readName() throws Exception {
return Response.status(Response.Status.OK)
.entity(g.toJson(Constants.SESSION_NAME)).build();
}
@GET
@Path("/ical/{id}")
@Produces("text/calendar")
public Response readConfiguration(@PathParam("id") String id)
throws Exception {
SessionExposedBasic sessionExposed = new SessionExposedBasic();
if (id == null) {
return Response.status(Response.Status.OK)
.entity(g.toJson(sessionExposed.findSessionById(id))).build();
}
ICalendarConverter calendar = new ICalendarConverter(sessionExposed.findSessionById(id));
// Generate your calendar here
ResponseBuilder builder = Response.ok();
builder.header("content-disposition",
"attachment;filename=calendar.ics");
builder.entity(calendar.toString());
return builder.build();
}
//
// @POST
// @Consumes(MediaType.APPLICATION_JSON)
// public Response createOrUpdate(String content) {
// System.out.println(content);
// SessionExposedBasic sessionDao = new SessionExposedBasic();
// Session e = g.fromJson(content, Session.class);
// sessionDao.createEntity(e);
// return Response
// .status(Response.Status.BAD_REQUEST)
// .entity("System DB Configuration API cannot create configurations with this name.").type("text/plain").build(); //$NON-NLS-1$ //$NON-NLS-2$
// }
}