Commit dd2fdc98 authored by akucera's avatar akucera
Browse files

Addedd support for relations on the server side

parent dd1c2804
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@

    <ObjectProperty rdf:about="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#isUsedBy">
        <inverseOf rdf:resource="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#uses"/>
        <rdfs:domain rdf:resource="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#DataPoint"/>
        <rdfs:domain rdf:resource="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#Address"/>
        <rdfs:range rdf:resource="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#Algorithm"/>
    </ObjectProperty>
    
@@ -322,7 +322,7 @@

    <ObjectProperty rdf:about="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#uses">
        <rdfs:domain rdf:resource="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#Algorithm"/>
        <rdfs:range rdf:resource="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#DataPoint"/>
        <rdfs:range rdf:resource="http://is.muni.cz/www/255658/sbms/v1_0/SemanticBMS#Address"/>
    </ObjectProperty>
    

+60 −4
Original line number Diff line number Diff line
@@ -5,9 +5,11 @@ import java.net.URI;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
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;
@@ -19,10 +21,12 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;

import cz.muni.fi.lasaris.sbms.api.entities.Address;
import cz.muni.fi.lasaris.sbms.api.entities.Algorithm;
import cz.muni.fi.lasaris.sbms.api.entities.Influence;
import cz.muni.fi.lasaris.sbms.api.entities.ObservedProperty;
import cz.muni.fi.lasaris.sbms.api.entities.Scope;
import cz.muni.fi.lasaris.sbms.api.request.AddressRequest;
import cz.muni.fi.lasaris.sbms.api.request.AlgorithmRequest;
import cz.muni.fi.lasaris.sbms.api.request.Insert;
import cz.muni.fi.lasaris.sbms.api.response.AddressResponse;
import cz.muni.fi.lasaris.sbms.api.response.GroupedResponse;
@@ -31,10 +35,10 @@ import cz.muni.fi.lasaris.sbms.model.Fields;
import cz.muni.fi.lasaris.sbms.model.ModelUpdater;
import cz.muni.fi.lasaris.sbms.model.QueryParser;

@Path("influence")
@Path("relations")
@PermitAll
public class InfluencesEndpoint {
	final static Logger logger = Logger.getLogger(InfluencesEndpoint.class);
public class RelationsEndpoint {
	final static Logger logger = Logger.getLogger(RelationsEndpoint.class);
	
	@GET
	@Path("/influencing")
@@ -87,6 +91,35 @@ public class InfluencesEndpoint {
		return QueryParser.getInfluencingResponse(r);
	}
	
	@GET
	@Path("/used")
	@Produces(MediaType.APPLICATION_JSON)
	public AddressResponse getUsed(
			@QueryParam("bmsId") String bmsIdP) {
		
		if(StringUtils.isBlank(bmsIdP)) {
			GroupedResponse.getErrorResponse("bmsId must be set");
		}
		AlgorithmRequest r = new AlgorithmRequest(new Algorithm(bmsIdP));
		r.getResponseFields().addAll(Fields.INFLUENCE_FIELDS);
		return QueryParser.getUsedResponse(r);
	}
	
	@GET
	@Path("/using")
	@Produces(MediaType.APPLICATION_JSON)
	public AddressResponse getUsing(
			@QueryParam("bmsId") String bmsIdP) {
		
		if(StringUtils.isBlank(bmsIdP)) {
			GroupedResponse.getErrorResponse("bmsId must be set");
		}
		AlgorithmRequest r = new AlgorithmRequest(new Algorithm());
		r.getAlgorithm().setUsedAddress(new Address(bmsIdP));
		r.getResponseFields().addAll(Fields.INFLUENCE_FIELDS);
		return QueryParser.getUsingResponse(r);
	}
	
	@GET
	@Path("/influenced")
	@Produces(MediaType.APPLICATION_JSON)
@@ -101,6 +134,8 @@ public class InfluencesEndpoint {
		return QueryParser.getInfluencedResponse(r);
	}
	
	
	
