diff --git a/src/main/java/jp/sf/fess/service/SuggestBadWordService.java b/src/main/java/jp/sf/fess/service/SuggestBadWordService.java index 0dcb26d52..d787a36f3 100644 --- a/src/main/java/jp/sf/fess/service/SuggestBadWordService.java +++ b/src/main/java/jp/sf/fess/service/SuggestBadWordService.java @@ -41,6 +41,8 @@ import org.seasar.dbflute.cbean.EntityRowHandler; public class SuggestBadWordService extends BsSuggestBadWordService implements Serializable { + private static final String DELETE_PREFIX = "--"; + private static final long serialVersionUID = 1L; private static final Log log = LogFactory @@ -90,29 +92,34 @@ public class SuggestBadWordService extends BsSuggestBadWordService implements List list; csvReader.readValues(); // ignore header while ((list = csvReader.readValues()) != null) { + String badWord = getValue(list, 0); + if (StringUtil.isBlank(badWord)) { + // skip + continue; + } try { + boolean isDelete = false; + if (badWord.startsWith(DELETE_PREFIX)) { + isDelete = true; + badWord = badWord.substring(2); + } final SuggestBadWordCB cb = new SuggestBadWordCB(); - cb.query().setSuggestWord_Equal(strip(list.get(0))); + cb.query().setSuggestWord_Equal(badWord); 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("\"\"")) { + if (isDelete) { suggestBadWord.setDeletedBy("system"); suggestBadWord.setDeletedTime(new Timestamp(System .currentTimeMillis())); suggestBadWordBhv.update(suggestBadWord); + } else if (suggestBadWord == null) { + suggestBadWord = new SuggestBadWord(); + suggestBadWord.setSuggestWord(badWord); + suggestBadWord.setCreatedBy("system"); + suggestBadWord.setCreatedTime(new Timestamp(System + .currentTimeMillis())); + suggestBadWordBhv.insert(suggestBadWord); } else { - suggestBadWord.setTargetRole(strip(list.get(1))); - suggestBadWord.setTargetLabel(strip(list.get(2))); suggestBadWord.setUpdatedBy("system"); suggestBadWord.setUpdatedTime(new Timestamp(System .currentTimeMillis())); @@ -135,9 +142,7 @@ public class SuggestBadWordService extends BsSuggestBadWordService implements final CsvWriter csvWriter = new CsvWriter(writer, cfg); try { final List list = new ArrayList<>(); - list.add("SuggestWord"); - list.add("Role"); - list.add("Label"); + list.add("BadWord"); csvWriter.writeValues(list); final SuggestBadWordCB cb = new SuggestBadWordCB(); @@ -148,8 +153,6 @@ public class SuggestBadWordService extends BsSuggestBadWordService implements 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) { @@ -174,7 +177,18 @@ public class SuggestBadWordService extends BsSuggestBadWordService implements } } - private static String strip(final String item) { - return item.substring(1, item.length() - 1); + private static String getValue(final List list, final int index) { + if (index < list.size()) { + return StringUtil.EMPTY; + } + String item = list.get(index).trim(); + if (StringUtil.isBlank(item)) { + return StringUtil.EMPTY; + } + if (item.length() > 1 && item.charAt(0) == '"' + && item.charAt(item.length() - 1) == '"') { + item = item.substring(1, item.length() - 2); + } + return item; } } diff --git a/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java b/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java index 1b97aa6f9..5a0d2b7ef 100644 --- a/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java +++ b/src/main/java/jp/sf/fess/service/SuggestElevateWordService.java @@ -93,36 +93,50 @@ public class SuggestElevateWordService extends BsSuggestElevateWordService List list; csvReader.readValues(); // ignore header while ((list = csvReader.readValues()) != null) { + final String suggestWord = getValue(list, 0); + if (StringUtil.isBlank(suggestWord)) { + // skip + continue; + } try { final SuggestElevateWordCB cb = new SuggestElevateWordCB(); - cb.query().setSuggestWord_Equal(strip(list.get(0))); + final String role = getValue(list, 2); + final String label = getValue(list, 3); + cb.query().setSuggestWord_Equal(suggestWord); + if (StringUtil.isNotBlank(role)) { + cb.query().setTargetRole_Equal(role); + } + if (StringUtil.isNotBlank(label)) { + cb.query().setTargetLabel_Equal(label); + } SuggestElevateWord suggestElevateWord = suggestElevateWordBhv .selectEntity(cb); + final String reading = getValue(list, 1); + final String boost = getValue(list, 4); 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.setSuggestWord(suggestWord); + suggestElevateWord.setReading(reading); + suggestElevateWord.setTargetRole(role); + suggestElevateWord.setTargetLabel(label); + suggestElevateWord + .setBoost(StringUtil.isBlank(boost) ? BigDecimal.ONE + : new BigDecimal(boost)); 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("\"\"")) { + } else if (StringUtil.isBlank(reading) + && StringUtil.isBlank(boost)) { 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.setReading(reading); + suggestElevateWord + .setBoost(StringUtil.isBlank(boost) ? BigDecimal.ONE + : new BigDecimal(boost)); suggestElevateWord.setUpdatedBy("system"); suggestElevateWord.setUpdatedTime(new Timestamp(System .currentTimeMillis())); @@ -189,7 +203,19 @@ public class SuggestElevateWordService extends BsSuggestElevateWordService } } - private static String strip(final String item) { - return item.substring(1, item.length() - 1); + static String getValue(final List list, final int index) { + if (index < list.size()) { + return StringUtil.EMPTY; + } + String item = list.get(index).trim(); + if (StringUtil.isBlank(item)) { + return StringUtil.EMPTY; + } + if (item.length() > 1 && item.charAt(0) == '"' + && item.charAt(item.length() - 1) == '"') { + item = item.substring(1, item.length() - 2); + } + return item; } + }