Package com.agiletec.plugins.jpmail.apsadmin.mail

Source Code of com.agiletec.plugins.jpmail.apsadmin.mail.SmtpConfigAction

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando is a free software;
* You can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpmail.apsadmin.mail;

import com.agiletec.aps.system.ApsSystemUtils;
import com.agiletec.aps.system.exception.ApsSystemException;
import com.agiletec.apsadmin.system.BaseAction;
import static com.agiletec.apsadmin.system.BaseAction.FAILURE;
import com.agiletec.plugins.jpmail.aps.services.JpmailSystemConstants;
import com.agiletec.plugins.jpmail.aps.services.mail.IMailManager;
import com.agiletec.plugins.jpmail.aps.services.mail.MailConfig;
import static com.opensymphony.xwork2.Action.SUCCESS;
import java.io.InputStream;
import org.apache.commons.lang3.StringUtils;
import org.entando.entando.aps.system.services.userprofile.model.IUserProfile;

public class SmtpConfigAction extends BaseAction implements ISmtpConfigAction {

  @Override
  public String edit() {
    try {
      MailConfig config = this.getMailManager().getMailConfig();
      this.populateForm(config);
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "edit");
      return FAILURE;
    }
    return SUCCESS;
  }

  @Override
  public String save() {
    try {
      MailConfig config = this.prepareConfig();
      this.getMailManager().updateMailConfig(config);
      this.addActionMessage(this.getText("message.eMailConfig.savedConfirm"));
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "save");
      return FAILURE;
    }
    return SUCCESS;
  }

  @Override
  public String testSmtp() {
    MailConfig config;
    try {
      config = this.prepareConfig();
      boolean smtpServerTest = this.getMailManager().smtpServerTest(config);
      if (!smtpServerTest) {
        this.addActionError(this.getText("note.smtp.ko"));
      } else {
        this.addActionMessage(this.getText("note.smtp.ok"));
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "testSmtp");
      return FAILURE;
    }
    return SUCCESS;
  }

  @Override
  public String testMail() {
    if (hasEmailCurrentUser()) {
      IUserProfile userProfile = (IUserProfile) this.getCurrentUser().getProfile();
      String mail = (userProfile).getValue(userProfile.getMailAttributeName()).toString();
      String mailText = this.getText("test.mail.subject");
      String mailSubject = this.getText("test.mail.text");
      String[] mailAddresses = {mail};
      try {
        this.getMailManager().sendMailForTest(mailText, mailSubject, mailAddresses, "CODE1");
        this.addActionMessage(this.getText("note.mail.ok"));
      } catch (Throwable t) {
        this.addActionError(this.getText("note.mail.ko"));
        ApsSystemUtils.logThrowable(t, this, "testMail");
      }
    } else {
      this.addActionError(this.getText("note.mail.missing"));
    }
    return SUCCESS;
  }

  /**
   * Populate the action with the content of the given MailConfig.
   *
   * @param config The configuration used to populate the action.
   */
  protected void populateForm(MailConfig config) {
    if (config != null) {
      this.setActive(config.isActive());
      this.setDebug(config.isDebug());
      this.setSmtpHost(config.getSmtpHost());
      this.setSmtpPort(config.getSmtpPort());
      this.setSmtpTimeout(config.getSmtpTimeout());
      this.setSmtpUserName(config.getSmtpUserName());
      this.setSmtpPassword(config.getSmtpPassword());
      this.setSmtpProtocol(config.getSmtpProtocol());
    } else {
      config = new MailConfig();
    }
  }

  /**
   * Prepares a MailConfig starting from the action form fields.
   *
   * @return a MailConfig starting from the action form fields.
   * @throws ApsSystemException In case of errors.
   */
  protected MailConfig prepareConfig() throws ApsSystemException {
    MailConfig config = this.getMailManager().getMailConfig();
    config.setActive(this.isActive());
    config.setDebug(this.isDebug());
    config.setSmtpHost(this.getSmtpHost());
    config.setSmtpPort(this.getSmtpPort());
    config.setSmtpTimeout(this.getSmtpTimeout());
    config.setSmtpProtocol(this.getSmtpProtocol());
    if (StringUtils.isBlank(this.getSmtpUserName()) && StringUtils.isBlank(this.getSmtpPassword())) {
      config.setSmtpUserName(this.getSmtpUserName());
      config.setSmtpPassword(this.getSmtpPassword());
    } else {
      if (StringUtils.isNotBlank(this.getSmtpPassword())) {
        config.setSmtpPassword(this.getSmtpPassword());
      }
      if (!config.getSmtpUserName().equals(this.getSmtpUserName())) {
        config.setSmtpUserName(this.getSmtpUserName());
      }
    }
    return config;
  }

  public boolean hasEmailCurrentUser() {
    IUserProfile userProfile = (IUserProfile) this.getCurrentUser().getProfile();
    if (null != userProfile) {
      Object mailAttribute = userProfile.getValue(userProfile.getMailAttributeName());
      if (null != mailAttribute && StringUtils.isNotBlank(mailAttribute.toString())) {
        return true;
      }
    }
    return false;
  }

  /*
   * Validation Service method
   */
  public boolean isValidProtocol() {
    return (null != this.getSmtpProtocol()
        && this.getSmtpProtocol().intValue() >= 0
        && this.getSmtpProtocol().intValue() <= 2);
  }

  public boolean isActive() {
    return _active;
  }

  public void setActive(boolean active) {
    this._active = active;
  }

  /**
   * Returns the smtp host name.
   *
   * @return The smtp host name.
   */
  public String getSmtpHost() {
    return _smtpHost;
  }

  /**
   * Sets the smtp host name.
   *
   * @param smtpHost The smtp host name.
   */
  public void setSmtpHost(String smtpHost) {
    this._smtpHost = smtpHost;
  }

  /**
   * Return the smtp port.
   *
   * @return The smtp port.
   */
  public Integer getSmtpPort() {
    return _smtpPort;
  }

  /**
   * Sets the smtp port.
   *
   * @param port The smtp port.
   */
  public void setSmtpPort(Integer smtpPort) {
    this._smtpPort = smtpPort;
  }

  /**
   * Return the smtp timeout.
   *
   * @return The smtp timeout.
   */
  public Integer getSmtpTimeout() {
    return _smtpTimeout;
  }

  /**
   * Sets the smtp timeout. If 0 or null uses default.
   *
   * @param port The smtp timeout.
   */
  public void setSmtpTimeout(Integer smtpTimeout) {
    this._smtpTimeout = smtpTimeout;
  }

  /**
   * Returns the smtp username.
   *
   * @return The smtp username.
   */
  public String getSmtpUserName() {
    return _smtpUserName;
  }

  /**
   * Sets the smtp username.
   *
   * @param smtpUserName The smtp username.
   */
  public void setSmtpUserName(String smtpUserName) {
    this._smtpUserName = smtpUserName;
  }

  /**
   * Returns the smtp password.
   *
   * @return The smtp password.
   */
  public String getSmtpPassword() {
    return _smtpPassword;
  }

  /**
   * Sets the smtp password.
   *
   * @param smtpPassword The smtp password.
   */
  public void setSmtpPassword(String smtpPassword) {
    this._smtpPassword = smtpPassword;
  }

  /**
   * Returns the debug flag, used to trace debug informations.
   *
   * @return The debug flag.
   */
  public boolean isDebug() {
    return _debug;
  }

  /**
   * Sets the debug flag, used to trace debug informations.
   *
   * @param debug The debug flag.
   */
  public void setDebug(boolean debug) {
    this._debug = debug;
  }

  /**
   * Returns the IMailManager service.
   *
   * @return The IMailManager service.
   */
  public IMailManager getMailManager() {
    return _mailManager;
  }

  /**
   * Set method for Spring bean injection.<br /> Sets the IMailManager
   * service.
   *
   * @param mailManager The IMailManager service.
   */
  public void setMailManager(IMailManager mailManager) {
    this._mailManager = mailManager;
  }

  /**
   * Set the transport security layer protocol
   *
   * @param protocol
   */
  public void setSmtpProtocol(Integer smtpProtocol) {
    this._smtpProtocol = smtpProtocol;
  }

  /**
   * Get the transport security layer protocol
   *
   * @param protocol
   */
  public Integer getSmtpProtocol() {
    return _smtpProtocol;
  }

  public InputStream getInputStream() {
    return _inputStream;
  }

  public void setInputStream(InputStream inputStream) {
    this._inputStream = inputStream;
  }
  private boolean _active;
  private String _smtpHost;
  private Integer _smtpPort;
  private Integer _smtpTimeout;
  private String _smtpUserName;
  private String _smtpPassword;
  private Integer _smtpProtocol;
  private boolean _debug;
  private IMailManager _mailManager;
  private InputStream _inputStream;
}
TOP

Related Classes of com.agiletec.plugins.jpmail.apsadmin.mail.SmtpConfigAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.