diff --git a/distro/changelog.xml b/distro/changelog.xml index 44efa72..6d5cf0a 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,10 @@ + + [Task #7616] Porting library to Metadata Profile model v3.0 + + diff --git a/pom.xml b/pom.xml index 038d8d5..1a3a658 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ org.gcube.data-catalogue gcubedatacatalogue-metadata-discovery jar - 2.0.0-SNAPSHOT + 3.0.0-SNAPSHOT The gCube data catalogue metadata discovery library The gCube data catalogue metadata discovery library diff --git a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/adapter/TaggingGroupingAdapter.java b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/adapter/TaggingGroupingAdapter.java new file mode 100644 index 0000000..e82f502 --- /dev/null +++ b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/adapter/TaggingGroupingAdapter.java @@ -0,0 +1,36 @@ +/** + * + */ + +package org.gcube.datacatalogue.metadatadiscovery.adapter; + +import javax.xml.bind.annotation.adapters.XmlAdapter; + +import org.gcube.datacatalogue.metadatadiscovery.bean.jaxb.TaggingGroupingValue; + + + +/** + * The Class TaggingGroupingAdapter. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Mar 21, 2017 + */ +public class TaggingGroupingAdapter extends XmlAdapter { + + /* (non-Javadoc) + * @see javax.xml.bind.annotation.adapters.XmlAdapter#marshal(java.lang.Object) + */ + public String marshal(TaggingGroupingValue dt) { + + return dt.name(); + } + + /* (non-Javadoc) + * @see javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object) + */ + public TaggingGroupingValue unmarshal(String dt) { + + return TaggingGroupingValue.fromValue(dt); + } +} diff --git a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/DataType.java b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/DataType.java index 13ffcf4..e7ee8db 100644 --- a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/DataType.java +++ b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/DataType.java @@ -23,7 +23,8 @@ public enum DataType { Times_ListOf, Text, Boolean, - Number; + Number, + GeoJSON; /** * Value. diff --git a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataCategory.java b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataCategory.java new file mode 100644 index 0000000..7a3f3d5 --- /dev/null +++ b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataCategory.java @@ -0,0 +1,116 @@ +/** + * + */ +package org.gcube.datacatalogue.metadatadiscovery.bean.jaxb; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Mar 21, 2017 + */ +@XmlRootElement(name = "metadatacategory") +@XmlAccessorType (XmlAccessType.FIELD) +public class MetadataCategory implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = -7282676787740920115L; + + @XmlAttribute(required = true) + private String id = null; + + @XmlElement(required = true) + private String title = ""; + + private String description = null; + + + /** + * + */ + public MetadataCategory() { + } + + + /** + * @return the id + */ + public String getId() { + + return id; + } + + + /** + * @return the title + */ + public String getTitle() { + + return title; + } + + + /** + * @return the description + */ + public String getDescription() { + + return description; + } + + + /** + * @param id the id to set + */ + public void setId(String id) { + + this.id = id; + } + + + /** + * @param title the title to set + */ + public void setTitle(String title) { + + this.title = title; + } + + + /** + * @param description the description to set + */ + public void setDescription(String description) { + + this.description = description; + } + + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + + StringBuilder builder = new StringBuilder(); + builder.append("MetadataCategory [id="); + builder.append(id); + builder.append(", title="); + builder.append(title); + builder.append(", description="); + builder.append(description); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataField.java b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataField.java index 08451da..3e47033 100644 --- a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataField.java +++ b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataField.java @@ -47,6 +47,13 @@ public class MetadataField implements Serializable{ @XmlElement(name = "validator") private MetadataValidator validator; + @XmlElement(name = "tagging") + private MetadataTagging tagging; + + + @XmlElement(name = "grouping") + private MetadataGrouping grouping; + /** * Instantiates a new metadata field. */ @@ -128,6 +135,24 @@ public class MetadataField implements Serializable{ } + /** + * @return the tagging + */ + public MetadataTagging getTagging() { + + return tagging; + } + + + /** + * @return the grouping + */ + public MetadataGrouping getGrouping() { + + return grouping; + } + + /** * @param fieldName the fieldName to set */ @@ -190,6 +215,24 @@ public class MetadataField implements Serializable{ this.validator = validator; } + + /** + * @param tagging the tagging to set + */ + public void setTagging(MetadataTagging tagging) { + + this.tagging = tagging; + } + + + /** + * @param grouping the grouping to set + */ + public void setGrouping(MetadataGrouping grouping) { + + this.grouping = grouping; + } + /* (non-Javadoc) * @see java.lang.Object#toString() */ @@ -211,6 +254,10 @@ public class MetadataField implements Serializable{ builder.append(vocabulary); builder.append(", validator="); builder.append(validator); + builder.append(", tagging="); + builder.append(tagging); + builder.append(", grouping="); + builder.append(grouping); builder.append("]"); return builder.toString(); } diff --git a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataGrouping.java b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataGrouping.java new file mode 100644 index 0000000..f2738f0 --- /dev/null +++ b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataGrouping.java @@ -0,0 +1,42 @@ +/** + * + */ +package org.gcube.datacatalogue.metadatadiscovery.bean.jaxb; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + +import org.gcube.datacatalogue.metadatadiscovery.adapter.TaggingGroupingAdapter; + + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Mar 21, 2017 + */ +@XmlRootElement(name = "grouping") +@XmlAccessorType (XmlAccessType.FIELD) +public class MetadataGrouping implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = 4684835556193102991L; + + @XmlAttribute + private Boolean create = false; + + @XmlJavaTypeAdapter(TaggingGroupingAdapter.class) + private TaggingGroupingValue groupingValue = null; + + /** + * + */ + public MetadataGrouping() { + } +} diff --git a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataTagging.java b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataTagging.java new file mode 100644 index 0000000..104f0ee --- /dev/null +++ b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/MetadataTagging.java @@ -0,0 +1,45 @@ +/** + * + */ +package org.gcube.datacatalogue.metadatadiscovery.bean.jaxb; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + +import org.gcube.datacatalogue.metadatadiscovery.adapter.TaggingGroupingAdapter; + + +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Mar 21, 2017 + */ +@XmlRootElement(name = "tagging") +@XmlAccessorType (XmlAccessType.FIELD) +public class MetadataTagging implements Serializable{ + + @XmlAttribute + private Boolean create = false; + + @XmlAttribute + private String separator = ":"; + + @XmlJavaTypeAdapter(TaggingGroupingAdapter.class) + private TaggingGroupingValue taggingValue = null; + + /** + * + */ + private static final long serialVersionUID = 3853551415977545419L; + + /** + * + */ + public MetadataTagging() { + } +} diff --git a/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/TaggingGroupingValue.java b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/TaggingGroupingValue.java new file mode 100644 index 0000000..e2451c9 --- /dev/null +++ b/src/main/java/org/gcube/datacatalogue/metadatadiscovery/bean/jaxb/TaggingGroupingValue.java @@ -0,0 +1,44 @@ +/** + * + */ +package org.gcube.datacatalogue.metadatadiscovery.bean.jaxb; + + +/** + * The Enum TaggingGroupingValue. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Mar 21, 2017 + */ +public enum TaggingGroupingValue { + + onFieldName, + onValue; + + /** + * Value. + * + * @return the string + */ + public String value() { + return name(); + } + + + /** + * From value. + * + * @param v the v + * @return the tagging grouping value + */ + public static TaggingGroupingValue fromValue(String v) { + TaggingGroupingValue vv; + try{ + vv = valueOf(v); + }catch(Exception e){ + return TaggingGroupingValue.onValue; + } + + return vv; + } +}