package com.feisystems.polrep.web.v1;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.feisystems.polrep.service.PolicyService;
import com.feisystems.polrep.service.dto.PolicyContainerDto;
import com.feisystems.polrep.service.dto.PolicyContentContainerDto;
import com.feisystems.polrep.service.dto.PolicyContentDto;
import com.feisystems.polrep.service.dto.PolicyDto;
import com.feisystems.polrep.service.dto.PolicyMetadataContainerDto;
import com.feisystems.polrep.service.dto.PolicyMetadataDto;
@RestController
public class PolicyControllerV1 extends AbstractPolRepRestApiControllerV1 {
@Autowired
private PolicyService policyService;
@RequestMapping(value = "/policies", method = RequestMethod.POST)
public PolicyMetadataContainerDto addPolicies(
@Valid @RequestBody PolicyContentContainerDto addPolicyRequestContainerDto,
@RequestParam(value = "force", required = false) boolean force) {
return policyService.addPolicies(addPolicyRequestContainerDto, force);
}
@RequestMapping(value = "/policies/{policyId}", method = RequestMethod.DELETE)
public void deletePolicy(@PathVariable(value = "policyId") String policyId,
HttpServletResponse response) {
policyService.deletePolicy(policyId);
response.setStatus(HttpServletResponse.SC_NO_CONTENT);
}
@RequestMapping(value = "/policies", method = RequestMethod.GET)
public PolicyMetadataContainerDto getAllPolicyMetadata() {
return policyService.getAllPolicyMetadata();
}
@RequestMapping(value = "/policies/{policyId}", method = RequestMethod.GET)
public PolicyContainerDto getPolicies(
@PathVariable(value = "policyId") String policyId,
@RequestParam(value = "wildcard", required = false) String wildcard) {
return policyService.getPolicies(policyId, wildcard);
}
@RequestMapping(value = "/policies/{policyId}/combined", method = RequestMethod.GET)
public PolicyDto getPoliciesCombinedAsPolicySet(
@PathVariable(value = "policyId") String policyId,
@RequestParam(value = "wildcard", required = false) String wildcard,
@RequestParam(value = "policySetId", required = false) String policySetId,
@RequestParam(value = "policyCombiningAlgId", required = true) String policyCombiningAlgId) {
return policyService.getPoliciesCombinedAsPolicySet(policyId, wildcard,
policySetId, policyCombiningAlgId);
}
@RequestMapping(value = "/policyCombiningAlgIds", method = RequestMethod.GET)
public Map<String, String> getPolicyCombiningAlgIds() {
return policyService.getPolicyCombiningAlgIds();
}
@RequestMapping(value = "/policies/{policyId}", method = RequestMethod.PUT)
public PolicyMetadataDto updatePolicy(
@Valid @RequestBody PolicyContentDto updatePolicyRequestDto,
@PathVariable(value = "policyId") String policyId) {
return policyService.updatePolicy(updatePolicyRequestDto, policyId);
}
}