From 84bc2cfef004c46d82b94f3d175cea3205637e20 Mon Sep 17 00:00:00 2001 From: root <root@platoon-VirtualBox> Date: Mon, 6 Sep 2021 11:31:53 +0200 Subject: [PATCH] Include the functionality for read dataset info --- ...icyengine.jar => swagger-spring-1.0.0.jar} | Bin .../api/GetAccessApiController.java | 68 ++++++++++++------ .../DVPolicyEngine/service/PolicyService.java | 24 ++++--- src/main/resources/application.properties | 2 +- 4 files changed, 60 insertions(+), 34 deletions(-) rename Docker_Tecnalia_PolicyEngine/policyengine/{policyengine.jar => swagger-spring-1.0.0.jar} (100%) diff --git a/Docker_Tecnalia_PolicyEngine/policyengine/policyengine.jar b/Docker_Tecnalia_PolicyEngine/policyengine/swagger-spring-1.0.0.jar similarity index 100% rename from Docker_Tecnalia_PolicyEngine/policyengine/policyengine.jar rename to Docker_Tecnalia_PolicyEngine/policyengine/swagger-spring-1.0.0.jar diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java index af64428..cfc58a4 100644 --- a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java +++ b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java @@ -67,7 +67,7 @@ public class GetAccessApiController implements GetAccessApi { */ String organizationAttributesAsString=policyService.getDataSeekersOrganizationPolicy(dataSeekerID); - organizationAttributesAsString="{\"name\":\"Test Organization\",\"sector\":\"Test Sector\",\"continent\":\"EU\",\"country\":\"GRE\",\"type\":\"Private Entity\",\"size\":\"medium\",\"reputation\":7}"; + // organizationAttributesAsString="{\"name\":\"Test Organization\",\"sector\":\"Test Sector\",\"continent\":\"EU\",\"country\":\"GRE\",\"type\":\"Private Entity\",\"size\":\"medium\",\"reputation\":7}"; System.out.println("organizationAttributesAsString:"+organizationAttributesAsString); @@ -82,35 +82,59 @@ public class GetAccessApiController implements GetAccessApi { string[] Reputation_Score; } */ - - List<Access> listAccess =new ArrayList<Access>(); - for (String datasetID : datasetIDList) { - String accessPolicyasString=policyService.getDatasetPolicies(datasetID); + JSONObject organizationAttributesJson = null; + JSONObject accessPolicyAsJSON = null; + List<Access> listAccess =new ArrayList<Access>(); + try{ + organizationAttributesJson=new JSONObject(organizationAttributesAsString); + + + - System.out.println("accessPolicyasString:"+accessPolicyasString); - - // 3.-Comparar los atributos de la organización con los de la politica y construir el objeto Access y añadirlo a la lista + for (String datasetID : datasetIDList) { + + String accessPolicyasString=policyService.getDatasetPolicy(datasetID); + + + try + { + accessPolicyAsJSON = new JSONObject(accessPolicyasString); + + System.out.println("accessPolicyasString:"+accessPolicyasString); + + // 3.-Comparar los atributos de la organización con los de la politica y construir el objeto Access y añadirlo a la lista + + Access access=policyService.checkAtributesInPolicy( datasetID, organizationAttributesJson, accessPolicyAsJSON); + if (access!=null) + listAccess.add(access); + + + + } + catch(Exception e){ + Access access=new Access(); + access.datasetID(datasetID); + access.setGranted(Boolean.FALSE); + access.setNonConformities(accessPolicyasString); + listAccess.add(access); + //return new ResponseEntity<List<Access>>(listAccess, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } + - Access access=policyService.checkAtributesInPolicy( datasetID, organizationAttributesAsString, accessPolicyasString); - if (access!=null) - listAccess.add(access); + }catch (Exception e){ + + return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); - } - /* if (accept != null && accept.contains("application/json")) { - try { - return new ResponseEntity<List<Access>>(objectMapper.readValue("[ {\n \"Dataset_ID\" : \"Dataset_ID\",\n \"non_conformities\" : \"non_conformities\",\n \"granted\" : true\n}, {\n \"Dataset_ID\" : \"Dataset_ID\",\n \"non_conformities\" : \"non_conformities\",\n \"granted\" : true\n} ]", List.class), HttpStatus.NOT_IMPLEMENTED); - } catch (IOException e) { - log.error("Couldn't serialize response for content type application/json", e); - return new ResponseEntity<List<Access>>(HttpStatus.INTERNAL_SERVER_ERROR); - } - } - return new ResponseEntity<List<Access>>(HttpStatus.NOT_IMPLEMENTED);*/ - + + + return new ResponseEntity<List<Access>>(listAccess, HttpStatus.OK); diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java b/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java index f2488e3..de06238 100644 --- a/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java +++ b/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java @@ -86,10 +86,10 @@ public class PolicyService { } - public String getDatasetPolicies(String datasetID) { + public String getDatasetPolicy(String datasetID) { String accessPolicyAsString=""; - try { + try { /*connect to blockchain API and return policy as struct access_policy { @@ -104,17 +104,18 @@ public class PolicyService { //{"DatasetId":"ActivityData-Riccardo"} String jsondata="{\"DatasetId\":"+"\""+datasetID+"\""+"}"; - String datasetInformationAsString=""; + String address="https://datavaults-test-126.euprojects.net/readDatasetId"; - datasetInformationAsString = httpUtils.sendHttpPostRequest(address, jsondata); - JSONObject accessPolicyAsJSON = new JSONObject(); + String datasetInformationAsString = httpUtils.sendHttpPostRequest(address, jsondata); + + JSONObject accessPolicyAsJSON = new JSONObject(); try{ accessPolicyAsJSON = new JSONObject(datasetInformationAsString); JSONObject policy=accessPolicyAsJSON.getJSONObject("Policy"); accessPolicyAsString=policy.toString(); } catch (Exception e) { - + accessPolicyAsString=datasetInformationAsString; } @@ -122,16 +123,17 @@ public class PolicyService { } return accessPolicyAsString; + } - public Access checkAtributesInPolicy(String datasetID,String organizationAttributesAsString, String accessPolicyasString){ + public Access checkAtributesInPolicy(String datasetID,JSONObject organizationAttributesJson, JSONObject accessPolicyAsJSON){ Access access=new Access(); Iterator<String> orgKeys = null; Iterator<String> policyKeys = null; - JSONObject organizationAttributesJson = null; - JSONObject accessPolicyAsJSON = null; + /* JSONObject organizationAttributesJson = null; + JSONObject accessPolicyAsJSON = null;*/ //Example //organizationAttributesAsString:{"name":"Test Organization","sector":"Test Sector","continent":"EU","country":"GRE","type":"Private Entity","size":"medium","reputation":7} @@ -139,7 +141,7 @@ public class PolicyService { try{ - organizationAttributesJson = new JSONObject(organizationAttributesAsString); + // organizationAttributesJson = new JSONObject(organizationAttributesAsString); orgKeys = organizationAttributesJson.keys(); @@ -159,7 +161,7 @@ public class PolicyService { try{ - accessPolicyAsJSON = new JSONObject(accessPolicyasString); + // accessPolicyAsJSON = new JSONObject(accessPolicyasString); //policyKeys=accessPolicyAsJSON.keys(); /* JSONArray jArrayContinent=accessPolicyAsJSON.getJSONArray("Continent"); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e80e72d..38da7da 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -10,7 +10,7 @@ springdoc.swagger-ui.path=/swagger-ui.html -datavaults.api.url=https://datavaults-cloud.euprojects.net/api/v1/group +datavaults.api.url=https://platform.datavaults.eu/api/v1/group datavaults.auth.server.url=https://datavaults-auth.euprojects.net/auth/realms/platform/protocol/openid-connect/token datavaults.auth.client.id=backend-service datavaults.auth.client.secret=04892d79-f600-4410-a9ac-6860aa5bdf3e -- GitLab