replace with mailflute

This commit is contained in:
Shinsuke Sugaya 2015-10-29 22:33:43 +09:00
parent 9098cfcb4a
commit ead89791e8
15 changed files with 539 additions and 183 deletions

22
pom.xml
View file

@ -43,6 +43,7 @@
<lasta.taglib.version>0.6.0</lasta.taglib.version>
<servlet.version>3.1.0</servlet.version>
<jsp.version>2.3.1</jsp.version>
<mailflute.version>0.4.2</mailflute.version>
<!-- Partner Library -->
<slf4j.version>1.7.12</slf4j.version>
@ -434,6 +435,11 @@
<artifactId>corelib</artifactId>
<version>0.3.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
@ -457,16 +463,9 @@
<!-- mail -->
<dependency>
<!-- TODO remove -->
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<!-- TODO remove -->
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
<groupId>org.dbflute.mail</groupId>
<artifactId>mailflute</artifactId>
<version>${mailflute.version}</version>
</dependency>
<!-- csv -->
@ -503,10 +502,9 @@
<!-- template -->
<dependency>
<!-- TODO remove with lasta -->
<groupId>com.github.jknack</groupId>
<artifactId>handlebars</artifactId>
<version>2.2.2</version>
<version>2.3.2</version>
</dependency>
<!-- groovy -->

View file

