add elevateword & badword functions
This commit is contained in:
parent
605152f232
commit
8f9687b6e4
5 changed files with 264 additions and 5 deletions
|
@ -25,11 +25,13 @@ import jp.sf.fess.crud.CrudMessageException;
|
|||
import jp.sf.fess.crud.action.admin.BsSuggestBadWordAction;
|
||||
import jp.sf.fess.crud.util.SAStrutsUtil;
|
||||
import jp.sf.fess.db.exentity.SuggestBadWord;
|
||||
import jp.sf.fess.helper.SuggestHelper;
|
||||
import jp.sf.fess.helper.SystemHelper;
|
||||
import jp.sf.fess.util.FessBeans;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.codelibs.sastruts.core.annotation.Token;
|
||||
import org.codelibs.sastruts.core.exception.SSCActionMessagesException;
|
||||
import org.seasar.struts.annotation.Execute;
|
||||
import org.seasar.struts.exception.ActionMessagesException;
|
||||
|
@ -44,6 +46,9 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction {
|
|||
@Resource
|
||||
protected SystemHelper systemHelper;
|
||||
|
||||
@Resource
|
||||
protected SuggestHelper suggestHelper;
|
||||
|
||||
public String getHelpLink() {
|
||||
return systemHelper.getHelpLink("suggestBadWord");
|
||||
}
|
||||
|
@ -61,8 +66,8 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction {
|
|||
}
|
||||
|
||||
FessBeans.copy(suggestBadWord, suggestBadWordForm)
|
||||
.commonColumnDateConverter().excludes("searchParams", "mode")
|
||||
.execute();
|
||||
.commonColumnDateConverter().excludes("searchParams", "mode")
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -87,7 +92,7 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction {
|
|||
suggestBadWord.setUpdatedBy(username);
|
||||
suggestBadWord.setUpdatedTime(timestamp);
|
||||
FessBeans.copy(suggestBadWordForm, suggestBadWord)
|
||||
.excludesCommonColumns().execute();
|
||||
.excludesCommonColumns().execute();
|
||||
|
||||
return suggestBadWord;
|
||||
}
|
||||
|
@ -98,7 +103,7 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction {
|
|||
if (suggestBadWordForm.crudMode != CommonConstants.DELETE_MODE) {
|
||||
throw new SSCActionMessagesException("errors.crud_invalid_mode",
|
||||
new Object[] { CommonConstants.DELETE_MODE,
|
||||
suggestBadWordForm.crudMode });
|
||||
suggestBadWordForm.crudMode });
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -117,6 +122,8 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction {
|
|||
suggestBadWord.setDeletedBy(username);
|
||||
suggestBadWord.setDeletedTime(timestamp);
|
||||
suggestBadWordService.store(suggestBadWord);
|
||||
suggestHelper.deleteAllBadWord();
|
||||
suggestHelper.updateSolrBadwordFile();
|
||||
SAStrutsUtil.addSessionMessage("success.crud_delete_crud_table");
|
||||
|
||||
return displayList(true);
|
||||
|
@ -133,4 +140,55 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction {
|
|||
"errors.crud_failed_to_delete_crud_table");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Token(save = false, validate = true)
|
||||
@Execute(validator = true, input = "edit.jsp")
|
||||
public String create() {
|
||||
try {
|
||||
final SuggestBadWord suggestBadWord = createSuggestBadWord();
|
||||
suggestBadWordService.store(suggestBadWord);
|
||||
suggestHelper.deleteAllBadWord();
|
||||
suggestHelper.updateSolrBadwordFile();
|
||||
SAStrutsUtil.addSessionMessage("success.crud_create_crud_table");
|
||||
|
||||
return displayList(true);
|
||||
} catch (final ActionMessagesException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw e;
|
||||
} catch (final CrudMessageException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(e.getMessageId(), e.getArgs());
|
||||
} catch (final Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(
|
||||
"errors.crud_failed_to_create_crud_table");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Token(save = false, validate = true)
|
||||
@Execute(validator = true, input = "edit.jsp")
|
||||
public String update() {
|
||||
try {
|
||||
final SuggestBadWord suggestBadWord = createSuggestBadWord();
|
||||
suggestBadWordService.store(suggestBadWord);
|
||||
suggestHelper.deleteAllBadWord();
|
||||
suggestHelper.updateSolrBadwordFile();
|
||||
SAStrutsUtil.addSessionMessage("success.crud_update_crud_table");
|
||||
|
||||
return displayList(true);
|
||||
} catch (final ActionMessagesException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw e;
|
||||
} catch (final CrudMessageException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(e.getMessageId(), e.getArgs());
|
||||
} catch (final Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(
|
||||
"errors.crud_failed_to_update_crud_table");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -25,11 +25,13 @@ import jp.sf.fess.crud.CrudMessageException;
|
|||
import jp.sf.fess.crud.action.admin.BsSuggestElevateWordAction;
|
||||
import jp.sf.fess.crud.util.SAStrutsUtil;
|
||||
import jp.sf.fess.db.exentity.SuggestElevateWord;
|
||||
import jp.sf.fess.helper.SuggestHelper;
|
||||
import jp.sf.fess.helper.SystemHelper;
|
||||
import jp.sf.fess.util.FessBeans;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.codelibs.sastruts.core.annotation.Token;
|
||||
import org.codelibs.sastruts.core.exception.SSCActionMessagesException;
|
||||
import org.seasar.struts.annotation.Execute;
|
||||
import org.seasar.struts.exception.ActionMessagesException;
|
||||
|
@ -44,6 +46,9 @@ public class SuggestElevateWordAction extends BsSuggestElevateWordAction {
|
|||
@Resource
|
||||
protected SystemHelper systemHelper;
|
||||
|
||||
@Resource
|
||||
protected SuggestHelper suggestHelper;
|
||||
|
||||
public String getHelpLink() {
|
||||
return systemHelper.getHelpLink("suggestElevateWord");
|
||||
}
|
||||
|
@ -92,6 +97,54 @@ public class SuggestElevateWordAction extends BsSuggestElevateWordAction {
|
|||
return suggestElevateWord;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Token(save = false, validate = true)
|
||||
@Execute(validator = true, input = "edit.jsp")
|
||||
public String create() {
|
||||
try {
|
||||
final SuggestElevateWord suggestElevateWord = createSuggestElevateWord();
|
||||
suggestElevateWordService.store(suggestElevateWord);
|
||||
suggestHelper.storeAllElevateWords();
|
||||
SAStrutsUtil.addSessionMessage("success.crud_create_crud_table");
|
||||
|
||||
return displayList(true);
|
||||
} catch (final ActionMessagesException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw e;
|
||||
} catch (final CrudMessageException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(e.getMessageId(), e.getArgs());
|
||||
} catch (final Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(
|
||||
"errors.crud_failed_to_create_crud_table");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Token(save = false, validate = true)
|
||||
@Execute(validator = true, input = "edit.jsp")
|
||||
public String update() {
|
||||
try {
|
||||
final SuggestElevateWord suggestElevateWord = createSuggestElevateWord();
|
||||
suggestElevateWordService.store(suggestElevateWord);
|
||||
suggestHelper.storeAllElevateWords();
|
||||
SAStrutsUtil.addSessionMessage("success.crud_update_crud_table");
|
||||
|
||||
return displayList(true);
|
||||
} catch (final ActionMessagesException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw e;
|
||||
} catch (final CrudMessageException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(e.getMessageId(), e.getArgs());
|
||||
} catch (final Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ActionMessagesException(
|
||||
"errors.crud_failed_to_update_crud_table");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Execute(validator = false, input = "error.jsp")
|
||||
public String delete() {
|
||||
|
@ -117,6 +170,7 @@ public class SuggestElevateWordAction extends BsSuggestElevateWordAction {
|
|||
suggestElevateWord.setDeletedBy(username);
|
||||
suggestElevateWord.setDeletedTime(timestamp);
|
||||
suggestElevateWordService.store(suggestElevateWord);
|
||||
suggestHelper.storeAllElevateWords();
|
||||
SAStrutsUtil.addSessionMessage("success.crud_delete_crud_table");
|
||||
|
||||
return displayList(true);
|
||||
|
|
146
src/main/java/jp/sf/fess/helper/SuggestHelper.java
Normal file
146
src/main/java/jp/sf/fess/helper/SuggestHelper.java
Normal file
|
@ -0,0 +1,146 @@
|
|||
package jp.sf.fess.helper;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import jp.sf.fess.db.cbean.SuggestBadWordCB;
|
||||
import jp.sf.fess.db.cbean.SuggestElevateWordCB;
|
||||
import jp.sf.fess.db.exbhv.SuggestBadWordBhv;
|
||||
import jp.sf.fess.db.exbhv.SuggestElevateWordBhv;
|
||||
import jp.sf.fess.db.exentity.SuggestBadWord;
|
||||
import jp.sf.fess.db.exentity.SuggestElevateWord;
|
||||
import jp.sf.fess.suggest.SuggestConstants;
|
||||
import jp.sf.fess.suggest.service.SuggestService;
|
||||
|
||||
import org.codelibs.core.util.StringUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class SuggestHelper {
|
||||
private static final Logger logger = LoggerFactory
|
||||
.getLogger(SuggestHelper.class);
|
||||
|
||||
@Resource
|
||||
protected SuggestService suggestService;
|
||||
|
||||
@Resource
|
||||
protected SuggestElevateWordBhv suggestElevateWordBhv;
|
||||
|
||||
@Resource
|
||||
protected SuggestBadWordBhv suggestBadWordBhv;
|
||||
|
||||
public String badwordFileDir = "./solr/core1/conf/";
|
||||
|
||||
public void storeAllElevateWords() {
|
||||
suggestService.deleteAllElevateWords();
|
||||
|
||||
final SuggestElevateWordCB cb = new SuggestElevateWordCB();
|
||||
cb.query().setDeletedBy_IsNull();
|
||||
final List<SuggestElevateWord> list = suggestElevateWordBhv
|
||||
.selectList(cb);
|
||||
for (final SuggestElevateWord suggestElevateWord : list) {
|
||||
final String word = suggestElevateWord.getSuggestWord();
|
||||
final String reading = suggestElevateWord.getReading();
|
||||
final String labelStr = suggestElevateWord.getTargetLabel();
|
||||
final String roleStr = suggestElevateWord.getTargetRole();
|
||||
final long boost = suggestElevateWord.getBoost().longValue();
|
||||
|
||||
addElevateWord(word, reading, labelStr, roleStr, boost, false);
|
||||
}
|
||||
suggestService.commit();
|
||||
}
|
||||
|
||||
public void addElevateWord(final String word, final String reading,
|
||||
final String labels, final String roles, final long boost) {
|
||||
addElevateWord(word, reading, labels, roles, boost, true);
|
||||
}
|
||||
|
||||
public void addElevateWord(final String word, final String reading,
|
||||
final String labels, final String roles, final long boost,
|
||||
final boolean commit) {
|
||||
final SuggestBadWordCB badWordCB = new SuggestBadWordCB();
|
||||
badWordCB.query().setSuggestWord_Equal(word);
|
||||
final List<SuggestBadWord> badWordList = suggestBadWordBhv
|
||||
.selectList(badWordCB);
|
||||
if (badWordList.size() > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
final List<String> labelList = new ArrayList<String>();
|
||||
if (StringUtil.isNotBlank(labels)) {
|
||||
final String[] array = labels.trim().split(",");
|
||||
for (final String label : array) {
|
||||
labelList.add(label);
|
||||
}
|
||||
}
|
||||
final List<String> roleList = new ArrayList<String>();
|
||||
if (StringUtil.isNotBlank(roles)) {
|
||||
final String[] array = roles.trim().split(",");
|
||||
for (final String role : array) {
|
||||
roleList.add(role);
|
||||
}
|
||||
}
|
||||
|
||||
suggestService
|
||||
.addElevateWord(word, reading, labelList, roleList, boost);
|
||||
|
||||
if (commit) {
|
||||
suggestService.commit();
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteAllBadWord() {
|
||||
final SuggestBadWordCB cb = new SuggestBadWordCB();
|
||||
cb.query().setDeletedBy_IsNull();
|
||||
final List<SuggestBadWord> list = suggestBadWordBhv.selectList(cb);
|
||||
for (final SuggestBadWord suggestBadWord : list) {
|
||||
final String word = suggestBadWord.getSuggestWord();
|
||||
suggestService.deleteBadWord(word);
|
||||
}
|
||||
suggestService.commit();
|
||||
}
|
||||
|
||||
public void updateSolrBadwordFile() {
|
||||
final SuggestBadWordCB cb = new SuggestBadWordCB();
|
||||
cb.query().setDeletedBy_IsNull();
|
||||
final List<SuggestBadWord> list = suggestBadWordBhv.selectList(cb);
|
||||
|
||||
final File dir = new File(System.getProperty("catalina.home").replace(
|
||||
"¥", "/")
|
||||
+ "/" + badwordFileDir);
|
||||
if (!dir.exists() || !dir.isDirectory()) {
|
||||
logger.warn(dir.getAbsolutePath() + " does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -293,4 +293,6 @@
|
|||
</initMethod>
|
||||
</component>
|
||||
|
||||
<component name="suggestHelper" class="jp.sf.fess.helper.SuggestHelper" />
|
||||
|
||||
</components>
|
||||
|
|
|
@ -84,5 +84,4 @@
|
|||
<arg> suggestSolrServer </arg>
|
||||
<destroyMethod name="shutdown"/>
|
||||
</component>
|
||||
|
||||
</components>
|
||||
|
|
Loading…
Add table
Reference in a new issue