diff --git a/src/main/java/org/codelibs/fess/app/service/ElevateWordService.java b/src/main/java/org/codelibs/fess/app/service/ElevateWordService.java index c0fcadb7c..ca0f0577a 100644 --- a/src/main/java/org/codelibs/fess/app/service/ElevateWordService.java +++ b/src/main/java/org/codelibs/fess/app/service/ElevateWordService.java @@ -22,6 +22,7 @@ import java.io.Reader; import java.io.Writer; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Resource; @@ -179,6 +180,7 @@ public class ElevateWordService { } public void importCsv(final Reader reader) { + final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper(); @SuppressWarnings("resource") final CsvReader csvReader = new CsvReader(reader, new CsvConfig()); try { @@ -191,22 +193,20 @@ public class ElevateWordService { continue; } try { - final String role = getValue(list, 2); - final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper(); // TODO final String[] permissions = stream(getValue(list, 2).split(",")).get( stream -> stream.map(s -> permissionHelper.encode(s)).filter(StringUtil::isNotBlank).distinct() - .toArray(n -> new String[n])); // TODO + .toArray(n -> new String[n])); final String label = getValue(list, 3); ElevateWord elevateWord = elevateWordBhv.selectEntity(cb -> { cb.query().setSuggestWord_Equal(suggestWord); - if (StringUtil.isNotBlank(role)) { - cb.query().setPermissions_Equal(role); + if (permissions.length > 0) { + cb.query().setPermissions_InScope(stream(permissions).get(stream -> stream.collect(Collectors.toList()))); } if (StringUtil.isNotBlank(label)) { cb.query().setTargetLabel_Equal(label); } - }).orElse(null);//TODO + }).orElse(null); final String reading = getValue(list, 1); final String boost = getValue(list, 4); final long now = ComponentUtil.getSystemHelper().getCurrentTimeAsLong(); @@ -224,6 +224,7 @@ public class ElevateWordService { elevateWordBhv.delete(elevateWord); } else { elevateWord.setReading(reading); + elevateWord.setPermissions(permissions); elevateWord.setBoost(StringUtil.isBlank(boost) ? 1.0f : Float.parseFloat(boost)); elevateWord.setUpdatedBy("system"); elevateWord.setUpdatedTime(now); @@ -240,6 +241,7 @@ public class ElevateWordService { } public void exportCsv(final Writer writer) { + final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper(); final CsvConfig cfg = new CsvConfig(',', '"', '"'); cfg.setEscapeDisabled(false); cfg.setQuoteDisabled(false); @@ -249,7 +251,7 @@ public class ElevateWordService { final List list = new ArrayList<>(); list.add("SuggestWord"); list.add("Reading"); - list.add("Role"); + list.add("Permissions"); list.add("Label"); list.add("Boost"); csvWriter.writeValues(list); @@ -260,17 +262,13 @@ public class ElevateWordService { @Override public void handle(final ElevateWord entity) { final List list = new ArrayList<>(); - final PermissionHelper permissionHelper = new PermissionHelper(); - StringBuilder permissions = new StringBuilder(); - for (String permission : entity.getPermissions()) { - if (permissions.length() != 0) { - permissions.append(","); - } - permissions.append(permissionHelper.decode(permission)); - } + final String permissions = + stream(entity.getPermissions()).get( + stream -> stream.map(s -> permissionHelper.decode(s)).filter(StringUtil::isNotBlank).distinct() + .collect(Collectors.joining(","))); addToList(list, entity.getSuggestWord()); addToList(list, entity.getReading()); - addToList(list, permissions.toString()); + addToList(list, permissions); addToList(list, entity.getTargetLabel()); addToList(list, entity.getBoost()); try {