@ -27,10 +27,12 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import javax.annotation.Resource;
import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.beans.util.BeanUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.misc.DynamicProperties;
import org.codelibs.fess.Constants;
@ -41,27 +43,23 @@ import org.codelibs.fess.es.client.FessEsClient;
import org.codelibs.fess.helper.CrawlingSessionHelper;
import org.codelibs.fess.helper.DataIndexHelper;
import org.codelibs.fess.helper.FieldHelper;
import org.codelibs.fess.helper.MailHelper;
import org.codelibs.fess.helper.OverlappingHostHelper;
import org.codelibs.fess.helper.PathMappingHelper;
import org.codelibs.fess.helper.WebFsIndexHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.mylasta.mail.CrawlerPostcard;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.ResourceUtil;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import org.lastaflute.core.mail.Postbox;
import org.lastaflute.di.core.SingletonLaContainer;
import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.jknack.handlebars.Context;
import com.github.jknack.handlebars.Handlebars;
import com.github.jknack.handlebars.Template;
import com.github.jknack.handlebars.io.FileTemplateLoader;
public class Crawler implements Serializable {
private static final long serialVersionUID = 1L;
@ -72,8 +70,6 @@ public class Crawler implements Serializable {
private static final String DATA_CRAWLING_PROCESS = "DataStoreCrawler";
private static final String MAIL_TEMPLATE_NAME = "crawler";
@Resource
protected FessEsClient fessEsClient;
@ -92,11 +88,6 @@ public class Crawler implements Serializable {
@Resource
protected DynamicProperties crawlerProperties;
@Resource
protected MailHelper mailHelper;
public String notificationSubject = "[FESS] Crawler completed";
protected static class Options {
@Option(name = "-s", aliases = "--sessionId", metaVar = "sessionId", usage = "Session ID")
@ -304,15 +295,17 @@ public class Crawler implements Serializable {
// ignore
}
final FileTemplateLoader loader = new FileTemplateLoader(ResourceUtil.getMailTemplatePath(StringUtil.EMPTY).toFile());
final Handlebars handlebars = new Handlebars(loader);
try {
final Template template = handlebars.compile(MAIL_TEMPLATE_NAME);
final Context hbsContext = Context.newContext(dataMap);
final String body = template.apply(hbsContext);
mailHelper.send(toAddresses, notificationSubject, body);
FessConfig fessConfig = ComponentUtil.getComponent(FessConfig.class);
Postbox postbox = ComponentUtil.getComponent(Postbox.class);
CrawlerPostcard.droppedInto(postbox, postcard -> {
postcard.setFrom(fessConfig.getMailFromAddress(), fessConfig.getMailFromName());
postcard.addReplyTo(fessConfig.getMailReturnPath());
Stream.of(toAddresses).forEach(address -> {
postcard.addTo(address);
});
BeanUtil.copyMapToBean(dataMap, postcard);
});
} catch (final Exception e) {
logger.warn("Failed to send the notification.", e);
}

View file

@ -1,79 +0,0 @@
/*
* Copyright 2009-2015 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.fess.helper;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.codelibs.fess.Constants;
import org.codelibs.fess.exception.FessSystemException;
public class MailHelper implements Serializable {
private static final long serialVersionUID = 1L;
public String from = Constants.DEFAULT_FROM_EMAIL;
private final boolean debug = false;
Properties props = new Properties();
public void addProperty(final String key, final String value) {
props.put(key, value);
}
public void send(final String[] toAddresses, final String subject, final String text) {
if (toAddresses == null || toAddresses.length == 0) {
throw new FessSystemException("TO address is empty.");
}
if (debug) {
props.put("mail.debug", Constants.TRUE);
}
final Session session = Session.getInstance(props, null);
session.setDebug(debug);
try {
// create a message
final MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
final InternetAddress[] address = new InternetAddress[toAddresses.length];
for (int i = 0; i < toAddresses.length; i++) {
address[i] = new InternetAddress(toAddresses[i]);
}
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(text);
Transport.send(msg);
} catch (final MessagingException e) {
throw new FessSystemException("Failed to send " + Arrays.toString(toAddresses), e);
}
}
}

View file

@ -509,7 +509,7 @@ public class FessLabels extends ActionMessages {
/** The key of the message: General */
public static final String LABELS_menu_crawl_config = "{labels.menu_crawl_config}";
/** The key of the message: Scheduled Job */
/** The key of the message: Scheduler */
public static final String LABELS_menu_scheduled_job_config = "{labels.menu_scheduled_job_config}";
/** The key of the message: System */
@ -518,7 +518,7 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Index */
public static final String LABELS_menu_document_config = "{labels.menu_document_config}";
/** The key of the message: Design */
/** The key of the message: Page Design */
public static final String LABELS_menu_design = "{labels.menu_design}";
/** The key of the message: Dictionary */
@ -629,6 +629,9 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Help */
public static final String LABELS_HEADER_HELP = "{labels.header.help}";
/** The key of the message: Search... */
public static final String LABELS_SIDEBAR_placeholder_search = "{labels.sidebar.placeholder_search}";
/** The key of the message: Copyright(C) 2009-2015 CodeLibs Project. <span class="br-phone"></span>All Rights Reserved. */
public static final String LABELS_FOOTER_COPYRIGHT = "{labels.footer.copyright}";
@ -1517,7 +1520,7 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Next */
public static final String LABELS_crawling_session_next_page = "{labels.crawling_session_next_page}";
/** The key of the message: Session ID: */
/** The key of the message: Session ID */
public static final String LABELS_crawling_session_session_id_search = "{labels.crawling_session_session_id_search}";
/** The key of the message: Session ID */
@ -2051,7 +2054,7 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Edit */
public static final String LABELS_key_match_button_edit = "{labels.key_match_button_edit}";
/** The key of the message: Design */
/** The key of the message: Page Design */
public static final String LABELS_design_configuration = "{labels.design_configuration}";
/** The key of the message: File Upload */
@ -2273,7 +2276,7 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Crawling Configuration */
public static final String LABELS_wizard_crawling_config_title = "{labels.wizard_crawling_config_title}";
/** The key of the message: Crawling Setting */
/** The key of the message: Crawling Settings */
public static final String LABELS_wizard_crawling_setting_title = "{labels.wizard_crawling_setting_title}";
/** The key of the message: Name */
@ -2333,7 +2336,7 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Skip */
public static final String LABELS_wizard_button_finish = "{labels.wizard_button_finish}";
/** The key of the message: Search Result */
/** The key of the message: Search */
public static final String LABELS_search_list_configuration = "{labels.search_list_configuration}";
/** The key of the message: Type a search query. */
@ -2471,6 +2474,9 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Confirm */
public static final String LABELS_failure_url_link_confirm = "{labels.failure_url_link_confirm}";
/** The key of the message: Delete All */
public static final String LABELS_failure_url_delete_all_link = "{labels.failure_url_delete_all_link}";
/** The key of the message: Do you want to delete all? */
public static final String LABELS_failure_url_delete_all_confirmation = "{labels.failure_url_delete_all_confirmation}";
@ -3607,7 +3613,7 @@ public class FessLabels extends ActionMessages {
/** The key of the message: Fess */
public static final String LABELS_admin_brand_title = "{labels.admin_brand_title}";
/** The key of the message: Fess Dashboard */
/** The key of the message: Dashboard */
public static final String LABELS_admin_dashboard_title = "{labels.admin_dashboard_title}";
/** The key of the message: Toggle navigation */

View file

@ -31,6 +31,12 @@ public interface FessConfig extends FessEnv {
/** The key of the configuration. e.g. true */
String PAGING_PAGE_RANGE_FILL_LIMIT = "paging.page.range.fill.limit";
/** The key of the configuration. e.g. Administrator */
String MAIL_FROM_NAME = "mail.from.name";
/** The key of the configuration. e.g. root@localhost */
String MAIL_FROM_ADDRESS = "mail.from.address";
/**
* Get the value of property as {@link String}.
* @param propertyKey The key of the property. (NotNull)
@ -155,6 +161,21 @@ public interface FessConfig extends FessEnv {
*/
boolean isPagingPageRangeFillLimit();
/**
* Get the value for the key 'mail.from.name'. <br>
* The value is, e.g. Administrator <br>
* comment: From
* @return The value of found property. (NotNull: if not found, exception but basically no way)
*/
String getMailFromName();
/**
* Get the value for the key 'mail.from.address'. <br>
* The value is, e.g. root@localhost <br>
* @return The value of found property. (NotNull: if not found, exception but basically no way)
*/
String getMailFromAddress();
/**
* The simple implementation for configuration.
* @author FreeGen
@ -215,5 +236,13 @@ public interface FessConfig extends FessEnv {
public boolean isPagingPageRangeFillLimit() {
return is(FessConfig.PAGING_PAGE_RANGE_FILL_LIMIT);
}
public String getMailFromName() {
return get(FessConfig.MAIL_FROM_NAME);
}
public String getMailFromAddress() {
return get(FessConfig.MAIL_FROM_ADDRESS);
}
}
}

View file

@ -0,0 +1,268 @@
package org.codelibs.fess.mylasta.mail;
import org.lastaflute.core.mail.LaTypicalPostcard;
import org.lastaflute.core.mail.MPCall;
import org.lastaflute.core.mail.Postbox;
/**
* The postcard for MailFlute on LastaFlute.
* @author FreeGen
*/
public class CrawlerPostcard extends LaTypicalPostcard {
// ===================================================================================
// Definition
// ==========
public static final String PATH = "crawler.dfmail";
// ===================================================================================
// Entry Point
// ===========
public static CrawlerPostcard droppedInto(Postbox postbox, MPCall<CrawlerPostcard> postcardLambda) {
CrawlerPostcard postcard = new CrawlerPostcard();
postcardLambda.write(postcard);
postbox.post(postcard);
return postcard;
}
// ===================================================================================
// Meta Data
// =========
@Override
protected String getBodyFile() {
return PATH;
}
@Override
protected String[] getPropertyNames() {
return new String[] { "hostname", "webFsCrawlStartTime", "webFsCrawlEndTime", "webFsCrawlExecTime", "webFsIndexExecTime",
"webFsIndexSize", "dataCrawlStartTime", "dataCrawlEndTime", "dataCrawlExecTime", "dataIndexExecTime", "dataFsIndexSize",
"commitStartTime", "commitEndTime", "commitExecTime", "optimizeStartTime", "optimizeEndTime", "optimizeExecTime",
"crawlerStartTime", "crawlerEndTime", "crawlerExecTime" };
}
// ===================================================================================
// Postcard Request
// ================
// -----------------------------------------------------
// Mail Address
// ------------
public void setFrom(String from, String personal) {
doSetFrom(from, personal);
}
public void addTo(String to) {
doAddTo(to);
}
public void addTo(String to, String personal) {
doAddTo(to, personal);
}
public void addCc(String cc) {
doAddCc(cc);
}
public void addCc(String cc, String personal) {
doAddCc(cc, personal);
}
public void addBcc(String bcc) {
doAddBcc(bcc);
}
public void addBcc(String bcc, String personal) {
doAddBcc(bcc, personal);
}
public void addReplyTo(String replyTo) {
doAddReplyTo(replyTo);
}
public void addReplyTo(String replyTo, String personal) {
doAddReplyTo(replyTo, personal);
}
// -----------------------------------------------------
// Application Variable
// --------------------
/**
* Set the value of hostname, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param hostname The parameter value of hostname. (NotNull)
*/
public void setHostname(String hostname) {
registerVariable("hostname", hostname);
}
/**
* Set the value of webFsCrawlStartTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param webFsCrawlStartTime The parameter value of webFsCrawlStartTime. (NotNull)
*/
public void setWebFsCrawlStartTime(String webFsCrawlStartTime) {
registerVariable("webFsCrawlStartTime", webFsCrawlStartTime);
}
/**
* Set the value of webFsCrawlEndTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param webFsCrawlEndTime The parameter value of webFsCrawlEndTime. (NotNull)
*/
public void setWebFsCrawlEndTime(String webFsCrawlEndTime) {
registerVariable("webFsCrawlEndTime", webFsCrawlEndTime);
}
/**
* Set the value of webFsCrawlExecTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param webFsCrawlExecTime The parameter value of webFsCrawlExecTime. (NotNull)
*/
public void setWebFsCrawlExecTime(String webFsCrawlExecTime) {
registerVariable("webFsCrawlExecTime", webFsCrawlExecTime);
}
/**
* Set the value of webFsIndexExecTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param webFsIndexExecTime The parameter value of webFsIndexExecTime. (NotNull)
*/
public void setWebFsIndexExecTime(String webFsIndexExecTime) {
registerVariable("webFsIndexExecTime", webFsIndexExecTime);
}
/**
* Set the value of webFsIndexSize, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param webFsIndexSize The parameter value of webFsIndexSize. (NotNull)
*/
public void setWebFsIndexSize(String webFsIndexSize) {
registerVariable("webFsIndexSize", webFsIndexSize);
}
/**
* Set the value of dataCrawlStartTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param dataCrawlStartTime The parameter value of dataCrawlStartTime. (NotNull)
*/
public void setDataCrawlStartTime(String dataCrawlStartTime) {
registerVariable("dataCrawlStartTime", dataCrawlStartTime);
}
/**
* Set the value of dataCrawlEndTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param dataCrawlEndTime The parameter value of dataCrawlEndTime. (NotNull)
*/
public void setDataCrawlEndTime(String dataCrawlEndTime) {
registerVariable("dataCrawlEndTime", dataCrawlEndTime);
}
/**
* Set the value of dataCrawlExecTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param dataCrawlExecTime The parameter value of dataCrawlExecTime. (NotNull)
*/
public void setDataCrawlExecTime(String dataCrawlExecTime) {
registerVariable("dataCrawlExecTime", dataCrawlExecTime);
}
/**
* Set the value of dataIndexExecTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param dataIndexExecTime The parameter value of dataIndexExecTime. (NotNull)
*/
public void setDataIndexExecTime(String dataIndexExecTime) {
registerVariable("dataIndexExecTime", dataIndexExecTime);
}
/**
* Set the value of dataFsIndexSize, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param dataFsIndexSize The parameter value of dataFsIndexSize. (NotNull)
*/
public void setDataFsIndexSize(String dataFsIndexSize) {
registerVariable("dataFsIndexSize", dataFsIndexSize);
}
/**
* Set the value of commitStartTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param commitStartTime The parameter value of commitStartTime. (NotNull)
*/
public void setCommitStartTime(String commitStartTime) {
registerVariable("commitStartTime", commitStartTime);
}
/**
* Set the value of commitEndTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param commitEndTime The parameter value of commitEndTime. (NotNull)
*/
public void setCommitEndTime(String commitEndTime) {
registerVariable("commitEndTime", commitEndTime);
}
/**
* Set the value of commitExecTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param commitExecTime The parameter value of commitExecTime. (NotNull)
*/
public void setCommitExecTime(String commitExecTime) {
registerVariable("commitExecTime", commitExecTime);
}
/**
* Set the value of optimizeStartTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param optimizeStartTime The parameter value of optimizeStartTime. (NotNull)
*/
public void setOptimizeStartTime(String optimizeStartTime) {
registerVariable("optimizeStartTime", optimizeStartTime);
}
/**
* Set the value of optimizeEndTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param optimizeEndTime The parameter value of optimizeEndTime. (NotNull)
*/
public void setOptimizeEndTime(String optimizeEndTime) {
registerVariable("optimizeEndTime", optimizeEndTime);
}
/**
* Set the value of optimizeExecTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param optimizeExecTime The parameter value of optimizeExecTime. (NotNull)
*/
public void setOptimizeExecTime(String optimizeExecTime) {
registerVariable("optimizeExecTime", optimizeExecTime);
}
/**
* Set the value of crawlerStartTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param crawlerStartTime The parameter value of crawlerStartTime. (NotNull)
*/
public void setCrawlerStartTime(String crawlerStartTime) {
registerVariable("crawlerStartTime", crawlerStartTime);
}
/**
* Set the value of crawlerEndTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param crawlerEndTime The parameter value of crawlerEndTime. (NotNull)
*/
public void setCrawlerEndTime(String crawlerEndTime) {
registerVariable("crawlerEndTime", crawlerEndTime);
}
/**
* Set the value of crawlerExecTime, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param crawlerExecTime The parameter value of crawlerExecTime. (NotNull)
*/
public void setCrawlerExecTime(String crawlerExecTime) {
registerVariable("crawlerExecTime", crawlerExecTime);
}
}

View file

@ -0,0 +1,139 @@
package org.codelibs.fess.mylasta.mail;
import org.lastaflute.core.mail.LaTypicalPostcard;
import org.lastaflute.core.mail.MPCall;
import org.lastaflute.core.mail.Postbox;
/**
* The postcard for MailFlute on LastaFlute.
* @author FreeGen
*/
public class EsStatusPostcard extends LaTypicalPostcard {
// ===================================================================================
// Definition
// ==========
public static final String PATH = "es_status.dfmail";
// ===================================================================================
// Entry Point
// ===========
public static EsStatusPostcard droppedInto(Postbox postbox, MPCall<EsStatusPostcard> postcardLambda) {
EsStatusPostcard postcard = new EsStatusPostcard();
postcardLambda.write(postcard);
postbox.post(postcard);
return postcard;
}
// ===================================================================================
// Meta Data
// =========
@Override
protected String getBodyFile() {
return PATH;
}
@Override
protected String[] getPropertyNames() {
return new String[] { "hostname", "server", "statusBefore", "statusAfter", "indexBefore", "indexAfter" };
}
// ===================================================================================
// Postcard Request
// ================
// -----------------------------------------------------
// Mail Address
// ------------
public void setFrom(String from, String personal) {
doSetFrom(from, personal);
}
public void addTo(String to) {
doAddTo(to);
}
public void addTo(String to, String personal) {
doAddTo(to, personal);
}
public void addCc(String cc) {
doAddCc(cc);
}
public void addCc(String cc, String personal) {
doAddCc(cc, personal);
}
public void addBcc(String bcc) {
doAddBcc(bcc);
}
public void addBcc(String bcc, String personal) {
doAddBcc(bcc, personal);
}
public void addReplyTo(String replyTo) {
doAddReplyTo(replyTo);
}
public void addReplyTo(String replyTo, String personal) {
doAddReplyTo(replyTo, personal);
}
// -----------------------------------------------------
// Application Variable
// --------------------
/**
* Set the value of hostname, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param hostname The parameter value of hostname. (NotNull)
*/
public void setHostname(String hostname) {
registerVariable("hostname", hostname);
}
/**
* Set the value of server, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param server The parameter value of server. (NotNull)
*/
public void setServer(String server) {
registerVariable("server", server);
}
/**
* Set the value of statusBefore, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param statusBefore The parameter value of statusBefore. (NotNull)
*/
public void setStatusBefore(String statusBefore) {
registerVariable("statusBefore", statusBefore);
}
/**
* Set the value of statusAfter, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param statusAfter The parameter value of statusAfter. (NotNull)
*/
public void setStatusAfter(String statusAfter) {
registerVariable("statusAfter", statusAfter);
}
/**
* Set the value of indexBefore, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param indexBefore The parameter value of indexBefore. (NotNull)
*/
public void setIndexBefore(String indexBefore) {
registerVariable("indexBefore", indexBefore);
}
/**
* Set the value of indexAfter, used in parameter comment. <br>
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
* @param indexAfter The parameter value of indexAfter. (NotNull)
*/
public void setIndexAfter(String indexAfter) {
registerVariable("indexAfter", indexAfter);
}
}

View file

@ -37,7 +37,6 @@ import org.codelibs.fess.helper.IntervalControlHelper;
import org.codelibs.fess.helper.JobHelper;
import org.codelibs.fess.helper.KeyMatchHelper;
import org.codelibs.fess.helper.LabelTypeHelper;
import org.codelibs.fess.helper.MailHelper;
import org.codelibs.fess.helper.OverlappingHostHelper;
import org.codelibs.fess.helper.PathMappingHelper;
import org.codelibs.fess.helper.QueryHelper;
@ -67,8 +66,6 @@ public final class ComponentUtil {
private static final String INDEX_UPDATER = "indexUpdater";
private static final String MAIL_HELPER = "mailHelper";
private static final String FILE_TYPE_HELPER = "fileTypeHelper";
private static final String EXTRACTOR_FACTORY = "extractorFactory";
@ -216,10 +213,6 @@ public final class ComponentUtil {
return SingletonLaContainer.getComponent(name + JOB_EXECUTOR_SUFFIX);
}
public static MailHelper getMailHelper() {
return SingletonLaContainer.getComponent(MAIL_HELPER);
}
public static FileTypeHelper getFileTypeHelper() {
return SingletonLaContainer.getComponent(FILE_TYPE_HELPER);
}

View file

@ -121,15 +121,6 @@
</component>
<component name="crawlingSessionHelper" class="org.codelibs.fess.helper.CrawlingSessionHelper">
</component>
<component name="mailHelper" class="org.codelibs.fess.helper.MailHelper">
<postConstruct name="addProperty">
<arg>"mail.smtp.host"</arg>
<arg>"localhost"</arg>
</postConstruct>
<!--
<property name="from">"Administrator &lt;root@localhost&gt;"</property>
-->
</component>
<component name="roleQueryHelper" class="org.codelibs.fess.helper.impl.RoleQueryHelperImpl">
<!-- ex. parameter: fessRoles=123%0aadmin -->
<!--

View file

@ -43,3 +43,11 @@ paging.page.range.size = 3
# The option 'fillLimit' of page range for paging
paging.page.range.fill.limit = true
# ----------------------------------------------------------
# Mail
# ------
# From
mail.from.name = Administrator
mail.from.address = root@localhost

View file

@ -25,7 +25,7 @@ time.adjust.time.millis = 0
# Mail
# ------
# Does it send mock mail? (true: no send actually, logging only)
mail.send.mock = true
mail.send.mock = false
# SMTP server settings for main: host:port
mail.smtp.server.main.host.and.port = localhost:25
@ -36,7 +36,6 @@ mail.subject.test.prefix =
# The common return path of all mail
mail.return.path = root@localhost
# ========================================================================================
# DB
# ====

View file

@ -0,0 +1,43 @@
/*
[Crawler Notification]
Crawler notification mail.
*/
subject: [FESS] Crawler completed: /*pmb.hostname*/
>>>
--- Server Info ---
Host Name: /*IF pmb.hostname != null*//*pmb.hostname*//*END*//*IF pmb.hostname == null*/Unknown/*END*/
/*IF pmb.webFsIndexSize != null*/
--- Web/FileSystem Crawler ---
Start Time: /*pmb.webFsCrawlStartTime*/
End Time: /*pmb.webFsCrawlEndTime*/
Exec Time: /*pmb.webFsCrawlExecTime*/ms
--- Web/FileSystem Indexer ---
Exec Time: /*pmb.webFsIndexExecTime*/
Num of Doc: /*pmb.webFsIndexSize*/ docs
/*END*//*IF pmb.dataFsIndexSize != null*/
--- Data Store Crawler ---
Start Time: /*pmb.dataCrawlStartTime*/
End Time: /*pmb.dataCrawlEndTime*/
Exec Time: /*pmb.dataCrawlExecTime*/ms
--- Data Store Indexer ---
Exec Time: /*pmb.dataIndexExecTime*/
Num of Doc: /*pmb.dataFsIndexSize*/ docs
/*END*//*IF pmb.commitExecTime != null*/
--- Indexer(Commit) ---
Start Time: /*pmb.commitStartTime*/
End Time: /*pmb.commitEndTime*/
Exec Time: /*pmb.commitExecTime*/ms
/*END*//*IF pmb.optimizeEndTime*/
--- Indexer(Optimize) ---
Start Time: /*pmb.optimizeStartTime*/
End Time: /*pmb.optimizeEndTime*/
Exec Time: /*pmb.optimizeExecTime*/ms
/*END*/
--- Total ---
Start Time: /*pmb.crawlerStartTime*/
End Time: /*pmb.crawlerEndTime*/
Exec Time: /*pmb.crawlerExecTime*/ms
Status: /*IF pmb.success != null*/Success/*END*//*IF pmb.success == null*/Fail/*END*/

View file

@ -0,0 +1,13 @@
/*
[Crawler Notification]
*/
subject: [FESS] Status Change: /*pmb.hostname*/
>>>
--- Server Info ---
Host Name: /*IF pmb.hostname != null*//*pmb.hostname*//*END*//*IF pmb.hostname == null*/Unknown/*END*/
Elasticsearch: /*pmb.server*/
--- Status ---
/*IF pmb.statusBefore != null*/Status: /*pmb.statusBefore*/ -> /*pmb.statusAfter*//*END*/
/*IF pmb.indexBefore != null*/Index: /*pmb.indexBefore*/ -> /*pmb.indexAfter*//*END*/

View file

@ -1,37 +0,0 @@
--- Server Info ---
{{#if hostname}}Host Name: {{hostname}}{{/if}}
{{#if webFsIndexSize}}
--- Web/FileSystem Crawler ---
Start Time: {{webFsCrawlStartTime}}
End Time: {{webFsCrawlEndTime}}
Exec Time: {{webFsCrawlExecTime}}ms
--- Web/FileSystem Indexer ---
Exec Time: {{webFsIndexExecTime}}
Num of Doc: {{webFsIndexSize}} docs
{{/if}}{{#if dataFsIndexSize}}
--- Data Store Crawler ---
Start Time: {{dataCrawlStartTime}}
End Time: {{dataCrawlEndTime}}
Exec Time: {{dataCrawlExecTime}}ms
--- Data Store Indexer ---
Exec Time: {{dataIndexExecTime}}
Num of Doc: {{dataFsIndexSize}} docs
{{/if}}{{#if commitExecTime}}
--- Indexer(Commit) ---
Start Time: {{commitStartTime}}
End Time: {{commitEndTime}}
Exec Time: {{commitExecTime}}ms
{{/if}}{{#if optimizeEndTime}}
--- Indexer(Optimize) ---
Start Time: {{optimizeStartTime}}
End Time: {{optimizeEndTime}}
Exec Time: {{optimizeExecTime}}ms
{{/if}}
--- Total ---
Start Time: {{crawlerStartTime}}
End Time: {{crawlerEndTime}}
Exec Time: {{crawlerExecTime}}ms
Status: {{#if success}}Success{{else}}Fail{{/if}}

View file

@ -1,8 +0,0 @@
--- Server Info ---
{{#if hostname}}Host Name: {{hostname}}{{/if}}
Solr Server: {{server}}
--- Status ---
{{#if statusBefore}}Status: {{statusBefore}} -> {{statusAfter}}{{/if}}
{{#if indexBefore}}Index: {{indexBefore}} -> {{indexAfter}}{{/if}}