From bcd0d7c457c4cdf66e1f832b1224c6d3134d5b7b Mon Sep 17 00:00:00 2001 From: "luca.frosini" Date: Wed, 26 Apr 2017 09:40:34 +0000 Subject: [PATCH] Improved and optimized set and list management git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry@147138 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../resourceregistry/er/ERManagement.java | 39 ++++++++----------- .../resourceregistry/er/ERManagementTest.java | 13 +++++++ 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java index 978abb6..baed876 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java @@ -61,7 +61,6 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.JsonNodeType; -import com.orientechnologies.orient.core.db.record.OTrackedList; import com.orientechnologies.orient.core.metadata.OMetadata; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.metadata.schema.OProperty; @@ -635,17 +634,20 @@ public abstract class ERManagement { return EmbeddedMangement.getEmbeddedType(value); case ARRAY: - List array = new ArrayList<>(); + //ODocument oDocument = new ODocument(); + //return oDocument.fromJSON("{ \"ARRAY\" : " + value.toString() + "}"); + + List list = new ArrayList(); Iterator arrayElement = value.elements(); while (arrayElement.hasNext()) { JsonNode arrayNode = arrayElement.next(); Object objectNode = getObjectFromElement(arrayNode); if (objectNode != null) { - array.add(objectNode); + list.add(objectNode); } } - return array; - + return list; + case BINARY: break; @@ -767,7 +769,12 @@ public abstract class ERManagement { set = true; } - if(object instanceof ArrayList){ + if(object instanceof Set){ + ((OrientElement) element).setProperty(key, object, OType.EMBEDDEDSET); + set = true; + } + + if(object instanceof List){ ((OrientElement) element).setProperty(key, object, OType.EMBEDDEDLIST); set = true; } @@ -853,12 +860,11 @@ public abstract class ERManagement { return dateFormat.format((Date) object); } - - if(object instanceof OTrackedList){ - OTrackedList oTrackedList = (OTrackedList) object; - + + if(object instanceof Collection){ + Collection collection = (Collection) object; JSONArray jsonArray = new JSONArray(); - for(Object o : oTrackedList){ + for(Object o : collection){ Object obj = getPropertyForJson("PLACEHOLDER", o); jsonArray.put(obj); } @@ -866,17 +872,6 @@ public abstract class ERManagement { return jsonArray; } - if(object instanceof ArrayList){ - @SuppressWarnings("rawtypes") - ArrayList arrayList = (ArrayList) object; - JSONArray jsonArray = new JSONArray(); - for(Object o : arrayList){ - Object obj = getPropertyForJson("PLACEHOLDER", o); - jsonArray.put(obj); - } - - return jsonArray; - } return object.toString(); diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java index 3f52971..4413617 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/er/ERManagementTest.java @@ -96,7 +96,20 @@ public class ERManagementTest extends ScopedTest { ServiceStateFacet serviceStateFacet = new ServiceStateFacetImpl(); serviceStateFacet.setValue("ready"); + + List> list = new ArrayList<>(); + Map map1 = new HashMap(); + map1.put("Key1", "Value1"); + Map map2 = new HashMap(); + map2.put("Key2", "Value2"); + list.add(map1); + list.add(map2); + + serviceStateFacet.setAdditionalProperty("MY-TEST", list); + eService.addFacet(serviceStateFacet); + + LicenseFacet licenseFacet = new LicenseFacetImpl(); licenseFacet.setName("EUPL");