diff --git a/src/main/java/org/codelibs/fess/app/web/admin/suggestbadword/AdminSuggestbadwordAction.java b/src/main/java/org/codelibs/fess/app/web/admin/suggestbadword/AdminSuggestbadwordAction.java index 4b631d001..8dbf34bf5 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/suggestbadword/AdminSuggestbadwordAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/suggestbadword/AdminSuggestbadwordAction.java @@ -39,6 +39,7 @@ import org.codelibs.fess.app.web.CrudMode; import org.codelibs.fess.app.web.base.FessAdminAction; import org.codelibs.fess.es.config.exentity.SuggestBadWord; import org.codelibs.fess.exception.FessSystemException; +import org.codelibs.fess.helper.SuggestHelper; import org.codelibs.fess.helper.SystemHelper; import org.dbflute.optional.OptionalEntity; import org.dbflute.optional.OptionalThing; @@ -66,6 +67,8 @@ public class AdminSuggestbadwordAction extends FessAdminAction { private SystemHelper systemHelper; @Resource protected DynamicProperties crawlerProperties; + @Resource + protected SuggestHelper suggestHelper; // =================================================================================== // Hook @@ -225,6 +228,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction { validate(form, messages -> {}, toEditHtml()); createSuggestBadWord(form).ifPresent(entity -> { suggestBadWordService.store(entity); + suggestHelper.addBadWord(entity.getSuggestWord()); saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL)); }).orElse(() -> { throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), toEditHtml()); @@ -238,6 +242,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction { validate(form, messages -> {}, toEditHtml()); createSuggestBadWord(form).ifPresent(entity -> { suggestBadWordService.store(entity); + suggestHelper.storeAllBadWords(); saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL)); }).orElse(() -> { throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), toEditHtml()); @@ -252,6 +257,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction { final String id = form.id; suggestBadWordService.getSuggestBadWord(id).ifPresent(entity -> { suggestBadWordService.delete(entity); + suggestHelper.deleteBadWord(entity.getSuggestWord()); saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); }).orElse(() -> { throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml()); @@ -297,6 +303,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction { try { reader = new BufferedReader(new InputStreamReader(new FileInputStream(oFile), enc)); suggestBadWordService.importCsv(reader); + suggestHelper.storeAllBadWords(); } catch (final Exception e) { throw new FessSystemException("Failed to import data.", e); } finally { diff --git a/src/main/java/org/codelibs/fess/helper/SuggestHelper.java b/src/main/java/org/codelibs/fess/helper/SuggestHelper.java index 6ce689c63..390d7a15f 100644 --- a/src/main/java/org/codelibs/fess/helper/SuggestHelper.java +++ b/src/main/java/org/codelibs/fess/helper/SuggestHelper.java @@ -159,7 +159,7 @@ public class SuggestHelper { } public void refreshWords() { - deleteAllBadWord(); + deleteAllBadWords(); storeAllElevateWords(); } @@ -218,59 +218,36 @@ public class SuggestHelper { // } } - public void deleteAllBadWord() { + public void deleteAllBadWords() { final List list = suggestBadWordBhv.selectList(cb -> { cb.query().matchAll(); }); - final Set badWords = new HashSet(); + final Set badWords = new HashSet<>(); for (final SuggestBadWord suggestBadWord : list) { final String word = suggestBadWord.getSuggestWord(); badWords.add(word); } - // TODO - // suggestService.updateBadWords(badWords); - // suggestService.deleteBadWords(); - // suggestService.commit(); + suggester.settings().badword().deleteAll(); } - /* - public void updateSolrBadwordFile() { - suggestBadWordBhv.selectList(cb -> { + public void storeAllBadWords() { + deleteAllBadWords(); + final List list = suggestBadWordBhv.selectList(cb -> { cb.query().matchAll(); }); - - final File dir = new File(System.getProperty("catalina.home").replace("¥", "/") + "/" + badwordFileDir); - if (!dir.exists() || !dir.isDirectory()) { - logger.warn(dir.getAbsolutePath() + " does not exist."); - return; + for (final SuggestBadWord suggestBadWord : list) { + final String word = suggestBadWord.getSuggestWord(); + suggester.indexer().addBadWord(word); } - - // TODO - // final File file = new File(dir, SuggestConstants.BADWORD_FILENAME); - // BufferedWriter bw = null; - // try { - // if (!file.exists()) { - // file.createNewFile(); - // } - // bw = new BufferedWriter(new FileWriter(file, false)); - // for (final SuggestBadWord suggestBadWord : list) { - // bw.write(suggestBadWord.getSuggestWord()); - // bw.newLine(); - // } - // bw.close(); - // } catch (final IOException e) { - // logger.warn("Failed to update badword file.", e); - // } finally { - // if (bw != null) { - // try { - // bw.close(); - // } catch (final Exception e2) { - // //ignore - // } - // } - // } } - */ + + public void addBadWord(final String badWord) { + suggester.indexer().addBadWord(badWord); + } + + public void deleteBadWord(final String badWord) { + suggester.indexer().deleteBadWord(badWord); + } protected boolean isContentField(final String field) { for (final String contentField : contentFieldNames) {