diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/custom_annotations/Group.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/custom_annotations/Group.java index 508eb3e..7f4205a 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/custom_annotations/Group.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/custom_annotations/Group.java @@ -13,4 +13,6 @@ import java.lang.annotation.Target; @Target({ElementType.FIELD, ElementType.TYPE}) public @interface Group { + Class parentGroup() default Class.class; + } 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 1e84fe9..c85f7e4 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 @@ -187,6 +187,14 @@ public abstract class HelperMethods { if(!groups.contains(groupName)) groups.add(groupName); + // check if this class has a father too (@Group annotation allows it) + Group groupAnnotationOnEnum = field.getType().getAnnotation(Group.class); + if(!groupAnnotationOnEnum.parentGroup().equals(Class.class)){ + String groupNameFather = getGroupNameOnCkan(groupAnnotationOnEnum.parentGroup().getSimpleName()); + if(!groups.contains(groupNameFather)) + groups.add(groupNameFather); + } + } }catch(Exception e){ diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Abundance_Level.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Abundance_Level.java index 2cced6b..28f2d5b 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Abundance_Level.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Abundance_Level.java @@ -9,7 +9,7 @@ import com.fasterxml.jackson.annotation.JsonValue; * Abundance_Level for Stock records * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ -@Group +@Group(parentGroup=Indicator.class) public enum Abundance_Level { Intermediate_Abundance("Intermediate abundance"), diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Exploitation_Rate.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Exploitation_Rate.java index b452176..876af4c 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Exploitation_Rate.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Exploitation_Rate.java @@ -8,7 +8,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; * Exploitation_Rate for Stock records * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ -@Group +@Group(parentGroup=Indicator.class) public enum Exploitation_Rate { Moderate_Fishing_Mortality("Moderate fishing mortality"), diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Indicator.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Indicator.java new file mode 100644 index 0000000..63797a1 --- /dev/null +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Indicator.java @@ -0,0 +1,12 @@ +package org.gcube.data_catalogue.grsf_publish_ws.utils.groups; + +import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group; + +/** + * Indicator group: father of Abundance level and Exploitation Rate + * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) + */ +@Group +public enum Indicator { + +}