diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApi.java b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApi.java index febde59973f5d22761b12025ab4152b3bf95ab23..826c09862a2e5e30fe26ea17869b9bd2f19ebb74 100644 --- a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApi.java +++ b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApi.java @@ -6,6 +6,8 @@ package com.tecnalia.DVPolicyEngine.api; import com.tecnalia.DVPolicyEngine.model.Access; +import com.tecnalia.DVPolicyEngine.model.Input; + import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.enums.ParameterIn; @@ -34,7 +36,7 @@ import java.util.Map; @javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2021-07-16T07:58:35.159Z[GMT]") @Validated -public interface GetAccessApi { +/*public interface GetAccessApi { @Operation(summary = "", description = "Get if the access is granted to a specific seeker", tags={ }) @ApiResponses(value = { @@ -46,5 +48,21 @@ public interface GetAccessApi { method = RequestMethod.GET) ResponseEntity<List<Access>> getAccessByAttributes(@NotNull @Parameter(in = ParameterIn.QUERY, description = "" ,required=true,schema=@Schema()) @Valid @RequestParam(value = "DatasetID_list", required = true) List<String> datasetIDList, @NotNull @Parameter(in = ParameterIn.QUERY, description = "" ,required=true,schema=@Schema()) @Valid @RequestParam(value = "DataSeekerID", required = true) String dataSeekerID); -} +}*/ + + + +public interface GetAccessApi { + + @Operation(summary = "", description = "Get if the access is granted to a specific seeker", tags={ }) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "access requested", content = @Content(mediaType = "application/json", array = @ArraySchema(schema = @Schema(implementation = Access.class)))), + + @ApiResponse(responseCode = "500", description = "internal system error") }) + @RequestMapping(value = "/getAccess", + produces = { "application/json" }, + consumes = { "application/json" }, + method = RequestMethod.POST) + ResponseEntity<List<Access>> getAccessByAttributes(@Parameter(in = ParameterIn.DEFAULT, description = "", required=true, schema=@Schema()) @Valid @RequestBody Input body); +} diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java index 4c8ee6bfd5f9a615487cb4d1996f5f851b313105..7f5fc22ea110d80d8721c2983c8750134900d66b 100644 --- a/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java +++ b/src/main/java/com/tecnalia/DVPolicyEngine/api/GetAccessApiController.java @@ -2,7 +2,9 @@ package com.tecnalia.DVPolicyEngine.api; import com.tecnalia.DVPolicyEngine.model.Access; import com.fasterxml.jackson.databind.ObjectMapper; +import com.tecnalia.DVPolicyEngine.model.Input; import com.tecnalia.DVPolicyEngine.service.PolicyService; + import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.enums.ParameterIn; @@ -34,6 +36,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.UUID; +import org.json.JSONArray; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; @@ -56,23 +59,46 @@ public class GetAccessApiController implements GetAccessApi { this.objectMapper = objectMapper; this.request = request; } - - public ResponseEntity<List<Access>> getAccessByAttributes(@NotNull @Parameter(in = ParameterIn.QUERY, description = "" ,required=true,schema=@Schema()) @Valid @RequestParam(value = "DatasetID_list", required = true) List<String> datasetIDList,@NotNull @Parameter(in = ParameterIn.QUERY, description = "" ,required=true,schema=@Schema()) @Valid @RequestParam(value = "DataSeekerID", required = true) String dataSeekerID) { + public ResponseEntity<List<Access>> getAccessByAttributes(@Parameter(in = ParameterIn.DEFAULT, description = "", required=true, schema=@Schema()) @Valid @RequestBody Input body) { + // public ResponseEntity<List<Access>> getAccessByAttributes(@NotNull @Parameter(in = ParameterIn.QUERY, description = "" ,required=true,schema=@Schema()) @Valid @RequestParam(value = "DatasetID_list", required = true) List<String> datasetIDList,@NotNull @Parameter(in = ParameterIn.QUERY, description = "" ,required=true,schema=@Schema()) @Valid @RequestParam(value = "DataSeekerID", required = true) String dataSeekerID) { String accept = request.getHeader("Accept"); - + String dataSeekerID=""; + String organizationAttributesAsString=""; + List<String> datasetIDList=null; /* 1.-GetDataSeekersOrganisationPolicy (DataSeekerID) -> de aqui obtenemos los atributos de la organización */ - String organizationAttributesAsString=policyService.getDataSeekersOrganizationPolicy(dataSeekerID); + + /* { + "dataseekerID":"462626262", + "DatasetIDs":[ + "1421515", + "616266262" + ] +}*/ try{ + dataSeekerID=body.getDataseekerID(); + organizationAttributesAsString=policyService.getDataSeekersOrganizationPolicy(dataSeekerID); + System.out.println("organizationAttributesAsString:"+organizationAttributesAsString); + + datasetIDList=new ArrayList<String>(); + datasetIDList=body.getDatasetIDs(); + + + } + catch(Exception e){ + return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); + } + + // organizationAttributesAsString="{\"name\":\"Test Organization\",\"sector\":\"Test Sector\",\"continent\":\"EU\",\"country\":\"GRE\",\"type\":\"Private Entity\",\"size\":\"medium\",\"reputation\":7}"; - System.out.println("organizationAttributesAsString:"+organizationAttributesAsString); + /*" 2.- GetDatasetPolicies (DatasetID) -> de aqui obtendremos la politica con la siguiente información. -> llamada a API blockchain @@ -86,6 +112,11 @@ public class GetAccessApiController implements GetAccessApi { } */ + + + + + JSONObject organizationAttributesJson = null; JSONObject accessPolicyAsJSON = null; List<Access> listAccess =new ArrayList<Access>(); diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/model/Input.java b/src/main/java/com/tecnalia/DVPolicyEngine/model/Input.java new file mode 100644 index 0000000000000000000000000000000000000000..4c5d8e799e526852140916de5432f42853997c71 --- /dev/null +++ b/src/main/java/com/tecnalia/DVPolicyEngine/model/Input.java @@ -0,0 +1,114 @@ +package com.tecnalia.DVPolicyEngine.model; + +import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import io.swagger.v3.oas.annotations.media.Schema; +import java.util.ArrayList; +import java.util.List; +import org.springframework.validation.annotation.Validated; +import javax.validation.Valid; +import javax.validation.constraints.*; + +/** + * Input + */ +@Validated +@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2021-09-10T10:28:26.192Z[GMT]") + + +public class Input { + @JsonProperty("dataseekerID") + private String dataseekerID = null; + + @JsonProperty("DatasetIDs") + @Valid + private List<String> datasetIDs = null; + + public Input dataseekerID(String dataseekerID) { + this.dataseekerID = dataseekerID; + return this; + } + + /** + * Get dataseekerID + * @return dataseekerID + **/ + @Schema(description = "") + + public String getDataseekerID() { + return dataseekerID; + } + + public void setDataseekerID(String dataseekerID) { + this.dataseekerID = dataseekerID; + } + + public Input datasetIDs(List<String> datasetIDs) { + this.datasetIDs = datasetIDs; + return this; + } + + public Input addDatasetIDsItem(String datasetIDsItem) { + if (this.datasetIDs == null) { + this.datasetIDs = new ArrayList<String>(); + } + this.datasetIDs.add(datasetIDsItem); + return this; + } + + /** + * Get datasetIDs + * @return datasetIDs + **/ + @Schema(description = "") + + public List<String> getDatasetIDs() { + return datasetIDs; + } + + public void setDatasetIDs(List<String> datasetIDs) { + this.datasetIDs = datasetIDs; + } + + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Input input = (Input) o; + return Objects.equals(this.dataseekerID, input.dataseekerID) && + Objects.equals(this.datasetIDs, input.datasetIDs); + } + + @Override + public int hashCode() { + return Objects.hash(dataseekerID, datasetIDs); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Input {\n"); + + sb.append(" dataseekerID: ").append(toIndentedString(dataseekerID)).append("\n"); + sb.append(" datasetIDs: ").append(toIndentedString(datasetIDs)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(java.lang.Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java b/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java index e2562034ed1130a0f840be846366253956b06280..cccacb10805acfa9b6ec3255c20d7554d7c67b30 100644 --- a/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java +++ b/src/main/java/com/tecnalia/DVPolicyEngine/service/PolicyService.java @@ -185,13 +185,13 @@ public class PolicyService { String sNonConformities=""; while (orgKeys.hasNext()) { orgKey = orgKeys.next(); - System.out.println("Key organization:"+orgKey); + //System.out.println("Key organization:"+orgKey); String lowerOrgKey=orgKey.toLowerCase(); policyKeys=accessPolicyAsJSON.keys(); while (policyKeys.hasNext()) { policyKey = policyKeys.next(); - System.out.println("Key policy:"+policyKey); + //System.out.println("Key policy:"+policyKey); String lowerPolicyKey=policyKey.toLowerCase(); @@ -236,11 +236,11 @@ public class PolicyService { int iOrgValue=-1; try{ sOrgValue=organizationAttributesJson.getString(parameterOrg); - System.out.println("Value for organization:"+sOrgValue); + // System.out.println("Value for organization:"+sOrgValue); } catch(Exception e){ iOrgValue=organizationAttributesJson.getInt(parameterOrg); - System.out.println("Value for organization:"+iOrgValue); + //System.out.println("Value for organization:"+iOrgValue); } @@ -251,7 +251,7 @@ public class PolicyService { if (jArray.toString().contains(sOrgValue)){ result=true; - System.out.println("Is the same value?:"+result); + // System.out.println("Is the same value?:"+result); } } @@ -260,7 +260,7 @@ public class PolicyService { if (iValue==iOrgValue){ result=true; - System.out.println("Is the same value?:"+result); + // System.out.println("Is the same value?:"+result); } }