Bladeren bron

fix #2501 add form.admin.default.template.name

Shinsuke Sugaya 4 jaren geleden
bovenliggende
commit
b9086a2e93

+ 12 - 0
src/main/java/org/codelibs/fess/app/service/DataConfigService.java

@@ -28,6 +28,7 @@ import org.codelibs.fess.es.config.exbhv.DataConfigBhv;
 import org.codelibs.fess.es.config.exentity.DataConfig;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ParameterUtil;
+import org.dbflute.cbean.result.ListResultBean;
 import org.dbflute.cbean.result.PagingResultBean;
 import org.dbflute.optional.OptionalEntity;
 
@@ -66,6 +67,17 @@ public class DataConfigService extends FessAppService {
         return dataConfigBhv.selectByPK(id);
     }
 
+    public OptionalEntity<DataConfig> getDataConfigByName(final String name) {
+        final ListResultBean<DataConfig> list = dataConfigBhv.selectList(cb -> {
+            cb.query().setName_Equal(name);
+            cb.query().addOrderBy_SortOrder_Asc();
+        });
+        if (list.isEmpty()) {
+            return OptionalEntity.empty();
+        }
+        return OptionalEntity.of(list.get(0));
+    }
+
     public void store(final DataConfig dataConfig) {
         dataConfig.setHandlerParameter(ParameterUtil.encrypt(dataConfig.getHandlerParameter()));
         dataConfigBhv.insertOrUpdate(dataConfig, op -> {

+ 12 - 0
src/main/java/org/codelibs/fess/app/service/FileConfigService.java

@@ -29,6 +29,7 @@ import org.codelibs.fess.es.config.exbhv.FileConfigBhv;
 import org.codelibs.fess.es.config.exentity.FileConfig;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ParameterUtil;
+import org.dbflute.cbean.result.ListResultBean;
 import org.dbflute.cbean.result.PagingResultBean;
 import org.dbflute.optional.OptionalEntity;
 
@@ -76,6 +77,17 @@ public class FileConfigService extends FessAppService {
         return fileConfigBhv.selectByPK(id);
     }
 
+    public OptionalEntity<FileConfig> getFileConfigByName(final String name) {
+        final ListResultBean<FileConfig> list = fileConfigBhv.selectList(cb -> {
+            cb.query().setName_Equal(name);
+            cb.query().addOrderBy_SortOrder_Asc();
+        });
+        if (list.isEmpty()) {
+            return OptionalEntity.empty();
+        }
+        return OptionalEntity.of(list.get(0));
+    }
+
     public void store(final FileConfig fileConfig) {
         fileConfig.setConfigParameter(ParameterUtil.encrypt(fileConfig.getConfigParameter()));
         fileConfigBhv.insertOrUpdate(fileConfig, op -> {

+ 12 - 0
src/main/java/org/codelibs/fess/app/service/WebConfigService.java

@@ -30,6 +30,7 @@ import org.codelibs.fess.es.config.exbhv.WebConfigBhv;
 import org.codelibs.fess.es.config.exentity.WebConfig;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ParameterUtil;
+import org.dbflute.cbean.result.ListResultBean;
 import org.dbflute.cbean.result.PagingResultBean;
 import org.dbflute.optional.OptionalEntity;
 
@@ -84,6 +85,17 @@ public class WebConfigService extends FessAppService {
         return webConfigBhv.selectByPK(id);
     }
 
+    public OptionalEntity<WebConfig> getWebConfigByName(final String name) {
+        final ListResultBean<WebConfig> list = webConfigBhv.selectList(cb -> {
+            cb.query().setName_Equal(name);
+            cb.query().addOrderBy_SortOrder_Asc();
+        });
+        if (list.isEmpty()) {
+            return OptionalEntity.empty();
+        }
+        return OptionalEntity.of(list.get(0));
+    }
+
     public void store(final WebConfig webConfig) {
         webConfig.setConfigParameter(ParameterUtil.encrypt(webConfig.getConfigParameter()));
         webConfigBhv.insertOrUpdate(webConfig, op -> {

+ 14 - 0
src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java

@@ -36,6 +36,7 @@ import org.codelibs.fess.app.service.RoleTypeService;
 import org.codelibs.fess.app.web.CrudMode;
 import org.codelibs.fess.app.web.base.FessAdminAction;
 import org.codelibs.fess.ds.DataStoreFactory;
+import org.codelibs.fess.es.config.exentity.CrawlingConfig.ConfigType;
 import org.codelibs.fess.es.config.exentity.DataConfig;
 import org.codelibs.fess.helper.PermissionHelper;
 import org.codelibs.fess.helper.SystemHelper;
@@ -143,6 +144,19 @@ public class AdminDataconfigAction extends FessAdminAction {
         return asEditHtml().useForm(CreateForm.class, op -> {
             op.setup(form -> {
                 form.initialize();
+                ComponentUtil.getCrawlingConfigHelper().getDefaultConfig(ConfigType.DATA).ifPresent(entity -> {
+                    copyBeanToBean(entity, form, copyOp -> {
+                        copyOp.excludeNull();
+                        copyOp.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
+                                Stream.of(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS)).toArray(n -> new String[n]));
+                    });
+                    final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+                    form.permissions = stream(entity.getPermissions()).get(stream -> stream.map(s -> permissionHelper.decode(s))
+                            .filter(StringUtil::isNotBlank).distinct().collect(Collectors.joining("\n")));
+                    form.virtualHosts = stream(entity.getVirtualHosts())
+                            .get(stream -> stream.filter(StringUtil::isNotBlank).map(String::trim).collect(Collectors.joining("\n")));
+                    form.name = null;
+                });
                 form.crudMode = CrudMode.CREATE;
             });
         });

+ 14 - 0
src/main/java/org/codelibs/fess/app/web/admin/fileconfig/AdminFileconfigAction.java

@@ -32,6 +32,7 @@ import org.codelibs.fess.app.service.LabelTypeService;
 import org.codelibs.fess.app.service.RoleTypeService;
 import org.codelibs.fess.app.web.CrudMode;
 import org.codelibs.fess.app.web.base.FessAdminAction;
+import org.codelibs.fess.es.config.exentity.CrawlingConfig.ConfigType;
 import org.codelibs.fess.es.config.exentity.FileConfig;
 import org.codelibs.fess.helper.PermissionHelper;
 import org.codelibs.fess.helper.SystemHelper;
@@ -138,6 +139,19 @@ public class AdminFileconfigAction extends FessAdminAction {
         return asHtml(path_AdminFileconfig_AdminFileconfigEditJsp).useForm(CreateForm.class, op -> {
             op.setup(form -> {
                 form.initialize();
+                ComponentUtil.getCrawlingConfigHelper().getDefaultConfig(ConfigType.FILE).ifPresent(entity -> {
+                    copyBeanToBean(entity, form, copyOp -> {
+                        copyOp.excludeNull();
+                        copyOp.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
+                                Stream.of(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS)).toArray(n -> new String[n]));
+                    });
+                    final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+                    form.permissions = stream(entity.getPermissions()).get(stream -> stream.map(s -> permissionHelper.decode(s))
+                            .filter(StringUtil::isNotBlank).distinct().collect(Collectors.joining("\n")));
+                    form.virtualHosts = stream(entity.getVirtualHosts())
+                            .get(stream -> stream.filter(StringUtil::isNotBlank).map(String::trim).collect(Collectors.joining("\n")));
+                    form.name = null;
+                });
                 form.crudMode = CrudMode.CREATE;
             });
         }).renderWith(data -> {

+ 14 - 0
src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java

@@ -33,6 +33,7 @@ import org.codelibs.fess.app.service.ScheduledJobService;
 import org.codelibs.fess.app.service.WebConfigService;
 import org.codelibs.fess.app.web.CrudMode;
 import org.codelibs.fess.app.web.base.FessAdminAction;
+import org.codelibs.fess.es.config.exentity.CrawlingConfig.ConfigType;
 import org.codelibs.fess.es.config.exentity.WebConfig;
 import org.codelibs.fess.helper.PermissionHelper;
 import org.codelibs.fess.helper.SystemHelper;
@@ -142,6 +143,19 @@ public class AdminWebconfigAction extends FessAdminAction {
         return asEditHtml().useForm(CreateForm.class, op -> {
             op.setup(form -> {
                 form.initialize();
+                ComponentUtil.getCrawlingConfigHelper().getDefaultConfig(ConfigType.WEB).ifPresent(entity -> {
+                    copyBeanToBean(entity, form, copyOp -> {
+                        copyOp.excludeNull();
+                        copyOp.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE),
+                                Stream.of(Constants.PERMISSIONS, Constants.VIRTUAL_HOSTS)).toArray(n -> new String[n]));
+                    });
+                    final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+                    form.permissions = stream(entity.getPermissions()).get(stream -> stream.map(s -> permissionHelper.decode(s))
+                            .filter(StringUtil::isNotBlank).distinct().collect(Collectors.joining("\n")));
+                    form.virtualHosts = stream(entity.getVirtualHosts())
+                            .get(stream -> stream.filter(StringUtil::isNotBlank).map(String::trim).collect(Collectors.joining("\n")));
+                    form.name = null;
+                });
                 form.crudMode = CrudMode.CREATE;
             });
         });

+ 22 - 0
src/main/java/org/codelibs/fess/helper/CrawlingConfigHelper.java

@@ -48,6 +48,7 @@ import org.codelibs.fess.es.config.exentity.WebConfig;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ComponentUtil;
 import org.dbflute.cbean.result.ListResultBean;
+import org.dbflute.optional.OptionalEntity;
 import org.dbflute.optional.OptionalThing;
 
 import com.google.common.cache.Cache;
@@ -176,6 +177,7 @@ public class CrawlingConfigHelper {
             if (idList != null) {
                 cb.query().setId_InScope(idList);
             }
+            cb.query().setName_NotEqual(ComponentUtil.getFessConfig().getFormAdminDefaultTemplateName());
             cb.query().addOrderBy_SortOrder_Asc();
             cb.query().addOrderBy_Name_Asc();
             cb.fetchFirst(ComponentUtil.getFessConfig().getPageWebConfigMaxFetchSizeAsInteger());
@@ -203,6 +205,7 @@ public class CrawlingConfigHelper {
             if (idList != null) {
                 cb.query().setId_InScope(idList);
             }
+            cb.query().setName_NotEqual(ComponentUtil.getFessConfig().getFormAdminDefaultTemplateName());
             cb.query().addOrderBy_SortOrder_Asc();
             cb.query().addOrderBy_Name_Asc();
             cb.fetchFirst(ComponentUtil.getFessConfig().getPageFileConfigMaxFetchSizeAsInteger());
@@ -230,6 +233,7 @@ public class CrawlingConfigHelper {
             if (idList != null) {
                 cb.query().setId_InScope(idList);
             }
+            cb.query().setName_NotEqual(ComponentUtil.getFessConfig().getFormAdminDefaultTemplateName());
             cb.query().addOrderBy_SortOrder_Asc();
             cb.query().addOrderBy_Name_Asc();
             cb.fetchFirst(ComponentUtil.getFessConfig().getPageDataConfigMaxFetchSizeAsInteger());
@@ -271,4 +275,22 @@ public class CrawlingConfigHelper {
         }
         return urlList;
     }
+
+    public OptionalEntity<CrawlingConfig> getDefaultConfig(ConfigType configType) {
+        String name = ComponentUtil.getFessConfig().getFormAdminDefaultTemplateName();
+
+        switch (configType) {
+        case WEB:
+            final WebConfigService webConfigService = ComponentUtil.getComponent(WebConfigService.class);
+            return webConfigService.getWebConfigByName(name).map(o -> (CrawlingConfig) o);
+        case FILE:
+            final FileConfigService fileConfigService = ComponentUtil.getComponent(FileConfigService.class);
+            return fileConfigService.getFileConfigByName(name).map(o -> (CrawlingConfig) o);
+        case DATA:
+            final DataConfigService dataConfigService = ComponentUtil.getComponent(DataConfigService.class);
+            return dataConfigService.getDataConfigByName(name).map(o -> (CrawlingConfig) o);
+        default:
+            return OptionalEntity.empty();
+        }
+    }
 }

+ 15 - 0
src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java

@@ -995,6 +995,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     /** The key of the configuration. e.g. false */
     String FORM_ADMIN_LABEL_IN_CONFIG_ENABLED = "form.admin.label.in.config.enabled";
 
+    /** The key of the configuration. e.g. __TEMPLATE__ */
+    String FORM_ADMIN_DEFAULT_TEMPLATE_NAME = "form.admin.default.template.name";
+
     /** The key of the configuration. e.g. admin */
     String AUTHENTICATION_ADMIN_USERS = "authentication.admin.users";
 
@@ -4527,6 +4530,13 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
      */
     boolean isFormAdminLabelInConfigEnabled();
 
+    /**
+     * Get the value for the key 'form.admin.default.template.name'. <br>
+     * The value is, e.g. __TEMPLATE__ <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getFormAdminDefaultTemplateName();
+
     /**
      * Get the value for the key 'authentication.admin.users'. <br>
      * The value is, e.g. admin <br>
@@ -8089,6 +8099,10 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             return is(FessConfig.FORM_ADMIN_LABEL_IN_CONFIG_ENABLED);
         }
 
+        public String getFormAdminDefaultTemplateName() {
+            return get(FessConfig.FORM_ADMIN_DEFAULT_TEMPLATE_NAME);
+        }
+
         public String getAuthenticationAdminUsers() {
             return get(FessConfig.AUTHENTICATION_ADMIN_USERS);
         }
@@ -9491,6 +9505,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             defaultMap.put(FessConfig.LOGGING_APP_PACKAGES, "org.codelibs,org.dbflute,org.lastaflute");
             defaultMap.put(FessConfig.FORM_ADMIN_MAX_INPUT_SIZE, "4000");
             defaultMap.put(FessConfig.FORM_ADMIN_LABEL_IN_CONFIG_ENABLED, "false");
+            defaultMap.put(FessConfig.FORM_ADMIN_DEFAULT_TEMPLATE_NAME, "__TEMPLATE__");
             defaultMap.put(FessConfig.AUTHENTICATION_ADMIN_USERS, "admin");
             defaultMap.put(FessConfig.AUTHENTICATION_ADMIN_ROLES, "admin");
             defaultMap.put(FessConfig.ROLE_SEARCH_DEFAULT_PERMISSIONS, "");

+ 1 - 0
src/main/resources/fess_config.properties

@@ -562,6 +562,7 @@ logging.app.packages=org.codelibs,org.dbflute,org.lastaflute
 #                                                                                    =====
 form.admin.max.input.size=4000
 form.admin.label.in.config.enabled=false
+form.admin.default.template.name=__TEMPLATE__
 
 # ----------------------------------------------------------
 #                                                 Permission