added requirements coming from ticket #10054

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/grsf-publisher-ws@157576 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2017-10-25 14:45:34 +00:00
parent 3252991797
commit bcd53322e5
14 changed files with 108 additions and 58 deletions

View File

@ -1,4 +1,4 @@
package org.gcube.data_catalogue.grsf_publish_ws.json.input.utils;
package org.gcube.data_catalogue.grsf_publish_ws.json.input.others;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

View File

@ -1,4 +1,4 @@
package org.gcube.data_catalogue.grsf_publish_ws.json.input.utils;
package org.gcube.data_catalogue.grsf_publish_ws.json.input.others;
import javax.validation.constraints.NotNull;

View File

@ -1,4 +1,4 @@
package org.gcube.data_catalogue.grsf_publish_ws.json.input.utils;
package org.gcube.data_catalogue.grsf_publish_ws.json.input.others;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

View File

@ -1,4 +1,4 @@
package org.gcube.data_catalogue.grsf_publish_ws.json.input.utils;
package org.gcube.data_catalogue.grsf_publish_ws.json.input.others;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.Common;
import org.json.simple.JSONObject;
@ -20,6 +20,9 @@ public class SimilarRecordBean {
@JsonProperty("description")
String description;
@JsonProperty("name")
String name;
public SimilarRecordBean() {
super();
}
@ -29,11 +32,12 @@ public class SimilarRecordBean {
* @param id
* @param description
*/
public SimilarRecordBean(String url, String id, String description) {
public SimilarRecordBean(String url, String id, String description, String name) {
super();
this.url = url;
this.id = id;
this.description = description;
this.name = name;
}
public String getUrl() {
@ -60,20 +64,34 @@ public class SimilarRecordBean {
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@SuppressWarnings("unchecked")
@Override
public String toString() {
// in json format
JSONObject obj = new JSONObject();
if(url != null && !url.isEmpty())
obj.put("url", url);
if(description != null && !description.isEmpty())
obj.put("description", description);
if(id != null && !id.isEmpty())
obj.put("id", Common.cleanSemanticId(id));
if(name != null && !name.isEmpty())
obj.put("name", name);
return obj.toJSONString();
}
}

View File

@ -1,6 +1,4 @@
package org.gcube.data_catalogue.grsf_publish_ws.json.input.utils;
import javax.validation.constraints.NotNull;
package org.gcube.data_catalogue.grsf_publish_ws.json.input.others;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@ -18,19 +16,22 @@ public class TimeSeriesBean<T, T1> implements Comparable<TimeSeriesBean<T, T1>>{
public static final String YEAR_FIELD = "reference_year";
public static final String VALUE_FIELD = "value";
public static final String UNIT_FIELD = "unit";
public static final String SOURCE_FIELD = "source";
public static final String DB_SOURCE_FIELD = "db_source";
public static final String DATA_OWNER_FIELD = "data_owner";
public static final String ASSESSMENT_FIELD = "reporting_year_or_assessment_id";
@JsonProperty(YEAR_FIELD)
@NotNull(message="reference_year of a time series cannot be null")
private Long year;
@JsonProperty(SOURCE_FIELD)
private String source;
@JsonProperty(DB_SOURCE_FIELD)
private String databaseSource;
@JsonProperty(ASSESSMENT_FIELD)
private String assessment;
@JsonProperty(DATA_OWNER_FIELD)
private String dataOwner;
@JsonProperty(VALUE_FIELD)
private T value;
@ -43,21 +44,31 @@ public class TimeSeriesBean<T, T1> implements Comparable<TimeSeriesBean<T, T1>>{
/**
* @param year
* @param source
* @param databaseSource
* @param assessment
* @param dataOwner
* @param value
* @param unit
*/
public TimeSeriesBean(Long year, String source, String assessment, T value,
T1 unit) {
public TimeSeriesBean(Long year, String databaseSource, String assessment,
String dataOwner, T value, T1 unit) {
super();
this.year = year;
this.source = source;
this.databaseSource = databaseSource;
this.assessment = assessment;
this.dataOwner = dataOwner;
this.value = value;
this.unit = unit;
}
public String getDataOwner() {
return dataOwner;
}
public void setDataOwner(String dataOwner) {
this.dataOwner = dataOwner;
}
public T getValue() {
return value;
}
@ -82,12 +93,12 @@ public class TimeSeriesBean<T, T1> implements Comparable<TimeSeriesBean<T, T1>>{
this.unit = unit;
}
public String getSource() {
return source;
public String getDatabaseSource() {
return databaseSource;
}
public void setSource(String source) {
this.source = source;
public void setDatabaseSource(String databaseSource) {
this.databaseSource = databaseSource;
}
public String getAssessment() {
@ -103,7 +114,7 @@ public class TimeSeriesBean<T, T1> implements Comparable<TimeSeriesBean<T, T1>>{
}
public boolean isSourcePresent(){
return source != null && !source.isEmpty();
return databaseSource != null && !databaseSource.isEmpty();
}
public boolean isAssessmentPresent(){
@ -113,6 +124,11 @@ public class TimeSeriesBean<T, T1> implements Comparable<TimeSeriesBean<T, T1>>{
public boolean isValuePresent(){
return value != null && !value.getClass().equals(Void.class);
}
public boolean isDataOwnerPresent(){
return dataOwner != null && !dataOwner.isEmpty();
}
@Override
public int compareTo(TimeSeriesBean<T, T1> o) {
@ -124,11 +140,12 @@ public class TimeSeriesBean<T, T1> implements Comparable<TimeSeriesBean<T, T1>>{
String value = "" + this.value;
String unit = (this.unit != null ? " " + this.unit : "");
String source = (this.source != null ? " (" + this.source + ")" : "");
String databaseSource = (this.databaseSource != null ? " (" + this.databaseSource + ")" : "");
String dataOwner = (this.dataOwner != null ? " " + this.dataOwner : "");
String referenceYear = " Ref. Year " + year;
String reportingYearOrAssessment = (assessment != null ? " and Rep. Year or Assessment Id " + assessment + "" : "");
return value + unit + source + referenceYear + reportingYearOrAssessment;
return value + unit + databaseSource + dataOwner + referenceYear + reportingYearOrAssessment;
}

View File

@ -11,10 +11,10 @@ import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CustomField;
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.TimeSeries;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.RefersToBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.SimilarRecordBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.RefersToBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.SimilarRecordBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.utils.CommonServiceUtils;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Sources;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Status;
@ -35,7 +35,6 @@ public class Common extends Base{
// it is added in case of GRSF record
@JsonProperty("data_owner")
@CustomField(key="Data owner")
@Tag
private List<String> dataOwner;
@JsonProperty("database_sources")
@ -63,6 +62,7 @@ public class Common extends Base{
@JsonProperty("status_grsf_record")
@CustomField(key="Status of the GRSF record")
@Tag
private Status status;
// automatically compiled
@ -83,6 +83,7 @@ public class Common extends Base{
@JsonProperty("species")
@CustomField(key="Species")
@Tag
private List<String> species;
@JsonProperty("similar_grsf_records")

View File

@ -45,17 +45,14 @@ public class FisheryRecord extends Common{
@JsonProperty("jurisdiction_area")
@CustomField(key="Jurisdiction Area")
@Tag
private List<String> jurisdictionArea;
@JsonProperty("production_system_type")
@CustomField(key="Type of Production System")
@Tag
private List<Production_System_Type> productionSystemType;
@JsonProperty("flag_state")
@CustomField(key="Flag State")
@Tag
private List<String> flagState;
@JsonProperty("fishing_gear")
@ -65,6 +62,7 @@ public class FisheryRecord extends Common{
@JsonProperty("grsf_type")
@CustomField(key="GRSF Type")
@Group
@Tag
private Fishery_Type type;
public FisheryRecord() {

View File

@ -10,7 +10,7 @@ import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CustomField;
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.TimeSeries;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Abundance_Level;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Fishing_Pressure;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Stock_Type;
@ -45,7 +45,6 @@ public class StockRecord extends Common{
@JsonProperty("management_body_authorities")
@CustomField(key="Management Body/Authority(ies)")
@Tag
private String managementEntity;
@JsonProperty("assessment_methods")
@ -94,12 +93,12 @@ public class StockRecord extends Common{
@JsonProperty("assessor")
@CustomField(key="Assessor")
@Tag
private String assessor;
@JsonProperty("grsf_type")
@CustomField(key="GRSF Type")
@Group
@Tag
private Stock_Type type;
public StockRecord() {

View File

@ -29,9 +29,9 @@ import org.gcube.common.authorization.library.provider.AuthorizationProvider;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.authorization.library.utils.Caller;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.DeleteRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.Common;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.DeleteRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.output.ResponseBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.output.ResponseCreationBean;
import org.gcube.data_catalogue.grsf_publish_ws.utils.CommonServiceUtils;

View File

@ -29,9 +29,9 @@ import org.gcube.common.authorization.library.provider.AuthorizationProvider;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.authorization.library.utils.Caller;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.DeleteRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.Common;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.StockRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.DeleteRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.output.ResponseBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.output.ResponseCreationBean;
import org.gcube.data_catalogue.grsf_publish_ws.utils.CommonServiceUtils;

View File

@ -8,7 +8,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.TimeSeriesBean;
import org.slf4j.LoggerFactory;
@ -54,6 +54,7 @@ public class CSVUtils {
boolean isValuePresent = false;
boolean isSourcePresent = false;
boolean isAssessmentPresent = false;
boolean isDataOwnerPresent = false;
for (TimeSeriesBean<T, T1> timeSeriesBean : timeSeries) {
if(timeSeriesBean.isSourcePresent())
@ -64,6 +65,11 @@ public class CSVUtils {
isValuePresent = true;
if(timeSeriesBean.isUnitPresent())
isUnitPresent = true;
if(timeSeriesBean.isDataOwnerPresent())
isDataOwnerPresent = true;
if(isSourcePresent & isAssessmentPresent & isValuePresent & isUnitPresent & isDataOwnerPresent)
break;
}
StringBuffer headerLine = new StringBuffer();
@ -81,7 +87,12 @@ public class CSVUtils {
if(isSourcePresent){
headerLine.append(CSV_SEPARATOR);
headerLine.append(TimeSeriesBean.SOURCE_FIELD);
headerLine.append(TimeSeriesBean.DB_SOURCE_FIELD);
}
if(isDataOwnerPresent){
headerLine.append(CSV_SEPARATOR);
headerLine.append(TimeSeriesBean.DATA_OWNER_FIELD);
}
if(isAssessmentPresent){
@ -111,9 +122,14 @@ public class CSVUtils {
if(isSourcePresent){
oneLine.append(CSV_SEPARATOR);
oneLine.append(bean.getSource() != null? bean.getSource() : "");
if(bean.getSource() != null && !bean.getSource().isEmpty())
sources.add(bean.getSource());
oneLine.append(bean.getDatabaseSource() != null? bean.getDatabaseSource() : "");
if(bean.getDatabaseSource() != null && !bean.getDatabaseSource().isEmpty())
sources.add(bean.getDatabaseSource());
}
if(isDataOwnerPresent){
oneLine.append(CSV_SEPARATOR);
oneLine.append(bean.getDataOwner() != null? bean.getDataOwner() : "");
}
if(isAssessmentPresent){
@ -130,12 +146,13 @@ public class CSVUtils {
// file created
logger.debug("CSV file created correctly on this machine!");
// Add names of the sources to the file's name
for (String source : sources) {
relevantSources[0] += source + "_";
}
relevantSources[0] = relevantSources[0].substring(0, relevantSources[0].length() - 1);
// on exit delete it...
file.deleteOnExit();
return file;

View File

@ -18,14 +18,14 @@ import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CkanResource;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CustomField;
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.json.input.others.RefersToBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.SimilarRecordBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.Base;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.Common;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.StockRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.RefersToBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.SimilarRecordBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.output.ResponseCreationBean;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Product_Type;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Sources;

View File

@ -8,9 +8,9 @@ import javax.ws.rs.core.Application;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.StockRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.services.GrsfPublisherFisheryService;
import org.gcube.data_catalogue.grsf_publish_ws.services.GrsfPublisherStockService;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Fishery_Type;

View File

@ -27,11 +27,11 @@ import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CustomField;
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.json.input.others.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.others.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.Common;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.record.StockRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.Resource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.TimeSeriesBean;
import org.gcube.data_catalogue.grsf_publish_ws.utils.CSVUtils;
import org.gcube.data_catalogue.grsf_publish_ws.utils.HelperMethods;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Abundance_Level;
@ -225,11 +225,11 @@ public class JTests {
// time series
List<TimeSeriesBean<String, Void>> timeSeries = new ArrayList<TimeSeriesBean<String,Void>>();
timeSeries.add(new TimeSeriesBean<String, Void>(2001L, "Value A", null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(2231L, "Value B", null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(1943L, "Value C", null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(1054L, "Value D", null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(3422L, "Value E", null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(2001L, "Value A", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(2231L, "Value B", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(1943L, "Value C", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(1054L, "Value D", null, null, null, null));
timeSeries.add(new TimeSeriesBean<String, Void>(3422L, "Value E", null, null, null, null));
Collections.sort(timeSeries);