This commit is contained in:
Shinsuke Sugaya 2015-06-04 16:14:38 +09:00
parent debf9296b8
commit db1fa4b72f
134 changed files with 2151 additions and 1029 deletions

23
pom.xml
View file

@ -267,22 +267,6 @@
<artifactId>fess-db-${database}</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>jp.sf.fess</groupId>
<artifactId>fess-suggest</artifactId>
<version>1.3.2</version>
<!-- REMOVE -->
<exclusions>
<exclusion>
<artifactId>solrlib</artifactId>
<groupId>org.codelibs.solr</groupId>
</exclusion>
<exclusion>
<artifactId>solr-solrj</artifactId>
<groupId>org.apache.solr</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
@ -454,12 +438,7 @@
<dependency>
<groupId>org.codelibs</groupId>
<artifactId>corelib</artifactId>
<version>0.2.1</version>
</dependency>
<dependency>
<groupId>org.codelibs.sastruts</groupId>
<artifactId>sastruts-core</artifactId>
<version>0.2.0</version>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>org.codelibs.sastruts</groupId>

View file

@ -19,7 +19,7 @@ package org.codelibs.fess;
import java.util.regex.Pattern;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
public class Constants extends CoreLibConstants {
public static final int MAJOR_VERSION = 10;
@ -117,8 +117,6 @@ public class Constants extends CoreLibConstants {
public static final String WEB_API_SUGGEST_PROPERTY = "web.api.suggest";
public static final String WEB_API_SPELLCHECK_PROPERTY = "web.api.spellcheck";
public static final String WEB_API_ANALYSIS_PROPERTY = "web.api.analysis";
public static final String WEB_DESIGN_EDITOR_PROPERTY = "design.editor";

View file

@ -21,7 +21,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.seasar.struts.annotation.Arg;
import org.seasar.struts.annotation.Msg;
import org.seasar.struts.annotation.Validator;

View file

@ -21,7 +21,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.seasar.struts.annotation.Arg;
import org.seasar.struts.annotation.Msg;
import org.seasar.struts.annotation.Validator;

View file

@ -25,12 +25,10 @@ public class BaseApiManager {
protected static final String SUGGEST_API = "/suggestApi";
protected static final String SPELLCHECK_API = "/spellCheckApi";
protected static final String SEARCH_API = "/searchApi";
protected static enum FormatType {
SEARCH, LABEL, SUGGEST, SPELLCHECK, HOTSEARCHWORD, FAVORITE, FAVORITES, OTHER, PING;
SEARCH, LABEL, SUGGEST, HOTSEARCHWORD, FAVORITE, FAVORITES, OTHER, PING;
}
public BaseApiManager() {
@ -48,8 +46,6 @@ public class BaseApiManager {
return FormatType.LABEL;
} else if (FormatType.SUGGEST.name().equals(type)) {
return FormatType.SUGGEST;
} else if (FormatType.SPELLCHECK.name().equals(type)) {
return FormatType.SPELLCHECK;
} else if (FormatType.HOTSEARCHWORD.name().equals(type)) {
return FormatType.HOTSEARCHWORD;
} else if (FormatType.FAVORITE.name().equals(type)) {

View file

@ -28,13 +28,9 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jp.sf.fess.suggest.entity.SpellCheckResponse;
import jp.sf.fess.suggest.entity.SuggestResponse;
import jp.sf.fess.suggest.entity.SuggestResponse.SuggestResponseList;
import org.apache.commons.lang.StringEscapeUtils;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.WebApiException;
import org.codelibs.fess.api.BaseApiManager;
@ -84,9 +80,6 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
case SUGGEST:
processSuggestRequest(request, response, chain);
break;
case SPELLCHECK:
processSpellCheckRequest(request, response, chain);
break;
case HOTSEARCHWORD:
processHotSearchWordRequest(request, response, chain);
break;
@ -350,154 +343,78 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
}
protected void processSuggestRequest(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {
int status = 0;
String errMsg = StringUtil.EMPTY;
final StringBuilder buf = new StringBuilder(255);
try {
chain.doFilter(new WebApiRequest(request, SUGGEST_API), new WebApiResponse(response));
WebApiUtil.validate();
final Integer suggestRecordCount = WebApiUtil.getObject("suggestRecordCount");
final List<SuggestResponse> suggestResultList = WebApiUtil.getObject("suggestResultList");
final List<String> suggestFieldName = WebApiUtil.getObject("suggestFieldName");
buf.append("\"recordCount\":");
buf.append(suggestRecordCount);
if (suggestResultList.size() > 0) {
buf.append(',');
buf.append("\"result\":[");
boolean first1 = true;
for (int i = 0; i < suggestResultList.size(); i++) {
final SuggestResponse suggestResponse = suggestResultList.get(i);
for (final Map.Entry<String, List<String>> entry : suggestResponse.entrySet()) {
final String fn = suggestFieldName.get(i);
if (!first1) {
buf.append(',');
} else {
first1 = false;
}
final SuggestResponseList srList = (SuggestResponseList) entry.getValue();
buf.append("{\"token\":");
buf.append(escapeJson(entry.getKey()));
buf.append(", \"fn\":");
buf.append(escapeJson(fn));
buf.append(", \"startOffset\":");
buf.append(Integer.toString(srList.getStartOffset()));
buf.append(", \"endOffset\":");
buf.append(Integer.toString(srList.getEndOffset()));
buf.append(", \"numFound\":");
buf.append(Integer.toString(srList.getNumFound()));
buf.append(", ");
buf.append("\"result\":[");
boolean first2 = true;
for (final String value : srList) {
if (!first2) {
buf.append(',');
} else {
first2 = false;
}
buf.append(escapeJson(value));
}
buf.append("]}");
}
}
buf.append(']');
}
} catch (final Exception e) {
if (e instanceof WebApiException) {
status = ((WebApiException) e).getStatusCode();
} else {
status = 1;
}
errMsg = e.getMessage();
if (logger.isDebugEnabled()) {
logger.debug("Failed to process a suggest request.", e);
}
}
writeJsonResponse(status, buf.toString(), errMsg);
}
protected void processSpellCheckRequest(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {
int status = 0;
String errMsg = StringUtil.EMPTY;
final StringBuilder buf = new StringBuilder(255);
try {
chain.doFilter(new WebApiRequest(request, SPELLCHECK_API), new WebApiResponse(response));
WebApiUtil.validate();
final Integer spellCheckRecordCount = WebApiUtil.getObject("spellCheckRecordCount");
final List<SpellCheckResponse> spellCheckResultList = WebApiUtil.getObject("spellCheckResultList");
final List<String> spellCheckFieldName = WebApiUtil.getObject("spellCheckFieldName");
buf.append("\"recordCount\":");
buf.append(spellCheckRecordCount);
if (spellCheckResultList.size() > 0) {
buf.append(',');
buf.append("\"result\":[");
boolean first1 = true;
for (int i = 0; i < spellCheckResultList.size(); i++) {
final SuggestResponse suggestResponse = spellCheckResultList.get(i);
for (final Map.Entry<String, List<String>> entry : suggestResponse.entrySet()) {
final String fn = spellCheckFieldName.get(i);
if (!first1) {
buf.append(',');
} else {
first1 = false;
}
final SuggestResponseList srList = (SuggestResponseList) entry.getValue();
buf.append("{\"token\":");
buf.append(escapeJson(entry.getKey()));
buf.append(", \"fn\":");
buf.append(escapeJson(fn));
buf.append(", \"startOffset\":");
buf.append(Integer.toString(srList.getStartOffset()));
buf.append(", \"endOffset\":");
buf.append(Integer.toString(srList.getEndOffset()));
buf.append(", \"numFound\":");
buf.append(Integer.toString(srList.getNumFound()));
buf.append(", ");
buf.append("\"result\":[");
boolean first2 = true;
for (final String value : srList) {
if (!first2) {
buf.append(',');
} else {
first2 = false;
}
buf.append(escapeJson(value));
}
buf.append("]}");
}
}
buf.append(']');
}
} catch (final Exception e) {
if (e instanceof WebApiException) {
status = ((WebApiException) e).getStatusCode();
} else {
status = 1;
}
errMsg = e.getMessage();
if (logger.isDebugEnabled()) {
logger.debug("Failed to process a spellcheck request.", e);
}
}
writeJsonResponse(status, buf.toString(), errMsg);
// TODO
// int status = 0;
// String errMsg = StringUtil.EMPTY;
// final StringBuilder buf = new StringBuilder(255);
// try {
// chain.doFilter(new WebApiRequest(request, SUGGEST_API), new WebApiResponse(response));
// WebApiUtil.validate();
// final Integer suggestRecordCount = WebApiUtil.getObject("suggestRecordCount");
// final List<SuggestResponse> suggestResultList = WebApiUtil.getObject("suggestResultList");
// final List<String> suggestFieldName = WebApiUtil.getObject("suggestFieldName");
//
// buf.append("\"recordCount\":");
// buf.append(suggestRecordCount);
//
// if (suggestResultList.size() > 0) {
// buf.append(',');
// buf.append("\"result\":[");
// boolean first1 = true;
// for (int i = 0; i < suggestResultList.size(); i++) {
//
// final SuggestResponse suggestResponse = suggestResultList.get(i);
//
// for (final Map.Entry<String, List<String>> entry : suggestResponse.entrySet()) {
// final String fn = suggestFieldName.get(i);
// if (!first1) {
// buf.append(',');
// } else {
// first1 = false;
// }
//
// final SuggestResponseList srList = (SuggestResponseList) entry.getValue();
//
// buf.append("{\"token\":");
// buf.append(escapeJson(entry.getKey()));
// buf.append(", \"fn\":");
// buf.append(escapeJson(fn));
// buf.append(", \"startOffset\":");
// buf.append(Integer.toString(srList.getStartOffset()));
// buf.append(", \"endOffset\":");
// buf.append(Integer.toString(srList.getEndOffset()));
// buf.append(", \"numFound\":");
// buf.append(Integer.toString(srList.getNumFound()));
// buf.append(", ");
// buf.append("\"result\":[");
// boolean first2 = true;
// for (final String value : srList) {
// if (!first2) {
// buf.append(',');
// } else {
// first2 = false;
// }
// buf.append(escapeJson(value));
// }
// buf.append("]}");
// }
//
// }
// buf.append(']');
// }
// } catch (final Exception e) {
// if (e instanceof WebApiException) {
// status = ((WebApiException) e).getStatusCode();
// } else {
// status = 1;
// }
// errMsg = e.getMessage();
// if (logger.isDebugEnabled()) {
// logger.debug("Failed to process a suggest request.", e);
// }
// }
//
// writeJsonResponse(status, buf.toString(), errMsg);
}

View file

@ -27,15 +27,10 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jp.sf.fess.suggest.entity.SpellCheckResponse;
import jp.sf.fess.suggest.entity.SuggestResponse;
import jp.sf.fess.suggest.entity.SuggestResponse.SuggestResponseList;
import org.apache.commons.lang.StringEscapeUtils;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.WebApiException;
import org.codelibs.fess.api.BaseApiManager;
import org.codelibs.fess.api.WebApiManager;
import org.codelibs.fess.api.WebApiRequest;
@ -81,9 +76,6 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
case SUGGEST:
processSuggestRequest(request, response, chain);
break;
case SPELLCHECK:
processSpellCheckRequest(request, response, chain);
break;
case PING:
processPingRequest(request, response, chain);
break;
@ -296,141 +288,72 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
}
protected void processSuggestRequest(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {
int status = 0;
String errMsg = StringUtil.EMPTY;
final StringBuilder buf = new StringBuilder(255);
try {
chain.doFilter(new WebApiRequest(request, SUGGEST_API), new WebApiResponse(response));
WebApiUtil.validate();
final Integer suggestRecordCount = WebApiUtil.getObject("suggestRecordCount");
final List<SuggestResponse> suggestResultList = WebApiUtil.getObject("suggestResultList");
final List<String> suggestFieldName = WebApiUtil.getObject("suggestFieldName");
buf.append("<record-count>");
buf.append(suggestRecordCount);
buf.append("</record-count>");
if (suggestResultList.size() > 0) {
buf.append("<result>");
for (int i = 0; i < suggestResultList.size(); i++) {
final SuggestResponse suggestResponse = suggestResultList.get(i);
for (final Map.Entry<String, List<String>> entry : suggestResponse.entrySet()) {
final SuggestResponseList srList = (SuggestResponseList) entry.getValue();
final String fn = suggestFieldName.get(i);
buf.append("<suggest>");
buf.append("<token>");
buf.append(escapeXml(entry.getKey()));
buf.append("</token>");
buf.append("<fn>");
buf.append(escapeXml(fn));
buf.append("</fn>");
buf.append("<start-offset>");
buf.append(escapeXml(Integer.toString(srList.getStartOffset())));
buf.append("</start-offset>");
buf.append("<end-offset>");
buf.append(escapeXml(Integer.toString(srList.getEndOffset())));
buf.append("</end-offset>");
buf.append("<num-found>");
buf.append(escapeXml(Integer.toString(srList.getNumFound())));
buf.append("</num-found>");
buf.append("<result>");
for (final String value : srList) {
buf.append("<value>");
buf.append(escapeXml(value));
buf.append("</value>");
}
buf.append("</result>");
buf.append("</suggest>");
}
}
buf.append("</result>");
}
} catch (final Exception e) {
if (e instanceof WebApiException) {
status = ((WebApiException) e).getStatusCode();
} else {
status = 1;
}
errMsg = e.getMessage();
if (logger.isDebugEnabled()) {
logger.debug("Failed to process a suggest request.", e);
}
}
writeXmlResponse(status, buf.toString(), errMsg);
}
protected void processSpellCheckRequest(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {
int status = 0;
String errMsg = StringUtil.EMPTY;
final StringBuilder buf = new StringBuilder(255);
try {
chain.doFilter(new WebApiRequest(request, SPELLCHECK_API), new WebApiResponse(response));
WebApiUtil.validate();
final Integer spellCheckRecordCount = WebApiUtil.getObject("spellCheckRecordCount");
final List<SpellCheckResponse> spellCheckResultList = WebApiUtil.getObject("spellCheckResultList");
final List<String> spellCheckFieldName = WebApiUtil.getObject("spellCheckFieldName");
buf.append("<record-count>");
buf.append(spellCheckRecordCount);
buf.append("</record-count>");
if (spellCheckResultList.size() > 0) {
buf.append("<result>");
for (int i = 0; i < spellCheckResultList.size(); i++) {
final SuggestResponse suggestResponse = spellCheckResultList.get(i);
for (final Map.Entry<String, List<String>> entry : suggestResponse.entrySet()) {
final SuggestResponseList srList = (SuggestResponseList) entry.getValue();
final String fn = spellCheckFieldName.get(i);
buf.append("<suggest>");
buf.append("<token>");
buf.append(escapeXml(entry.getKey()));
buf.append("</token>");
buf.append("<fn>");
buf.append(escapeXml(fn));
buf.append("</fn>");
buf.append("<start-offset>");
buf.append(escapeXml(Integer.toString(srList.getStartOffset())));
buf.append("</start-offset>");
buf.append("<end-offset>");
buf.append(escapeXml(Integer.toString(srList.getEndOffset())));
buf.append("</end-offset>");
buf.append("<num-found>");
buf.append(escapeXml(Integer.toString(srList.getNumFound())));
buf.append("</num-found>");
buf.append("<result>");
for (final String value : srList) {
buf.append("<value>");
buf.append(escapeXml(value));
buf.append("</value>");
}
buf.append("</result>");
buf.append("</suggest>");
}
}
buf.append("</result>");
}
} catch (final Exception e) {
if (e instanceof WebApiException) {
status = ((WebApiException) e).getStatusCode();
} else {
status = 1;
}
errMsg = e.getMessage();
if (logger.isDebugEnabled()) {
logger.debug("Failed to process a spellcheck request.", e);
}
}
writeXmlResponse(status, buf.toString(), errMsg);
// TODO
// int status = 0;
// String errMsg = StringUtil.EMPTY;
// final StringBuilder buf = new StringBuilder(255);
// try {
// chain.doFilter(new WebApiRequest(request, SUGGEST_API), new WebApiResponse(response));
// WebApiUtil.validate();
// final Integer suggestRecordCount = WebApiUtil.getObject("suggestRecordCount");
// final List<SuggestResponse> suggestResultList = WebApiUtil.getObject("suggestResultList");
// final List<String> suggestFieldName = WebApiUtil.getObject("suggestFieldName");
//
// buf.append("<record-count>");
// buf.append(suggestRecordCount);
// buf.append("</record-count>");
// if (suggestResultList.size() > 0) {
// buf.append("<result>");
//
// for (int i = 0; i < suggestResultList.size(); i++) {
//
// final SuggestResponse suggestResponse = suggestResultList.get(i);
//
// for (final Map.Entry<String, List<String>> entry : suggestResponse.entrySet()) {
// final SuggestResponseList srList = (SuggestResponseList) entry.getValue();
// final String fn = suggestFieldName.get(i);
// buf.append("<suggest>");
// buf.append("<token>");
// buf.append(escapeXml(entry.getKey()));
// buf.append("</token>");
// buf.append("<fn>");
// buf.append(escapeXml(fn));
// buf.append("</fn>");
// buf.append("<start-offset>");
// buf.append(escapeXml(Integer.toString(srList.getStartOffset())));
// buf.append("</start-offset>");
// buf.append("<end-offset>");
// buf.append(escapeXml(Integer.toString(srList.getEndOffset())));
// buf.append("</end-offset>");
// buf.append("<num-found>");
// buf.append(escapeXml(Integer.toString(srList.getNumFound())));
// buf.append("</num-found>");
// buf.append("<result>");
// for (final String value : srList) {
// buf.append("<value>");
// buf.append(escapeXml(value));
// buf.append("</value>");
// }
// buf.append("</result>");
// buf.append("</suggest>");
//
// }
// }
// buf.append("</result>");
// }
// } catch (final Exception e) {
// if (e instanceof WebApiException) {
// status = ((WebApiException) e).getStatusCode();
// } else {
// status = 1;
// }
// errMsg = e.getMessage();
// if (logger.isDebugEnabled()) {
// logger.debug("Failed to process a suggest request.", e);
// }
// }
//
// writeXmlResponse(status, buf.toString(), errMsg);
}
protected void writeXmlResponse(final int status, final String body, final String errMsg) {

View file

@ -1,27 +1,27 @@
package org.codelibs.fess.client;
import static org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.newConfigs;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
import javax.annotation.Resource;
import java.util.UUID;
import org.apache.commons.codec.Charsets;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.io.FileUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner;
import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.Configs;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.ResultOffsetExceededException;
import org.codelibs.fess.entity.FacetInfo;
import org.codelibs.fess.entity.GeoInfo;
import org.codelibs.fess.entity.PingResponse;
import org.codelibs.fess.entity.SearchQuery;
import org.codelibs.fess.entity.SearchQuery.SortField;
import org.codelibs.fess.helper.QueryHelper;
import org.codelibs.fess.helper.RoleQueryHelper;
import org.codelibs.fess.solr.FessSolrQueryException;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.QueryResponseList;
@ -29,6 +29,8 @@ import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.ShardOperationFailedException;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.admin.indices.flush.FlushResponse;
import org.elasticsearch.action.admin.indices.optimize.OptimizeResponse;
import org.elasticsearch.action.admin.indices.refresh.RefreshResponse;
@ -62,30 +64,51 @@ import com.google.common.io.BaseEncoding;
public class SearchClient {
private static final Logger logger = LoggerFactory.getLogger(SearchClient.class);
@Resource
protected SearchClient searchClient;
@Resource
protected QueryHelper queryHelper;
@Resource
protected RoleQueryHelper roleQueryHelper;
protected ElasticsearchClusterRunner runner;
protected List<TransportAddress> transportAddressList = new ArrayList<>();
protected Client client;
protected String index;
protected String index = "fess";
protected String type;
protected String type = "doc";
public String getIndex() {
return index;
}
public void setIndex(String index) {
this.index = index;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void setRunner(ElasticsearchClusterRunner runner) {
this.runner = runner;
}
public void addTransportAddress(String host, int port) {
transportAddressList.add(new InetSocketTransportAddress(host, port));
}
@InitMethod
public void open() {
if (transportAddressList.isEmpty()) {
if (runner == null) {
throw new FessSystemException("No elasticsearch instance.");
runner = new ElasticsearchClusterRunner();
Configs config = newConfigs().clusterName("fess-" + UUID.randomUUID().toString()).numOfNode(1);
String esDir = System.getProperty("fess.es.dir");
if (esDir != null) {
config.basePath(esDir);
}
runner.build(config);
}
client = runner.client();
} else {
@ -95,6 +118,33 @@ public class SearchClient {
}
client = transportClient;
}
waitForYellowStatus();
if (!isIndexExists()) {
createIndex();
waitForYellowStatus();
}
}
private void createIndex() {
String source = FileUtil.readText("json/index.json");
CreateIndexResponse response = client.admin().indices().prepareCreate(index).setSource(source).execute().actionGet();
if (!response.isAcknowledged()) {
logger.warn("Failed to create {0}.", index);
}
}
private boolean isIndexExists() {
IndicesExistsResponse response = client.admin().indices().prepareExists(index).execute().actionGet();
return response.isExists();
}
private void waitForYellowStatus() {
ClusterHealthResponse response = client.admin().cluster().prepareHealth().setWaitForYellowStatus().execute().actionGet();
if (logger.isDebugEnabled()) {
logger.debug("Elasticsearch Cluster Status: {0}", response.getStatus());
}
}
@DestroyMethod
@ -106,10 +156,6 @@ public class SearchClient {
}
}
public void addTransportAddress(String host, int port) {
transportAddressList.add(new InetSocketTransportAddress(host, port));
}
public void deleteByQuery(QueryBuilder queryBuilder) {
try {
client.prepareDeleteByQuery(index).setQuery(queryBuilder).execute().actionGet().forEach(res -> {
@ -135,11 +181,11 @@ public class SearchClient {
SearchRequestBuilder queryRequestBuilder = client.prepareSearch(index);
if (condition.build(queryRequestBuilder)) {
if (queryHelper.getTimeAllowed() >= 0) {
queryRequestBuilder.setTimeout(TimeValue.timeValueMillis(queryHelper.getTimeAllowed()));
if (ComponentUtil.getQueryHelper().getTimeAllowed() >= 0) {
queryRequestBuilder.setTimeout(TimeValue.timeValueMillis(ComponentUtil.getQueryHelper().getTimeAllowed()));
}
final Set<Entry<String, String[]>> paramSet = queryHelper.getRequestParameterSet();
final Set<Entry<String, String[]>> paramSet = ComponentUtil.getQueryHelper().getRequestParameterSet();
if (!paramSet.isEmpty()) {
for (final Map.Entry<String, String[]> entry : paramSet) {
queryRequestBuilder.putHeader(entry.getKey(), entry.getValue());
@ -186,7 +232,7 @@ public class SearchClient {
// TODO
public List<Map<String, Object>> getDocumentList(final String query, final int start, final int rows, final FacetInfo facetInfo,
final GeoInfo geoInfo, final String[] responseFields, final boolean forUser) {
if (start > queryHelper.getMaxSearchResultOffset()) {
if (start > ComponentUtil.getQueryHelper().getMaxSearchResultOffset()) {
throw new ResultOffsetExceededException("The number of result size is exceeded.");
}
@ -194,7 +240,7 @@ public class SearchClient {
SearchResponse searchResponse = null;
SearchRequestBuilder queryRequestBuilder = client.prepareSearch(index);
final SearchQuery searchQuery = queryHelper.build(query, forUser);
final SearchQuery searchQuery = ComponentUtil.getQueryHelper().build(query, forUser);
final String q = searchQuery.getQuery();
if (StringUtil.isNotBlank(q)) {
@ -205,7 +251,7 @@ public class SearchClient {
// query
QueryBuilder queryBuilder = QueryBuilders.queryStringQuery(q);
queryRequestBuilder.setFrom(start).setSize(rows);
for (final Map.Entry<String, String[]> entry : queryHelper.getQueryParamMap().entrySet()) {
for (final Map.Entry<String, String[]> entry : ComponentUtil.getQueryHelper().getQueryParamMap().entrySet()) {
queryRequestBuilder.putHeader(entry.getKey(), entry.getValue());
}
// filter query
@ -229,8 +275,8 @@ public class SearchClient {
}
queryRequestBuilder.addSort(fieldSort);
}
} else if (queryHelper.hasDefaultSortFields()) {
for (final SortField sortField : queryHelper.getDefaultSortFields()) {
} else if (ComponentUtil.getQueryHelper().hasDefaultSortFields()) {
for (final SortField sortField : ComponentUtil.getQueryHelper().getDefaultSortFields()) {
FieldSortBuilder fieldSort = SortBuilders.fieldSort(sortField.getField());
if (Constants.DESC.equals(sortField.getOrder())) {
fieldSort.order(SortOrder.DESC);
@ -241,9 +287,10 @@ public class SearchClient {
}
}
// highlighting
if (queryHelper.getHighlightingFields() != null && queryHelper.getHighlightingFields().length != 0) {
for (final String hf : queryHelper.getHighlightingFields()) {
queryRequestBuilder.addHighlightedField(hf, queryHelper.getHighlightSnippetSize());
if (ComponentUtil.getQueryHelper().getHighlightingFields() != null
&& ComponentUtil.getQueryHelper().getHighlightingFields().length != 0) {
for (final String hf : ComponentUtil.getQueryHelper().getHighlightingFields()) {
queryRequestBuilder.addHighlightedField(hf, ComponentUtil.getQueryHelper().getHighlightSnippetSize());
}
}
// geo
@ -257,7 +304,7 @@ public class SearchClient {
if (facetInfo != null) {
if (facetInfo.field != null) {
for (final String f : facetInfo.field) {
if (queryHelper.isFacetField(f)) {
if (ComponentUtil.getQueryHelper().isFacetField(f)) {
String encodedField = BaseEncoding.base64().encode(f.getBytes(Charsets.UTF_8));
TermsBuilder termsBuilder = AggregationBuilders.terms(Constants.FACET_FIELD_PREFIX + encodedField).field(f);
// TODO order
@ -273,7 +320,7 @@ public class SearchClient {
}
if (facetInfo.query != null) {
for (final String fq : facetInfo.query) {
final String facetQuery = queryHelper.buildFacetQuery(fq);
final String facetQuery = ComponentUtil.getQueryHelper().buildFacetQuery(fq);
if (StringUtil.isNotBlank(facetQuery)) {
final String encodedFacetQuery = BaseEncoding.base64().encode(facetQuery.getBytes(Charsets.UTF_8));
FilterAggregationBuilder filterBuilder =
@ -292,10 +339,10 @@ public class SearchClient {
}
}
if (queryHelper.getTimeAllowed() >= 0) {
queryRequestBuilder.setTimeout(TimeValue.timeValueMillis(queryHelper.getTimeAllowed()));
if (ComponentUtil.getQueryHelper().getTimeAllowed() >= 0) {
queryRequestBuilder.setTimeout(TimeValue.timeValueMillis(ComponentUtil.getQueryHelper().getTimeAllowed()));
}
final Set<Entry<String, String[]>> paramSet = queryHelper.getRequestParameterSet();
final Set<Entry<String, String[]>> paramSet = ComponentUtil.getQueryHelper().getRequestParameterSet();
if (!paramSet.isEmpty()) {
for (final Map.Entry<String, String[]> entry : paramSet) {
queryRequestBuilder.putHeader(entry.getKey(), entry.getValue());

View file

@ -32,7 +32,7 @@ import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.auth.DigestScheme;
import org.apache.http.impl.auth.NTLMScheme;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.bsentity.BsDataCrawlingConfig;
import org.codelibs.fess.util.ParameterUtil;

View file

@ -18,7 +18,7 @@ package org.codelibs.fess.db.exentity;
import java.text.SimpleDateFormat;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.bsentity.BsFailureUrl;
import org.codelibs.fess.util.ComponentUtil;

View file

@ -24,7 +24,7 @@ import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.bsentity.BsFileCrawlingConfig;
import org.codelibs.fess.helper.SystemHelper;

View file

@ -19,7 +19,7 @@ package org.codelibs.fess.db.exentity;
import java.util.ArrayList;
import java.util.List;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.db.bsentity.BsLabelType;
/**

View file

@ -18,7 +18,7 @@ package org.codelibs.fess.db.exentity;
import java.text.SimpleDateFormat;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.bsentity.BsSearchLog;

View file

@ -26,7 +26,7 @@ import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.auth.DigestScheme;
import org.apache.http.impl.auth.NTLMScheme;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.bsentity.BsWebAuthentication;
import org.codelibs.fess.util.ParameterUtil;

View file

@ -24,7 +24,7 @@ import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.bsentity.BsWebCrawlingConfig;
import org.codelibs.fess.service.RequestHeaderService;

View file

@ -23,7 +23,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.seasar.extension.timer.TimeoutManager;
import org.seasar.extension.timer.TimeoutTarget;
import org.seasar.extension.timer.TimeoutTask;

View file

@ -33,7 +33,7 @@ import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.dict.DictionaryException;
import org.codelibs.fess.dict.DictionaryFile;

View file

@ -33,11 +33,11 @@ import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.lucene.analysis.ja.util.CSVUtil;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.dict.DictionaryException;
import org.codelibs.fess.dict.DictionaryFile;
import org.codelibs.fess.util.UserDictCSVUtil;
import org.codelibs.robot.util.StreamUtil;
public class UserDictFile extends DictionaryFile<UserDictItem> {
@ -160,7 +160,7 @@ public class UserDictFile extends DictionaryFile<UserDictItem> {
continue;
}
final String[] values = CSVUtil.parse(line);
final String[] values = UserDictCSVUtil.parse(line);
String token = null;
String segmentation = null;
String reading = null;

View file

@ -22,7 +22,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.DataCrawlingConfig;
import org.codelibs.fess.ds.DataStore;

View file

@ -28,11 +28,8 @@ import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.DataCrawlingConfig;
import org.codelibs.fess.ds.DataStoreCrawlingException;
@ -45,6 +42,9 @@ import org.seasar.framework.container.SingletonS2Container;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
public class CsvDataStoreImpl extends AbstractDataStoreImpl {
private static final Logger logger = LoggerFactory.getLogger(CsvDataStoreImpl.class);

View file

@ -27,7 +27,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.db.exentity.DataCrawlingConfig;
import org.codelibs.fess.ds.DataStoreException;

View file

@ -22,8 +22,6 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import jp.sf.orangesignal.csv.CsvConfig;
import org.codelibs.fess.Constants;
import org.codelibs.fess.client.SearchClient;
import org.codelibs.fess.db.exentity.DataCrawlingConfig;
@ -51,6 +49,8 @@ import org.seasar.framework.util.SerializeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jp.sf.orangesignal.csv.CsvConfig;
public class FileListDataStoreImpl extends CsvDataStoreImpl {
private static final Logger logger = LoggerFactory.getLogger(FileListDataStoreImpl.class);

View file

@ -16,7 +16,7 @@
package org.codelibs.fess.entity;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.index.query.FilterBuilder;
import org.elasticsearch.index.query.FilterBuilders;

View file

@ -19,7 +19,7 @@ package org.codelibs.fess.entity;
import java.util.ArrayList;
import java.util.List;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
public class SearchQuery {

View file

@ -34,8 +34,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.client.SearchClient;
import org.codelibs.fess.db.allcommon.CDef;

View file

@ -35,7 +35,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.net.URLCodec;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.seasar.extension.filter.EncodingFilter;
public class FessEncodingFilter extends EncodingFilter {

View file

@ -25,7 +25,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.client.SearchClient;

View file

@ -25,8 +25,8 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.DataCrawlingConfig;
import org.codelibs.fess.ds.DataStore;

View file

@ -17,25 +17,25 @@
package org.codelibs.fess.helper;
public class FieldHelper {
public String favoriteCountField = "favoriteCount_l_x_dv";
public String favoriteCountField = "favorite_count";
public String clickCountField = "clickCount_l_x_dv";
public String clickCountField = "click_count";
public String configIdField = "cid_s";
public String configIdField = "config_id";
public String expiresField = "expires_dt";
public String expiresField = "expires";
public String urlField = "url";
public String docIdField = "docId";
public String docIdField = "doc_id";
public String idField = "id";
public String langField = "lang_s";
public String langField = "lang";
public String hasCacheField = "hasCache_s_s";
public String hasCacheField = "has_cache";
public String lastModifiedField = "lastModified";
public String lastModifiedField = "last_modified";
public String anchorField = "anchor";
@ -51,7 +51,7 @@ public class FieldHelper {
public String mimetypeField = "mimetype";
public String parentIdField = "parentId";
public String parentIdField = "parent_id";
public String contentField = "content";
@ -65,8 +65,8 @@ public class FieldHelper {
public String siteField = "site";
public String contentLengthField = "contentLength";
public String contentLengthField = "content_length";
public String filetypeField = "filetype_s";
public String filetypeField = "filetype";
}

View file

@ -19,7 +19,7 @@ package org.codelibs.fess.helper;
import java.util.HashMap;
import java.util.Map;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
public class FileTypeHelper {

View file

@ -25,7 +25,7 @@ import java.util.regex.Pattern;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.db.exbhv.SearchLogBhv;
import org.codelibs.fess.db.exbhv.pmbean.HotSearchWordPmb;
import org.codelibs.fess.util.ComponentUtil;

View file

@ -22,7 +22,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.client.SearchClient;
import org.codelibs.fess.db.exentity.KeyMatch;
import org.codelibs.fess.service.KeyMatchService;

View file

@ -28,7 +28,7 @@ import java.util.regex.Pattern;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.LabelType;
import org.codelibs.fess.service.LabelTypeService;

View file

@ -23,7 +23,7 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.seasar.framework.container.annotation.tiger.InitMethod;

View file

@ -46,7 +46,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.InvalidQueryException;
import org.codelibs.fess.entity.FacetInfo;

View file

@ -22,9 +22,7 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import javax.annotation.Resource;
import jp.sf.fess.suggest.service.SuggestService;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.db.exbhv.ClickLogBhv;
import org.codelibs.fess.db.exbhv.FavoriteLogBhv;
import org.codelibs.fess.db.exbhv.pmbean.FavoriteUrlCountPmb;
@ -51,9 +49,6 @@ public abstract class SearchLogHelper {
protected Map<String, Long> userInfoCache;
@Resource
protected SuggestService suggestService;
@InitMethod
public void init() {
userInfoCache = new LruHashMap<String, Long>(userInfoCacheSize);

View file

@ -16,10 +16,7 @@
package org.codelibs.fess.helper;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@ -27,23 +24,16 @@ import java.util.Set;
import javax.annotation.Resource;
import jp.sf.fess.suggest.SuggestConstants;
import jp.sf.fess.suggest.service.SuggestService;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.db.exbhv.SuggestBadWordBhv;
import org.codelibs.fess.db.exbhv.SuggestElevateWordBhv;
import org.codelibs.fess.db.exentity.SuggestBadWord;
import org.codelibs.fess.db.exentity.SuggestElevateWord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SuggestHelper {
private static final Logger logger = LoggerFactory.getLogger(SuggestHelper.class);
@Resource
protected SuggestService suggestService;
@Resource
protected SuggestElevateWordBhv suggestElevateWordBhv;
@ -86,21 +76,22 @@ public class SuggestHelper {
}
public void storeAllElevateWords() {
suggestService.deleteAllElevateWords();
final List<SuggestElevateWord> list = suggestElevateWordBhv.selectList(cb -> {
cb.query().setDeletedBy_IsNull();
});
for (final SuggestElevateWord suggestElevateWord : list) {
final String word = suggestElevateWord.getSuggestWord();
final String reading = suggestElevateWord.getReading();
final String labelStr = suggestElevateWord.getTargetLabel();
final String roleStr = suggestElevateWord.getTargetRole();
final long boost = suggestElevateWord.getBoost().longValue();
addElevateWord(word, reading, labelStr, roleStr, boost, false);
}
suggestService.commit();
// TODO
// suggestService.deleteAllElevateWords();
//
// final List<SuggestElevateWord> list = suggestElevateWordBhv.selectList(cb -> {
// cb.query().setDeletedBy_IsNull();
// });
// for (final SuggestElevateWord suggestElevateWord : list) {
// final String word = suggestElevateWord.getSuggestWord();
// final String reading = suggestElevateWord.getReading();
// final String labelStr = suggestElevateWord.getTargetLabel();
// final String roleStr = suggestElevateWord.getTargetRole();
// final long boost = suggestElevateWord.getBoost().longValue();
//
// addElevateWord(word, reading, labelStr, roleStr, boost, false);
// }
// suggestService.commit();
}
public void addElevateWord(final String word, final String reading, final String labels, final String roles, final long boost) {
@ -131,11 +122,12 @@ public class SuggestHelper {
}
}
suggestService.addElevateWord(word, reading, labelList, roleList, boost);
if (commit) {
suggestService.commit();
}
// TODO
// suggestService.addElevateWord(word, reading, labelList, roleList, boost);
//
// if (commit) {
// suggestService.commit();
// }
}
public void deleteAllBadWord() {
@ -147,9 +139,10 @@ public class SuggestHelper {
final String word = suggestBadWord.getSuggestWord();
badWords.add(word);
}
suggestService.updateBadWords(badWords);
suggestService.deleteBadWords();
suggestService.commit();
// TODO
// suggestService.updateBadWords(badWords);
// suggestService.deleteBadWords();
// suggestService.commit();
}
public void updateSolrBadwordFile() {
@ -163,28 +156,29 @@ public class SuggestHelper {
return;
}
final File file = new File(dir, SuggestConstants.BADWORD_FILENAME);
BufferedWriter bw = null;
try {
if (!file.exists()) {
file.createNewFile();
}
bw = new BufferedWriter(new FileWriter(file, false));
for (final SuggestBadWord suggestBadWord : list) {
bw.write(suggestBadWord.getSuggestWord());
bw.newLine();
}
bw.close();
} catch (final IOException e) {
logger.warn("Failed to update badword file.", e);
} finally {
if (bw != null) {
try {
bw.close();
} catch (final Exception e2) {
//ignore
}
}
}
// TODO
// final File file = new File(dir, SuggestConstants.BADWORD_FILENAME);
// BufferedWriter bw = null;
// try {
// if (!file.exists()) {
// file.createNewFile();
// }
// bw = new BufferedWriter(new FileWriter(file, false));
// for (final SuggestBadWord suggestBadWord : list) {
// bw.write(suggestBadWord.getSuggestWord());
// bw.newLine();
// }
// bw.close();
// } catch (final IOException e) {
// logger.warn("Failed to update badword file.", e);
// } finally {
// if (bw != null) {
// try {
// bw.close();
// } catch (final Exception e2) {
// //ignore
// }
// }
// }
}
}

View file

@ -35,7 +35,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.lang.LocaleUtils;
import org.apache.commons.lang.StringUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.RoleType;
import org.codelibs.fess.service.RoleTypeService;

View file

@ -36,8 +36,8 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.entity.FacetQueryView;

View file

@ -23,8 +23,8 @@ import java.util.List;
import javax.annotation.Resource;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.BoostDocumentRule;
import org.codelibs.fess.db.exentity.FileCrawlingConfig;

View file

@ -26,7 +26,7 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.helper.FieldHelper;
import org.codelibs.fess.helper.SearchLogHelper;

View file

@ -16,7 +16,7 @@
package org.codelibs.fess.helper.impl;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.helper.DatabaseHelper;
import org.codelibs.fess.util.ResourceUtil;
import org.h2.tools.DeleteDbFiles;

View file

@ -29,7 +29,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.codelibs.core.crypto.CachedCipher;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.entity.LoginInfo;
import org.codelibs.fess.helper.RoleQueryHelper;
import org.codelibs.fess.helper.SystemHelper;

View file

@ -23,14 +23,13 @@ import java.util.List;
import java.util.Map;
import java.util.Queue;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.beans.FessBeans;
import org.codelibs.fess.db.exbhv.ClickLogBhv;
import org.codelibs.fess.db.exbhv.SearchLogBhv;
import org.codelibs.fess.db.exbhv.UserInfoBhv;
import org.codelibs.fess.db.exentity.ClickLog;
import org.codelibs.fess.db.exentity.SearchFieldLog;
import org.codelibs.fess.db.exentity.SearchLog;
import org.codelibs.fess.db.exentity.UserInfo;
import org.codelibs.fess.helper.DocumentHelper;
@ -107,20 +106,21 @@ public class SearchLogHelperImpl extends SearchLogHelper {
}
searchLogList.add(searchLog);
if (suggestAvailable && searchLog.getHitCount() > 0) {
final List<SearchFieldLog> searchFieldLogList = searchLog.getSearchFieldLogList();
for (final SearchFieldLog searchFieldLog : searchFieldLogList) {
if ("solrQuery".equals(searchFieldLog.getName())) {
suggestService.addSolrParams(searchFieldLog.getValue(), dayForCleanup);
addedSuggest = true;
}
}
}
// TODO
// if (suggestAvailable && searchLog.getHitCount() > 0) {
// final List<SearchFieldLog> searchFieldLogList = searchLog.getSearchFieldLogList();
// for (final SearchFieldLog searchFieldLog : searchFieldLogList) {
// if ("solrQuery".equals(searchFieldLog.getName())) {
// suggestService.addSolrParams(searchFieldLog.getValue(), dayForCleanup);
// addedSuggest = true;
// }
// }
// }
}
}
if (addedSuggest) {
suggestService.commit();
}
// if (addedSuggest) {
// suggestService.commit();
// }
if (!userInfoMap.isEmpty()) {
final List<UserInfo> insertList = new ArrayList<UserInfo>(userInfoMap.values());

View file

@ -30,7 +30,7 @@ import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.helper.WebManagementHelper;

View file

@ -27,7 +27,7 @@ import javax.servlet.ServletContext;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.SystemUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.exec.Crawler;

View file

@ -24,7 +24,7 @@ import static org.quartz.TriggerBuilder.newTrigger;
import java.util.ArrayList;
import java.util.List;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exbhv.ScheduledJobBhv;
import org.codelibs.fess.db.exentity.ScheduledJob;

View file

@ -16,7 +16,7 @@
package org.codelibs.fess.job;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.service.CrawlingSessionService;
import org.codelibs.fess.service.JobLogService;

View file

@ -16,12 +16,12 @@
package org.codelibs.fess.job.impl;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import org.codelibs.fess.job.JobExecutor;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
public class GroovyExecutor extends JobExecutor {
@Override

View file

@ -22,7 +22,7 @@ import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.List;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
public class StatsPager implements Serializable {

View file

@ -25,11 +25,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import jcifs.smb.ACE;
import jcifs.smb.SID;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.client.SearchClient;
import org.codelibs.fess.db.exentity.CrawlingConfig;
@ -51,6 +48,9 @@ import org.codelibs.robot.log.LogType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jcifs.smb.ACE;
import jcifs.smb.SID;
public class FessS2RobotThread extends S2RobotThread {
private static final Logger logger = LoggerFactory.getLogger(FessS2RobotThread.class);

View file

@ -28,7 +28,7 @@ import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.helper.FieldHelper;

View file

@ -27,20 +27,20 @@ import java.util.List;
import javax.annotation.Resource;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.db.exbhv.ClickLogBhv;
import org.codelibs.fess.db.exbhv.SearchLogBhv;
import org.codelibs.fess.db.exentity.ClickLog;
import org.codelibs.fess.db.exentity.SearchLog;
import org.dbflute.bhv.readable.EntityRowHandler;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
public class ClickLogService implements Serializable {
private static final long serialVersionUID = 1L;

View file

@ -30,14 +30,10 @@ import java.util.Set;
import javax.annotation.Resource;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
@ -53,6 +49,10 @@ import org.dbflute.cbean.result.ListResultBean;
import org.dbflute.cbean.result.PagingResultBean;
import org.seasar.framework.beans.util.Beans;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
public class CrawlingSessionService implements Serializable {
private static final long serialVersionUID = 1L;

View file

@ -35,8 +35,8 @@ import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.transaction.UserTransaction;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.db.exbhv.BoostDocumentRuleBhv;

View file

@ -27,8 +27,8 @@ import java.util.regex.Pattern;
import javax.annotation.Resource;
import org.apache.commons.lang.StringUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;

View file

@ -31,13 +31,10 @@ import java.util.Map;
import javax.annotation.Resource;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
import org.codelibs.fess.db.cbean.FavoriteLogCB;
@ -54,6 +51,9 @@ import org.seasar.framework.beans.util.Beans;
import com.ibm.icu.text.SimpleDateFormat;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvWriter;
public class FavoriteLogService implements Serializable {
private static final Log log = LogFactory.getLog(FavoriteLogService.class);

View file

@ -32,15 +32,10 @@ import java.util.Map;
import javax.annotation.Resource;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
import net.arnx.jsonic.JSON;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
@ -61,6 +56,11 @@ import org.seasar.framework.beans.util.Beans;
import com.ibm.icu.text.SimpleDateFormat;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
import net.arnx.jsonic.JSON;
public class SearchLogService implements Serializable {
private static final Log log = LogFactory.getLog(SearchLogService.class);

View file

@ -27,13 +27,9 @@ import java.util.Map;
import javax.annotation.Resource;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
import org.codelibs.fess.db.cbean.SuggestBadWordCB;
@ -45,6 +41,10 @@ import org.dbflute.bhv.readable.EntityRowHandler;
import org.dbflute.cbean.result.PagingResultBean;
import org.seasar.framework.beans.util.Beans;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
public class SuggestBadWordService implements Serializable {
private static final String DELETE_PREFIX = "--";

View file

@ -28,13 +28,9 @@ import java.util.Map;
import javax.annotation.Resource;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
import org.codelibs.fess.db.cbean.SuggestElevateWordCB;
@ -46,6 +42,10 @@ import org.dbflute.bhv.readable.EntityRowHandler;
import org.dbflute.cbean.result.PagingResultBean;
import org.seasar.framework.beans.util.Beans;
import jp.sf.orangesignal.csv.CsvConfig;
import jp.sf.orangesignal.csv.CsvReader;
import jp.sf.orangesignal.csv.CsvWriter;
public class SuggestElevateWordService implements Serializable {
private static final long serialVersionUID = 1L;

View file

@ -21,7 +21,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.dict.DictionaryExpiredException;
import org.codelibs.fess.dict.DictionaryFile;

View file

@ -21,7 +21,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.dict.DictionaryExpiredException;
import org.codelibs.fess.dict.DictionaryFile;

View file

@ -22,7 +22,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
import org.codelibs.fess.db.cbean.UserInfoCB;

View file

@ -23,7 +23,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.client.SearchClient;

View file

@ -30,7 +30,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringEscapeUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.entity.FacetQueryView;
import org.codelibs.fess.helper.HotSearchWordHelper;
@ -46,8 +46,6 @@ public class FessFunctions {
private static final String FACET_PREFIX = "facet.";
private static final String MLT_PREFIX = "mlt.";
protected FessFunctions() {
// nothing
}

View file

@ -28,15 +28,12 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import jcifs.smb.ACE;
import jcifs.smb.SID;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.tika.metadata.HttpHeaders;
import org.apache.tika.metadata.TikaMetadataKeys;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.CrawlingConfig;
import org.codelibs.fess.db.exentity.CrawlingConfig.ConfigName;
@ -67,6 +64,9 @@ import org.seasar.framework.util.SerializeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jcifs.smb.ACE;
import jcifs.smb.SID;
public abstract class AbstractFessFileTransformer extends AbstractFessXpathTransformer {
private static final Logger logger = LoggerFactory // NOPMD
.getLogger(AbstractFessFileTransformer.class);

View file

@ -22,7 +22,7 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.helper.FieldHelper;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.robot.transformer.impl.XpathTransformer;

View file

@ -35,7 +35,7 @@ import javax.xml.transform.TransformerException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.xpath.objects.XObject;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.db.exentity.CrawlingConfig;
import org.codelibs.fess.db.exentity.CrawlingConfig.ConfigName;

View file

@ -17,7 +17,7 @@
package org.codelibs.fess.util;
import org.codelibs.core.crypto.CachedCipher;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.api.WebApiManagerFactory;
import org.codelibs.fess.client.SearchClient;
import org.codelibs.fess.ds.DataStoreFactory;

View file

@ -19,7 +19,7 @@ package org.codelibs.fess.util;
import java.util.HashMap;
import java.util.Map;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.db.exentity.CrawlingConfig.ConfigName;

View file

@ -23,7 +23,7 @@ import java.util.regex.Pattern;
import javax.servlet.ServletContext;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.struts.util.ServletContextUtil;

View file

@ -18,7 +18,7 @@ package org.codelibs.fess.util;
import java.util.HashMap;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
public class SearchParamMap extends HashMap<String, String[]> {

View file

@ -0,0 +1,113 @@
package org.codelibs.fess.util;
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Utility class for parsing CSV text
*/
public final class UserDictCSVUtil {
private static final char QUOTE = '"';
private static final char COMMA = ',';
private static final Pattern QUOTE_REPLACE_PATTERN = Pattern.compile("^\"([^\"]+)\"$");
private static final String ESCAPED_QUOTE = "\"\"";
private UserDictCSVUtil() {
} // no instance!!!
/**
* Parse CSV line
* @param line line containing csv-encoded data
* @return Array of values
*/
public static String[] parse(String line) {
boolean insideQuote = false;
ArrayList<String> result = new ArrayList<>();
int quoteCount = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < line.length(); i++) {
char c = line.charAt(i);
if (c == QUOTE) {
insideQuote = !insideQuote;
quoteCount++;
}
if (c == COMMA && !insideQuote) {
String value = sb.toString();
value = unQuoteUnEscape(value);
result.add(value);
sb.setLength(0);
continue;
}
sb.append(c);
}
result.add(sb.toString());
// Validate
if (quoteCount % 2 != 0) {
return new String[0];
}
return result.toArray(new String[result.size()]);
}
private static String unQuoteUnEscape(String original) {
String result = original;
// Unquote
if (result.indexOf('\"') >= 0) {
Matcher m = QUOTE_REPLACE_PATTERN.matcher(original);
if (m.matches()) {
result = m.group(1);
}
// Unescape
if (result.indexOf(ESCAPED_QUOTE) >= 0) {
result = result.replace(ESCAPED_QUOTE, "\"");
}
}
return result;
}
/**
* Quote and escape input value for CSV
*/
public static String quoteEscape(String original) {
String result = original;
if (result.indexOf('\"') >= 0) {
result.replace("\"", ESCAPED_QUOTE);
}
if (result.indexOf(COMMA) >= 0) {
result = "\"" + result + "\"";
}
return result;
}
}

View file

@ -22,7 +22,7 @@ import org.apache.commons.validator.Field;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.struts.action.ActionMessages;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.quartz.CronExpression;
import org.seasar.struts.validator.S2FieldChecks;

View file

@ -22,7 +22,7 @@ import org.apache.commons.validator.Field;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.struts.action.ActionMessages;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.FessSystemException;
import org.seasar.struts.validator.S2FieldChecks;

View file

@ -47,16 +47,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jp.sf.fess.suggest.Suggester;
import jp.sf.fess.suggest.entity.SpellCheckResponse;
import jp.sf.fess.suggest.entity.SuggestResponse;
import jp.sf.fess.suggest.service.SuggestService;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.InvalidQueryException;
import org.codelibs.fess.ResultOffsetExceededException;
@ -169,12 +164,6 @@ public class IndexAction {
@Resource
protected FieldHelper fieldHelper;
@Resource
protected Suggester suggester;
@Resource
protected SuggestService suggestService;
@Resource
protected DynamicProperties crawlerProperties;
@ -596,8 +585,8 @@ public class IndexAction {
final String[] fieldNames = indexForm.fn;
final String[] labels = indexForm.fields.get("label");
final List<SuggestResponse> suggestResultList = new ArrayList<SuggestResponse>();
WebApiUtil.setObject("suggestResultList", suggestResultList);
// final List<SuggestResponse> suggestResultList = new ArrayList<SuggestResponse>();
// WebApiUtil.setObject("suggestResultList", suggestResultList);
final List<String> suggestFieldName = Arrays.asList(fieldNames);
WebApiUtil.setObject("suggestFieldName", suggestFieldName);
@ -617,12 +606,13 @@ public class IndexAction {
roleSet = new HashSet<>();
}
final SuggestResponse suggestResponse =
suggestService.getSuggestResponse(indexForm.query, suggestFieldName, labelList, new ArrayList<String>(roleSet), num);
if (!suggestResponse.isEmpty()) {
suggestResultList.add(suggestResponse);
}
// TODO
// final SuggestResponse suggestResponse =
// suggestService.getSuggestResponse(indexForm.query, suggestFieldName, labelList, new ArrayList<String>(roleSet), num);
//
// if (!suggestResponse.isEmpty()) {
// suggestResultList.add(suggestResponse);
// }
WebApiUtil.setObject("suggestRecordCount", 1);
} catch (final Exception e) {
@ -631,71 +621,6 @@ public class IndexAction {
return null;
}
@Execute(validator = false)
public String spellCheckApi() {
if (Constants.FALSE.equals(crawlerProperties.getProperty(Constants.WEB_API_SPELLCHECK_PROPERTY, Constants.TRUE))) {
WebApiUtil.setError(9, "Unsupported operation.");
return null;
}
if (indexForm.fn == null || indexForm.fn.length == 0) {
WebApiUtil.setError(2, "The field name is empty.");
return null;
}
if (StringUtil.isBlank(indexForm.query)) {
WebApiUtil.setError(3, "Your query is empty.");
return null;
}
if (StringUtil.isBlank(indexForm.num)) {
indexForm.num = String.valueOf(DEFAULT_SPELLCHECK_PAGE_SIZE);
}
int num = Integer.parseInt(indexForm.num);
if (num > getMaxPageSize()) {
num = getMaxPageSize();
}
final String[] fieldNames = indexForm.fn;
final String[] labels = indexForm.fields.get("label");
final List<SpellCheckResponse> spellCheckResultList = new ArrayList<SpellCheckResponse>();
WebApiUtil.setObject("spellCheckResultList", spellCheckResultList);
final List<String> spellCheckFieldName = Arrays.asList(fieldNames);
WebApiUtil.setObject("spellCheckFieldName", spellCheckFieldName);
final List<String> labelList;
if (labels == null) {
labelList = new ArrayList<String>();
} else {
labelList = Arrays.asList(labels);
}
try {
final Set<String> roleSet;
if (roleQueryHelper != null) {
roleSet = roleQueryHelper.build();
} else {
roleSet = new HashSet<>();
}
final SpellCheckResponse spellCheckResponse =
suggestService.getSpellCheckResponse(indexForm.query, spellCheckFieldName, labelList, new ArrayList<String>(roleSet),
num);
if (!spellCheckResponse.isEmpty()) {
spellCheckResultList.add(spellCheckResponse);
}
WebApiUtil.setObject("spellCheckRecordCount", 1);
} catch (final Exception e) {
WebApiUtil.setError(1, e);
}
return null;
}
@Execute(validator = false)
public String hotSearchWordApi() {
if (Constants.FALSE.equals(crawlerProperties.getProperty(Constants.WEB_API_HOT_SEARCH_WORD_PROPERTY, Constants.TRUE))) {

View file

@ -31,7 +31,7 @@ import javax.servlet.http.HttpSession;
import org.apache.struts.Globals;
import org.codelibs.core.crypto.CachedCipher;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.entity.LoginInfo;

View file

@ -24,8 +24,8 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.crud.util.SAStrutsUtil;
import org.codelibs.fess.helper.SystemHelper;

View file

@ -37,7 +37,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.crud.util.SAStrutsUtil;

View file

@ -29,8 +29,8 @@ import javax.annotation.Resource;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.crud.util.SAStrutsUtil;

View file

@ -24,11 +24,6 @@ import java.util.Set;
import javax.annotation.Resource;
import jp.sf.fess.suggest.SuggestConstants;
import jp.sf.fess.suggest.server.SuggestSolrServer;
import jp.sf.fess.suggest.service.SuggestService;
import org.codelibs.core.util.StringUtil;
import org.codelibs.fess.client.SearchClient;
import org.codelibs.fess.crud.util.SAStrutsUtil;
import org.codelibs.fess.helper.FieldHelper;
@ -81,9 +76,6 @@ public class DocumentAction implements Serializable {
@Resource
protected JobHelper jobHelper;
@Resource
protected SuggestService suggestService;
public Map<String, Long> suggestDocumentNums;
public String getHelpLink() {
@ -205,15 +197,17 @@ public class DocumentAction implements Serializable {
protected Map<String, Long> getSuggestDocumentNum() {
final Map<String, Long> map = new HashMap<String, Long>();
map.put(SUGGEST_TYPE_CONTENT, suggestService.getContentDocumentNum());
map.put(SUGGEST_TYPE_SEARCH_LOG, suggestService.getSearchLogDocumentNum());
map.put(SUGGEST_TYPE_ALL, suggestService.getDocumentNum());
// map.put(SUGGEST_TYPE_CONTENT, suggestService.getContentDocumentNum());
// map.put(SUGGEST_TYPE_SEARCH_LOG, suggestService.getSearchLogDocumentNum());
// map.put(SUGGEST_TYPE_ALL, suggestService.getDocumentNum());
return map;
}
@Token(save = false, validate = true)
@Execute(validator = true, input = "index")
public String deleteSuggest() {
// TODO
/*
final SuggestSolrServer suggestSolrServer = suggestService.getSuggestSolrServer();
final String query;
if (SUGGEST_TYPE_CONTENT.equals(documentForm.deleteSuggestType)) {
@ -227,8 +221,6 @@ public class DocumentAction implements Serializable {
}
if (StringUtil.isNotBlank(query)) {
// TODO
/*
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
@ -252,8 +244,8 @@ public class DocumentAction implements Serializable {
});
thread.start();
SAStrutsUtil.addSessionMessage("success.delete_solr_index");
*/
}
*/
return showIndex(true);
}

View file

@ -28,7 +28,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;

View file

@ -24,7 +24,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.beans.FessBeans;
import org.codelibs.fess.crud.CommonConstants;

View file

@ -34,7 +34,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.codec.binary.Base64;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.util.ComponentUtil;

View file

@ -24,8 +24,8 @@ import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.InvalidQueryException;
import org.codelibs.fess.ResultOffsetExceededException;
import org.codelibs.fess.client.SearchClient;

View file

@ -28,7 +28,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;

View file

@ -24,7 +24,7 @@ import javax.annotation.Resource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.pager.StatsPager;

View file

@ -20,7 +20,7 @@ import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.seasar.struts.annotation.IntegerType;

View file

@ -35,7 +35,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.beans.FessBeans;

View file

@ -35,7 +35,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.FessSystemException;
import org.codelibs.fess.beans.FessBeans;

View file

@ -26,7 +26,7 @@ import java.util.Set;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.client.SearchClient;
import org.codelibs.fess.crud.util.SAStrutsUtil;
import org.codelibs.fess.db.exentity.ScheduledJob;

View file

@ -24,8 +24,8 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.helper.SystemHelper;
import org.seasar.struts.annotation.ActionForm;

View file

@ -24,7 +24,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.beans.FessBeans;
import org.codelibs.fess.crud.CommonConstants;

View file

@ -22,7 +22,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.annotation.UriType;
import org.codelibs.fess.util.ComponentUtil;

View file

@ -26,8 +26,8 @@ import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.lang.StringUtils;
import org.codelibs.core.util.DynamicProperties;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
import org.codelibs.fess.crud.util.SAStrutsUtil;
import org.codelibs.fess.db.exentity.FileCrawlingConfig;

View file

@ -28,7 +28,7 @@ import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
import org.codelibs.fess.crud.util.SAStrutsUtil;

View file

@ -26,7 +26,7 @@ import javax.annotation.Resource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelibs.core.util.StringUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.crud.CrudMessageException;
import org.codelibs.fess.crud.util.SAStrutsUtil;

View file

@ -0,0 +1,28 @@
/*
* Copyright 2012 the 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.sastruts.core;
import org.codelibs.core.CoreLibConstants;
public class SSCConstants extends CoreLibConstants {
public static final String USER_INFO = "LoginInfo";
public static final String RETURN_PATH = "ReturnPath";
protected SSCConstants() {
}
}

View file

@ -0,0 +1,178 @@
/*
* Copyright 2012 the 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.sastruts.core.action;
import java.io.IOException;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.Globals;
import org.codelibs.core.crypto.CachedCipher;
import org.codelibs.sastruts.core.SSCConstants;
import org.codelibs.sastruts.core.entity.UserInfo;
import org.codelibs.sastruts.core.exception.LoginException;
import org.codelibs.sastruts.core.form.AbstractLoginForm;
import org.codelibs.sastruts.core.util.ActivityUtil;
import org.seasar.framework.log.Logger;
import org.seasar.framework.util.StringUtil;
import org.seasar.struts.util.ResponseUtil;
public abstract class AbstractLoginAction implements Serializable {
private static final Logger logger = Logger.getLogger(AbstractLoginAction.class);
private static final long serialVersionUID = 1L;
@Resource
protected HttpServletRequest request;
@Resource
protected CachedCipher authCipher;
protected String doIndex(final AbstractLoginForm form) {
HttpSession session = request.getSession(false);
// check login session
final Object obj = session == null ? null : session.getAttribute(SSCConstants.USER_INFO);
if (obj instanceof UserInfo) {
redirect(getAuthRootPath());
return null;
}
String params = null;
if ("forbidden".equals(form.type)) {
// invalid user
if (logger.isInfoEnabled()) {
logger.log("ISSC0001", new Object[] { request.getRemoteUser() });
}
if (session != null) {
session = invalidateSession(session);
}
params = "msgs=error.login_error";
}
if (session == null) {
session = request.getSession();
}
String path;
if (StringUtil.isNotBlank(form.returnPath)) {
final String value = authCipher.decryptoText(form.returnPath);
final int idx = value.indexOf('|');
if (idx >= 0) {
path = value.substring(idx + 1);
session.setAttribute(SSCConstants.RETURN_PATH, path);
} else {
// invalid returnPathName
session.removeAttribute(SSCConstants.RETURN_PATH);
}
} else {
session.removeAttribute(SSCConstants.RETURN_PATH);
}
return getLoginPath(params);
}
protected String doLogin(final AbstractLoginForm form) {
final HttpSession oldSession = request.getSession();
final HttpSession session = invalidateSession(oldSession);
session.removeAttribute(Globals.MESSAGE_KEY);
// create user info
final UserInfo loginInfo = new UserInfo();
loginInfo.setUsername(request.getRemoteUser());
session.setAttribute(SSCConstants.USER_INFO, loginInfo);
String returnPath = (String) session.getAttribute(SSCConstants.RETURN_PATH);
if (returnPath != null) {
session.removeAttribute(SSCConstants.RETURN_PATH);
} else {
// admin page
returnPath = getAuthRootPath();
}
ActivityUtil.login(loginInfo.getUsername(), request);
redirect(returnPath);
return null;
}
private HttpSession invalidateSession(final HttpSession oldSession) {
final Map<String, Object> sessionObjMap = new HashMap<String, Object>();
@SuppressWarnings("unchecked")
final Enumeration<String> e = oldSession.getAttributeNames();
while (e.hasMoreElements()) {
final String name = e.nextElement();
sessionObjMap.put(name, oldSession.getAttribute(name));
}
oldSession.invalidate();
final HttpSession session = request.getSession();
for (final Map.Entry<String, Object> entry : sessionObjMap.entrySet()) {
session.setAttribute(entry.getKey(), entry.getValue());
}
return session;
}
protected String doLogout(final AbstractLoginForm form) {
ActivityUtil.login(request.getRemoteUser(), request);
final HttpSession session = request.getSession();
session.invalidate();
return getLoginPath(null);
}
protected String getDefaultPath() {
return "/index?redirect=true";
}
protected String getLoginPath(final String params) {
final StringBuilder buf = new StringBuilder();
buf.append("login?");
if (params != null && params.length() > 0) {
buf.append(params).append('&');
}
buf.append("redirect=true");
return buf.toString();
}
protected String getAuthRootPath() {
final String contextPath = request.getContextPath();
if (StringUtil.isEmpty(contextPath) || "/".equals(contextPath)) {
return "/admin/";
} else {
return contextPath + "/admin/";
}
}
protected void redirect(final String returnPath) {
final HttpServletResponse response = ResponseUtil.getResponse();
try {
response.sendRedirect(response.encodeURL(returnPath));
} catch (final IOException e) {
throw new LoginException("ESSC0002", new Object[] { returnPath }, e);
}
}
}

View file

@ -0,0 +1,35 @@
/*
* Copyright 2012 the 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.sastruts.core.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author shinsuke
*
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Token {
boolean save();
boolean validate();
boolean keep() default false;
}

Some files were not shown because too many files have changed in this diff Show more