diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/domain/vpd/VpdPolicyFormOptions.java b/src/main/java/com/cloudhandson/vpdbackoffice/domain/vpd/VpdPolicyFormOptions.java index 0916ce8..a8b45c2 100644 --- a/src/main/java/com/cloudhandson/vpdbackoffice/domain/vpd/VpdPolicyFormOptions.java +++ b/src/main/java/com/cloudhandson/vpdbackoffice/domain/vpd/VpdPolicyFormOptions.java @@ -7,6 +7,7 @@ public record VpdPolicyFormOptions( List schemaOwners, List owners, List functions, + List policyTemplates, List statementTypes ) { diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/domain/vpd/VpdPolicyTemplateOption.java b/src/main/java/com/cloudhandson/vpdbackoffice/domain/vpd/VpdPolicyTemplateOption.java new file mode 100644 index 0000000..d269683 --- /dev/null +++ b/src/main/java/com/cloudhandson/vpdbackoffice/domain/vpd/VpdPolicyTemplateOption.java @@ -0,0 +1,33 @@ +package com.cloudhandson.vpdbackoffice.domain.vpd; + +public record VpdPolicyTemplateOption( + String policyName, + String functionOwner, + String packageName, + String functionName, + String statementTypes, + String enabled, + String checkOption +) { + + public String functionKey() { + String packagePrefix = packageName == null || packageName.isBlank() ? "" : packageName + "."; + return functionOwner + "." + packagePrefix + functionName; + } + + public String filterDisplayName() { + return functionKey(); + } + + public String label() { + return policyName + " / " + filterDisplayName() + " / " + statementTypes; + } + + public boolean enabledValue() { + return "YES".equalsIgnoreCase(enabled); + } + + public boolean updateCheckValue() { + return "YES".equalsIgnoreCase(checkOption); + } +} diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/mapper/VpdPolicyMapper.java b/src/main/java/com/cloudhandson/vpdbackoffice/mapper/VpdPolicyMapper.java index 405d4e7..0d2f60e 100644 --- a/src/main/java/com/cloudhandson/vpdbackoffice/mapper/VpdPolicyMapper.java +++ b/src/main/java/com/cloudhandson/vpdbackoffice/mapper/VpdPolicyMapper.java @@ -1,6 +1,7 @@ package com.cloudhandson.vpdbackoffice.mapper; import com.cloudhandson.vpdbackoffice.domain.vpd.VpdFunctionOption; +import com.cloudhandson.vpdbackoffice.domain.vpd.VpdPolicyTemplateOption; import com.cloudhandson.vpdbackoffice.domain.vpd.VpdSchemaObjectOption; import com.cloudhandson.vpdbackoffice.domain.vpd.VpdPolicyView; import com.cloudhandson.vpdbackoffice.domain.vpd.VpdTargetView; @@ -23,6 +24,8 @@ public interface VpdPolicyMapper { List findFunctionOptions(); + List findPolicyTemplateOptions(); + List findSchemaObjects( @Param("owner") String owner, @Param("includeTablesYn") String includeTablesYn, diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/service/VpdPolicyService.java b/src/main/java/com/cloudhandson/vpdbackoffice/service/VpdPolicyService.java index b009c81..0ca35a7 100644 --- a/src/main/java/com/cloudhandson/vpdbackoffice/service/VpdPolicyService.java +++ b/src/main/java/com/cloudhandson/vpdbackoffice/service/VpdPolicyService.java @@ -69,6 +69,7 @@ public class VpdPolicyService { mapper.findSchemaOwnerOptions(), mapper.findOwnerOptions(), mapper.findFunctionOptions(), + mapper.findPolicyTemplateOptions(), List.of("SELECT", "INSERT", "UPDATE", "DELETE", "INDEX") ); formOptionsCache = new CacheEntry<>(options, System.currentTimeMillis() + CATALOG_CACHE_MILLIS); @@ -81,6 +82,7 @@ public class VpdPolicyService { List.of(), List.of(), List.of(), + List.of(), List.of("SELECT", "INSERT", "UPDATE", "DELETE", "INDEX") ); } diff --git a/src/main/resources/mapper/VpdPolicyMapper.xml b/src/main/resources/mapper/VpdPolicyMapper.xml index 9b2da88..9d549e8 100644 --- a/src/main/resources/mapper/VpdPolicyMapper.xml +++ b/src/main/resources/mapper/VpdPolicyMapper.xml @@ -189,6 +189,45 @@ FETCH FIRST 300 ROWS ONLY + + - - - + +
Statement Types
- +
- +
- -
- - - - -
+

Policy/Filter 조합은 Filter Policy 관리에서 등록/수정합니다. 여기서는 선택한 조합을 대상 TABLE/VIEW에 적용합니다.

- - - - - -