package eu.betaas.taas.contextmanager.linkeddata.api.impl; 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 javax.ws.rs.core.Response; import org.apache.log4j.Logger; import org.osgi.framework.BundleContext; import eu.betaas.taas.contextmanager.linkeddata.api.LinkedDataService; import eu.betaas.taas.contextmanager.linkeddata.messaging.MessageManager; import eu.betaas.taas.contextmanager.linkeddata.semantics.DatasetBuilder; import eu.betaas.taas.contextmanager.linkeddata.semantics.ThingsManager; @Path("v1") public class LinkedDataServiceImpl implements LinkedDataService { private Logger logger = Logger.getLogger("betaas.taas"); private BundleContext context; private MessageManager mManager; public void setupService(){ mManager = new MessageManager(context); mManager.monitoringPublish("External linked data service started"); logger.info("[LinkedDataServiceImpl] External linked data service started"); } @GET @Path("/things") @Produces(MediaType.APPLICATION_XML) public Response getCatalog() { try { mManager.monitoringPublish("Get request for the things catalog"); ThingsManager manager = new ThingsManager(); String body = manager.retrieveThingListAsDCAT(); return Response.ok(body).build(); } catch (Exception e) { mManager.monitoringPublish("Server error getting request for the things catalog"); return Response.serverError().build(); } } @GET @Path("/things") @Produces(MediaType.APPLICATION_JSON) public Response getThings() { try { mManager.monitoringPublish("Get request for the list of things"); ThingsManager manager = new ThingsManager(); String body = manager.retrieveThingListAsJSON(); return Response.ok(body).build(); } catch (Exception e) { mManager.monitoringPublish("Server error getting request for the list of things"); return Response.serverError().build(); } } @GET @Path("/datasets/{id}") public Response getDataset(@PathParam("id") String id) { DatasetBuilder dsBuilder = new DatasetBuilder(); try { mManager.monitoringPublish("Get request for the dataset " + id); String body = dsBuilder.generateCSVDataset(id); return Response.ok(body) .header( "Content-Disposition", "attachment; filename=dataset" + id + ".csv") .build(); } catch (Exception e) { mManager.monitoringPublish("Error " + e.getMessage() + " for dataset " + id); return Response.status(Integer.valueOf(e.getMessage())).build(); } } public void setContext(BundleContext context) { this.context = context; } }