	@Context
	private UriInfo uriInfo;
	
@@ -112,7 +147,11 @@ public class InfluencesEndpoint {
			if(insert.getAddress() != null && ModelUpdater.insertAddress(insert)) {
				URI createdUri = new URI(uriInfo.getAbsolutePath().toString() + insert.getAddress().getResourceId());
				return Response.created(createdUri).build();
			} else {
			} else if (insert.getAlgorithm() != null && ModelUpdater.insertAlgorithm(insert)) {
				URI createdUri = new URI(uriInfo.getAbsolutePath().toString() + insert.getAlgorithm().getResourceId());
				return Response.created(createdUri).build();
			}
			else {
				return Response.status(Response.Status.BAD_REQUEST).entity("Invalid JSON data - see server log").build();
			}
		} catch (Exception e) {
@@ -121,4 +160,21 @@ public class InfluencesEndpoint {
		}
	}
	
	@RolesAllowed("admin")
	@DELETE
	@Path("/{bmsId}")
	@Consumes(MediaType.APPLICATION_JSON)
	public Response RemoveRelationInfo(@PathParam("bmsId") String bmsId) {
		System.out.println(bmsId);
		try {
			if(ModelUpdater.removeRelationAssertions(bmsId)) {
				return Response.ok().build();
			} else {
				return Response.status(Response.Status.BAD_REQUEST).entity("Invalid JSON data - see server log").build();
			}
		} catch (Exception e) {
			logger.error(e);
			return Response.serverError().build();
		}
	}
}
+20 −0
Original line number Diff line number Diff line
@@ -5,9 +5,11 @@ import java.net.URI;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
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;
@@ -139,4 +141,22 @@ final static Logger logger = Logger.getLogger(TrendsEndpoint.class);
		}
	}
	
	@RolesAllowed("admin")
	@DELETE
	@Path("/{bmsId}")
	@Consumes(MediaType.APPLICATION_JSON)
	public Response RemoveTrendInfo(@PathParam("bmsId") String bmsId) {
		System.out.println(bmsId);
		try {
			if(ModelUpdater.removeTrendAssertions(bmsId)) {
				return Response.ok().build();
			} else {
				return Response.status(Response.Status.BAD_REQUEST).entity("Invalid JSON data - see server log").build();
			}
		} catch (Exception e) {
			logger.error(e);
			return Response.serverError().build();
		}
	}
	
}
+4 −4
Original line number Diff line number Diff line
@@ -22,8 +22,8 @@ public class Address {
	public String getType() {
		return type;
	}
	public void setType(String dataPointType) {
		this.type = dataPointType;
	public void setType(String type) {
		this.type = type;
	}
	
	@JsonIgnore
@@ -67,9 +67,9 @@ public class Address {
		this.bmsId = bmsId;
	}
	
	public Address(String bmsId, String dataPointType) {
	public Address(String bmsId, String type) {
		this.bmsId = bmsId;
		this.type = dataPointType;
		this.type = type;
	}
	
	@Override
+12 −12
Original line number Diff line number Diff line
@@ -5,23 +5,23 @@ import java.util.TreeSet;

public class Algorithm extends Address {

	public SortedSet<DataPoint> usedDataPointList; 
	public SortedSet<Address> usedAddressList; 
	
	public SortedSet<DataPoint> getUsedDataPointList() {
		return usedDataPointList;
	public SortedSet<Address> getUsedAddressList() {
		return usedAddressList;
	}

	public void setUsedDataPointList(SortedSet<DataPoint> usedDataPointList) {
		this.usedDataPointList = usedDataPointList;
	public void setUsedAddressList(SortedSet<Address> usedDataPointList) {
		this.usedAddressList = usedDataPointList;
	}
	
	public DataPoint getUsedDataPoint() {
		return usedDataPointList.first();
	public Address getUsedAddress() {
		return usedAddressList.first();
	}
	
	public void setUsedDataPoint(DataPoint dp) {
		usedDataPointList = new TreeSet<DataPoint>();
		usedDataPointList.add(dp);
	public void setUsedAddress(Address a) {
		usedAddressList = new TreeSet<Address>();
		usedAddressList.add(a);
	}

	public Algorithm() {
@@ -31,8 +31,8 @@ public class Algorithm extends Address {
		super(bmsId);
	}

	public Algorithm(String bmsId, String dataPointType) {
		super(bmsId, dataPointType);
	public Algorithm(String bmsId, String type) {
		super(bmsId, type);
		
	}

Loading