package jnpf.base.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; /** * 在线表单和流程表单的字段权限配置。 */ @Component @ConfigurationProperties(prefix = "jnpf.visualdev.permission") public class VisualdevPermissionProperties { private List exemptFields = Collections.emptyList(); private Set normalizedExemptFields = Collections.emptySet(); public List getExemptFields() { return exemptFields; } public void setExemptFields(List exemptFields) { if (exemptFields == null) { this.exemptFields = Collections.emptyList(); this.normalizedExemptFields = Collections.emptySet(); return; } this.exemptFields = exemptFields.stream() .filter(field -> field != null && !field.trim().isEmpty()) .map(String::trim) .distinct() .collect(Collectors.toList()); this.normalizedExemptFields = this.exemptFields.stream() .map(field -> field.toLowerCase(Locale.ROOT)) .collect(Collectors.collectingAndThen(Collectors.toCollection(LinkedHashSet::new), Collections::unmodifiableSet)); } public boolean isExempt(String field) { return field != null && normalizedExemptFields.contains(field.trim().toLowerCase(Locale.ROOT)); } }