fix #510 : stream api refactoring

This commit is contained in:
Shinsuke Sugaya 2016-05-19 16:28:54 +09:00
parent 7c03aae79d
commit cee5a02e9e
41 changed files with 365 additions and 386 deletions

View file

@ -60,7 +60,7 @@
<crawler.version>1.0.9-SNAPSHOT</crawler.version>
<!-- Suggest -->
<suggest.version>2.1.4-SNAPSHOT</suggest.version>
<suggest.version>2.2.0-SNAPSHOT</suggest.version>
<!-- Elasticsearch -->
<elasticsearch.version>2.3.2</elasticsearch.version>
@ -1054,7 +1054,7 @@
<dependency>
<groupId>org.codelibs</groupId>
<artifactId>corelib</artifactId>
<version>0.3.4</version>
<version>0.3.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.api.suggest;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.IOException;
import javax.annotation.Resource;
@ -34,7 +36,6 @@ import org.codelibs.fess.suggest.entity.SuggestItem;
import org.codelibs.fess.suggest.request.suggest.SuggestRequestBuilder;
import org.codelibs.fess.suggest.request.suggest.SuggestResponse;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -69,7 +70,7 @@ public class SuggestApiManager extends BaseApiManager {
final SuggestHelper suggestHelper = ComponentUtil.getSuggestHelper();
final SuggestRequestBuilder builder = suggestHelper.suggester().suggest();
builder.setQuery(parameter.getQuery());
StreamUtil.of(parameter.getFields()).forEach(field -> builder.addField(field));
stream(parameter.getFields()).of(stream -> stream.forEach(field -> builder.addField(field)));
roleQueryHelper.build().stream().forEach(role -> builder.addRole(role));
builder.setSize(parameter.getNum());

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.service;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.Serializable;
import java.util.List;
@ -29,7 +31,6 @@ import org.codelibs.fess.es.user.exbhv.UserBhv;
import org.codelibs.fess.es.user.exentity.Group;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.cbean.result.PagingResultBean;
import org.dbflute.optional.OptionalEntity;
@ -85,12 +86,15 @@ public class GroupService implements Serializable {
op.setRefresh(true);
});
userBhv.selectCursor(cb -> {
cb.query().setGroups_Equal(group.getId());
}, entity -> {
entity.setGroups(StreamUtil.of(entity.getGroups()).filter(s -> !s.equals(group.getId())).toArray(n -> new String[n]));
userBhv.insertOrUpdate(entity);
});
userBhv.selectCursor(
cb -> {
cb.query().setGroups_Equal(group.getId());
},
entity -> {
entity.setGroups(stream(entity.getGroups()).get(
stream -> stream.filter(s -> !s.equals(group.getId())).toArray(n -> new String[n])));
userBhv.insertOrUpdate(entity);
});
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.service;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.Serializable;
import java.util.List;
@ -29,7 +31,6 @@ import org.codelibs.fess.es.user.exbhv.UserBhv;
import org.codelibs.fess.es.user.exentity.Role;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.cbean.result.PagingResultBean;
import org.dbflute.optional.OptionalEntity;
@ -82,12 +83,15 @@ public class RoleService implements Serializable {
op.setRefresh(true);
});
userBhv.selectCursor(cb -> {
cb.query().setRoles_Equal(role.getId());
}, entity -> {
entity.setRoles(StreamUtil.of(entity.getRoles()).filter(s -> !s.equals(role.getId())).toArray(n -> new String[n]));
userBhv.insertOrUpdate(entity);
});
userBhv.selectCursor(
cb -> {
cb.query().setRoles_Equal(role.getId());
},
entity -> {
entity.setRoles(stream(entity.getRoles()).get(
stream -> stream.filter(s -> !s.equals(role.getId())).toArray(n -> new String[n])));
userBhv.insertOrUpdate(entity);
});
}
protected void setupListCondition(final RoleCB cb, final RolePager rolePager) {

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.backup;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -26,7 +28,6 @@ import org.codelibs.elasticsearch.runner.net.CurlResponse;
import org.codelibs.fess.app.web.base.FessAdminAction;
import org.codelibs.fess.util.RenderDataUtil;
import org.codelibs.fess.util.ResourceUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.Execute;
import org.lastaflute.web.response.ActionResponse;
import org.lastaflute.web.response.HtmlResponse;
@ -50,7 +51,7 @@ public class AdminBackupAction extends FessAdminAction {
@Execute
public ActionResponse download(final String id) {
if (StreamUtil.of(fessConfig.getIndexBackupTargetsAsArray()).anyMatch(s -> s.equals(id))) {
if (stream(fessConfig.getIndexBackupTargetsAsArray()).get(stream -> stream.anyMatch(s -> s.equals(id)))) {
return asStream(id + ".bulk").contentTypeOctetStream().stream(
out -> {
try (CurlResponse response =
@ -66,12 +67,13 @@ public class AdminBackupAction extends FessAdminAction {
}
private List<Map<String, String>> getBackupItems() {
return StreamUtil.of(fessConfig.getIndexBackupTargetsAsArray()).filter(name -> StringUtil.isNotBlank(name)).map(name -> {
final Map<String, String> map = new HashMap<>();
map.put("id", name);
map.put("name", name);
return map;
}).collect(Collectors.toList());
return stream(fessConfig.getIndexBackupTargetsAsArray()).get(
stream -> stream.filter(name -> StringUtil.isNotBlank(name)).map(name -> {
final Map<String, String> map = new HashMap<>();
map.put("id", name);
map.put("name", name);
return map;
}).collect(Collectors.toList()));
}
private HtmlResponse asIndexHtml() {

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.dataconfig;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -37,7 +39,6 @@ import org.codelibs.fess.es.config.exentity.DataConfig;
import org.codelibs.fess.helper.PermissionHelper;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.RenderDataUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalEntity;
import org.dbflute.optional.OptionalThing;
import org.lastaflute.web.Execute;
@ -148,8 +149,9 @@ public class AdminDataconfigAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s)).filter(s -> StringUtil.isNotBlank(s))
.distinct().collect(Collectors.joining("\n")));
}).orElse(() -> {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
});
@ -185,9 +187,10 @@ public class AdminDataconfigAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n")));
form.crudMode = crudMode;
})
.orElse(() -> {
@ -300,8 +303,9 @@ public class AdminDataconfigAction extends FessAdminAction {
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.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
entity.setPermissions(stream(form.permissions.split("\n")).get(
stream -> stream.map(s -> permissionHelper.encode(s)).filter(s -> StringUtil.isNotBlank(s)).distinct()
.toArray(n -> new String[n])));
return entity;
});
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.dict.seunjeon;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@ -32,7 +34,6 @@ import org.codelibs.fess.app.web.admin.dict.AdminDictAction;
import org.codelibs.fess.app.web.base.FessAdminAction;
import org.codelibs.fess.dict.seunjeon.SeunjeonItem;
import org.codelibs.fess.util.RenderDataUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalEntity;
import org.dbflute.optional.OptionalThing;
import org.lastaflute.web.Execute;
@ -363,7 +364,8 @@ public class AdminDictSeunjeonAction extends FessAdminAction {
if (StringUtil.isBlank(value)) {
return StringUtil.EMPTY_STRINGS;
}
return StreamUtil.of(value.split(",")).filter(s -> StringUtil.isNotBlank(s)).map(s -> s.trim()).toArray(n -> new String[n]);
return stream(value.split(",")).get(
stream -> stream.filter(s -> StringUtil.isNotBlank(s)).map(s -> s.trim()).toArray(n -> new String[n]));
}
// ===================================================================================

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.fileconfig;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -32,7 +34,6 @@ import org.codelibs.fess.es.config.exentity.FileConfig;
import org.codelibs.fess.helper.PermissionHelper;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.RenderDataUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalEntity;
import org.dbflute.optional.OptionalThing;
import org.lastaflute.web.Execute;
@ -143,8 +144,9 @@ public class AdminFileconfigAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s)).filter(s -> StringUtil.isNotBlank(s))
.distinct().collect(Collectors.joining("\n")));
}).orElse(() -> {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
});
@ -180,9 +182,10 @@ public class AdminFileconfigAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n")));
form.crudMode = crudMode;
})
.orElse(() -> {
@ -297,8 +300,9 @@ public class AdminFileconfigAction extends FessAdminAction {
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.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
entity.setPermissions(stream(form.permissions.split("\n")).get(
stream -> stream.map(s -> permissionHelper.encode(s)).filter(s -> StringUtil.isNotBlank(s)).distinct()
.toArray(n -> new String[n])));
return entity;
});
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.general;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -30,7 +32,6 @@ import org.codelibs.fess.app.web.base.FessAdminAction;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.mylasta.mail.TestmailPostcard;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.core.mail.Postbox;
import org.lastaflute.web.Execute;
import org.lastaflute.web.response.HtmlResponse;
@ -91,9 +92,9 @@ public class AdminGeneralAction extends FessAdminAction {
TestmailPostcard.droppedInto(postbox, postcard -> {
postcard.setFrom(fessConfig.getMailFromAddress(), fessConfig.getMailFromName());
postcard.addReplyTo(fessConfig.getMailReturnPath());
StreamUtil.of(toAddresses).forEach(address -> {
stream(toAddresses).of(stream -> stream.forEach(address -> {
postcard.addTo(address);
});
}));
BeanUtil.copyMapToBean(dataMap, postcard);
});
saveInfo(messages -> messages.addSuccessSendTestmail(GLOBAL));

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.labeltype;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -31,7 +33,6 @@ import org.codelibs.fess.es.config.exentity.LabelType;
import org.codelibs.fess.helper.PermissionHelper;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.RenderDataUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalEntity;
import org.dbflute.optional.OptionalThing;
import org.lastaflute.web.Execute;
@ -141,8 +142,9 @@ public class AdminLabeltypeAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s)).filter(s -> StringUtil.isNotBlank(s))
.distinct().collect(Collectors.joining("\n")));
}).orElse(() -> {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
});
@ -178,9 +180,10 @@ public class AdminLabeltypeAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n")));
form.crudMode = crudMode;
})
.orElse(() -> {
@ -296,8 +299,9 @@ public class AdminLabeltypeAction extends FessAdminAction {
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.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
entity.setPermissions(stream(form.permissions.split("\n")).get(
stream -> stream.map(s -> permissionHelper.encode(s)).filter(s -> StringUtil.isNotBlank(s)).distinct()
.toArray(n -> new String[n])));
return entity;
});
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.searchlist;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Locale;
@ -28,7 +30,6 @@ import org.codelibs.fess.entity.GeoInfo;
import org.codelibs.fess.entity.SearchRequestParams;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.validation.theme.conversion.ValidateTypeFailure;
@ -67,7 +68,7 @@ public class ListForm implements SearchRequestParams, Serializable {
@Override
public String[] getExtraQueries() {
return StreamUtil.of(ex_q).filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]);
return stream(ex_q).get(stream -> stream.filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]));
}
@Override
@ -97,7 +98,7 @@ public class ListForm implements SearchRequestParams, Serializable {
@Override
public String[] getLanguages() {
return StreamUtil.of(lang).filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]);
return stream(lang).get(stream -> stream.filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]));
}
@Override

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.admin.webconfig;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -33,7 +35,6 @@ import org.codelibs.fess.es.config.exentity.WebConfig;
import org.codelibs.fess.helper.PermissionHelper;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.RenderDataUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalEntity;
import org.dbflute.optional.OptionalThing;
import org.lastaflute.web.Execute;
@ -145,8 +146,9 @@ public class AdminWebconfigAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s)).filter(s -> StringUtil.isNotBlank(s))
.distinct().collect(Collectors.joining("\n")));
}).orElse(() -> {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
});
@ -182,9 +184,10 @@ public class AdminWebconfigAction extends FessAdminAction {
});
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
form.permissions =
StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n"));
stream(entity.getPermissions()).get(
stream -> stream.map(s -> permissionHelper.decode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct()
.collect(Collectors.joining("\n")));
form.crudMode = crudMode;
})
.orElse(() -> {
@ -297,8 +300,9 @@ public class AdminWebconfigAction extends FessAdminAction {
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.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
.filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
entity.setPermissions(stream(form.permissions.split("\n")).get(
stream -> stream.map(s -> permissionHelper.encode(s)).filter(s -> StringUtil.isNotBlank(s)).distinct()
.toArray(n -> new String[n])));
return entity;
});
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.base;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Locale;
@ -28,7 +30,6 @@ import org.codelibs.fess.entity.GeoInfo;
import org.codelibs.fess.entity.SearchRequestParams;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.validation.theme.conversion.ValidateTypeFailure;
@ -92,7 +93,7 @@ public class SearchForm implements SearchRequestParams, Serializable {
@Override
public String[] getExtraQueries() {
return StreamUtil.of(ex_q).filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]);
return stream(ex_q).get(stream -> stream.filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]));
}
@Override
@ -102,7 +103,7 @@ public class SearchForm implements SearchRequestParams, Serializable {
@Override
public String[] getLanguages() {
return StreamUtil.of(lang).filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]);
return stream(lang).get(stream -> stream.filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]));
}
@Override

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.app.web.search;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@ -33,7 +35,6 @@ import org.codelibs.fess.entity.SearchRenderData;
import org.codelibs.fess.exception.InvalidQueryException;
import org.codelibs.fess.exception.ResultOffsetExceededException;
import org.codelibs.fess.util.RenderDataUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.taglib.function.LaFunctions;
import org.lastaflute.web.Execute;
import org.lastaflute.web.response.HtmlResponse;
@ -199,8 +200,9 @@ public class SearchAction extends FessSearchAction {
protected void createPagingQuery(final SearchForm form) {
final List<String> pagingQueryList = new ArrayList<>();
if (form.ex_q != null) {
StreamUtil.of(form.ex_q).filter(q -> StringUtil.isNotBlank(q)).distinct()
.forEach(q -> pagingQueryList.add("ex_q=" + LaFunctions.u(q)));
stream(form.ex_q).of(
stream -> stream.filter(q -> StringUtil.isNotBlank(q)).distinct()
.forEach(q -> pagingQueryList.add("ex_q=" + LaFunctions.u(q))));
}
if (StringUtil.isNotBlank(form.sort)) {
pagingQueryList.add("sort=" + LaFunctions.u(form.sort));

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.crawler;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@ -44,7 +46,6 @@ import org.codelibs.fess.helper.SambaHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.DocumentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -74,7 +75,7 @@ public class FessCrawlerThread extends CrawlerThread {
final Map<String, Object> dataMap = new HashMap<>();
dataMap.put(fessConfig.getIndexFieldUrl(), url);
final List<String> roleTypeList = new ArrayList<>();
StreamUtil.of(crawlingConfig.getPermissions()).forEach(p -> roleTypeList.add(p));
stream(crawlingConfig.getPermissions()).of(stream -> stream.forEach(p -> roleTypeList.add(p)));
if (url.startsWith("smb://")) {
if (url.endsWith("/")) {
// directory

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.crawler.transformer;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.InputStream;
import java.net.URLDecoder;
import java.util.ArrayList;
@ -59,7 +61,6 @@ import org.codelibs.fess.helper.SambaHelper;
import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -295,7 +296,7 @@ public abstract class AbstractFessFileTransformer extends AbstractTransformer im
putResultDataBody(dataMap, fessConfig.getIndexFieldLabel(), labelTypeSet);
// role: roleType
final List<String> roleTypeList = getRoleTypes(responseData);
StreamUtil.of(crawlingConfig.getPermissions()).forEach(p -> roleTypeList.add(p));
stream(crawlingConfig.getPermissions()).of(stream -> stream.forEach(p -> roleTypeList.add(p)));
putResultDataBody(dataMap, fessConfig.getIndexFieldRole(), roleTypeList);
// TODO date
// lang

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.crawler.transformer;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.BufferedInputStream;
import java.net.MalformedURLException;
import java.net.URL;
@ -59,7 +61,6 @@ import org.codelibs.fess.helper.PathMappingHelper;
import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.cyberneko.html.parsers.DOMParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -287,7 +288,7 @@ public class FessXpathTransformer extends XpathTransformer implements FessTransf
putResultDataBody(dataMap, fessConfig.getIndexFieldLabel(), labelTypeSet);
// role: roleType
final List<String> roleTypeList = new ArrayList<>();
StreamUtil.of(crawlingConfig.getPermissions()).forEach(p -> roleTypeList.add(p));
stream(crawlingConfig.getPermissions()).of(stream -> stream.forEach(p -> roleTypeList.add(p)));
putResultDataBody(dataMap, fessConfig.getIndexFieldRole(), roleTypeList);
// id
putResultDataBody(dataMap, fessConfig.getIndexFieldId(), crawlingInfoHelper.generateId(dataMap));

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.ds.impl;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@ -31,7 +33,6 @@ import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.GroovyUtil;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -86,7 +87,7 @@ public abstract class AbstractDataStoreImpl implements DataStore {
defaultDataMap.put(fessConfig.getIndexFieldLabel(), labelTypeList);
// role: roleType
final List<String> roleTypeList = new ArrayList<>();
StreamUtil.of(config.getPermissions()).forEach(p -> roleTypeList.add(p));
stream(config.getPermissions()).of(stream -> stream.forEach(p -> roleTypeList.add(p)));
defaultDataMap.put(fessConfig.getIndexFieldRole(), roleTypeList);
// mimetype
defaultDataMap.put(fessConfig.getIndexFieldMimetype(), mimeType);

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.ds.impl;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@ -39,7 +41,6 @@ import org.codelibs.fess.es.config.exentity.DataConfig;
import org.codelibs.fess.exception.DataStoreCrawlingException;
import org.codelibs.fess.exception.DataStoreException;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -96,8 +97,9 @@ public class CsvDataStoreImpl extends AbstractDataStoreImpl {
for (final String path : values) {
final File dir = new File(path);
if (dir.isDirectory()) {
StreamUtil.of(dir.listFiles()).filter(f -> isCsvFile(f.getParentFile(), f.getName()))
.sorted((f1, f2) -> (int) (f1.lastModified() - f2.lastModified())).forEach(f -> fileList.add(f));
stream(dir.listFiles()).of(
stream -> stream.filter(f -> isCsvFile(f.getParentFile(), f.getName()))
.sorted((f1, f2) -> (int) (f1.lastModified() - f2.lastModified())).forEach(f -> fileList.add(f)));
} else {
logger.warn(path + " is not a directory.");
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.ds.impl;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.net.InetAddress;
import java.util.HashMap;
import java.util.LinkedHashMap;
@ -31,7 +33,6 @@ import org.codelibs.fess.es.config.exentity.DataConfig;
import org.codelibs.fess.exception.DataStoreCrawlingException;
import org.codelibs.fess.exception.DataStoreException;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
@ -89,7 +90,7 @@ public class EsDataStoreImpl extends AbstractDataStoreImpl {
Collectors.toMap(e -> e.getKey().replaceFirst("^settings\\.", StringUtil.EMPTY), e -> e.getValue())))
.build();
logger.info("Connecting to " + hostsStr + " with [" + settings.toDelimitedString(',') + "]");
final InetSocketTransportAddress[] addresses = StreamUtil.of(hostsStr.split(",")).map(h -> {
final InetSocketTransportAddress[] addresses = stream(hostsStr.split(",")).get(stream -> stream.map(h -> {
final String[] values = h.trim().split(":");
try {
if (values.length == 1) {
@ -101,7 +102,7 @@ public class EsDataStoreImpl extends AbstractDataStoreImpl {
logger.warn("Failed to parse address: " + h, e);
}
return null;
}).filter(v -> v != null).toArray(n -> new InetSocketTransportAddress[n]);
}).filter(v -> v != null).toArray(n -> new InetSocketTransportAddress[n]));
try (Client client = TransportClient.builder().settings(settings).build().addTransportAddresses(addresses)) {
processData(dataConfig, callback, paramMap, scriptMap, defaultDataMap, readInterval, client);
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.ds.impl;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -42,7 +44,6 @@ import org.codelibs.fess.exception.DataStoreCrawlingException;
import org.codelibs.fess.helper.IndexingHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.di.core.SingletonLaContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -149,7 +150,7 @@ public class FileListIndexUpdateCallbackImpl implements IndexUpdateCallback, Aut
} else {
ignoreFields = new String[] { Constants.INDEXING_TARGET, Constants.SESSION_ID };
}
StreamUtil.of(ignoreFields).map(s -> s.trim()).forEach(s -> dataMap.remove(s));
stream(ignoreFields).of(stream -> stream.map(s -> s.trim()).forEach(s -> dataMap.remove(s)));
indexUpdateCallback.store(paramMap, dataMap);
} else {

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.entity;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -26,7 +28,6 @@ import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.exception.InvalidQueryException;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
@ -42,10 +43,8 @@ public class GeoInfo {
final String[] geoFields = fessConfig.getQueryGeoFieldsAsArray();
final Map<String, List<QueryBuilder>> geoMap = new HashMap<>();
StreamUtil
.of(request.getParameterMap())
.filter(e -> e.getKey().startsWith("geo.") && e.getKey().endsWith(".point"))
.forEach(
stream(request.getParameterMap()).of(
stream -> stream.filter(e -> e.getKey().startsWith("geo.") && e.getKey().endsWith(".point")).forEach(
e -> {
final String key = e.getKey();
for (final String geoField : geoFields) {
@ -53,8 +52,8 @@ public class GeoInfo {
final String distanceKey = key.replaceFirst(".point$", ".distance");
final String distance = request.getParameter(distanceKey);
if (StringUtil.isNotBlank(distance)) {
StreamUtil.of(e.getValue()).forEach(
pt -> {
stream(e.getValue()).of(
s -> s.forEach(pt -> {
List<QueryBuilder> list = geoMap.get(geoField);
if (list == null) {
list = new ArrayList<>();
@ -77,12 +76,12 @@ public class GeoInfo {
.addErrorsInvalidQueryUnknown(UserMessages.GLOBAL_PROPERTY_KEY),
"Invalid geo point: " + pt);
}
});
}));
}
break;
}
}
});
}));
final QueryBuilder[] queryBuilders = geoMap.values().stream().map(list -> {
if (list.size() == 1) {
@ -99,7 +98,7 @@ public class GeoInfo {
builder = queryBuilders[0];
} else if (queryBuilders.length > 1) {
final BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
StreamUtil.of(queryBuilders).forEach(q -> boolQuery.must(q));
stream(queryBuilders).of(stream -> stream.forEach(q -> boolQuery.must(q)));
builder = boolQuery;
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.entity;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@ -25,7 +27,6 @@ import java.util.Set;
import java.util.function.Consumer;
import org.codelibs.fess.Constants;
import org.codelibs.fess.util.StreamUtil;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchAllQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
@ -87,7 +88,7 @@ public class QueryContext {
}
public void addSorts(final SortBuilder... sortBuilders) {
StreamUtil.of(sortBuilders).forEach(sortBuilder -> sortBuilderList.add(sortBuilder));
stream(sortBuilders).of(stream -> stream.forEach(sortBuilder -> sortBuilderList.add(sortBuilder)));
}
public boolean hasSorts() {

View file

@ -15,13 +15,14 @@
*/
package org.codelibs.fess.entity;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.util.StreamUtil;
public interface SearchRequestParams {
@ -50,7 +51,7 @@ public interface SearchRequestParams {
Locale getLocale();
public default String[] simplifyArray(final String[] values) {
return StreamUtil.of(values).filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]);
return stream(values).get(stream -> stream.filter(q -> StringUtil.isNotBlank(q)).distinct().toArray(n -> new String[n]));
}
public default String[] getParamValueArray(final HttpServletRequest request, final String param) {

View file

@ -15,6 +15,7 @@
*/
package org.codelibs.fess.es.client;
import static org.codelibs.core.stream.StreamUtil.stream;
import static org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.newConfigs;
import java.io.File;
@ -56,7 +57,6 @@ import org.codelibs.fess.exception.SearchQueryException;
import org.codelibs.fess.helper.QueryHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.exception.IllegalBehaviorStateException;
import org.dbflute.optional.OptionalEntity;
import org.elasticsearch.ElasticsearchException;
@ -371,8 +371,8 @@ public class FessEsClient implements Client {
try {
final File aliasConfigDir = ResourceUtil.getResourceAsFile(aliasConfigDirPath);
if (aliasConfigDir.isDirectory()) {
StreamUtil.of(aliasConfigDir.listFiles((dir, name) -> name.endsWith(".json"))).forEach(
f -> {
stream(aliasConfigDir.listFiles((dir, name) -> name.endsWith(".json"))).of(
stream -> stream.forEach(f -> {
final String aliasName = f.getName().replaceFirst(".json$", "");
final String source = FileUtil.readUTF8(f);
final IndicesAliasesResponse response =
@ -383,7 +383,7 @@ public class FessEsClient implements Client {
} else if (logger.isDebugEnabled()) {
logger.debug("Failed to create " + aliasName + " alias for " + configIndex);
}
});
}));
}
} catch (final ResourceNotFoundRuntimeException e) {
// ignore
@ -882,12 +882,12 @@ public class FessEsClient implements Client {
queryContext.sortBuilders().forEach(sortBuilder -> searchRequestBuilder.addSort(sortBuilder));
// highlighting
queryHelper.highlightedFields().forEach(
hf -> searchRequestBuilder.addHighlightedField(hf, queryHelper.getHighlightFragmentSize()));
queryHelper.highlightedFields(stream -> stream.forEach(hf -> searchRequestBuilder.addHighlightedField(hf,
queryHelper.getHighlightFragmentSize())));
// facets
if (facetInfo != null) {
StreamUtil.of(facetInfo.field).forEach(f -> {
stream(facetInfo.field).of(stream -> stream.forEach(f -> {
if (queryHelper.isFacetField(f)) {
final String encodedField = BaseEncoding.base64().encode(f.getBytes(StandardCharsets.UTF_8));
final TermsBuilder termsBuilder = AggregationBuilders.terms(Constants.FACET_FIELD_PREFIX + encodedField).field(f);
@ -909,9 +909,9 @@ public class FessEsClient implements Client {
} else {
throw new SearchQueryException("Invalid facet field: " + f);
}
});
StreamUtil.of(facetInfo.query).forEach(
fq -> {
}));
stream(facetInfo.query).of(
stream -> stream.forEach(fq -> {
final QueryContext facetContext = new QueryContext(fq, false);
queryHelper.buildBaseQuery(facetContext, c -> {});
final String encodedFacetQuery = BaseEncoding.base64().encode(fq.getBytes(StandardCharsets.UTF_8));
@ -919,7 +919,7 @@ public class FessEsClient implements Client {
AggregationBuilders.filter(Constants.FACET_QUERY_PREFIX + encodedFacetQuery).filter(
facetContext.getQueryBuilder());
searchRequestBuilder.addAggregation(filterBuilder);
});
}));
}
searchRequestBuilder.setQuery(queryContext.getQueryBuilder());

View file

@ -15,16 +15,18 @@
*/
package org.codelibs.fess.es.user.exentity;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Base64;
import java.util.stream.Stream;
import java.util.List;
import org.codelibs.fess.Constants;
import org.codelibs.fess.entity.FessUser;
import org.codelibs.fess.es.user.bsentity.BsUser;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
/**
* @author FreeGen
@ -53,20 +55,16 @@ public class User extends BsUser implements FessUser {
@Override
public String[] getRoleNames() {
return getRoleStream().toArray(n -> new String[n]);
}
protected Stream<String> getRoleStream() {
return StreamUtil.of(getRoles()).map(role -> new String(Base64.getDecoder().decode(role), Constants.CHARSET_UTF_8));
return stream(getRoles()).get(stream -> stream.map(s -> decode(s)).toArray(n -> new String[n]));
}
@Override
public String[] getGroupNames() {
return getGroupStream().toArray(n -> new String[n]);
return stream(getGroups()).get(stream -> stream.map(s -> decode(s)).toArray(n -> new String[n]));
}
private Stream<String> getGroupStream() {
return StreamUtil.of(getGroups()).map(group -> new String(Base64.getDecoder().decode(group), Constants.CHARSET_UTF_8));
private String decode(String value) {
return new String(Base64.getDecoder().decode(value), Constants.CHARSET_UTF_8);
}
@Override
@ -86,10 +84,11 @@ public class User extends BsUser implements FessUser {
@Override
public String[] getPermissions() {
final FessConfig fessConfig = ComponentUtil.getFessConfig();
return Stream.concat(
Stream.of(fessConfig.getRoleSearchUserPrefix() + getName()),
Stream.concat(getRoleStream().map(s -> fessConfig.getRoleSearchRolePrefix() + s),
getGroupStream().map(s -> fessConfig.getRoleSearchGroupPrefix() + s))).toArray(n -> new String[n]);
final List<String> list = new ArrayList<>();
list.add(fessConfig.getRoleSearchUserPrefix() + getName());
stream(getRoles()).of(stream -> stream.forEach(s -> list.add(fessConfig.getRoleSearchRolePrefix() + decode(s))));
stream(getGroups()).of(stream -> stream.forEach(s -> list.add(fessConfig.getRoleSearchGroupPrefix() + decode(s))));
return list.toArray(new String[list.size()]);
}
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.exec;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
@ -45,7 +47,6 @@ import org.codelibs.fess.helper.WebFsIndexHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.mylasta.mail.CrawlerPostcard;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
@ -318,9 +319,9 @@ public class Crawler implements Serializable {
CrawlerPostcard.droppedInto(postbox, postcard -> {
postcard.setFrom(fessConfig.getMailFromAddress(), fessConfig.getMailFromName());
postcard.addReplyTo(fessConfig.getMailReturnPath());
StreamUtil.of(toAddresses).forEach(address -> {
stream(toAddresses).of(stream -> stream.forEach(address -> {
postcard.addTo(address);
});
}));
postcard.setCrawlerEndTime(getValueFromMap(dataMap, "crawlerEndTime", StringUtil.EMPTY));
postcard.setCrawlerExecTime(getValueFromMap(dataMap, "crawlerExecTime", "0"));
postcard.setCrawlerStartTime(getValueFromMap(dataMap, "crawlerStartTime", StringUtil.EMPTY));

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.helper;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -27,7 +29,6 @@ import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.suggest.request.popularwords.PopularWordsRequestBuilder;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -71,10 +72,10 @@ public class PopularWordHelper {
.setSize(fessConfig.getSuggestPopularWordSizeAsInteger().intValue())
.setWindowSize(fessConfig.getSuggestPopularWordWindowSizeAsInteger().intValue());
popularWordsRequestBuilder.setSeed(baseSeed);
StreamUtil.of(baseTags).forEach(tag -> popularWordsRequestBuilder.addTag(tag));
StreamUtil.of(baseRoles).forEach(role -> popularWordsRequestBuilder.addRole(role));
StreamUtil.of(baseFields).forEach(field -> popularWordsRequestBuilder.addField(field));
StreamUtil.of(baseExcludes).forEach(exclude -> popularWordsRequestBuilder.addExcludeWord(exclude));
stream(baseTags).of(stream -> stream.forEach(tag -> popularWordsRequestBuilder.addTag(tag)));
stream(baseRoles).of(stream -> stream.forEach(role -> popularWordsRequestBuilder.addRole(role)));
stream(baseFields).of(stream -> stream.forEach(field -> popularWordsRequestBuilder.addField(field)));
stream(baseExcludes).of(stream -> stream.forEach(exclude -> popularWordsRequestBuilder.addExcludeWord(exclude)));
popularWordsRequestBuilder.execute().then(r -> {
r.getItems().stream().forEach(item -> wordList.add(item.getText()));
}).error(t -> logger.warn("Failed to generate popular words.", t));
@ -91,13 +92,13 @@ public class PopularWordHelper {
final String[] excludes) {
final StringBuilder buf = new StringBuilder(100);
buf.append(seed).append(CACHE_KEY_SPLITTER);
StreamUtil.of(tags).sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v));
stream(tags).of(stream -> stream.sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v)));
buf.append(CACHE_KEY_SPLITTER);
StreamUtil.of(roles).sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v));
stream(roles).of(stream -> stream.sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v)));
buf.append(CACHE_KEY_SPLITTER);
StreamUtil.of(fields).sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v));
stream(fields).of(stream -> stream.sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v)));
buf.append(CACHE_KEY_SPLITTER);
StreamUtil.of(excludes).sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v));
stream(excludes).of(stream -> stream.sorted().reduce((l, r) -> l + r).ifPresent(v -> buf.append(v)));
return buf.toString();
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.helper;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
@ -55,7 +57,6 @@ import org.codelibs.fess.entity.QueryContext;
import org.codelibs.fess.exception.InvalidQueryException;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalThing;
import org.elasticsearch.common.unit.Fuzziness;
import org.elasticsearch.index.query.BoolQueryBuilder;
@ -448,10 +449,10 @@ public class QueryHelper implements Serializable {
"Unknown phrase query: " + query);
}
final String field = terms[0].field();
final String[] texts = StreamUtil.of(terms).map(term -> term.text()).toArray(n -> new String[n]);
final String[] texts = stream(terms).get(stream -> stream.map(term -> term.text()).toArray(n -> new String[n]));
final String text = String.join(" ", texts);
context.addFieldLog(field, text);
StreamUtil.of(texts).forEach(t -> context.addHighlightedQuery(t));
stream(texts).of(stream -> stream.forEach(t -> context.addHighlightedQuery(t)));
return buildDefaultQueryBuilder((f, b) -> QueryBuilders.matchPhraseQuery(f, text).boost(b * boost));
}
@ -474,8 +475,8 @@ public class QueryHelper implements Serializable {
boolQuery.should(contentQuery);
getQueryLanguages().ifPresent(
langs -> {
StreamUtil.of(langs).forEach(
lang -> {
stream(langs).of(
stream -> stream.forEach(lang -> {
final QueryBuilder titleLangQuery =
builder.apply(fessConfig.getIndexFieldTitle() + "_" + lang, fessConfig
.getQueryBoostTitleLangAsDecimal().floatValue());
@ -484,7 +485,7 @@ public class QueryHelper implements Serializable {
builder.apply(fessConfig.getIndexFieldContent() + "_" + lang, fessConfig
.getQueryBoostContentLangAsDecimal().floatValue());
boolQuery.should(contentLangQuery);
});
}));
});
return boolQuery;
}
@ -580,8 +581,9 @@ public class QueryHelper implements Serializable {
this.highlightedFields = highlightedFields;
}
public Stream<String> highlightedFields() {
return StreamUtil.of(highlightedFields);
public void highlightedFields(Consumer<Stream<String>> stream) {
stream(highlightedFields).of(stream);
;
}
/**
@ -711,7 +713,7 @@ public class QueryHelper implements Serializable {
public void addDefaultSort(final String fieldName, final String order) {
final List<SortBuilder> list = new ArrayList<>();
if (defaultSortBuilders != null) {
StreamUtil.of(defaultSortBuilders).forEach(builder -> list.add(builder));
stream(defaultSortBuilders).of(stream -> stream.forEach(builder -> list.add(builder)));
}
list.add(SortBuilders.fieldSort(fieldName)
.order(SortOrder.DESC.toString().equalsIgnoreCase(order) ? SortOrder.DESC : SortOrder.ASC));

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.helper;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@ -33,7 +35,6 @@ import org.codelibs.fess.Constants;
import org.codelibs.fess.mylasta.action.FessUserBean;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.servlet.request.RequestManager;
import org.lastaflute.web.util.LaRequestUtil;
import org.slf4j.Logger;
@ -75,9 +76,9 @@ public class RoleQueryHelper {
@PostConstruct
public void init() {
StreamUtil.of(ComponentUtil.getFessConfig().getSearchDefaultPermissionsAsArray()).forEach(name -> {
stream(ComponentUtil.getFessConfig().getSearchDefaultPermissionsAsArray()).of(stream -> stream.forEach(name -> {
defaultRoleList.add(name);
});
}));
}
public Set<String> build() {
@ -107,7 +108,7 @@ public class RoleQueryHelper {
final FessConfig fessConfig = ComponentUtil.getFessConfig();
final RequestManager requestManager = ComponentUtil.getRequestManager();
requestManager.findUserBean(FessUserBean.class)
.ifPresent(fessUserBean -> StreamUtil.of(fessUserBean.getPermissions()).forEach(roleList::add))
.ifPresent(fessUserBean -> stream(fessUserBean.getPermissions()).of(stream -> stream.forEach(roleList::add)))
.orElse(() -> roleList.add(fessConfig.getRoleSearchUserPrefix() + Constants.GUEST_USER));
if (defaultRoleList != null) {

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.helper;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
@ -47,7 +49,6 @@ import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.DocumentUtil;
import org.codelibs.fess.util.QueryResponseList;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalThing;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.script.Script;
@ -199,21 +200,24 @@ public class SearchLogHelper {
final List<SearchLog> searchLogList = new ArrayList<>();
final Map<String, UserInfo> userInfoMap = new HashMap<>();
queue.stream().forEach(searchLog -> {
final String userAgent = searchLog.getUserAgent();
final boolean isBot = userAgent != null && StreamUtil.of(botNames).anyMatch(botName -> userAgent.indexOf(botName) >= 0);
if (!isBot) {
searchLog.getUserInfo().ifPresent(userInfo -> {
final String code = userInfo.getId();
final UserInfo oldUserInfo = userInfoMap.get(code);
if (oldUserInfo != null) {
userInfo.setCreatedAt(oldUserInfo.getCreatedAt());
queue.stream().forEach(
searchLog -> {
final String userAgent = searchLog.getUserAgent();
final boolean isBot =
userAgent != null
&& stream(botNames).get(stream -> stream.anyMatch(botName -> userAgent.indexOf(botName) >= 0));
if (!isBot) {
searchLog.getUserInfo().ifPresent(userInfo -> {
final String code = userInfo.getId();
final UserInfo oldUserInfo = userInfoMap.get(code);
if (oldUserInfo != null) {
userInfo.setCreatedAt(oldUserInfo.getCreatedAt());
}
userInfoMap.put(code, userInfo);
});
searchLogList.add(searchLog);
}
userInfoMap.put(code, userInfo);
});
searchLogList.add(searchLog);
}
});
if (!userInfoMap.isEmpty()) {
final List<UserInfo> insertList = new ArrayList<>(userInfoMap.values());

View file

@ -15,6 +15,9 @@
*/
package org.codelibs.fess.helper;
import static org.codelibs.core.stream.StreamUtil.split;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
@ -25,7 +28,6 @@ import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.regex.Pattern;
import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@ -46,7 +48,6 @@ import org.codelibs.fess.suggest.index.contents.document.ESSourceReader;
import org.codelibs.fess.suggest.settings.SuggestSettings;
import org.codelibs.fess.suggest.util.SuggestUtil;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
@ -80,21 +81,24 @@ public class SuggestHelper {
@PostConstruct
public void init() {
fessConfig = ComponentUtil.getFessConfig();
stream(fessConfig.getSuggestFieldContents()).forEach(f -> contentFieldNameSet.add(f));
stream(fessConfig.getSuggestFieldTags()).forEach(f -> tagFieldNameSet.add(f));
stream(fessConfig.getSuggestFieldRoles()).forEach(f -> roleFieldNameSet.add(f));
contentFieldList = Arrays.asList(stream(fessConfig.getSuggestFieldContents()).toArray(n -> new String[n]));
stream(fessConfig.getSuggestRoleFilters()).forEach(filter -> {
split(fessConfig.getSuggestFieldContents(), ",").of(
stream -> stream.filter(StringUtil::isNotBlank).forEach(f -> contentFieldNameSet.add(f)));
split(fessConfig.getSuggestFieldTags(), ",").of(
stream -> stream.filter(StringUtil::isNotBlank).forEach(f -> tagFieldNameSet.add(f)));
split(fessConfig.getSuggestFieldRoles(), ",").of(
stream -> stream.filter(StringUtil::isNotBlank).forEach(f -> roleFieldNameSet.add(f)));
contentFieldList = Arrays.asList(stream(fessConfig.getSuggestFieldContents()).get(stream -> stream.toArray(n -> new String[n])));
split(fessConfig.getSuggestRoleFilters(), ",").of(stream -> stream.filter(StringUtil::isNotBlank).forEach(filter -> {
roleFilterList.add(Pattern.compile(filter));
});
}));
fessEsClient.admin().cluster().prepareHealth().setWaitForYellowStatus().execute().actionGet(fessConfig.getIndexHealthTimeout());
suggester = Suggester.builder().build(fessEsClient, fessConfig.getIndexDocumentSearchIndex());
suggester.settings().array().delete(SuggestSettings.DefaultKeys.SUPPORTED_FIELDS);
stream(fessConfig.getSuggestFieldIndexContents()).forEach(field -> {
split(fessConfig.getSuggestFieldIndexContents(), ",").of(stream -> stream.filter(StringUtil::isNotBlank).forEach(field -> {
suggester.settings().array().add(SuggestSettings.DefaultKeys.SUPPORTED_FIELDS, field);
});
}));
suggester.createIndexIfNothing();
}
@ -131,7 +135,7 @@ public class SuggestHelper {
}
if (sb.length() > 0) {
StreamUtil.of(searchLog.getRoles()).forEach(role -> roles.add(role));
stream(searchLog.getRoles()).of(stream -> stream.forEach(role -> roles.add(role)));
if (roles.stream().allMatch(v -> roleFilterList.stream().anyMatch(pattern -> pattern.matcher(v).matches()))) {
suggester.indexer().indexFromSearchWord(sb.toString(), fields.toArray(new String[fields.size()]),
tags.toArray(new String[tags.size()]), roles.toArray(new String[roles.size()]), 1);
@ -262,8 +266,4 @@ public class SuggestHelper {
suggester.indexer().deleteBadWord(badWord);
}
private Stream<String> stream(final String value) {
return StreamUtil.of(value.split(",")).filter(v -> StringUtil.isNotBlank(v));
}
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.job;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
@ -38,7 +40,6 @@ import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.InputStreamThread;
import org.codelibs.fess.util.JobProcess;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -323,8 +324,8 @@ public class CrawlJob {
} else {
cmdList.add("-Dfess.log.level=" + logLevel);
}
StreamUtil.of(fessConfig.getJvmCrawlerOptionsAsArray()).filter(value -> StringUtil.isNotBlank(value))
.forEach(value -> cmdList.add(value));
stream(fessConfig.getJvmCrawlerOptionsAsArray()).of(
stream -> stream.filter(value -> StringUtil.isNotBlank(value)).forEach(value -> cmdList.add(value)));
File ownTmpDir = null;
final String tmpDir = System.getProperty("java.io.tmpdir");
@ -338,7 +339,7 @@ public class CrawlJob {
}
if (StringUtil.isNotBlank(jvmOptions)) {
StreamUtil.of(jvmOptions.split(" ")).filter(s -> StringUtil.isNotBlank(s)).forEach(s -> cmdList.add(s));
stream(jvmOptions.split(" ")).of(stream -> stream.filter(s -> StringUtil.isNotBlank(s)).forEach(s -> cmdList.add(s)));
}
cmdList.add(Crawler.class.getCanonicalName());

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.job;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
@ -36,7 +38,6 @@ import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.InputStreamThread;
import org.codelibs.fess.util.JobProcess;
import org.codelibs.fess.util.StreamUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -195,8 +196,8 @@ public class SuggestJob {
} else {
cmdList.add("-Dfess.log.level=" + logLevel);
}
StreamUtil.of(fessConfig.getJvmSuggestOptionsAsArray()).filter(value -> StringUtil.isNotBlank(value))
.forEach(value -> cmdList.add(value));
stream(fessConfig.getJvmSuggestOptionsAsArray()).of(
stream -> stream.filter(value -> StringUtil.isNotBlank(value)).forEach(value -> cmdList.add(value)));
File ownTmpDir = null;
final String tmpDir = System.getProperty("java.io.tmpdir");

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.ldap;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
@ -49,7 +51,6 @@ import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.OptionalUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalEntity;
import org.dbflute.util.DfTypeUtil;
import org.slf4j.Logger;
@ -331,13 +332,13 @@ public class LdapManager {
oldRoleList.add(name);
}
});
final List<String> newGroupList = StreamUtil.of(user.getGroupNames()).collect(Collectors.toList());
StreamUtil.of(user.getGroupNames()).forEach(name -> {
final List<String> newGroupList = stream(user.getGroupNames()).get(stream -> stream.collect(Collectors.toList()));
stream(user.getGroupNames()).of(stream -> stream.forEach(name -> {
if (oldGroupList.contains(name)) {
oldGroupList.remove(name);
newGroupList.remove(name);
}
});
}));
oldGroupList.stream().forEach(
name -> {
search(fessConfig.getLdapAdminGroupBaseDn(), fessConfig.getLdapAdminGroupFilter(name), null, adminEnv,
@ -364,13 +365,13 @@ public class LdapManager {
});
});
final List<String> newRoleList = StreamUtil.of(user.getRoleNames()).collect(Collectors.toList());
StreamUtil.of(user.getRoleNames()).forEach(name -> {
final List<String> newRoleList = stream(user.getRoleNames()).get(stream -> stream.collect(Collectors.toList()));
stream(user.getRoleNames()).of(stream -> stream.forEach(name -> {
if (oldRoleList.contains(name)) {
oldRoleList.remove(name);
newRoleList.remove(name);
}
});
}));
oldRoleList.stream().forEach(
name -> {
search(fessConfig.getLdapAdminRoleBaseDn(), fessConfig.getLdapAdminRoleFilter(name), null, adminEnv,
@ -397,8 +398,8 @@ public class LdapManager {
});
});
} else {
StreamUtil.of(user.getGroupNames()).forEach(
name -> {
stream(user.getGroupNames()).of(
stream -> stream.forEach(name -> {
search(fessConfig.getLdapAdminGroupBaseDn(), fessConfig.getLdapAdminGroupFilter(name), null, adminEnv,
subResult -> {
if (!!subResult.isEmpty()) {
@ -410,10 +411,10 @@ public class LdapManager {
modifyAddEntry(modifyList, "member", userDN);
modify(fessConfig.getLdapAdminGroupSecurityPrincipal(name), modifyList, adminEnv);
});
});
}));
StreamUtil.of(user.getRoleNames()).forEach(
name -> {
stream(user.getRoleNames()).of(
stream -> stream.forEach(name -> {
search(fessConfig.getLdapAdminRoleBaseDn(), fessConfig.getLdapAdminRoleFilter(name), null, adminEnv,
subResult -> {
if (!!subResult.isEmpty()) {
@ -425,7 +426,7 @@ public class LdapManager {
modifyAddEntry(modifyList, "member", userDN);
modify(fessConfig.getLdapAdminRoleSecurityPrincipal(name), modifyList, adminEnv);
});
});
}));
}
});
@ -764,7 +765,7 @@ public class LdapManager {
final Supplier<Hashtable<String, String>> adminEnv = () -> createAdminEnv();
final String userDN = fessConfig.getLdapAdminUserSecurityPrincipal(user.getName());
StreamUtil.of(user.getGroupNames()).forEach(name -> {
stream(user.getGroupNames()).of(stream -> stream.forEach(name -> {
search(fessConfig.getLdapAdminGroupBaseDn(), fessConfig.getLdapAdminGroupFilter(name), null, adminEnv, subResult -> {
if (!!subResult.isEmpty()) {
final Group group = new Group();
@ -775,8 +776,8 @@ public class LdapManager {
modifyDeleteEntry(modifyList, "member", userDN);
modify(fessConfig.getLdapAdminGroupSecurityPrincipal(name), modifyList, adminEnv);
});
});
StreamUtil.of(user.getRoleNames()).forEach(name -> {
}));
stream(user.getRoleNames()).of(stream -> stream.forEach(name -> {
search(fessConfig.getLdapAdminRoleBaseDn(), fessConfig.getLdapAdminRoleFilter(name), null, adminEnv, subResult -> {
if (!!subResult.isEmpty()) {
final Role role = new Role();
@ -787,7 +788,7 @@ public class LdapManager {
modifyDeleteEntry(modifyList, "member", userDN);
modify(fessConfig.getLdapAdminRoleSecurityPrincipal(name), modifyList, adminEnv);
});
});
}));
search(fessConfig.getLdapAdminUserBaseDn(), fessConfig.getLdapAdminUserFilter(user.getName()), null, adminEnv, result -> {
if (!result.isEmpty()) {

View file

@ -15,16 +15,17 @@
*/
package org.codelibs.fess.ldap;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.Hashtable;
import java.util.stream.Stream;
import javax.naming.Context;
import org.apache.commons.lang3.ArrayUtils;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.entity.FessUser;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
public class LdapUser implements FessUser {
@ -54,9 +55,8 @@ public class LdapUser implements FessUser {
final String accountFilter = ComponentUtil.getFessConfig().getLdapAccountFilter();
if (StringUtil.isNotBlank(baseDn) && StringUtil.isNotBlank(accountFilter)) {
permissions =
Stream.concat(Stream.of(fessConfig.getRoleSearchUserPrefix() + getName()),
StreamUtil.of(ComponentUtil.getLdapManager().getRoles(this, baseDn, accountFilter))).toArray(
n -> new String[n]);
ArrayUtils.addAll(ComponentUtil.getLdapManager().getRoles(this, baseDn, accountFilter),
fessConfig.getRoleSearchUserPrefix() + getName());
} else {
permissions = StringUtil.EMPTY_STRINGS;
}
@ -67,15 +67,17 @@ public class LdapUser implements FessUser {
@Override
public String[] getRoleNames() {
final FessConfig fessConfig = ComponentUtil.getFessConfig();
return StreamUtil.of(getPermissions()).filter(s -> s.startsWith(fessConfig.getRoleSearchRolePrefix())).map(s -> s.substring(1))
.toArray(n -> new String[n]);
return stream(getPermissions()).get(
stream -> stream.filter(s -> s.startsWith(fessConfig.getRoleSearchRolePrefix())).map(s -> s.substring(1))
.toArray(n -> new String[n]));
}
@Override
public String[] getGroupNames() {
final FessConfig fessConfig = ComponentUtil.getFessConfig();
return StreamUtil.of(getPermissions()).filter(s -> s.startsWith(fessConfig.getRoleSearchGroupPrefix())).map(s -> s.substring(1))
.toArray(n -> new String[n]);
return stream(getPermissions()).get(
stream -> stream.filter(s -> s.startsWith(fessConfig.getRoleSearchGroupPrefix())).map(s -> s.substring(1))
.toArray(n -> new String[n]));
}
public Hashtable<String, String> getEnvironment() {

View file

@ -15,9 +15,10 @@
*/
package org.codelibs.fess.mylasta.action;
import static org.codelibs.core.stream.StreamUtil.stream;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.entity.FessUser;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.login.TypicalUserBean;
/**
@ -67,19 +68,21 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
}
public boolean hasRole(final String role) {
return StreamUtil.of(user.getRoleNames()).anyMatch(s -> s.equals(role));
return stream(user.getRoleNames()).get(stream -> stream.anyMatch(s -> s.equals(role)));
}
public boolean hasRoles(final String[] acceptedRoles) {
return StreamUtil.of(user.getRoleNames()).anyMatch(s1 -> StreamUtil.of(acceptedRoles).anyMatch(s2 -> s2.equals(s1)));
return stream(user.getRoleNames()).get(
stream -> stream.anyMatch(s1 -> stream(acceptedRoles).get(s3 -> s3.anyMatch(s2 -> s2.equals(s1)))));
}
public boolean hasGroup(final String group) {
return StreamUtil.of(user.getGroupNames()).anyMatch(s -> s.equals(group));
return stream(user.getGroupNames()).get(stream -> stream.anyMatch(s -> s.equals(group)));
}
public boolean hasGroups(final String[] acceptedGroups) {
return StreamUtil.of(user.getGroupNames()).anyMatch(s1 -> StreamUtil.of(acceptedGroups).anyMatch(s2 -> s2.equals(s1)));
return stream(user.getGroupNames()).get(
stream -> stream.anyMatch(s1 -> stream(acceptedGroups).get(s3 -> s3.anyMatch(s2 -> s2.equals(s1)))));
}
public static FessUserBean empty() {

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.mylasta.direction;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
@ -37,7 +39,6 @@ import org.codelibs.fess.Constants;
import org.codelibs.fess.helper.PermissionHelper;
import org.codelibs.fess.mylasta.action.FessUserBean;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.dbflute.optional.OptionalThing;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.lastaflute.job.LaJob;
@ -119,7 +120,7 @@ public interface FessProp {
map = Collections.emptyMap();
} else {
final Set<String> keySet = new HashSet<>();
map = StreamUtil.of(value.split("\n")).filter(StringUtil::isNotBlank).map(s -> {
map = stream(value.split("\n")).get(stream -> (Map<String, String>) stream.filter(StringUtil::isNotBlank).map(s -> {
final String[] pair = s.split("=");
if (pair.length == 1) {
return new Pair<>(StringUtil.EMPTY, pair[0].trim());
@ -131,7 +132,7 @@ public interface FessProp {
return new Pair<>(pair[0].trim(), sortValue);
}
return null;
}).filter(o -> o != null && keySet.add(o.getFirst())).collect(Collectors.toMap(Pair::getFirst, d -> d.getSecond()));
}).filter(o -> o != null && keySet.add(o.getFirst())).collect(Collectors.toMap(Pair::getFirst, d -> d.getSecond())));
}
propMap.put(DEFAULT_SORT_VALUES, map);
}
@ -144,8 +145,9 @@ public interface FessProp {
return e.getValue();
}
if (userBean.map(
user -> StreamUtil.of(user.getRoles()).anyMatch(s -> key.equals(ROLE_VALUE_PREFIX + s))
|| StreamUtil.of(user.getGroups()).anyMatch(s -> key.equals(GROUP_VALUE_PREFIX + s))).orElse(false)) {
user -> stream(user.getRoles()).get(stream -> stream.anyMatch(s -> key.equals(ROLE_VALUE_PREFIX + s)))
|| stream(user.getGroups()).get(stream -> stream.anyMatch(s -> key.equals(GROUP_VALUE_PREFIX + s))))
.orElse(false)) {
return e.getValue();
}
return null;
@ -170,7 +172,7 @@ public interface FessProp {
map = Collections.emptyMap();
} else {
final Set<String> keySet = new HashSet<>();
map = StreamUtil.of(value.split("\n")).filter(StringUtil::isNotBlank).map(s -> {
map = stream(value.split("\n")).get(stream -> (Map<String, String>) stream.filter(StringUtil::isNotBlank).map(s -> {
final String[] pair = s.split("=");
if (pair.length == 1) {
return new Pair<>(StringUtil.EMPTY, pair[0].trim());
@ -178,7 +180,7 @@ public interface FessProp {
return new Pair<>(pair[0].trim(), pair[1].trim());
}
return null;
}).filter(o -> o != null && keySet.add(o.getFirst())).collect(Collectors.toMap(Pair::getFirst, d -> d.getSecond()));
}).filter(o -> o != null && keySet.add(o.getFirst())).collect(Collectors.toMap(Pair::getFirst, d -> d.getSecond())));
}
propMap.put(DEFAULT_LABEL_VALUES, map);
}
@ -191,8 +193,9 @@ public interface FessProp {
return e.getValue();
}
if (userBean.map(
user -> StreamUtil.of(user.getRoles()).anyMatch(s -> key.equals(ROLE_VALUE_PREFIX + s))
|| StreamUtil.of(user.getGroups()).anyMatch(s -> key.equals(GROUP_VALUE_PREFIX + s))).orElse(false)) {
user -> stream(user.getRoles()).get(stream -> stream.anyMatch(s -> key.equals(ROLE_VALUE_PREFIX + s)))
|| stream(user.getGroups()).get(stream -> stream.anyMatch(s -> key.equals(GROUP_VALUE_PREFIX + s))))
.orElse(false)) {
return e.getValue();
}
return null;
@ -495,7 +498,7 @@ public interface FessProp {
if (mimetypes.length == 1 && StringUtil.isBlank(mimetypes[0])) {
return true;
}
return StreamUtil.of(mimetypes).anyMatch(s -> s.equalsIgnoreCase(mimetype));
return stream(mimetypes).get(stream -> stream.anyMatch(s -> s.equalsIgnoreCase(mimetype)));
}
String getCrawlerDocumentCacheSupportedMimetypes();
@ -505,7 +508,7 @@ public interface FessProp {
if (mimetypes.length == 1 && StringUtil.isBlank(mimetypes[0])) {
return true;
}
return StreamUtil.of(mimetypes).anyMatch(s -> s.equalsIgnoreCase(mimetype));
return stream(mimetypes).get(stream -> stream.anyMatch(s -> s.equalsIgnoreCase(mimetype)));
}
String getIndexerClickCountEnabled();
@ -538,7 +541,7 @@ public interface FessProp {
if (StringUtil.isBlank(getJobSystemJobIds())) {
return false;
}
return StreamUtil.of(getJobSystemJobIds().split(",")).anyMatch(s -> s.equals(id));
return stream(getJobSystemJobIds().split(",")).get(stream -> stream.anyMatch(s -> s.equals(id)));
}
String getSmbAvailableSidTypes();
@ -548,15 +551,13 @@ public interface FessProp {
return false;
}
final String value = Integer.toString(sidType);
return StreamUtil.of(getSmbAvailableSidTypes().split(",")).anyMatch(s -> {
return s.equals(value);
});
return stream(getSmbAvailableSidTypes().split(",")).get(stream -> stream.anyMatch(s -> s.equals(value)));
}
String getSupportedLanguages();
public default String[] getSupportedLanguagesAsArray() {
return StreamUtil.of(getSupportedLanguages().split(",")).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getSupportedLanguages().split(",")).get(stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
String getOnlineHelpSupportedLangs();
@ -565,25 +566,29 @@ public interface FessProp {
if (StringUtil.isBlank(getOnlineHelpSupportedLangs())) {
return false;
}
return StreamUtil.of(getOnlineHelpSupportedLangs().split(",")).filter(StringUtil::isNotBlank).anyMatch(s -> s.equals(lang));
return stream(getOnlineHelpSupportedLangs().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).anyMatch(s -> s.equals(lang)));
}
String getSupportedUploadedJsExtentions();
public default String[] getSupportedUploadedJsExtentionsAsArray() {
return StreamUtil.of(getSupportedUploadedJsExtentions().split(",")).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getSupportedUploadedJsExtentions().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
String getSupportedUploadedCssExtentions();
public default String[] getSupportedUploadedCssExtentionsAsArray() {
return StreamUtil.of(getSupportedUploadedCssExtentions().split(",")).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getSupportedUploadedCssExtentions().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
String getSupportedUploadedMediaExtentions();
public default String[] getSupportedUploadedMediaExtentionsAsArray() {
return StreamUtil.of(getSupportedUploadedMediaExtentions().split(",")).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getSupportedUploadedMediaExtentions().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
String getJobTemplateTitleWeb();
@ -627,11 +632,11 @@ public interface FessProp {
Pattern[] patterns = (Pattern[]) propMap.get(CRAWLER_METADATA_CONTENT_EXCLUDES);
if (patterns == null) {
patterns =
StreamUtil.of(getCrawlerMetadataContentExcludes().split(",")).filter(StringUtil::isNotBlank)
.map(v -> Pattern.compile(v)).toArray(n -> new Pattern[n]);
stream(getCrawlerMetadataContentExcludes().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(v -> Pattern.compile(v)).toArray(n -> new Pattern[n]));
propMap.put(CRAWLER_METADATA_CONTENT_EXCLUDES, patterns);
}
return !StreamUtil.of(patterns).anyMatch(p -> p.matcher(name).matches());
return !stream(patterns).get(stream -> stream.anyMatch(p -> p.matcher(name).matches()));
}
String getCrawlerMetadataNameMapping();
@ -640,18 +645,20 @@ public interface FessProp {
@SuppressWarnings("unchecked")
Map<String, Pair<String, String>> params = (Map<String, Pair<String, String>>) propMap.get(CRAWLER_METADATA_NAME_MAPPING);
if (params == null) {
params = StreamUtil.of(getCrawlerMetadataNameMapping().split("\n")).filter(StringUtil::isNotBlank).map(v -> {
final String[] values = v.split("=");
if (values.length == 2) {
final String[] subValues = values[1].split(":");
if (subValues.length == 2) {
return new Tuple3<>(values[0], subValues[0], subValues[1]);
} else {
return new Tuple3<>(values[0], values[1], Constants.MAPPING_TYPE_ARRAY);
}
}
return null;
}).collect(Collectors.toMap(Tuple3::getValue1, d -> new Pair<>(d.getValue2(), d.getValue3())));
params =
stream(getCrawlerMetadataNameMapping().split("\n")).get(
stream -> (Map<String, Pair<String, String>>) stream.filter(StringUtil::isNotBlank).map(v -> {
final String[] values = v.split("=");
if (values.length == 2) {
final String[] subValues = values[1].split(":");
if (subValues.length == 2) {
return new Tuple3<>(values[0], subValues[0], subValues[1]);
} else {
return new Tuple3<>(values[0], values[1], Constants.MAPPING_TYPE_ARRAY);
}
}
return null;
}).collect(Collectors.toMap(Tuple3::getValue1, d -> new Pair<>(d.getValue2(), d.getValue3()))));
propMap.put(CRAWLER_METADATA_NAME_MAPPING, params);
}
return params.get(name);
@ -660,19 +667,22 @@ public interface FessProp {
String getSuggestPopularWordFields();
public default String[] getSuggestPopularWordFieldsAsArray() {
return StreamUtil.of(getSuggestPopularWordFields().split("\n")).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getSuggestPopularWordFields().split("\n")).get(
stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
String getSuggestPopularWordTags();
public default String[] getSuggestPopularWordTagsAsArray() {
return StreamUtil.of(getSuggestPopularWordTags().split("\n")).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getSuggestPopularWordTags().split("\n")).get(
stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
String getSuggestPopularWordExcludes();
public default String[] getSuggestPopularWordExcludesAsArray() {
return StreamUtil.of(getSuggestPopularWordExcludes().split("\n")).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getSuggestPopularWordExcludes().split("\n")).get(
stream -> stream.filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
String getQueryReplaceTermWithPrefixQuery();
@ -689,7 +699,7 @@ public interface FessProp {
if (StringUtil.isNotBlank(getQueryDefaultLanguages())) {
String[] langs = (String[]) propMap.get("queryDefaultLanguages");
if (langs == null) {
langs = StreamUtil.of(getQueryDefaultLanguages().split(",")).map(s -> s.trim()).toArray(n -> new String[n]);
langs = stream(getQueryDefaultLanguages().split(",")).get(stream -> stream.map(s -> s.trim()).toArray(n -> new String[n]));
propMap.put("queryDefaultLanguages", langs);
}
@ -707,13 +717,15 @@ public interface FessProp {
@SuppressWarnings("unchecked")
Map<String, String> params = (Map<String, String>) propMap.get(QUERY_LANGUAGE_MAPPING);
if (params == null) {
params = StreamUtil.of(getQueryLanguageMapping().split("\n")).filter(StringUtil::isNotBlank).map(v -> {
final String[] values = v.split("=");
if (values.length == 2) {
return new Pair<>(values[0], values[1]);
}
return null;
}).collect(Collectors.toMap(Pair::getFirst, d -> d.getSecond()));
params =
stream(getQueryLanguageMapping().split("\n")).get(
stream -> (Map<String, String>) stream.filter(StringUtil::isNotBlank).map(v -> {
final String[] values = v.split("=");
if (values.length == 2) {
return new Pair<>(values[0], values[1]);
}
return null;
}).collect(Collectors.toMap(Pair::getFirst, d -> d.getSecond())));
propMap.put(QUERY_LANGUAGE_MAPPING, params);
}
@ -739,14 +751,16 @@ public interface FessProp {
String getSupportedUploadedFiles();
public default boolean isSupportedUploadedFile(final String name) {
return StreamUtil.of(getSuggestPopularWordExcludes().split(",")).filter(StringUtil::isNotBlank).anyMatch(s -> s.equals(name));
return stream(getSuggestPopularWordExcludes().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).anyMatch(s -> s.equals(name)));
}
String getLdapAdminUserObjectClasses();
public default Attribute getLdapAdminUserObjectClassAttribute() {
final Attribute oc = new BasicAttribute("objectClass");
StreamUtil.of(getLdapAdminUserObjectClasses().split(",")).filter(StringUtil::isNotBlank).forEach(s -> oc.add(s.trim()));
stream(getLdapAdminUserObjectClasses().split(",")).of(
stream -> stream.filter(StringUtil::isNotBlank).forEach(s -> oc.add(s.trim())));
return oc;
}
@ -771,7 +785,8 @@ public interface FessProp {
public default Attribute getLdapAdminRoleObjectClassAttribute() {
final Attribute oc = new BasicAttribute("objectClass");
StreamUtil.of(getLdapAdminRoleObjectClasses().split(",")).filter(StringUtil::isNotBlank).forEach(s -> oc.add(s.trim()));
stream(getLdapAdminRoleObjectClasses().split(",")).of(
stream -> stream.filter(StringUtil::isNotBlank).forEach(s -> oc.add(s.trim())));
return oc;
}
@ -796,7 +811,8 @@ public interface FessProp {
public default Attribute getLdapAdminGroupObjectClassAttribute() {
final Attribute oc = new BasicAttribute("objectClass");
StreamUtil.of(getLdapAdminGroupObjectClasses().split(",")).filter(StringUtil::isNotBlank).forEach(s -> oc.add(s.trim()));
stream(getLdapAdminGroupObjectClasses().split(",")).of(
stream -> stream.filter(StringUtil::isNotBlank).forEach(s -> oc.add(s.trim())));
return oc;
}
@ -820,7 +836,7 @@ public interface FessProp {
String getAuthenticationAdminUsers();
public default boolean isAdminUser(final String username) {
return StreamUtil.of(getAuthenticationAdminUsers().split(",")).anyMatch(s -> s.equals(username));
return stream(getAuthenticationAdminUsers().split(",")).get(stream -> stream.anyMatch(s -> s.equals(username)));
}
boolean isLdapAdminEnabled();
@ -835,23 +851,23 @@ public interface FessProp {
String getCrawlerWebProtocols();
public default String[] getCrawlerWebProtocolsAsArray() {
return StreamUtil.of(getCrawlerWebProtocols().split(",")).filter(StringUtil::isNotBlank).map(s -> s.trim() + ":")
.toArray(n -> new String[n]);
return stream(getCrawlerWebProtocols().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim() + ":").toArray(n -> new String[n]));
}
public default boolean isValidCrawlerWebProtocol(final String url) {
return StreamUtil.of(getCrawlerWebProtocolsAsArray()).anyMatch(s -> url.startsWith(s));
return stream(getCrawlerWebProtocolsAsArray()).get(stream -> stream.anyMatch(s -> url.startsWith(s)));
}
String getCrawlerFileProtocols();
public default String[] getCrawlerFileProtocolsAsArray() {
return StreamUtil.of(getCrawlerFileProtocols().split(",")).filter(StringUtil::isNotBlank).map(s -> s.trim() + ":")
.toArray(n -> new String[n]);
return stream(getCrawlerFileProtocols().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).map(s -> s.trim() + ":").toArray(n -> new String[n]));
}
public default boolean isValidCrawlerFileProtocol(final String url) {
return StreamUtil.of(getCrawlerFileProtocolsAsArray()).anyMatch(s -> url.startsWith(s));
return stream(getCrawlerFileProtocolsAsArray()).get(stream -> stream.anyMatch(s -> url.startsWith(s)));
}
public default void processSearchPreference(final SearchRequestBuilder searchRequestBuilder, final OptionalThing<FessUserBean> userBean) {
@ -877,19 +893,21 @@ public interface FessProp {
public default String[] getSearchDefaultPermissionsAsArray() {
final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
return StreamUtil.of(getRoleSearchDefaultPermissions().split(",")).map(p -> permissionHelper.encode(p))
.filter(StringUtil::isNotBlank).distinct().toArray(n -> new String[n]);
return stream(getRoleSearchDefaultPermissions().split(","))
.get(stream -> stream.map(p -> permissionHelper.encode(p)).filter(StringUtil::isNotBlank).distinct()
.toArray(n -> new String[n]));
}
public default String getSearchDefaultDisplayPermission() {
return StreamUtil.of(getRoleSearchDefaultPermissions().split(",")).filter(StringUtil::isNotBlank).distinct()
.collect(Collectors.joining("\n"));
return stream(getRoleSearchDefaultPermissions().split(",")).get(
stream -> stream.filter(StringUtil::isNotBlank).distinct().collect(Collectors.joining("\n")));
}
String getQueryGeoFields();
public default String[] getQueryGeoFieldsAsArray() {
return StreamUtil.of(getQueryGeoFields().split(",")).map(s -> s.trim()).filter(StringUtil::isNotBlank).toArray(n -> new String[n]);
return stream(getQueryGeoFields().split(",")).get(
stream -> stream.map(s -> s.trim()).filter(StringUtil::isNotBlank).toArray(n -> new String[n]));
}
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.util;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.Map;
import org.codelibs.core.lang.StringUtil;
@ -33,10 +35,10 @@ public class QueryStringBuilder {
if (StringUtil.isNotBlank(query)) {
queryBuf.append('(').append(query).append(')');
}
StreamUtil.of(extraQueries)
.filter(q -> StringUtil.isNotBlank(q) && q.length() <= fessConfig.getQueryMaxLengthAsInteger().intValue())
.forEach(q -> queryBuf.append(' ').append(q));
StreamUtil.of(fieldMap).forEach(entry -> {
stream(extraQueries).of(
stream -> stream.filter(q -> StringUtil.isNotBlank(q) && q.length() <= fessConfig.getQueryMaxLengthAsInteger().intValue())
.forEach(q -> queryBuf.append(' ').append(q)));
stream(fieldMap).of(stream -> stream.forEach(entry -> {
final String key = entry.getKey();
final String[] values = entry.getValue();
if (values == null) {
@ -56,7 +58,7 @@ public class QueryStringBuilder {
}
queryBuf.append(')');
}
});
}));
return queryBuf.toString();
}

View file

@ -1,49 +0,0 @@
/*
* Copyright 2012-2016 CodeLibs Project and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.codelibs.fess.util;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Stream;
public class StreamUtil {
@SafeVarargs
public static <T> Stream<T> of(final T... values) {
if (values != null) {
return Arrays.stream(values);
} else {
return Collections.<T> emptyList().stream();
}
}
public static Stream<String> splitOf(final String value, final String regex) {
if (value != null) {
return Arrays.stream(value.split(regex));
} else {
return Collections.<String> emptyList().stream();
}
}
public static <K, V> Stream<Map.Entry<K, V>> of(final Map<K, V> map) {
if (map != null) {
return map.entrySet().stream();
} else {
return Collections.<K, V> emptyMap().entrySet().stream();
}
}
}

View file

@ -1,51 +0,0 @@
/*
* Copyright 2012-2016 CodeLibs Project and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.codelibs.fess.util;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import org.codelibs.fess.unit.UnitFessTestCase;
public class StreamUtilTest extends UnitFessTestCase {
public void test_ofValues() {
String[] values = { "value1", "value2" };
Stream<String> stream = StreamUtil.of(values[0], values[1]);
Object[] array = stream.toArray();
for (int i = 0; i < 2; i++) {
assertEquals(values[i], array[i]);
}
}
public void test_ofNull() {
assertEquals(0, StreamUtil.of().toArray().length);
Object[] o = {};
assertEquals(0, StreamUtil.of(o).toArray().length);
Map<Object, Object> map = new HashMap<Object, Object>();
assertEquals(0, StreamUtil.of(map).toArray().length);
}
public void test_ofMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
Stream<Map.Entry<String, String>> stream = StreamUtil.of(map);
stream.forEach(m -> assertEquals(map.get(m.getKey()), m.getValue()));
}
}