diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/Common.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/Common.java index e68e84e..8569e5e 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/Common.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/Common.java @@ -50,13 +50,11 @@ public class Common { private String catchesOrLandings; @JsonProperty("database_sources") - @CustomField(key="Database sources") @NotNull(message="database_source cannot be null") @Size(min=1, message="database_source cannot be empty") private List databaseSources; @JsonProperty("source_of_information") - @CustomField(key="Source of information") @NotNull(message="source_of_information cannot be null") @Size(min=1, message="source_of_information cannot be empty") private List sourceOfInformation; diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/DatabaseSource.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/DatabaseSource.java index 4e31973..2376274 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/DatabaseSource.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/DatabaseSource.java @@ -4,6 +4,7 @@ import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; 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 com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -26,6 +27,7 @@ public class DatabaseSource { @JsonProperty("name") @Group + @Tag @NotNull(message="'name' attribute of database_source is missing or wrong") private Source name; diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/FisheryRecord.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/FisheryRecord.java index 816d290..c01b693 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/FisheryRecord.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/FisheryRecord.java @@ -50,6 +50,7 @@ public class FisheryRecord extends Common{ @JsonProperty("production_system_type") @Group + @Tag @CustomField(key="Production system type") private Production_System_Type productionSystemType; @@ -66,6 +67,7 @@ public class FisheryRecord extends Common{ @JsonProperty("status") @CustomField(key="Status") @Group + @Tag @NotNull(message="status cannot be null") private Status status; diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/StockRecord.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/StockRecord.java index 39a58c6..48001b3 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/StockRecord.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/json/input/StockRecord.java @@ -59,11 +59,13 @@ public class StockRecord extends Common{ @JsonProperty("exploitation_rate") @CustomField(key="Exploitation rate") @Group + @Tag private Exploitation_Rate exploitationRate; @JsonProperty("abundance_level") @CustomField(key="Abundance level") @Group + @Tag private Abundance_Level abundanceLevel; @JsonProperty("narrative_state_and_trend") diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/HelperMethods.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/HelperMethods.java index 3068e3e..b5c289d 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/HelperMethods.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/HelperMethods.java @@ -94,6 +94,7 @@ public abstract class HelperMethods { * Retrieve the list of tags for this object */ public static void getTags(List tags, Common record){ + Class current = record.getClass(); do{ Field[] fields = current.getDeclaredFields(); @@ -103,7 +104,7 @@ public abstract class HelperMethods { Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(record); if(f != null){ - tags.add(f.toString()); + tags.add(f.toString().trim()); } }catch(Exception e){ @@ -113,12 +114,23 @@ public abstract class HelperMethods { } } while((current = current.getSuperclass())!=null); + + // now parse also the Database Sources field + List sources = record.getDatabaseSources(); + for (DatabaseSource databaseSource : sources) { + logger.debug("Database source is " + databaseSource); + String nameAsTag = databaseSource.getName().toString(); + if(!tags.contains(nameAsTag)) + tags.add(nameAsTag); + + } } /** * Retrieve the list of groups' names for this object */ public static void getGroups(List groups, Common record){ + Class current = record.getClass(); do{ Field[] fields = current.getDeclaredFields(); @@ -129,7 +141,7 @@ public abstract class HelperMethods { if(f != null){ // also convert to the group name that should be on ckan - String groupName = getGroupNameOnCkan(f.toString()); + String groupName = getGroupNameOnCkan(f.toString().trim()); if(!groups.contains(groupName)) groups.add(groupName); @@ -142,13 +154,15 @@ public abstract class HelperMethods { } while((current = current.getSuperclass())!=null); + logger.debug("Groups is " + groups); + // now parse also the Database Sources field List sources = record.getDatabaseSources(); for (DatabaseSource databaseSource : sources) { logger.debug("Database source is " + databaseSource); Source name = databaseSource.getName(); - String groupName = getGroupNameOnCkan(name.toString()); + String groupName = getGroupNameOnCkan(name.toString().trim()); if(!groups.contains(groupName)) groups.add(groupName); @@ -159,6 +173,7 @@ public abstract class HelperMethods { * Retrieve the list of extras for this object */ public static void getExtras(Map extras, Common record){ + Class current = record.getClass(); do{ Field[] fields = current.getDeclaredFields(); @@ -169,7 +184,7 @@ public abstract class HelperMethods { if(f != null){ // get the key to put into the map first - extras.put(field.getAnnotation(CustomField.class).key(), f.toString()); + extras.put(field.getAnnotation(CustomField.class).key(), f.toString().trim()); } }catch(Exception e){ @@ -411,7 +426,7 @@ public abstract class HelperMethods { logger.debug("Adding resource " + res); toReturn.add(new ResourceBean(res.getUrl(), res.getName(), res.getDescription(), null, username, null, null)); } - + logger.debug("Returning resources " + toReturn); return toReturn; }