From 41c877cda75d4dab2a65510fd22014e4e3deeb22 Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Wed, 30 Nov 2016 21:11:47 +0000 Subject: [PATCH] improved Group annotation with parent field: Indicator group can now be managed git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/grsf-publisher-ws@135154 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../grsf_publish_ws/custom_annotations/Group.java | 2 ++ .../grsf_publish_ws/utils/HelperMethods.java | 8 ++++++++ .../utils/groups/Abundance_Level.java | 2 +- .../utils/groups/Exploitation_Rate.java | 2 +- .../grsf_publish_ws/utils/groups/Indicator.java | 12 ++++++++++++ 5 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/gcube/data_catalogue/grsf_publish_ws/utils/groups/Indicator.java 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 { + +}