diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/AbstractAuthorityCheckerProvider.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/AbstractAuthorityCheckerProvider.java new file mode 100644 index 0000000000..30d594df2c --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/AbstractAuthorityCheckerProvider.java @@ -0,0 +1,16 @@ +package com.fr.design.mainframe.authority; + +import com.fr.stable.fun.mark.API; + +@API(level = AuthorityCheckerProvider.CURRENT_LEVEL) +public abstract class AbstractAuthorityCheckerProvider implements AuthorityCheckerProvider { + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + @Override + public String mark4Provider() { + return getClass().getName(); + } +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityCheckerProvider.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityCheckerProvider.java new file mode 100644 index 0000000000..4aa38717ae --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/AuthorityCheckerProvider.java @@ -0,0 +1,10 @@ +package com.fr.design.mainframe.authority; + +import com.fr.stable.fun.mark.Mutable; + +public interface AuthorityCheckerProvider extends Mutable { + String XML_TAG = "AuthorityCheckerProvider"; + int CURRENT_LEVEL = 1; + + ElementAuthorityChecker getElementAuthorityChecker(); +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/DSColumnAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/DSColumnAuthorityChecker.java index fdab6ea2a2..0d1df60673 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/DSColumnAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/DSColumnAuthorityChecker.java @@ -11,7 +11,7 @@ public class DSColumnAuthorityChecker extends ElementAuthorityChecker @Override @Nullable - Set getNoAuthDatasetNames(DSColumn dsColumn, Set authDatasetNames) { + protected Set getNoAuthDatasetNames(DSColumn dsColumn, Set authDatasetNames) { if (!authDatasetNames.contains(dsColumn.getDSName())) { return new HashSet<>(Arrays.asList(dsColumn.getDSName())); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/ElementAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/ElementAuthorityChecker.java index 67d0f1da36..82740da4ec 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/ElementAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/ElementAuthorityChecker.java @@ -17,7 +17,7 @@ public abstract class ElementAuthorityChecker { * @return 如果有返回名称,没有返回null */ @Nullable - Set getNoAuthConnectionNames(T t, Set authConnectionNames) { + protected Set getNoAuthConnectionNames(T t, Set authConnectionNames) { return null; } @@ -29,7 +29,7 @@ public abstract class ElementAuthorityChecker { * @return 如果有返回名称,没有返回null */ @Nullable - Set getNoAuthDatasetNames(T t, Set authDatasetNames) { + protected Set getNoAuthDatasetNames(T t, Set authDatasetNames) { return null; } @@ -37,7 +37,7 @@ public abstract class ElementAuthorityChecker { * @Description 要检查对象的className * @return className */ - String getCheckClassName() { + protected String getCheckClassName() { ParameterizedTypeImpl parameterizedType = (ParameterizedTypeImpl) this.getClass().getGenericSuperclass(); Type type = parameterizedType.getActualTypeArguments()[0]; return type.getTypeName(); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/FormulaAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/FormulaAuthorityChecker.java index 15a7f4853f..086a437b12 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/FormulaAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/FormulaAuthorityChecker.java @@ -29,7 +29,7 @@ public class FormulaAuthorityChecker extends ElementAuthorityChecker { @Override @Nullable - Set getNoAuthDatasetNames(Formula formula, Set authDatasetNames) { + public Set getNoAuthDatasetNames(Formula formula, Set authDatasetNames) { return getNoAuthNames(formula, DATASET_NAME_FORMULA_PARSER, authDatasetNames); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java index d76031f654..0c81c2fffe 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/JTemplateAuthorityChecker.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.authority; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.i18n.Toolkit; @@ -68,6 +69,13 @@ public class JTemplateAuthorityChecker { registerChecker(new DSColumnAuthorityChecker()); registerChecker(new FormulaAuthorityChecker()); registerChecker(new NameTableDataAuthorityChecker()); + Set authorityCheckerProviders + = ExtraDesignClassManager.getInstance().getArray(AuthorityCheckerProvider.XML_TAG); + for (AuthorityCheckerProvider authorityCheckerProvider : authorityCheckerProviders) { + ElementAuthorityChecker elementAuthorityChecker + = authorityCheckerProvider.getElementAuthorityChecker(); + registerChecker(elementAuthorityChecker); + } } private void registerChecker(ElementAuthorityChecker checker) { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/NameDatabaseConnectionAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/NameDatabaseConnectionAuthorityChecker.java index 96bc0b8c5d..e65fe55cc1 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/NameDatabaseConnectionAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/NameDatabaseConnectionAuthorityChecker.java @@ -11,7 +11,7 @@ import java.util.stream.Collectors; public class NameDatabaseConnectionAuthorityChecker extends ElementAuthorityChecker { @Override @Nullable - Set getNoAuthConnectionNames(NameDatabaseConnection nameDatabaseConnection, Set authConnectionNames) { + protected Set getNoAuthConnectionNames(NameDatabaseConnection nameDatabaseConnection, Set authConnectionNames) { String name = nameDatabaseConnection.getName(); if (!authConnectionNames.contains(name)) { return new HashSet<>(Arrays.asList(name)); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/authority/NameTableDataAuthorityChecker.java b/designer-base/src/main/java/com/fr/design/mainframe/authority/NameTableDataAuthorityChecker.java index 13e7300856..93cad06e26 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/authority/NameTableDataAuthorityChecker.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/authority/NameTableDataAuthorityChecker.java @@ -10,7 +10,7 @@ import java.util.Set; public class NameTableDataAuthorityChecker extends ElementAuthorityChecker { @Override @Nullable - Set getNoAuthDatasetNames(NameTableData nameTableData, Set authDatasetNames) { + protected Set getNoAuthDatasetNames(NameTableData nameTableData, Set authDatasetNames) { if (!authDatasetNames.contains(nameTableData.getName())) { return new HashSet<>(Arrays.asList(nameTableData.getName())); }