package org.jboss.resteasy.test.providers.jaxb.resource.parsing;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import javax.xml.datatype.XMLGregorianCalendar;
import java.net.URI;
import java.net.URISyntaxException;
import java.sql.Timestamp;
import java.util.GregorianCalendar;
@Path("/")
public class ParsingStoreResource {
// this unitName matches the one defined in persistence.xml file
//@PersistenceContext(unitName="DataCollectionPU")
//EntityManager em;
@POST
@Consumes("application/xml")
@Path("storeXML/abstract")
public Response storeXMLAbstract(ParsingAbstractData dataCollectionPackage) {
return storeXML((ParsingDataCollectionPackage) dataCollectionPackage);
}
@POST
@Consumes("application/xml")
@Path("storeXML")
public Response storeXML(ParsingDataCollectionPackage dataCollectionPackage) {
String sourceID = dataCollectionPackage.getSourceID();
String eventID = dataCollectionPackage.getEventID();
if (dataCollectionPackage.getDataRecords() == null ||
dataCollectionPackage.getDataRecords().getDataCollectionRecord() == null) {
ResponseBuilder builder = Response.status(Status.INTERNAL_SERVER_ERROR);
builder.type("text/html");
builder.entity("<h3>No records included</h3>");
throw new WebApplicationException(builder.build());
}
for (ParsingDataCollectionRecord dr : dataCollectionPackage.getDataRecords().getDataCollectionRecord()) {
// JAXB datatype for dateTime is XMLGregorianCalendar, need to convert to the java.sql.Timestamp
XMLGregorianCalendar cal = dr.getTimestamp();
GregorianCalendar gregorianCalendar = cal.toGregorianCalendar();
long timeAsMillis = gregorianCalendar.getTimeInMillis();
Timestamp timestamp = new Timestamp(timeAsMillis);
// persist data here
}
URI createdURI = null;
try {
// Create a relative URI
createdURI = new URI("records");
} catch (URISyntaxException e) {
throw new WebApplicationException(Response.serverError().build());
}
// For a successful POST send a 201 CREATED with the URI of where to find the records
// The relative URI will be turned into an absolute URI based on the URI used to access
// this method.
//return Response.created(createdURI).build();
ResponseBuilder builder = Response.created(createdURI);
builder.type("text/plain");
// SoapUI considers a 0 length response an error
builder.entity("storeXML");
return builder.build();
}
}