This is an automated email from the ASF dual-hosted git repository.

isjarana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-data-lake.git


The following commit(s) were added to refs/heads/master by this push:
     new 1d84c33  initia search by key
     new 078077f  Merge pull request #177 from isururanawaka/mysql_conversion
1d84c33 is described below

commit 1d84c3331a9ddfb804e630a920c1b196622bd060
Author: Isuru Ranawaka <[email protected]>
AuthorDate: Tue Sep 20 17:30:28 2022 -0400

    initia search by key
---
 .../drms/api/handlers/ResourceServiceHandler.java  | 72 +++++++++++++---------
 1 file changed, 44 insertions(+), 28 deletions(-)

diff --git 
a/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
 
b/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
index 39c9b42..194c8c5 100644
--- 
a/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
+++ 
b/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
@@ -559,56 +559,72 @@ public class ResourceServiceHandler extends 
ResourceServiceGrpc.ResourceServiceI
 
     private Set<ResourceProperty> mergeProperties(Resource resource, 
Map<String, Object> values) {
 
-        Set<ResourceProperty> resourcePropertySet = new HashSet<>();
+        Set<ResourceProperty> exProperties = resource.getResourceProperty();
+        Set<ResourceProperty> newProperties = new HashSet<>();
+
 
         for (String key : values.keySet()) {
-            List<ResourceProperty> propertyList = 
resourcePropertyRepository.findByPropertyKeyAndResourceId(key, 
resource.getId());
+
+            List<ResourceProperty> resourcePropertyList = 
exProperties.stream().filter(prop -> {
+                if (prop.getPropertyKey().equals(key)) {
+                    return true;
+                } else {
+                    return false;
+                }
+            }).collect(Collectors.toList());
+
+
             if (values.get(key) instanceof Map) {
                 //TODO: Implement MAP
             } else if (values.get(key) instanceof List) {
                 ArrayList arrayList = (ArrayList) values.get(key);
-                if (!propertyList.isEmpty()) {
-                    propertyList.forEach(prop -> {
-                        resourcePropertyRepository.delete(prop);
+                if (!resourcePropertyList.isEmpty()) {
+                    //TODO:handle this
+
+                } else {
+                    arrayList.forEach(val -> {
+                        ResourceProperty resourceProperty = new 
ResourceProperty();
+                        resourceProperty.setPropertyKey(key);
+                        resourceProperty.setPropertyValue(val.toString());
+                        resourceProperty.setResource(resource);
+                        newProperties.add(resourceProperty);
                     });
                 }
-                arrayList.forEach(val -> {
-                    ResourceProperty resourceProperty = new ResourceProperty();
-                    resourceProperty.setPropertyKey(key);
-                    resourceProperty.setPropertyValue(val.toString());
-                    resourceProperty.setResource(resource);
-                    resourcePropertySet.add(resourceProperty);
-                });
 
             } else {
-                if (!propertyList.isEmpty()) {
-                    propertyList.forEach(prop -> {
-                        prop.setPropertyValue((String) values.get(key));
-                        resourcePropertyRepository.save(prop);
-                    });
+                if (!resourcePropertyList.isEmpty()) {
+                    Set<ResourceProperty> newRes = 
resourcePropertyList.stream().map(prop -> {
+                        prop.setPropertyValue(String.valueOf(values.get(key)));
+                        return prop;
+                    }).collect(Collectors.toSet());
+                    newProperties.addAll(newRes);
                 } else {
                     String value = String.valueOf(values.get(key));
                     ResourceProperty resourceProperty = new ResourceProperty();
                     resourceProperty.setPropertyKey(key);
                     resourceProperty.setPropertyValue(value);
                     resourceProperty.setResource(resource);
-                    resourcePropertySet.add(resourceProperty);
+                    newProperties.add(resourceProperty);
                 }
             }
         }
 
-//        Optional<ResourceProperty> hostOp = 
resourcePropertyRepository.findByPropertyKeyAndResourceId("hostName",resource.getId());
-//        Optional<ResourceProperty> resourceOp = 
resourcePropertyRepository.findByPropertyKeyAndResourceId("resourcePath",resource.getId());
-//
-//        if(hostOp.isPresent()){
-//            resourcePropertySet.add(hostOp.get());
-//        }
-//        if(resourceOp.isPresent()){
-//            resourcePropertySet.add(resourceOp.get());
-//        }
+        while (exProperties.iterator().hasNext()) {
+            ResourceProperty resourceProperty = exProperties.iterator().next();
+            if (values.keySet().stream().filter(prop -> {
+                if (prop.equals(resourceProperty.getPropertyKey())) {
+                    return true;
+                } else {
+                    return false;
+                }
+            }).collect(Collectors.toList()).isEmpty()) {
+                newProperties.add(resourceProperty);
+            }
 
 
-        return resourcePropertySet;
+        }
+
+        return newProperties;
     }
 
 }

Reply via email to