Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • 1-create-issue
2 results

GetAccessApiController.java

Blame
  • GetAccessApiController.java 7.11 KiB
    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;
    import io.swagger.v3.oas.annotations.responses.ApiResponses;
    import io.swagger.v3.oas.annotations.responses.ApiResponse;
    import io.swagger.v3.oas.annotations.media.ArraySchema;
    import io.swagger.v3.oas.annotations.media.Content;
    import io.swagger.v3.oas.annotations.media.Schema;
    import io.swagger.v3.oas.annotations.security.SecurityRequirement;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.bind.annotation.CookieValue;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestHeader;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RequestPart;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.validation.constraints.*;
    import javax.validation.Valid;
    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    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;
    
    @javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2021-07-16T07:58:35.159Z[GMT]")
    @RestController
    
    public class GetAccessApiController implements GetAccessApi {
    
        private static final Logger log = LoggerFactory.getLogger(GetAccessApiController.class);
    
        private final ObjectMapper objectMapper;
    
        private final HttpServletRequest request;
    
        @Autowired
        private  PolicyService policyService;
        
        @org.springframework.beans.factory.annotation.Autowired
        public GetAccessApiController(ObjectMapper objectMapper, HttpServletRequest request) {
            this.objectMapper = objectMapper;
            this.request = request;
        }
           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
         
          */
         
      /*   {  
       "dataseekerID":"462626262",
       "DatasetIDs":[
          "1421515",
          "616266262"
       ]
    }*/    try{
                dataSeekerID=body.getDataseekerID();
                organizationAttributesAsString=policyService.getDataSeekersOrganizationPolicy(dataSeekerID);
                
             //  organizationAttributesAsString="{\"name\":\"Test Organization\",\"sector\":\"Test Sector\",\"continent\":\"EU\",\"country\":\"GRE\",\"type\":\"Private Entity\",\"size\":\"medium\",\"reputation\":7}";
                
                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}";
            
          
           
          
           
            
         /*"
            2.- GetDatasetPolicies (DatasetID) -> de aqui obtendremos la politica con la siguiente información. -> llamada a API blockchain
                struct access_policy {
                        string[] Sector;
                        string[] Continent;
                        string[] Country;
                        string[] Type;
                        string[] Size;
                        string[] Reputation_Score;
                }
    */
            
         
         
         
         
         
            JSONObject organizationAttributesJson = null;
            JSONObject accessPolicyAsJSON = null;
            List<Access> listAccess =new ArrayList<Access>();
            try{ 
                
                
                organizationAttributesJson=new JSONObject(organizationAttributesAsString);
                
                
                
            
                for (String datasetID : datasetIDList) {
    
                    String accessPolicyasString=policyService.getDatasetPolicy(datasetID);
                    
                    //String accessPolicyasString="{\"Continent\":[\"testContinent\",\"test2Continent\"],\"Type\":[\"testType\",\"test2Type\"],\"Sector\":[\"testSector\",\"test2Sector\"],\"Size\":[\"testSize\",\"test2Size\"],\"Country\":[\"testCountry\",\"test2Country\"],\"Reputation\":0}";
                    
                    
                    
                    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); 
                    }
    
                }   
                
                
                
            }catch (Exception e){
                  
                return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); 
                
            }
            
            
            
            
             
            return new ResponseEntity<List<Access>>(listAccess, HttpStatus.OK); 
            
            
        }
    
    }