fix #477: show target policy filters
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package com.cloudhandson.vpdbackoffice.domain.vpd;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public record VpdObjectFilterDetail(
|
||||
String objectOwner,
|
||||
String objectName,
|
||||
List<Row> rows
|
||||
) {
|
||||
|
||||
public String objectDisplayName() {
|
||||
return objectOwner + "." + objectName;
|
||||
}
|
||||
|
||||
public record Row(
|
||||
VpdPolicyView policy,
|
||||
VpdFunctionSource source
|
||||
) {
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,8 @@ public record VpdTargetView(
|
||||
String protectedYn,
|
||||
String ordsPath,
|
||||
int policyCount,
|
||||
String policyNames
|
||||
String policyNames,
|
||||
String filterNames
|
||||
) {
|
||||
|
||||
public String objectDisplayName() {
|
||||
|
||||
@@ -35,6 +35,11 @@ public interface VpdPolicyMapper {
|
||||
@Param("policyName") String policyName
|
||||
);
|
||||
|
||||
List<VpdPolicyView> findPoliciesForObject(
|
||||
@Param("objectOwner") String objectOwner,
|
||||
@Param("objectName") String objectName
|
||||
);
|
||||
|
||||
VpdPolicyView findAnyPolicy(
|
||||
@Param("objectOwner") String objectOwner,
|
||||
@Param("objectName") String objectName,
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.cloudhandson.vpdbackoffice.service;
|
||||
|
||||
import com.cloudhandson.vpdbackoffice.domain.vpd.VpdBulkApplyResult;
|
||||
import com.cloudhandson.vpdbackoffice.domain.vpd.VpdFunctionSource;
|
||||
import com.cloudhandson.vpdbackoffice.domain.vpd.VpdObjectFilterDetail;
|
||||
import com.cloudhandson.vpdbackoffice.domain.vpd.VpdPolicyCreateCommand;
|
||||
import com.cloudhandson.vpdbackoffice.domain.vpd.VpdPolicyDetail;
|
||||
import com.cloudhandson.vpdbackoffice.domain.vpd.VpdPolicyExplanation;
|
||||
@@ -233,6 +234,18 @@ public class VpdPolicyService {
|
||||
return new VpdPolicyDetail(policy, buildAddPolicyBlock(policy));
|
||||
}
|
||||
|
||||
public VpdObjectFilterDetail findObjectFilterDetail(String objectOwner, String objectName) {
|
||||
String normalizedOwner = requiredIdentifier(objectOwner, "Object owner");
|
||||
String normalizedObject = requiredIdentifier(objectName, "Object name");
|
||||
List<VpdObjectFilterDetail.Row> rows = mapper.findPoliciesForObject(normalizedOwner, normalizedObject).stream()
|
||||
.map(policy -> new VpdObjectFilterDetail.Row(
|
||||
policy,
|
||||
findFunctionSource(policy.functionOwner(), policy.packageName(), policy.functionName())
|
||||
))
|
||||
.toList();
|
||||
return new VpdObjectFilterDetail(normalizedOwner, normalizedObject, rows);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void createPolicy(VpdPolicyCreateCommand command) {
|
||||
String objectOwner = requiredIdentifier(command.objectOwner(), "Object owner");
|
||||
|
||||
@@ -306,6 +306,23 @@ public class VpdPolicyController {
|
||||
return "fragments/vpd-policy-detail :: detail";
|
||||
}
|
||||
|
||||
@GetMapping("/vpd-policies/object-filter-detail")
|
||||
public String objectFilterDetail(
|
||||
@RequestParam String objectOwner,
|
||||
@RequestParam String objectName,
|
||||
Model model
|
||||
) {
|
||||
try {
|
||||
model.addAttribute("detail", vpdPolicyService.findObjectFilterDetail(objectOwner, objectName));
|
||||
} catch (AppException exception) {
|
||||
model.addAttribute("errorMessage", exception.getMessage());
|
||||
} catch (DataAccessException exception) {
|
||||
RuntimeErrorMessage message = RuntimeErrorMessages.dataAccess(exception);
|
||||
model.addAttribute("errorMessage", message.message());
|
||||
}
|
||||
return "fragments/vpd-object-filter-detail :: detail";
|
||||
}
|
||||
|
||||
@GetMapping("/vpd-policies/policy-explanation")
|
||||
public String policyExplanation(
|
||||
@RequestParam String objectOwner,
|
||||
|
||||
Reference in New Issue
Block a user