Suggest word use PermissionHelper (#525)
* Suggest word use PermissionHelper * permission to targetRole * #525
This commit is contained in:
parent
1c22f7e54a
commit
8e16b72e63
7 changed files with 87 additions and 41 deletions
|
@ -210,15 +210,21 @@ public class ElevateWordService implements Serializable {
|
|||
elevateWord.setBoost(StringUtil.isBlank(boost) ? 1.0f : Float.parseFloat(boost));
|
||||
elevateWord.setCreatedBy("system");
|
||||
elevateWord.setCreatedTime(now);
|
||||
elevateWordBhv.insert(elevateWord);
|
||||
elevateWordBhv.insert(elevateWord, op -> {
|
||||
op.setRefresh(true);
|
||||
});
|
||||
} else if (StringUtil.isBlank(reading) && StringUtil.isBlank(boost)) {
|
||||
elevateWordBhv.delete(elevateWord);
|
||||
elevateWordBhv.delete(elevateWord, op -> {
|
||||
op.setRefresh(true);
|
||||
});
|
||||
} else {
|
||||
elevateWord.setReading(reading);
|
||||
elevateWord.setBoost(StringUtil.isBlank(boost) ? 1.0f : Float.parseFloat(boost));
|
||||
elevateWord.setUpdatedBy("system");
|
||||
elevateWord.setUpdatedTime(now);
|
||||
elevateWordBhv.update(elevateWord);
|
||||
elevateWordBhv.update(elevateWord, op -> {
|
||||
op.setRefresh(true);
|
||||
});
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Failed to read a sugget elevate word: " + list, e);
|
||||
|
|
|
@ -285,6 +285,7 @@ public class AdminBadwordAction extends FessAdminAction {
|
|||
new Thread(() -> {
|
||||
try (Reader reader = new BufferedReader(new InputStreamReader(form.badWordFile.getInputStream(), getCsvEncoding()))) {
|
||||
badWordService.importCsv(reader);
|
||||
suggestHelper.deleteAllBadWords();
|
||||
suggestHelper.storeAllBadWords();
|
||||
} catch (final Exception e) {
|
||||
throw new FessSystemException("Failed to import data.", e);
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
*/
|
||||
package org.codelibs.fess.app.web.admin.elevateword;
|
||||
|
||||
import static org.codelibs.core.stream.StreamUtil.stream;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.InputStream;
|
||||
|
@ -24,9 +26,12 @@ import java.io.Reader;
|
|||
import java.io.Writer;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.app.pager.ElevateWordPager;
|
||||
import org.codelibs.fess.app.service.ElevateWordService;
|
||||
|
@ -35,7 +40,9 @@ import org.codelibs.fess.app.web.CrudMode;
|
|||
import org.codelibs.fess.app.web.base.FessAdminAction;
|
||||
import org.codelibs.fess.es.config.exentity.ElevateWord;
|
||||
import org.codelibs.fess.exception.FessSystemException;
|
||||
import org.codelibs.fess.helper.PermissionHelper;
|
||||
import org.codelibs.fess.helper.SuggestHelper;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
import org.codelibs.fess.util.RenderDataUtil;
|
||||
import org.dbflute.optional.OptionalEntity;
|
||||
import org.dbflute.optional.OptionalThing;
|
||||
|
@ -137,11 +144,22 @@ public class AdminElevatewordAction extends FessAdminAction {
|
|||
public HtmlResponse edit(final EditForm form) {
|
||||
validate(form, messages -> {}, () -> asListHtml());
|
||||
final String id = form.id;
|
||||
elevateWordService.getElevateWord(id).ifPresent(entity -> {
|
||||
copyBeanToBean(entity, form, op -> {});
|
||||
}).orElse(() -> {
|
||||
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
|
||||
});
|
||||
elevateWordService
|
||||
.getElevateWord(id)
|
||||
.ifPresent(
|
||||
entity -> {
|
||||
copyBeanToBean(entity, form, copyOp -> {
|
||||
copyOp.excludeNull();
|
||||
copyOp.exclude("permissions");
|
||||
});
|
||||
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
|
||||
form.targetRole =
|
||||
stream(entity.getTargetRole()).get(
|
||||
stream -> stream.map(s -> permissionHelper.decode(s)).filter(StringUtil::isNotBlank).distinct()
|
||||
.collect(Collectors.joining("\n")));
|
||||
}).orElse(() -> {
|
||||
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
|
||||
});
|
||||
saveToken();
|
||||
if (form.crudMode.intValue() == CrudMode.EDIT) {
|
||||
// back
|
||||
|
@ -160,18 +178,32 @@ public class AdminElevatewordAction extends FessAdminAction {
|
|||
public HtmlResponse details(final int crudMode, final String id) {
|
||||
verifyCrudMode(crudMode, CrudMode.DETAILS);
|
||||
saveToken();
|
||||
return asHtml(path_AdminElevateword_AdminElevatewordDetailsJsp).useForm(EditForm.class, op -> {
|
||||
op.setup(form -> {
|
||||
elevateWordService.getElevateWord(id).ifPresent(entity -> {
|
||||
copyBeanToBean(entity, form, copyOp -> {
|
||||
copyOp.excludeNull();
|
||||
return asHtml(path_AdminElevateword_AdminElevatewordDetailsJsp).useForm(
|
||||
EditForm.class,
|
||||
op -> {
|
||||
op.setup(form -> {
|
||||
elevateWordService
|
||||
.getElevateWord(id)
|
||||
.ifPresent(
|
||||
entity -> {
|
||||
copyBeanToBean(entity, form, copyOp -> {
|
||||
copyOp.excludeNull();
|
||||
copyOp.exclude("permissions");
|
||||
});
|
||||
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
|
||||
form.targetRole =
|
||||
stream(entity.getTargetRole()).get(
|
||||
stream -> stream.map(s -> permissionHelper.decode(s))
|
||||
.filter(StringUtil::isNotBlank).distinct()
|
||||
.collect(Collectors.joining("\n")));
|
||||
form.crudMode = crudMode;
|
||||
})
|
||||
.orElse(() -> {
|
||||
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id),
|
||||
() -> asListHtml());
|
||||
});
|
||||
});
|
||||
form.crudMode = crudMode;
|
||||
}).orElse(() -> {
|
||||
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
|
||||
});
|
||||
});
|
||||
}).renderWith(data -> {
|
||||
}).renderWith(data -> {
|
||||
registerLabels(data);
|
||||
});
|
||||
}
|
||||
|
@ -292,10 +324,10 @@ public class AdminElevatewordAction extends FessAdminAction {
|
|||
validate(form, messages -> {}, () -> asUploadHtml());
|
||||
verifyToken(() -> asUploadHtml());
|
||||
new Thread(() -> {
|
||||
Reader reader = null;
|
||||
try {
|
||||
reader = new BufferedReader(new InputStreamReader(form.elevateWordFile.getInputStream(), getCsvEncoding()));
|
||||
try (Reader reader = new BufferedReader(new InputStreamReader(form.elevateWordFile.getInputStream(), getCsvEncoding()))) {
|
||||
elevateWordService.importCsv(reader);
|
||||
suggestHelper.deleteAllElevateWord();
|
||||
suggestHelper.storeAllElevateWords();
|
||||
} catch (final Exception e) {
|
||||
throw new FessSystemException("Failed to import data.", e);
|
||||
}
|
||||
|
@ -329,12 +361,20 @@ public class AdminElevatewordAction extends FessAdminAction {
|
|||
protected OptionalEntity<ElevateWord> getElevateWord(final CreateForm form) {
|
||||
final String username = systemHelper.getUsername();
|
||||
final long currentTime = systemHelper.getCurrentTimeAsLong();
|
||||
return getEntity(form, username, currentTime).map(entity -> {
|
||||
entity.setUpdatedBy(username);
|
||||
entity.setUpdatedTime(currentTime);
|
||||
copyBeanToBean(form, entity, op -> op.exclude(Constants.COMMON_CONVERSION_RULE));
|
||||
return entity;
|
||||
});
|
||||
|
||||
return getEntity(form, username, currentTime).map(
|
||||
entity -> {
|
||||
entity.setUpdatedBy(username);
|
||||
entity.setUpdatedTime(currentTime);
|
||||
copyBeanToBean(
|
||||
form,
|
||||
entity,
|
||||
op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE), Stream.of("permissions")).toArray(
|
||||
n -> new String[n])));
|
||||
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
|
||||
entity.setTargetRole(permissionHelper.encode(form.targetRole));
|
||||
return entity;
|
||||
});
|
||||
}
|
||||
|
||||
protected void registerLabels(final RenderData data) {
|
||||
|
|
|
@ -41,10 +41,11 @@ public class CreateForm implements Serializable {
|
|||
|
||||
public String reading;
|
||||
|
||||
public String targetRole;
|
||||
|
||||
public String targetLabel;
|
||||
|
||||
@Size(max = 4000)
|
||||
public String targetRole;
|
||||
|
||||
@Required
|
||||
@ValidateTypeFailure
|
||||
public Float boost;
|
||||
|
@ -61,5 +62,6 @@ public class CreateForm implements Serializable {
|
|||
boost = 100.0f;
|
||||
createdBy = ComponentUtil.getSystemHelper().getUsername();
|
||||
createdTime = ComponentUtil.getSystemHelper().getCurrentTimeAsLong();
|
||||
targetRole = ComponentUtil.getFessConfig().getSearchDefaultDisplayPermission();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,4 +112,5 @@ public class ElevateWord extends BsElevateWord {
|
|||
+ ", targetLabel=" + targetLabel + ", targetRole=" + targetRole + ", updatedBy=" + updatedBy + ", updatedTime="
|
||||
+ updatedTime + ", docMeta=" + docMeta + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -217,8 +217,8 @@ public class SuggestHelper {
|
|||
suggester.refresh();
|
||||
}
|
||||
|
||||
public void addElevateWord(final String word, final String reading, final String[] tags, final String roles, final float boost) {
|
||||
addElevateWord(word, reading, tags, roles, boost, true);
|
||||
public void addElevateWord(final String word, final String reading, final String[] tags, final String permissions, final Float boost) {
|
||||
addElevateWord(word, reading, tags, permissions, boost, true);
|
||||
}
|
||||
|
||||
public void addElevateWord(final String word, final String reading, final String[] tags, final String roles, final float boost,
|
||||
|
@ -229,10 +229,7 @@ public class SuggestHelper {
|
|||
}
|
||||
final List<String> roleList = new ArrayList<>();
|
||||
if (StringUtil.isNotBlank(roles)) {
|
||||
final String[] array = roles.trim().split(",");
|
||||
for (final String role : array) {
|
||||
roleList.add(role);
|
||||
}
|
||||
roleList.add(roles);
|
||||
}
|
||||
|
||||
suggester.indexer().addElevateWord(
|
||||
|
|
|
@ -96,14 +96,13 @@
|
|||
property="suggestWord" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><la:message
|
||||
key="labels.elevate_word_reading" /></th>
|
||||
<th><la:message key="labels.elevate_word_reading" /></th>
|
||||
<td>${f:h(reading)}<la:hidden property="reading" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><la:message
|
||||
key="labels.elevate_word_target_role" /></th>
|
||||
<td>${f:h(targetRole)}<la:hidden property="targetRole" /></td>
|
||||
<th><la:message key="labels.elevate_word_target_role" /></th>
|
||||
<td>${f:br(f:h(targetRole))}<la:hidden
|
||||
property="targetRole" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><la:message key="labels.label_type" /></th>
|
||||
|
|
Loading…
Add table
Reference in a new issue