add elevateword & badword functions

This commit is contained in:
yfujita 2014-10-21 05:03:37 +09:00
parent 605152f232
commit 8f9687b6e4
5 changed files with 264 additions and 5 deletions

View file

@ -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");
}
}
}

View file

@ -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);

View 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
}
}
}
}
}

View file

@ -293,4 +293,6 @@
</initMethod>
</component>
<component name="suggestHelper" class="jp.sf.fess.helper.SuggestHelper" />
</components>

View file

@ -84,5 +84,4 @@
<arg> suggestSolrServer </arg>
<destroyMethod name="shutdown"/>
</component>
</components>