001/*
002 * Copyright 2017 the original author or authors.
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *          https://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016
017package org.springframework.batch.item.mail.builder;
018
019import java.util.List;
020
021import org.springframework.batch.item.mail.DefaultMailErrorHandler;
022import org.springframework.batch.item.mail.MailErrorHandler;
023import org.springframework.batch.item.mail.SimpleMailMessageItemWriter;
024import org.springframework.mail.MailSender;
025import org.springframework.util.Assert;
026
027/**
028 * Creates a fully qualified SimpleMailMessageItemWriter.
029 *
030 * @author Glenn Renfro
031 *
032 * @since 4.0
033 */
034
035public class SimpleMailMessageItemWriterBuilder {
036
037        private MailSender mailSender;
038
039        private MailErrorHandler mailErrorHandler = new DefaultMailErrorHandler();
040
041        /**
042         * A {@link MailSender} to be used to send messages in
043         * {@link SimpleMailMessageItemWriter#write(List)}.
044         *
045         * @param mailSender strategy for sending simple mails.
046         * @return this instance for method chaining.
047         * @see SimpleMailMessageItemWriter#setMailSender(MailSender)
048         */
049        public SimpleMailMessageItemWriterBuilder mailSender(MailSender mailSender) {
050                this.mailSender = mailSender;
051                return this;
052        }
053
054        /**
055         * The handler for failed messages. Defaults to a {@link DefaultMailErrorHandler}.
056         *
057         * @param mailErrorHandler the mail error handler to set.
058         * @return this instance for method chaining.
059         * @see SimpleMailMessageItemWriter#setMailErrorHandler(MailErrorHandler)
060         */
061        public SimpleMailMessageItemWriterBuilder mailErrorHandler(MailErrorHandler mailErrorHandler) {
062                this.mailErrorHandler = mailErrorHandler;
063                return this;
064        }
065
066        /**
067         * Returns a fully constructed {@link SimpleMailMessageItemWriter}.
068         *
069         * @return a new {@link SimpleMailMessageItemWriter}
070         */
071        public SimpleMailMessageItemWriter build() {
072                Assert.notNull(this.mailSender, "A mailSender is required");
073
074                SimpleMailMessageItemWriter writer = new SimpleMailMessageItemWriter();
075                writer.setMailSender(this.mailSender);
076                if (mailErrorHandler != null) {
077                        writer.setMailErrorHandler(this.mailErrorHandler);
078                }
079
080                return writer;
081        }
082}