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;
}
}