created package for input and output json. Created response bean and resource bean. Common has been extended with spatial, extras and resources fields

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/grsf-publisher-ws@132951 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2016-10-08 18:46:17 +00:00
parent 79d1ebd486
commit 34aabbcf27
8 changed files with 244 additions and 21 deletions

View File

@ -1,5 +1,11 @@
package org.gcube.data_catalogue.grsf_publish_ws.json; package org.gcube.data_catalogue.grsf_publish_ws.json.input;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Source; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Source;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Status; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Status;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Type; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Type;
@ -37,6 +43,7 @@ public class Common {
private String catchesOrLandings; private String catchesOrLandings;
@JsonProperty("database_sources") @JsonProperty("database_sources")
@Group
private Source databaseSources; private Source databaseSources;
@JsonProperty("source_of_information") @JsonProperty("source_of_information")
@ -46,35 +53,34 @@ public class Common {
private String dataOwner; private String dataOwner;
@JsonProperty("type") @JsonProperty("type")
@Tag
@Group
private Type type; private Type type;
@JsonProperty("status") @JsonProperty("status")
@Tag
private Status status; private Status status;
@JsonProperty("resources")
private List<Resource> resources;
@JsonProperty("extras")
private Map<String, Object> properties = new HashMap<>();
@JsonProperty("spatial")
private String spatial;
public Common() { public Common() {
super(); super();
} }
/**
* @param description
* @param license
* @param author
* @param version
* @param authorContact
* @param maintainer
* @param maintainerContact
* @param catchesOrLandings
* @param databaseSources
* @param sourceOfInformation
* @param dataOwner
* @param type
* @param status
*/
public Common(String description, String license, String author, public Common(String description, String license, String author,
long version, String authorContact, String maintainer, long version, String authorContact, String maintainer,
String maintainerContact, String catchesOrLandings, String maintainerContact, String catchesOrLandings,
Source databaseSources, String sourceOfInformation, Source databaseSources, String sourceOfInformation,
String dataOwner, Type type, Status status) { String dataOwner, Type type, Status status,
List<Resource> resources, Map<String, Object> properties,
String spatial) {
super(); super();
this.description = description; this.description = description;
this.license = license; this.license = license;
@ -89,6 +95,17 @@ public class Common {
this.dataOwner = dataOwner; this.dataOwner = dataOwner;
this.type = type; this.type = type;
this.status = status; this.status = status;
this.resources = resources;
this.properties = properties;
this.spatial = spatial;
}
public String getSpatial() {
return spatial;
}
public void setSpatial(String spatial) {
this.spatial = spatial;
} }
public String getDescription() { public String getDescription() {
@ -195,6 +212,22 @@ public class Common {
this.status = status; this.status = status;
} }
public List<Resource> getResources() {
return resources;
}
public void setResources(List<Resource> resources) {
this.resources = resources;
}
public void setProperties(Map<String, Object> properties) {
this.properties = properties;
}
public Map<String, Object> getProperties() {
return properties;
}
@Override @Override
public String toString() { public String toString() {
return "Common [description=" + description + ", license=" + license return "Common [description=" + description + ", license=" + license
@ -205,6 +238,8 @@ public class Common {
+ ", databaseSources=" + databaseSources + ", databaseSources=" + databaseSources
+ ", sourceOfInformation=" + sourceOfInformation + ", sourceOfInformation=" + sourceOfInformation
+ ", dataOwner=" + dataOwner + ", type=" + type + ", status=" + ", dataOwner=" + dataOwner + ", type=" + type + ", status="
+ status + "]"; + status + ", resources=" + resources + ", properties="
+ properties + ", spatial=" + spatial + "]";
} }
} }

View File

@ -1,5 +1,7 @@
package org.gcube.data_catalogue.grsf_publish_ws.json; package org.gcube.data_catalogue.grsf_publish_ws.json.input;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Production_System_Type; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Production_System_Type;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
@ -17,6 +19,7 @@ public class FisheryRecord extends Common{
private String fisheryId; private String fisheryId;
@JsonProperty("scientific_name") @JsonProperty("scientific_name")
@Tag
private String scientificName; private String scientificName;
@JsonProperty("fishing_area") @JsonProperty("fishing_area")
@ -26,18 +29,22 @@ public class FisheryRecord extends Common{
private String exploitingStocks; private String exploitingStocks;
@JsonProperty("management_entity") @JsonProperty("management_entity")
@Tag
private String managementEntity; private String managementEntity;
@JsonProperty("jurisdiction_area") @JsonProperty("jurisdiction_area")
private String jurisdictionArea; private String jurisdictionArea;
@JsonProperty("production_system_type") @JsonProperty("production_system_type")
@Group
private Production_System_Type productionSystemType; private Production_System_Type productionSystemType;
@JsonProperty("flag_state") @JsonProperty("flag_state")
@Tag
private String flagState; private String flagState;
@JsonProperty("fishing_gear") @JsonProperty("fishing_gear")
@Tag
private String fishingGear; private String fishingGear;
public FisheryRecord() { public FisheryRecord() {

View File

@ -0,0 +1,61 @@
package org.gcube.data_catalogue.grsf_publish_ws.json.input;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* A resource object bean
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class Resource {
@JsonProperty("url")
private String url;
@JsonProperty("description")
private String description;
@JsonProperty("name")
private String name;
public Resource() {
super();
}
public Resource(String url, String description, String name) {
super();
this.url = url;
this.description = description;
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Resource [url=" + url + ", description=" + description
+ ", name=" + name + "]";
}
}

View File

@ -1,5 +1,7 @@
package org.gcube.data_catalogue.grsf_publish_ws.json; package org.gcube.data_catalogue.grsf_publish_ws.json.input;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Abundance_Level; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Abundance_Level;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Exploitation_Rate; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Exploitation_Rate;
@ -18,6 +20,7 @@ public class StockRecord extends Common{
private String stockID; private String stockID;
@JsonProperty("species_scientific_name") @JsonProperty("species_scientific_name")
@Tag
private String speciesScientificName; private String speciesScientificName;
@JsonProperty("area") @JsonProperty("area")
@ -36,9 +39,11 @@ public class StockRecord extends Common{
private String stateOfMarineResource; private String stateOfMarineResource;
@JsonProperty("exploitation_rate") @JsonProperty("exploitation_rate")
@Group
private Exploitation_Rate exploitationRate; private Exploitation_Rate exploitationRate;
@JsonProperty("abundance_level") @JsonProperty("abundance_level")
@Group
private Abundance_Level abundanceLevel; private Abundance_Level abundanceLevel;
@JsonProperty("narrative_state_and_trend") @JsonProperty("narrative_state_and_trend")

View File

@ -0,0 +1,43 @@
package org.gcube.data_catalogue.grsf_publish_ws.json.output;
/**
* A bean used to reply to a product creation method.
* @author Costantino Perciante at ISTI-CNR
*/
public class ResponseCreationBean {
private String id;
private String error; // in case of error
public ResponseCreationBean() {
super();
}
public ResponseCreationBean(String id, String error) {
super();
this.id = id;
this.error = error;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
@Override
public String toString() {
return "ResponseCreationBean [id=" + id + ", error=" + error + "]";
}
}

View File

@ -0,0 +1,36 @@
package org.gcube.data_catalogue.grsf_publish_ws.services;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.FisheryRecord;
import org.slf4j.LoggerFactory;
/**
* Fishery web service methods
* @author Costantino Perciante at ISTI-CNR
*/
@Path("fishery/")
public class GrsfPublisherFisheryService {
// Logger
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(GrsfPublisherFisheryService.class);
@POST
@Path("publish-product")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response publishFishery(FisheryRecord record){
logger.info("Incoming request for creating a fishery record");
// TODO
return null;
}
}

View File

@ -0,0 +1,36 @@
package org.gcube.data_catalogue.grsf_publish_ws.services;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.StockRecord;
import org.slf4j.LoggerFactory;
/**
* Stock web service methods
* @author Costantino Perciante at ISTI-CNR
*/
@Path("stock/")
public class GrsfPublisherStockService {
// Logger
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(GrsfPublisherStockService.class);
@POST
@Path("publish-product")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response publishStock(StockRecord record){
logger.info("Incoming request for creating a stock record");
// TODO
return null;
}
}

View File

@ -7,7 +7,7 @@ import java.lang.reflect.InvocationTargetException;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group; import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag; import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag;
import org.gcube.data_catalogue.grsf_publish_ws.json.FisheryRecord; import org.gcube.data_catalogue.grsf_publish_ws.json.input.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Source; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Source;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Type; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Type;
import org.junit.Test; import org.junit.Test;