diff --git a/src/main/java/jp/sf/fess/action/admin/SuggestBadWordAction.java b/src/main/java/jp/sf/fess/action/admin/SuggestBadWordAction.java index 6a2577ef8..9f9bcdcd8 100644 --- a/src/main/java/jp/sf/fess/action/admin/SuggestBadWordAction.java +++ b/src/main/java/jp/sf/fess/action/admin/SuggestBadWordAction.java @@ -16,10 +16,14 @@ package jp.sf.fess.action.admin; +import java.io.*; import java.sql.Timestamp; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import jp.sf.fess.Constants; +import jp.sf.fess.FessSystemException; import jp.sf.fess.crud.CommonConstants; import jp.sf.fess.crud.CrudMessageException; import jp.sf.fess.crud.action.admin.BsSuggestBadWordAction; @@ -29,12 +33,16 @@ import jp.sf.fess.helper.SuggestHelper; import jp.sf.fess.helper.SystemHelper; import jp.sf.fess.util.FessBeans; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelibs.core.util.DynamicProperties; +import org.codelibs.robot.util.StreamUtil; 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; +import org.seasar.struts.util.ResponseUtil; public class SuggestBadWordAction extends BsSuggestBadWordAction { @@ -49,6 +57,9 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction { @Resource protected SuggestHelper suggestHelper; + @Resource + protected DynamicProperties crawlerProperties; + public String getHelpLink() { return systemHelper.getHelpLink("suggestBadWord"); } @@ -191,4 +202,123 @@ public class SuggestBadWordAction extends BsSuggestBadWordAction { } } + @Token(save = true, validate = false) + @Execute(validator = false, input = "downloadpage") + public String downloadpage() { + return "download.jsp"; + } + + @Token(save = false, validate = true) + @Execute(validator = false, input = "downloadpage") + public String download() { + + final HttpServletResponse response = ResponseUtil.getResponse(); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + + "suggestbadword.csv" + "\""); + + Writer writer = null; + try { + writer = new BufferedWriter(new OutputStreamWriter( + response.getOutputStream(), crawlerProperties.getProperty( + Constants.CSV_FILE_ENCODING_PROPERTY, + Constants.UTF_8))); + suggestBadWordService.exportCsv(writer); + writer.flush(); + return null; + } catch (final Exception e) { + log.error("Failed to export data.", e); + throw new SSCActionMessagesException(e, + "errors.failed_to_export_data"); + } finally { + IOUtils.closeQuietly(writer); + } + } + + @Token(save = true, validate = false) + @Execute(validator = false, input = "uploadpage") + public String uploadpage() { + return "upload.jsp"; + } + + @Token(save = false, validate = true) + @Execute(validator = true, input = "uploadpage") + public String upload() { + BufferedInputStream is = null; + File tempFile = null; + FileOutputStream fos = null; + final byte[] b = new byte[20]; + try { + tempFile = File.createTempFile("suggestbadword-import-", ".csv"); + is = new BufferedInputStream(suggestBadWordForm.suggestBadWordFile.getInputStream()); + is.mark(20); + if (is.read(b, 0, 20) <= 0) { + throw new FessSystemException("no import data."); + } + is.reset(); + fos = new FileOutputStream(tempFile); + StreamUtil.drain(is, fos); + } catch (final Exception e) { + if (tempFile != null && !tempFile.delete()) { + log.warn("Could not delete " + + tempFile.getAbsolutePath()); + } + log.error("Failed to import data.", e); + throw new SSCActionMessagesException(e, + "errors.failed_to_import_data"); + } finally { + IOUtils.closeQuietly(is); + IOUtils.closeQuietly(fos); + } + + final File oFile = tempFile; + try { + final String head = new String(b, Constants.UTF_8); + if (!head.startsWith("\"SuggestWord\",")) { + log.error("Unknown file: " + suggestBadWordForm.suggestBadWordFile); + throw new SSCActionMessagesException( + "errors.unknown_import_file"); + } + final String enc = crawlerProperties.getProperty( + Constants.CSV_FILE_ENCODING_PROPERTY, Constants.UTF_8); + new Thread(new Runnable() { + @Override + public void run() { + Reader reader = null; + try { + reader = new BufferedReader(new InputStreamReader( + new FileInputStream(oFile), enc)); + suggestBadWordService.importCsv(reader); + } catch (final Exception e) { + log.error("Failed to import data.", e); + throw new FessSystemException( + "Failed to import data.", e); + } finally { + if (!oFile.delete()) { + log.warn("Could not delete " + + oFile.getAbsolutePath()); + } + IOUtils.closeQuietly(reader); + suggestHelper.deleteAllBadWord(); + suggestHelper.updateSolrBadwordFile(); + } + } + }).start(); + } catch (final ActionMessagesException e) { + if (!oFile.delete()) { + log.warn("Could not delete " + oFile.getAbsolutePath()); + } + throw e; + } catch (final Exception e) { + if (!oFile.delete()) { + log.warn("Could not delete " + oFile.getAbsolutePath()); + } + log.error("Failed to import data.", e); + throw new SSCActionMessagesException(e, + "errors.failed_to_import_data"); + } + SAStrutsUtil.addSessionMessage("success.upload_suggest_bad_word"); + + return "uploadpage?redirect=true"; + } } diff --git a/src/main/java/jp/sf/fess/action/admin/SuggestElevateWordAction.java b/src/main/java/jp/sf/fess/action/admin/SuggestElevateWordAction.java index c9aa05439..9cefa7dad 100644 --- a/src/main/java/jp/sf/fess/action/admin/SuggestElevateWordAction.java +++ b/src/main/java/jp/sf/fess/action/admin/SuggestElevateWordAction.java @@ -16,10 +16,14 @@ package jp.sf.fess.action.admin; +import java.io.*; import java.sql.Timestamp; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import jp.sf.fess.Constants; +import jp.sf.fess.FessSystemException; import jp.sf.fess.crud.CommonConstants; import jp.sf.fess.crud.CrudMessageException; import jp.sf.fess.crud.action.admin.BsSuggestElevateWordAction; @@ -29,12 +33,16 @@ import jp.sf.fess.helper.SuggestHelper; import jp.sf.fess.helper.SystemHelper; import jp.sf.fess.util.FessBeans; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelibs.core.util.DynamicProperties; +import org.codelibs.robot.util.StreamUtil; 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; +import org.seasar.struts.util.ResponseUtil; public class SuggestElevateWordAction extends BsSuggestElevateWordAction { @@ -49,6 +57,9 @@ public class SuggestElevateWordAction extends BsSuggestElevateWordAction { @Resource protected SuggestHelper suggestHelper; + @Resource + protected DynamicProperties crawlerProperties; + public String getHelpLink() { return systemHelper.getHelpLink("suggestElevateWord"); } @@ -187,4 +198,123 @@ public class SuggestElevateWordAction extends BsSuggestElevateWordAction { "errors.crud_failed_to_delete_crud_table"); } } + + @Token(save = true, validate = false) + @Execute(validator = false, input = "downloadpage") + public String downloadpage() { + return "download.jsp"; + } + + @Token(save = false, validate = true) + @Execute(validator = false, input = "downloadpage") + public String download() { + + final HttpServletResponse response = ResponseUtil.getResponse(); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + + "suggestelevateword.csv" + "\""); + + Writer writer = null; + try { + writer = new BufferedWriter(new OutputStreamWriter( + response.getOutputStream(), crawlerProperties.getProperty( + Constants.CSV_FILE_ENCODING_PROPERTY, + Constants.UTF_8))); + suggestElevateWordService.exportCsv(writer); + writer.flush(); + return null; + } catch (final Exception e) { + log.error("Failed to export data.", e); + throw new SSCActionMessagesException(e, + "errors.failed_to_export_data"); + } finally { + IOUtils.closeQuietly(writer); + } + } + + @Token(save = true, validate = false) + @Execute(validator = false, input = "uploadpage") + public String uploadpage() { + return "upload.jsp"; + } + + @Token(save = false, validate = true) + @Execute(validator = true, input = "uploadpage") + public String upload() { + BufferedInputStream is = null; + File tempFile = null; + FileOutputStream fos = null; + final byte[] b = new byte[20]; + try { + tempFile = File.createTempFile("suggestelevateword-import-", ".csv"); + is = new BufferedInputStream(suggestElevateWordForm.suggestElevateWordFile.getInputStream()); + is.mark(20); + if (is.read(b, 0, 20) <= 0) { + throw new FessSystemException("no import data."); + } + is.reset(); + fos = new FileOutputStream(tempFile); + StreamUtil.drain(is, fos); + } catch (final Exception e) { + if (tempFile != null && !tempFile.delete()) { + log.warn("Could not delete " + + tempFile.getAbsolutePath()); + } + log.error("Failed to import data.", e); + throw new SSCActionMessagesException(e, + "errors.failed_to_import_data"); + } finally { + IOUtils.closeQuietly(is); + IOUtils.closeQuietly(fos); + } + + final File oFile = tempFile; + try { + final String head = new String(b, Constants.UTF_8); + if (!head.startsWith("\"SuggestWord\",")) { + log.error("Unknown file: " + suggestElevateWordForm.suggestElevateWordFile); + throw new SSCActionMessagesException( + "errors.unknown_import_file"); + } + final String enc = crawlerProperties.getProperty( + Constants.CSV_FILE_ENCODING_PROPERTY, Constants.UTF_8); + new Thread(new Runnable() { + @Override + public void run() { + Reader reader = null; + try { + reader = new BufferedReader(new InputStreamReader( + new FileInputStream(oFile), enc)); + suggestElevateWordService.importCsv(reader); + } catch (final Exception e) { + log.error("Failed to import data.", e); + throw new FessSystemException( + "Failed to import data.", e); + } finally { + if (!oFile.delete()) { + log.warn("Could not delete " + + oFile.getAbsolutePath()); + } + IOUtils.closeQuietly(reader); + suggestHelper.storeAllElevateWords(); + } + } + }).start(); + } catch (final ActionMessagesException e) { + if (!oFile.delete()) { + log.warn("Could not delete " + oFile.getAbsolutePath()); + } + throw e; + } catch (final Exception e) { + if (!oFile.delete()) { + log.warn("Could not delete " + oFile.getAbsolutePath()); + } + log.error("Failed to import data.", e); + throw new SSCActionMessagesException(e, + "errors.failed_to_import_data"); + } + SAStrutsUtil.addSessionMessage("success.upload_suggest_elevate_word"); + + return "uploadpage?redirect=true"; + } } diff --git a/src/main/java/jp/sf/fess/db/exentity/SuggestElevateWord.java b/src/main/java/jp/sf/fess/db/exentity/SuggestElevateWord.java index af53dfab5..a34830f7d 100644 --- a/src/main/java/jp/sf/fess/db/exentity/SuggestElevateWord.java +++ b/src/main/java/jp/sf/fess/db/exentity/SuggestElevateWord.java @@ -16,6 +16,8 @@ package jp.sf.fess.db.exentity; +import java.math.BigDecimal; + import jp.sf.fess.db.bsentity.BsSuggestElevateWord; /** @@ -30,4 +32,25 @@ public class SuggestElevateWord extends BsSuggestElevateWord { /** Serial version UID. (Default) */ private static final long serialVersionUID = 1L; + + public SuggestElevateWord() { + super(); + setBoost(BigDecimal.ONE); + } + + public String getBoostValue() { + if (_boost != null) { + return Integer.toString(_boost.intValue()); + } + return null; + } + + public void setBoostValue(final String value) { + if (value != null) { + try { + _boost = new BigDecimal(value); + } catch (final Exception e) { + } + } + } } diff --git a/src/main/java/jp/sf/fess/form/admin/SuggestBadWordForm.java b/src/main/java/jp/sf/fess/form/admin/SuggestBadWordForm.java index 5f2839e56..838889365 100644 --- a/src/main/java/jp/sf/fess/form/admin/SuggestBadWordForm.java +++ b/src/main/java/jp/sf/fess/form/admin/SuggestBadWordForm.java @@ -19,12 +19,17 @@ package jp.sf.fess.form.admin; import java.io.Serializable; import jp.sf.fess.crud.form.admin.BsSuggestBadWordForm; +import org.apache.struts.upload.FormFile; +import org.seasar.struts.annotation.Required; public class SuggestBadWordForm extends BsSuggestBadWordForm implements Serializable { private static final long serialVersionUID = 1L; + @Required(target = "upload") + public FormFile suggestBadWordFile; + @Override public void initialize() { super.initialize(); diff --git a/src/main/java/jp/sf/fess/form/admin/SuggestElevateWordForm.java b/src/main/java/jp/sf/fess/form/admin/SuggestElevateWordForm.java index 56e5166b9..f5534590c 100644 --- a/src/main/java/jp/sf/fess/form/admin/SuggestElevateWordForm.java +++ b/src/main/java/jp/sf/fess/form/admin/SuggestElevateWordForm.java @@ -19,12 +19,17 @@ package jp.sf.fess.form.admin; import java.io.Serializable; import jp.sf.fess.crud.form.admin.BsSuggestElevateWordForm; +import org.apache.struts.upload.FormFile; +import org.seasar.struts.annotation.Required; public class SuggestElevateWordForm extends BsSuggestElevateWordForm implements Serializable { private static final long serialVersionUID = 1L; + @Required(target = "upload") + public FormFile suggestElevateWordFile; + @Override public void initialize() { super.initialize(); diff --git a/src/main/java/jp/sf/fess/service/SuggestBadWordService.java b/src/main/java/jp/sf/fess/service/SuggestBadWordService.java index 7a56ee4f1..6b164b98d 100644 --- a/src/main/java/jp/sf/fess/service/SuggestBadWordService.java +++ b/src/main/java/jp/sf/fess/service/SuggestBadWordService.java @@ -16,19 +16,36 @@ package jp.sf.fess.service; +import java.io.IOException; +import java.io.Reader; import java.io.Serializable; +import java.io.Writer; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import jp.sf.fess.action.admin.SuggestBadWordAction; import jp.sf.fess.crud.service.BsSuggestBadWordService; import jp.sf.fess.db.cbean.SuggestBadWordCB; import jp.sf.fess.db.exentity.SuggestBadWord; import jp.sf.fess.pager.SuggestBadWordPager; +import jp.sf.orangesignal.csv.CsvConfig; +import jp.sf.orangesignal.csv.CsvReader; +import jp.sf.orangesignal.csv.CsvWriter; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelibs.core.util.StringUtil; +import org.seasar.dbflute.cbean.EntityRowHandler; public class SuggestBadWordService extends BsSuggestBadWordService implements Serializable { private static final long serialVersionUID = 1L; + private static final Log log = LogFactory + .getLog(SuggestBadWordService.class); + @Override protected void setupListCondition(final SuggestBadWordCB cb, final SuggestBadWordPager suggestBadWordPager) { @@ -67,4 +84,94 @@ public class SuggestBadWordService extends BsSuggestBadWordService implements } + public void importCsv(final Reader reader) { + final CsvReader csvReader = new CsvReader(reader, new CsvConfig()); + try { + List list; + csvReader.readValues(); // ignore header + while ((list = csvReader.readValues()) != null) { + try { + final SuggestBadWordCB cb = new SuggestBadWordCB(); + cb.query().setSuggestWord_Equal(strip(list.get(0))); + SuggestBadWord suggestBadWord = suggestBadWordBhv + .selectEntity(cb); + if (suggestBadWord == null) { + suggestBadWord = new SuggestBadWord(); + suggestBadWord.setSuggestWord(strip(list.get(0))); + suggestBadWord.setTargetRole(strip(list.get(1))); + suggestBadWord.setTargetLabel(strip(list.get(2))); + suggestBadWord.setCreatedBy("system"); + suggestBadWord.setCreatedTime(new Timestamp(System.currentTimeMillis())); + suggestBadWordBhv.insert(suggestBadWord); + } else if (list.get(1).equals("\"\"") && + list.get(2).equals("\"\"")) { + suggestBadWord.setDeletedBy("system"); + suggestBadWord.setDeletedTime(new Timestamp(System.currentTimeMillis())); + suggestBadWordBhv.update(suggestBadWord); + } else { + suggestBadWord.setTargetRole(strip(list.get(1))); + suggestBadWord.setTargetLabel(strip(list.get(2))); + suggestBadWord.setUpdatedBy("system"); + suggestBadWord.setUpdatedTime(new Timestamp(System.currentTimeMillis())); + suggestBadWordBhv.update(suggestBadWord); + } + } catch (final Exception e) { + log.warn("Failed to read a sugget elevate word: " + list, e); + } + } + } catch (final IOException e) { + log.warn("Failed to read a sugget elevate word.", e); + } + } + + + public void exportCsv(final Writer writer) { + final CsvConfig cfg = new CsvConfig(',', '"', '"'); + cfg.setEscapeDisabled(false); + cfg.setQuoteDisabled(false); + @SuppressWarnings("resource") + final CsvWriter csvWriter = new CsvWriter(writer, cfg); + final SuggestBadWordCB cb = new SuggestBadWordCB(); + cb.query().setDeletedBy_IsNull(); + try { + final List list = new ArrayList(); + list.add("SuggestWord"); + list.add("Role"); + list.add("Label"); + csvWriter.writeValues(list); + suggestBadWordBhv.selectCursor(cb, + new EntityRowHandler() { + @Override + public void handle(final SuggestBadWord entity) { + final List list = new ArrayList(); + addToList(list, entity.getSuggestWord()); + addToList(list, entity.getTargetRole()); + addToList(list, entity.getTargetLabel()); + try { + csvWriter.writeValues(list); + } catch (final IOException e) { + log.warn( + "Failed to write a sugget bad word: " + + entity, e); + } + } + + private void addToList(final List list, + final Object value) { + if (value == null) { + list.add(StringUtil.EMPTY); + } else { + list.add(value.toString()); + } + } + }); + csvWriter.flush(); + } catch (final IOException e) { + log.warn("Failed to write a sugget bad word.", e); + } + } + + private static String strip(String item) { + return item.substring(1, item.length() - 1); + } } diff --git a/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java b/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java index 366773de0..034c84546 100644 --- a/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java +++ b/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java @@ -16,19 +16,36 @@ package jp.sf.fess.service; +import java.io.IOException; +import java.io.Reader; import java.io.Serializable; +import java.io.Writer; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import jp.sf.fess.crud.service.BsSuggestElevateWordService; import jp.sf.fess.db.cbean.SuggestElevateWordCB; import jp.sf.fess.db.exentity.SuggestElevateWord; import jp.sf.fess.pager.SuggestElevateWordPager; +import jp.sf.orangesignal.csv.CsvConfig; +import jp.sf.orangesignal.csv.CsvReader; +import jp.sf.orangesignal.csv.CsvWriter; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelibs.core.util.StringUtil; +import org.seasar.dbflute.cbean.EntityRowHandler; public class SuggestElevateWordService extends BsSuggestElevateWordService implements Serializable { private static final long serialVersionUID = 1L; + private static final Log log = LogFactory + .getLog(SuggestElevateWordService.class); + @Override protected void setupListCondition(final SuggestElevateWordCB cb, final SuggestElevateWordPager suggestElevateWordPager) { @@ -69,4 +86,102 @@ public class SuggestElevateWordService extends BsSuggestElevateWordService } + public void importCsv(final Reader reader) { + final CsvReader csvReader = new CsvReader(reader, new CsvConfig()); + try { + List list; + csvReader.readValues(); // ignore header + while ((list = csvReader.readValues()) != null) { + try { + final SuggestElevateWordCB cb = new SuggestElevateWordCB(); + cb.query().setSuggestWord_Equal(strip(list.get(0))); + SuggestElevateWord suggestElevateWord = suggestElevateWordBhv + .selectEntity(cb); + if (suggestElevateWord == null) { + suggestElevateWord = new SuggestElevateWord(); + suggestElevateWord.setSuggestWord(strip(list.get(0))); + suggestElevateWord.setReading(strip(list.get(1))); + suggestElevateWord.setTargetRole(strip(list.get(2))); + suggestElevateWord.setTargetLabel(strip(list.get(3))); + suggestElevateWord.setBoost(new BigDecimal(strip(list.get(4)))); + suggestElevateWord.setCreatedBy("system"); + suggestElevateWord.setCreatedTime(new Timestamp(System.currentTimeMillis())); + suggestElevateWordBhv.insert(suggestElevateWord); + } else if (list.get(1).equals("\"\"") && + list.get(2).equals("\"\"") && + list.get(3).equals("\"\"")) { + suggestElevateWord.setDeletedBy("system"); + suggestElevateWord.setDeletedTime(new Timestamp(System.currentTimeMillis())); + suggestElevateWordBhv.update(suggestElevateWord); + } else { + suggestElevateWord.setReading(strip(list.get(1))); + suggestElevateWord.setTargetRole(strip(list.get(2))); + suggestElevateWord.setTargetLabel(strip(list.get(3))); + suggestElevateWord.setBoost(new BigDecimal(strip(list.get(4)))); + suggestElevateWord.setUpdatedBy("system"); + suggestElevateWord.setUpdatedTime(new Timestamp(System.currentTimeMillis())); + suggestElevateWordBhv.update(suggestElevateWord); + } + } catch (final Exception e) { + log.warn("Failed to read a sugget elevate word: " + list, e); + } + } + } catch (final IOException e) { + log.warn("Failed to read a sugget elevate word.", e); + } + } + + public void exportCsv(final Writer writer) { + final CsvConfig cfg = new CsvConfig(',', '"', '"'); + cfg.setEscapeDisabled(false); + cfg.setQuoteDisabled(false); + @SuppressWarnings("resource") + final CsvWriter csvWriter = new CsvWriter(writer, cfg); + final SuggestElevateWordCB cb = new SuggestElevateWordCB(); + cb.query().setDeletedBy_IsNull(); + try { + final List list = new ArrayList(); + list.add("SuggestWord"); + list.add("Reading"); + list.add("Role"); + list.add("Label"); + list.add("Boost"); + csvWriter.writeValues(list); + suggestElevateWordBhv.selectCursor(cb, + new EntityRowHandler() { + @Override + public void handle(final SuggestElevateWord entity) { + final List list = new ArrayList(); + addToList(list, entity.getSuggestWord()); + addToList(list, entity.getReading()); + addToList(list, entity.getTargetRole()); + addToList(list, entity.getTargetLabel()); + addToList(list, entity.getBoost()); + try { + csvWriter.writeValues(list); + } catch (final IOException e) { + log.warn( + "Failed to write a sugget elevate word: " + + entity, e); + } + } + + private void addToList(final List list, + final Object value) { + if (value == null) { + list.add(StringUtil.EMPTY); + } else { + list.add(value.toString()); + } + } + }); + csvWriter.flush(); + } catch (final IOException e) { + log.warn("Failed to write a sugget elevate word.", e); + } + } + + private static String strip(String item) { + return item.substring(1, item.length() - 1); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 21ae619e0..47c263b7e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -115,6 +115,8 @@ success.job_stopped=Stopped job {0}. success.joblog_delete_all=Deleted job logs. success.upload_synonym_file=Uploaded Synonym file. success.upload_userdict_file=Uploaded UserDict file. +success.upload_suggest_elevate_word=Uploaded Additional Word file. +success.upload_suggest_bad_word=Uploaded Bad Word file. # labels labels.authRealm=Realm @@ -284,6 +286,8 @@ labels.token=Token labels.useAclAsRole=Use ACL as Role labels.synonymFile=Synonym File labels.userDictFile=UserDict File +labels.suggestElevateWordFile=Additional Word File +labels.suggestBadWordFile=Bad Word File # view/common/common.jsp @@ -1390,18 +1394,23 @@ labels.suggest_elevate_word_link_create=Create labels.suggest_elevate_word_link_update=Edit labels.suggest_elevate_word_link_delete=Delete labels.suggest_elevate_word_link_confirm=Details +labels.suggest_elevate_word_link_download=Download +labels.suggest_elevate_word_link_upload=Upload labels.suggest_elevate_word_button_create=Create labels.suggest_elevate_word_button_back=Back labels.suggest_elevate_word_button_confirm=Confirm labels.suggest_elevate_word_button_update=Update labels.suggest_elevate_word_button_delete=Delete labels.suggest_elevate_word_button_edit=Edit +labels.suggest_elevate_word_button_download=Download +labels.suggest_elevate_word_button_upload=Upload labels.suggest_elevate_word_list_suggest_word=Word labels.suggest_elevate_word_suggest_word=Word labels.suggest_elevate_word_reading=Reading labels.suggest_elevate_word_target_role=Role labels.suggest_elevate_word_target_label=Label labels.suggest_elevate_word_boost=Boost +labels.suggest_elevate_word_file=Additional Word File # suggest bad word labels.suggest_bad_word_configuration=Bad Word @@ -1419,16 +1428,21 @@ labels.suggest_bad_word_link_create=Create labels.suggest_bad_word_link_update=Edit labels.suggest_bad_word_link_delete=Delete labels.suggest_bad_word_link_confirm=Details +labels.suggest_bad_word_link_download=Download +labels.suggest_bad_word_link_upload=Upload labels.suggest_bad_word_button_create=Create labels.suggest_bad_word_button_back=Back labels.suggest_bad_word_button_confirm=Confirm labels.suggest_bad_word_button_update=Update labels.suggest_bad_word_button_delete=Delete labels.suggest_bad_word_button_edit=Edit +labels.suggest_bad_word_button_download=Download +labels.suggest_bad_word_button_upload=Upload labels.suggest_bad_word_list_suggest_word=Bad Word labels.suggest_bad_word_suggest_word=Bad Word labels.suggest_bad_word_target_role=Role labels.suggest_bad_word_target_label=Label +labels.suggest_bad_word_file=Bad Word File # CRUD PROPERTIES: BEGIN errors.crud_invalid_mode=Invalid mode(expected value is {0}, but it's {1}). diff --git a/src/main/resources/application_ja.properties b/src/main/resources/application_ja.properties index 36ac44147..bb5749490 100644 --- a/src/main/resources/application_ja.properties +++ b/src/main/resources/application_ja.properties @@ -115,6 +115,8 @@ success.job_stopped=\u30b8\u30e7\u30d6 {0} \u3092\u505c\u6b62\u3057\u307e\u3057\ success.joblog_delete_all=\u30b8\u30e7\u30d6\u30ed\u30b0\u3092\u524a\u9664\u3057\u307e\u3057\u305f\u3002 success.upload_synonym_file=\u540c\u7fa9\u8a9e\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f\u3002 success.upload_userdict_file=\u30e6\u30fc\u30b6\u30fc\u8f9e\u66f8\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f\u3002 +success.upload_suggest_elevate_word=\u8ffd\u52a0\u5019\u88dc\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f\u3002 +success.upload_suggest_bad_word=NG\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f\u3002 # labels labels.authRealm=\u8a8d\u8a3c\u30ec\u30eb\u30e0 @@ -284,6 +286,8 @@ labels.token=\u30c8\u30fc\u30af\u30f3 labels.useAclAsRole=ACL\u3092\u30ed\u30fc\u30eb\u306b\u5229\u7528 labels.synonymFile=\u540c\u7fa9\u8a9e\u30d5\u30a1\u30a4\u30eb labels.userDictFile=\u30e6\u30fc\u30b6\u30fc\u8f9e\u66f8\u30d5\u30a1\u30a4\u30eb +labels.suggestElevateWordFile=\u8ffd\u52a0\u5019\u88dc\u30d5\u30a1\u30a4\u30eb +labels.suggestBadWordFile=NG\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb # view/common/common.jsp @@ -1390,18 +1394,23 @@ labels.suggest_elevate_word_link_create=\u65b0\u898f\u4f5c\u6210 labels.suggest_elevate_word_link_update=\u7de8\u96c6 labels.suggest_elevate_word_link_delete=\u524a\u9664 labels.suggest_elevate_word_link_confirm=\u8a73\u7d30 +labels.suggest_elevate_word_link_download=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +labels.suggest_elevate_word_link_upload=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 labels.suggest_elevate_word_button_create=\u4f5c\u6210 labels.suggest_elevate_word_button_back=\u623b\u308b labels.suggest_elevate_word_button_confirm=\u78ba\u8a8d labels.suggest_elevate_word_button_update=\u66f4\u65b0 labels.suggest_elevate_word_button_delete=\u524a\u9664 labels.suggest_elevate_word_button_edit=\u7de8\u96c6 +labels.suggest_elevate_word_button_download=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +labels.suggest_elevate_word_button_upload=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 labels.suggest_elevate_word_list_suggest_word=\u30b5\u30b8\u30a7\u30b9\u30c8\u5019\u88dc labels.suggest_elevate_word_suggest_word=\u30b5\u30b8\u30a7\u30b9\u30c8\u5019\u88dc labels.suggest_elevate_word_reading=\u8aad\u307f labels.suggest_elevate_word_target_role=\u30ed\u30fc\u30eb\u540d labels.suggest_elevate_word_target_label=\u30e9\u30d9\u30eb\u540d labels.suggest_elevate_word_boost=\u30d6\u30fc\u30b9\u30c8\u5024 +labels.suggest_elevate_word_file=\u8ffd\u52a0\u5019\u88dc\u30d5\u30a1\u30a4\u30eb # suggest bad word labels.suggest_bad_word_configuration=NG\u30ef\u30fc\u30c9 @@ -1419,16 +1428,21 @@ labels.suggest_bad_word_link_create=\u65b0\u898f\u4f5c\u6210 labels.suggest_bad_word_link_update=\u7de8\u96c6 labels.suggest_bad_word_link_delete=\u524a\u9664 labels.suggest_bad_word_link_confirm=\u8a73\u7d30 +labels.suggest_bad_word_link_download=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +labels.suggest_bad_word_link_upload=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 labels.suggest_bad_word_button_create=\u4f5c\u6210 labels.suggest_bad_word_button_back=\u623b\u308b labels.suggest_bad_word_button_confirm=\u78ba\u8a8d labels.suggest_bad_word_button_update=\u66f4\u65b0 labels.suggest_bad_word_button_delete=\u524a\u9664 labels.suggest_bad_word_button_edit=\u7de8\u96c6 +labels.suggest_bad_word_button_download=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +labels.suggest_bad_word_button_upload=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 labels.suggest_bad_word_list_suggest_word=\u30b5\u30b8\u30a7\u30b9\u30c8\u5019\u88dc labels.suggest_bad_word_suggest_word=\u30b5\u30b8\u30a7\u30b9\u30c8\u5019\u88dc labels.suggest_bad_word_target_role=\u30ed\u30fc\u30eb\u540d labels.suggest_bad_word_target_label=\u30e9\u30d9\u30eb\u540d +labels.suggest_bad_word_file=NG\u30ef\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb # CRUD PROPERTIES: BEGIN errors.crud_invalid_mode=\u30e2\u30fc\u30c9\u304c\u9055\u3044\u307e\u3059\u3002(\u6b63\u3057\u3044\u5024\u306f {0} \u3067\u3059\u304c\u3001\u5165\u529b\u3055\u308c\u305f\u5024\u306f {1} \u306b\u306a\u3063\u3066\u3044\u307e\u3059) diff --git a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/confirm.jsp b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/confirm.jsp index 9be297c31..17c53fb85 100644 --- a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/confirm.jsp +++ b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/confirm.jsp @@ -44,6 +44,12 @@
  • +
  • + +
  • +
  • + +
  • diff --git a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/download.jsp b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/download.jsp new file mode 100644 index 000000000..d36061325 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/download.jsp @@ -0,0 +1,63 @@ +<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> + + + + + + + + + + +

    + +

    + + <%-- Message: BEGIN --%> +
    + +
    +
    + +
    + <%-- Message: END --%> + +
    +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    +
    + + <%-- Edit Form: BEGIN --%> + +
    + + + + + + + +
    " /> +
    +
    +
    + <%-- Edit Form: BEGIN --%> + +
    +
    diff --git a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/edit.jsp b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/edit.jsp index 47e577f17..dfa0d8ab1 100644 --- a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/edit.jsp +++ b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/edit.jsp @@ -44,6 +44,12 @@
  • +
  • + +
  • +
  • + +
  • diff --git a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/index.jsp b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/index.jsp index dd3b5725e..d68e633d9 100644 --- a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/index.jsp +++ b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/index.jsp @@ -32,6 +32,12 @@
  • +
  • + +
  • +
  • + +
  • diff --git a/src/main/webapp/WEB-INF/view/admin/suggestBadWord/upload.jsp b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/upload.jsp new file mode 100644 index 000000000..d444e539a --- /dev/null +++ b/src/main/webapp/WEB-INF/view/admin/suggestBadWord/upload.jsp @@ -0,0 +1,69 @@ +<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> + + + + + + + + + + +

    + +

    + + <%-- Message: BEGIN --%> +
    + +
    +
    + +
    + <%-- Message: END --%> + +
    +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    +
    + + <%-- Edit Form: BEGIN --%> + +
    + + + + + + + + + + + + +
    + " /> +
    +
    +
    + <%-- Edit Form: BEGIN --%> + +
    +
    diff --git a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/confirm.jsp b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/confirm.jsp index dcc1621d2..7afca5065 100644 --- a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/confirm.jsp +++ b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/confirm.jsp @@ -44,6 +44,12 @@
  • +
  • + +
  • +
  • + +
  • diff --git a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/download.jsp b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/download.jsp new file mode 100644 index 000000000..3658d6149 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/download.jsp @@ -0,0 +1,62 @@ +<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> + + + + + + + + + + +

    + +

    + + <%-- Message: BEGIN --%> +
    + +
    +
    + +
    + <%-- Message: END --%> + +
    +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    +
    + + <%-- Edit Form: BEGIN --%> + +
    + + + + + + + +
    " /> +
    +
    +
    + <%-- Edit Form: BEGIN --%> +
    +
    diff --git a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/edit.jsp b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/edit.jsp index 7a7e476f4..05006ede0 100644 --- a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/edit.jsp +++ b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/edit.jsp @@ -44,6 +44,12 @@
  • +
  • + +
  • +
  • + +
  • diff --git a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/index.jsp b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/index.jsp index a4fa4f7fa..ef660bab7 100644 --- a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/index.jsp +++ b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/index.jsp @@ -32,6 +32,12 @@
  • +
  • + +
  • +
  • + +
  • diff --git a/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/upload.jsp b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/upload.jsp new file mode 100644 index 000000000..1dcf8f7ad --- /dev/null +++ b/src/main/webapp/WEB-INF/view/admin/suggestElevateWord/upload.jsp @@ -0,0 +1,68 @@ +<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> + + + + + + + + + + +

    + +

    + + <%-- Message: BEGIN --%> +
    + +
    +
    + +
    + <%-- Message: END --%> + +
    +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    +
    + + <%-- Edit Form: BEGIN --%> + +
    + + + + + + + + + + + + +
    + " /> +
    +
    +
    + <%-- Edit Form: BEGIN --%> +
    +