modify query error handling
This commit is contained in:
parent
65b5e610cb
commit
75e8135e4b
5 changed files with 73 additions and 150 deletions
|
@ -44,17 +44,6 @@ public abstract class FessAdminAction extends FessBaseAction {
|
|||
// ===================================================================================
|
||||
// Small Helper
|
||||
// ============
|
||||
protected void saveInfo(final VaMessenger<FessMessages> validationMessagesLambda) {
|
||||
final FessMessages messages = createMessages();
|
||||
validationMessagesLambda.message(messages);
|
||||
sessionManager.info().save(messages);
|
||||
}
|
||||
|
||||
protected void saveError(final VaMessenger<FessMessages> validationMessagesLambda) {
|
||||
final FessMessages messages = createMessages();
|
||||
validationMessagesLambda.message(messages);
|
||||
sessionManager.errors().save(messages);
|
||||
}
|
||||
|
||||
protected void write(final String path, final byte[] data) {
|
||||
LdiFileUtil.write(path, data);
|
||||
|
|
|
@ -47,6 +47,7 @@ import org.lastaflute.web.ruts.process.ActionRuntime;
|
|||
import org.lastaflute.web.servlet.session.SessionManager;
|
||||
import org.lastaflute.web.validation.ActionValidator;
|
||||
import org.lastaflute.web.validation.LaValidatable;
|
||||
import org.lastaflute.web.validation.VaMessenger;
|
||||
|
||||
/**
|
||||
* @author jflute
|
||||
|
@ -151,4 +152,20 @@ public abstract class FessBaseAction extends TypicalAction // has several interf
|
|||
public FessMessages createMessages() { // application may call
|
||||
return new FessMessages(); // overriding to change return type to concrete-class
|
||||
}
|
||||
|
||||
// ===================================================================================
|
||||
// Small Helper
|
||||
// ============
|
||||
|
||||
protected void saveInfo(final VaMessenger<FessMessages> validationMessagesLambda) {
|
||||
final FessMessages messages = createMessages();
|
||||
validationMessagesLambda.message(messages);
|
||||
sessionManager.info().save(messages);
|
||||
}
|
||||
|
||||
protected void saveError(final VaMessenger<FessMessages> validationMessagesLambda) {
|
||||
final FessMessages messages = createMessages();
|
||||
validationMessagesLambda.message(messages);
|
||||
sessionManager.errors().save(messages);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ import org.codelibs.fess.screenshot.ScreenShotManager;
|
|||
import org.dbflute.optional.OptionalThing;
|
||||
import org.lastaflute.web.login.LoginManager;
|
||||
import org.lastaflute.web.response.ActionResponse;
|
||||
import org.lastaflute.web.response.HtmlResponse;
|
||||
import org.lastaflute.web.ruts.process.ActionRuntime;
|
||||
import org.lastaflute.web.util.LaRequestUtil;
|
||||
|
||||
|
@ -184,4 +185,9 @@ public abstract class FessSearchAction extends FessBaseAction {
|
|||
}
|
||||
}
|
||||
|
||||
protected HtmlResponse redirectToRoot() {
|
||||
final String contextPath = request.getServletContext().getContextPath();
|
||||
return newHtmlResponseAsRediect(StringUtil.isBlank(contextPath) ? "/" : contextPath);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,42 +112,45 @@ public class SearchAction extends FessSearchAction {
|
|||
if (StringUtil.isBlank(form.q) && form.fields.isEmpty()) {
|
||||
// redirect to index page
|
||||
form.q = null;
|
||||
return redirect(RootAction.class);
|
||||
return redirectToRoot();
|
||||
}
|
||||
|
||||
return asHtml(path_SearchJsp).renderWith(data -> {
|
||||
try {
|
||||
updateSearchParams(form);
|
||||
buildLabelParams(form.fields);
|
||||
form.lang = searchService.getLanguages(request, form);
|
||||
try {
|
||||
final WebRenderData renderData = new WebRenderData(data);
|
||||
searchService.search(request, form, renderData);
|
||||
final WebRenderData renderData = new WebRenderData();
|
||||
searchService.search(request, form, renderData);
|
||||
return asHtml(path_SearchJsp).renderWith(data -> {
|
||||
renderData.register(data);
|
||||
// favorite or screenshot
|
||||
if (favoriteSupport || screenShotManager != null) {
|
||||
final String queryId = renderData.getQueryId();
|
||||
final List<Map<String, Object>> documentItems = renderData.getDocumentItems();
|
||||
userInfoHelper.storeQueryId(queryId, documentItems);
|
||||
if (screenShotManager != null) {
|
||||
screenShotManager.storeRequest(queryId, documentItems);
|
||||
data.register("screenShotSupport", true);
|
||||
if (favoriteSupport || screenShotManager != null) {
|
||||
final String queryId = renderData.getQueryId();
|
||||
final List<Map<String, Object>> documentItems = renderData.getDocumentItems();
|
||||
userInfoHelper.storeQueryId(queryId, documentItems);
|
||||
if (screenShotManager != null) {
|
||||
screenShotManager.storeRequest(queryId, documentItems);
|
||||
data.register("screenShotSupport", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (final InvalidQueryException e) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(e.getMessage(), e);
|
||||
}
|
||||
throwValidationError(e.getMessageCode(), () -> asHtml(path_ErrorJsp));
|
||||
} catch (final ResultOffsetExceededException e) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(e.getMessage(), e);
|
||||
}
|
||||
throwValidationError(messages -> {
|
||||
messages.addErrorsResultSizeExceeded(GLOBAL);
|
||||
}, () -> asHtml(path_ErrorJsp));
|
||||
data.register("displayQuery", getDisplayQuery(form, labelTypeHelper.getLabelTypeItemList()));
|
||||
data.register("pagingQuery", getPagingQuery(form));
|
||||
});
|
||||
} catch (final InvalidQueryException e) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(e.getMessage(), e);
|
||||
}
|
||||
data.register("displayQuery", getDisplayQuery(form, labelTypeHelper.getLabelTypeItemList()));
|
||||
data.register("pagingQuery", getPagingQuery(form));
|
||||
});
|
||||
saveError(e.getMessageCode());
|
||||
return redirectToRoot();
|
||||
} catch (final ResultOffsetExceededException e) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(e.getMessage(), e);
|
||||
}
|
||||
saveError(messages -> {
|
||||
messages.addErrorsResultSizeExceeded(GLOBAL);
|
||||
});
|
||||
return redirectToRoot();
|
||||
}
|
||||
}
|
||||
|
||||
protected HtmlResponse doMove(final SearchForm form, final int move) {
|
||||
|
@ -246,118 +249,26 @@ public class SearchAction extends FessSearchAction {
|
|||
}
|
||||
|
||||
protected static class WebRenderData extends SearchRenderData {
|
||||
private final RenderData data;
|
||||
|
||||
WebRenderData(final RenderData data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQueryId(final String queryId) {
|
||||
public void register(RenderData data) {
|
||||
data.register("queryId", queryId);
|
||||
super.setQueryId(queryId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDocumentItems(final List<Map<String, Object>> documentItems) {
|
||||
data.register("documentItems", documentItems);
|
||||
super.setDocumentItems(documentItems);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFacetResponse(final FacetResponse facetResponse) {
|
||||
data.register("facetResponse", facetResponse);
|
||||
super.setFacetResponse(facetResponse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAppendHighlightParams(final String appendHighlightParams) {
|
||||
data.register("appendHighlightParams", appendHighlightParams);
|
||||
super.setAppendHighlightParams(appendHighlightParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExecTime(final String execTime) {
|
||||
data.register("execTime", execTime);
|
||||
super.setExecTime(execTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPageSize(final int pageSize) {
|
||||
data.register("pageSize", pageSize);
|
||||
super.setPageSize(pageSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCurrentPageNumber(final int currentPageNumber) {
|
||||
data.register("currentPageNumber", currentPageNumber);
|
||||
super.setCurrentPageNumber(currentPageNumber);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAllRecordCount(final long allRecordCount) {
|
||||
data.register("allRecordCount", allRecordCount);
|
||||
super.setAllRecordCount(allRecordCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAllPageCount(final int allPageCount) {
|
||||
data.register("allPageCount", allPageCount);
|
||||
super.setAllPageCount(allPageCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExistNextPage(final boolean existNextPage) {
|
||||
data.register("existNextPage", existNextPage);
|
||||
super.setExistNextPage(existNextPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExistPrevPage(final boolean existPrevPage) {
|
||||
data.register("existPrevPage", existPrevPage);
|
||||
super.setExistPrevPage(existPrevPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCurrentStartRecordNumber(final long currentStartRecordNumber) {
|
||||
data.register("currentStartRecordNumber", currentStartRecordNumber);
|
||||
super.setCurrentStartRecordNumber(currentStartRecordNumber);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCurrentEndRecordNumber(final long currentEndRecordNumber) {
|
||||
data.register("currentEndRecordNumber", currentEndRecordNumber);
|
||||
super.setCurrentEndRecordNumber(currentEndRecordNumber);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPageNumberList(final List<String> pageNumberList) {
|
||||
data.register("pageNumberList", pageNumberList);
|
||||
super.setPageNumberList(pageNumberList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPartialResults(final boolean partialResults) {
|
||||
data.register("partialResults", partialResults);
|
||||
super.setPartialResults(partialResults);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQueryTime(final long queryTime) {
|
||||
data.register("queryTime", queryTime);
|
||||
super.setQueryTime(queryTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSearchQuery(final String searchQuery) {
|
||||
data.register("searchQuery", searchQuery);
|
||||
super.setSearchQuery(searchQuery);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRequestedTime(final long requestedTime) {
|
||||
data.register("requestedTime", requestedTime);
|
||||
super.setRequestedTime(requestedTime);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -22,41 +22,41 @@ import org.codelibs.fess.util.FacetResponse;
|
|||
|
||||
public class SearchRenderData {
|
||||
|
||||
private List<Map<String, Object>> documentItems;
|
||||
protected List<Map<String, Object>> documentItems;
|
||||
|
||||
private FacetResponse facetResponse;
|
||||
protected FacetResponse facetResponse;
|
||||
|
||||
private String appendHighlightParams;
|
||||
protected String appendHighlightParams;
|
||||
|
||||
private String execTime;
|
||||
protected String execTime;
|
||||
|
||||
private int pageSize;
|
||||
protected int pageSize;
|
||||
|
||||
private int currentPageNumber;
|
||||
protected int currentPageNumber;
|
||||
|
||||
private long allRecordCount;
|
||||
protected long allRecordCount;
|
||||
|
||||
private int allPageCount;
|
||||
protected int allPageCount;
|
||||
|
||||
private boolean existNextPage;
|
||||
protected boolean existNextPage;
|
||||
|
||||
private boolean existPrevPage;
|
||||
protected boolean existPrevPage;
|
||||
|
||||
private long currentStartRecordNumber;
|
||||
protected long currentStartRecordNumber;
|
||||
|
||||
private long currentEndRecordNumber;
|
||||
protected long currentEndRecordNumber;
|
||||
|
||||
private List<String> pageNumberList;
|
||||
protected List<String> pageNumberList;
|
||||
|
||||
private boolean partialResults;
|
||||
protected boolean partialResults;
|
||||
|
||||
private String searchQuery;
|
||||
protected String searchQuery;
|
||||
|
||||
private long queryTime;
|
||||
protected long queryTime;
|
||||
|
||||
private long requestedTime;
|
||||
protected long requestedTime;
|
||||
|
||||
private String queryId;
|
||||
protected String queryId;
|
||||
|
||||
public void setDocumentItems(final List<Map<String, Object>> documentItems) {
|
||||
this.documentItems = documentItems;
|
||||
|
|
Loading…
Add table
Reference in a new issue