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 2e3f564  initia search by key
     new 3d328f7  Merge pull request #175 from isururanawaka/mysql_conversion
2e3f564 is described below

commit 2e3f564b2549a996b19f4be1db5b0c0445b9f0cd
Author: Isuru Ranawaka <[email protected]>
AuthorDate: Tue Sep 20 16:07:30 2022 -0400

    initia search by key
---
 .../drms/api/handlers/ResourceServiceHandler.java  | 48 ++++++++++++++--------
 .../repository/ResourcePropertyRepository.java     |  2 +-
 2 files changed, 32 insertions(+), 18 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 d34ace3..1233359 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
@@ -473,12 +473,16 @@ public class ResourceServiceHandler extends 
ResourceServiceGrpc.ResourceServiceI
                     Resource resource = optionalResource.get();
                     Set<ResourceProperty> resourcePropertySet = 
mergeProperties(resource, map);
 
-                    Optional<ResourceProperty> property = 
resourcePropertyRepository.
+                    List<ResourceProperty> properties = 
resourcePropertyRepository.
                             findByPropertyKeyAndResourceId("metadata", 
resource.getId());
 
-                    if (property.isPresent()) {
-                        
resourcePropertyRepository.deleteById(property.get().getId());
-                    }
+                    properties.forEach(property -> {
+
+                                
resourcePropertyRepository.deleteById(property.getId());
+
+                            }
+                    );
+
 
                     ResourceProperty resourceProperty = new ResourceProperty();
                     resourceProperty.setPropertyKey("metadata");
@@ -519,10 +523,10 @@ public class ResourceServiceHandler extends 
ResourceServiceGrpc.ResourceServiceI
 
                 if (resourceOptional.isPresent()) {
 
-                    Optional<ResourceProperty> resourceProperty = 
resourcePropertyRepository
+                    List<ResourceProperty> resourceProperty = 
resourcePropertyRepository
                             .findByPropertyKeyAndResourceId("metadata", 
resourceOptional.get().getId());
-                    if (resourceProperty.isPresent()) {
-                        String message = 
resourceProperty.get().getPropertyValue();
+                    if (!resourceProperty.isEmpty()) {
+                        String message = 
resourceProperty.get(0).getPropertyValue();
                         Struct.Builder structBuilder = Struct.newBuilder();
                         JsonFormat.parser().merge(message, structBuilder);
                         builder.addMetadata(structBuilder.build());
@@ -560,14 +564,16 @@ public class ResourceServiceHandler extends 
ResourceServiceGrpc.ResourceServiceI
         Set<ResourceProperty> resourcePropertySet = new HashSet<>();
 
         for (String key : values.keySet()) {
-
-            
resourcePropertyRepository.deleteAllByPropertyKeyAndResourceId(key,resource.getId());
-
+            List<ResourceProperty> propertyList = 
resourcePropertyRepository.findByPropertyKeyAndResourceId(key, 
resource.getId());
             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);
+                    });
+                }
                 arrayList.forEach(val -> {
                     ResourceProperty resourceProperty = new ResourceProperty();
                     resourceProperty.setPropertyKey(key);
@@ -575,13 +581,21 @@ public class ResourceServiceHandler extends 
ResourceServiceGrpc.ResourceServiceI
                     resourceProperty.setResource(resource);
                     resourcePropertySet.add(resourceProperty);
                 });
+
             } else {
-                String value = String.valueOf(values.get(key));
-                ResourceProperty resourceProperty = new ResourceProperty();
-                resourceProperty.setPropertyKey(key);
-                resourceProperty.setPropertyValue(value);
-                resourceProperty.setResource(resource);
-                resourcePropertySet.add(resourceProperty);
+                if (!propertyList.isEmpty()) {
+                    propertyList.forEach(prop -> {
+                        prop.setPropertyValue((String) values.get(key));
+                        resourcePropertyRepository.save(prop);
+                    });
+                } else {
+                    String value = String.valueOf(values.get(key));
+                    ResourceProperty resourceProperty = new ResourceProperty();
+                    resourceProperty.setPropertyKey(key);
+                    resourceProperty.setPropertyValue(value);
+                    resourceProperty.setResource(resource);
+                    resourcePropertySet.add(resourceProperty);
+                }
             }
         }
 
diff --git 
a/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/persistance/repository/ResourcePropertyRepository.java
 
b/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/persistance/repository/ResourcePropertyRepository.java
index ef1cdae..43638d3 100644
--- 
a/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/persistance/repository/ResourcePropertyRepository.java
+++ 
b/data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/persistance/repository/ResourcePropertyRepository.java
@@ -8,7 +8,7 @@ import java.util.Optional;
 
 public interface ResourcePropertyRepository extends 
JpaRepository<ResourceProperty, Long> {
 
-    Optional<ResourceProperty> findByPropertyKeyAndResourceId(String key, 
String resourceId);
+    List<ResourceProperty> findByPropertyKeyAndResourceId(String key, String 
resourceId);
 
     List<ResourceProperty> findAllByResourceId(String resourceId);
 

Reply via email to