diff --git a/.settings/.gitignore b/.settings/.gitignore new file mode 100644 index 0000000..0924da4 --- /dev/null +++ b/.settings/.gitignore @@ -0,0 +1 @@ +/org.eclipse.m2e.core.prefs diff --git a/pom.xml b/pom.xml index 335020d..195fb46 100644 --- a/pom.xml +++ b/pom.xml @@ -12,14 +12,14 @@ maven-parent org.gcube.tools 1.1.0 - + - - https://code-repo.d4science.org/gCubeSystem - 1.0 - - + + https://code-repo.d4science.org/gCubeSystem + 1.0 + + @@ -51,8 +51,12 @@ 1.14.8 + + javax.json + javax.json-api + 1.1 + - @@ -62,6 +66,12 @@ 4.11 + + + org.glassfish + javax.json + 1.1 + ch.qos.logback @@ -69,7 +79,7 @@ test - + \ No newline at end of file diff --git a/src/main/java/org/gcube/application/geoportal/common/faults/JsonParseException.java b/src/main/java/org/gcube/application/geoportal/common/faults/JsonParseException.java new file mode 100644 index 0000000..f45f8a1 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportal/common/faults/JsonParseException.java @@ -0,0 +1,37 @@ +package org.gcube.application.geoportal.common.faults; + +public class JsonParseException extends Exception{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + public JsonParseException() { + super(); + // TODO Auto-generated constructor stub + } + + public JsonParseException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + // TODO Auto-generated constructor stub + } + + public JsonParseException(String message, Throwable cause) { + super(message, cause); + // TODO Auto-generated constructor stub + } + + public JsonParseException(String message) { + super(message); + // TODO Auto-generated constructor stub + } + + public JsonParseException(Throwable cause) { + super(cause); + // TODO Auto-generated constructor stub + } + + + +} diff --git a/src/main/java/org/gcube/application/geoportal/common/model/BasicJSONObject.java b/src/main/java/org/gcube/application/geoportal/common/model/BasicJSONObject.java new file mode 100644 index 0000000..e9c8c05 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportal/common/model/BasicJSONObject.java @@ -0,0 +1,147 @@ +package org.gcube.application.geoportal.common.model; + +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +import javax.json.JsonArray; +import javax.json.JsonNumber; +import javax.json.JsonObject; +import javax.json.JsonString; +import javax.json.JsonValue; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public class BasicJSONObject implements JsonObject { + + @Getter + private JsonObject theObject; + + public String toJson() { + return getTheObject().toString(); + } + + + @Override + public int size() { + return getTheObject().size(); + } + + @Override + public boolean isEmpty() { + return getTheObject().isEmpty(); + } + + @Override + public boolean containsKey(Object key) { + return getTheObject().containsKey(key); + } + + @Override + public boolean containsValue(Object value) { + return getTheObject().containsValue(value); + } + + @Override + public JsonValue get(Object key) { + return getTheObject().get(key); + } + + @Override + public JsonValue put(String key, JsonValue value) { + return getTheObject().put(key, value); + } + + @Override + public JsonValue remove(Object key) { + return getTheObject().remove(key); + } + + @Override + public void putAll(Map m) { + getTheObject().putAll(m); + } + + @Override + public void clear() { + getTheObject().clear(); + } + + @Override + public Set keySet() { + return getTheObject().keySet(); + } + + @Override + public Collection values() { + return getTheObject().values(); + } + + @Override + public Set> entrySet() { + return getTheObject().entrySet(); + } + + @Override + public JsonArray getJsonArray(String name) { + return getTheObject().getJsonArray(name); + } + + @Override + public JsonObject getJsonObject(String name) { + return getTheObject().getJsonObject(name); + } + + @Override + public JsonNumber getJsonNumber(String name) { + return getTheObject().getJsonNumber(name); + } + + @Override + public JsonString getJsonString(String name) { + return getTheObject().getJsonString(name); + } + + @Override + public String getString(String name) { + return getTheObject().getString(name); + } + + @Override + public String getString(String name, String defaultValue) { + return getTheObject().getString(name, defaultValue); + } + + @Override + public int getInt(String name) { + return getTheObject().getInt(name); + } + + @Override + public int getInt(String name, int defaultValue) { + return getTheObject().getInt(name, defaultValue); + } + + @Override + public boolean getBoolean(String name) { + return getTheObject().getBoolean(name); + } + + @Override + public boolean getBoolean(String name, boolean defaultValue) { + return getTheObject().getBoolean(name, defaultValue); + } + + @Override + public boolean isNull(String name) { + return getTheObject().isNull(name); + } + + @Override + public ValueType getValueType() { + return getTheObject().getValueType(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java b/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java index 8a59431..43a4caf 100644 --- a/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java +++ b/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java @@ -1,5 +1,14 @@ package org.gcube.application.geoportal.common.model.profile; -public class DefaultCompiler { +import javax.json.JsonObject; + +import org.gcube.application.geoportal.common.model.BasicJSONObject; + +public class DefaultCompiler extends BasicJSONObject{ + + public DefaultCompiler(JsonObject theObject) { + super(theObject); + // TODO Auto-generated constructor stub + } } diff --git a/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java b/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java index 9a5751f..36a375e 100644 --- a/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java +++ b/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java @@ -1,5 +1,19 @@ package org.gcube.application.geoportal.common.model.profile; -public class Field { +import javax.json.JsonObject; +import org.gcube.application.geoportal.common.model.BasicJSONObject; + +import lombok.Getter; + +@Getter +public class Field extends BasicJSONObject{ + + public Field(JsonObject theObject) { + super(theObject); + // TODO Auto-generated constructor stub + } + + + } diff --git a/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java b/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java index 9813a46..b8cfb3e 100644 --- a/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java +++ b/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java @@ -1,5 +1,14 @@ package org.gcube.application.geoportal.common.model.profile; -public class FieldMapping { +import javax.json.JsonObject; + +import org.gcube.application.geoportal.common.model.BasicJSONObject; + +public class FieldMapping extends BasicJSONObject { + + public FieldMapping(JsonObject theObject) { + super(theObject); + // TODO Auto-generated constructor stub + } } diff --git a/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java b/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java index 62cc863..8d8cd0c 100644 --- a/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java +++ b/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java @@ -1,5 +1,15 @@ package org.gcube.application.geoportal.common.model.profile; -public class IndexDefinition { +import javax.json.JsonObject; +import org.gcube.application.geoportal.common.model.BasicJSONObject; + +public class IndexDefinition extends BasicJSONObject { + + public IndexDefinition(JsonObject theObject) { + super(theObject); + // TODO Auto-generated constructor stub + } + + } diff --git a/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java b/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java index adeb86d..54a7739 100644 --- a/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java +++ b/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java @@ -1,5 +1,15 @@ package org.gcube.application.geoportal.common.model.profile; -public class IsoMapper { +import javax.json.JsonObject; +import org.gcube.application.geoportal.common.model.BasicJSONObject; + +public class IsoMapper extends BasicJSONObject{ + + public IsoMapper(JsonObject theObject) { + super(theObject); + // TODO Auto-generated constructor stub + } + + } diff --git a/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java b/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java index ad1f461..01fae27 100644 --- a/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java +++ b/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java @@ -2,9 +2,38 @@ package org.gcube.application.geoportal.common.model.profile; import java.util.List; +import javax.json.JsonObject; -public class Profile { +import org.gcube.application.geoportal.common.faults.JsonParseException; +import org.gcube.application.geoportal.common.model.BasicJSONObject; +import lombok.Getter; + +@Getter +public class Profile extends BasicJSONObject{ + + + + public Profile(JsonObject theObject) throws JsonParseException { + super(theObject); + name=theObject.getString("name"); + id=theObject.getString("_id"); +// JsonArray jsonFields=theObject.getJsonArray("fields"); +// if(jsonFields==null) +// fields=null; +// else { +// fields=new ArrayList(); +// for(int i= 0; i fields; diff --git a/src/main/java/org/gcube/application/geoportal/common/model/profile/Serialization.java b/src/main/java/org/gcube/application/geoportal/common/model/profile/Serialization.java new file mode 100644 index 0000000..774c793 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportal/common/model/profile/Serialization.java @@ -0,0 +1,27 @@ +package org.gcube.application.geoportal.common.model.profile; + +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; + +import javax.json.JsonArray; +import javax.json.JsonObject; + +import org.gcube.application.geoportal.common.faults.JsonParseException; +import org.gcube.application.geoportal.common.model.BasicJSONObject; + +public class Serialization { + + + public static ArrayList asArray(JsonArray array,Class clazz) throws JsonParseException{ + try { + ArrayList toReturn=new ArrayList(); + if(array!=null) + for(int i=0;i0); + + } + +} diff --git a/src/test/resources/ProfileConcessioni.json b/src/test/resources/ProfileConcessioni.json new file mode 100644 index 0000000..ed42208 --- /dev/null +++ b/src/test/resources/ProfileConcessioni.json @@ -0,0 +1,29 @@ +{ + "name" : "Concessioni Profile", + "_id" : "", + "fields" :[ + { "name" : "introduzione", "label" : "Introduzione", "type" : "STRING"}, + { "label" : "Descrizione Contenuto", "type" : "STRING"}, + { "label" : "Autori", "type" : "STRING", "cardinality" : "MULTIPLE"}, + { "label" : "Contributore", "type" : "STRING"}, + { "label" : "Titolari", "type" : "STRING", "cardinality" : "MULTIPLE"}, + + { "name":"relazioneScavo", "label" : "Relazione di Scavo", "type" : "DOCUMENT"}, + { "name":"posizionameno", + "label" : "Posizionamento Scavo", + "type" : "DOCUMENT", + "fields":[ + { "label" : "Descrizione Contenuto", "type" : "STRING"}, + { "label" : "Autori", "type" : "STRING", "cardinality" : "MULTIPLE"}, + { "label" : "Contributore", "type" : "STRING"} + ] + } + ], + + "validators" : [ + {"name":"Validator Concessioni", + "type":"JAVA", + "qName":"org.gcube.application.concessioni.Validator"} + ] + +} \ No newline at end of file