package ro.nextreports.server.web.core.settings; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.spring.injection.annot.SpringBean; import org.springframework.mail.javamail.JavaMailSenderImpl; import ro.nextreports.server.domain.Settings; import ro.nextreports.server.service.StorageService; import ro.nextreports.server.web.NextServerApplication; import ro.nextreports.server.web.core.validation.JcrNameValidator; import ro.nextreports.server.web.core.validation.MailServerValidator; public class DistributionSettingsPanel extends AbstractSettingsPanel { @SpringBean private StorageService storageService; private String oldMailIp; private Integer oldMailPort; public DistributionSettingsPanel(String id) { super(id); } @Override protected void addComponents(Form<Settings> form) { final TextField<String> mailServerIpField = new TextField<String>("mailServer.ip"); form.add(mailServerIpField); final TextField<Integer> mailServerPortField = new TextField<Integer>("mailServer.port"); form.add(mailServerPortField); final TextField<String> mailServerSenderField = new TextField<String>("mailServer.from"); form.add(mailServerSenderField); final TextField<String> mailServerUsernameField = new TextField<String>("mailServer.username"); form.add(mailServerUsernameField); final PasswordTextField mailServerPasswordField = new PasswordTextField("mailServer.password"); mailServerPasswordField.setResetPassword(false); mailServerPasswordField.setRequired(false); form.add(mailServerPasswordField); final CheckBox tlsCheckField = new CheckBox("mailServer.enableTls"); form.add(tlsCheckField); form.add(new MailServerValidator(new FormComponent[] {mailServerIpField, mailServerPortField, mailServerSenderField})); final TextField<String> distributorDatePatternField = new TextField<String>("distributor.datePattern"); distributorDatePatternField.add(new JcrNameValidator(getString("Settings.general.distributorDatePattern.error"))); form.add(distributorDatePatternField); final TextField<String> distributorTimePatternField = new TextField<String>("distributor.timePattern"); distributorTimePatternField.add(new JcrNameValidator(getString("Settings.general.distributorTimePattern.error"))); form.add(distributorTimePatternField); Settings settings = storageService.getSettings(); oldMailPort = settings.getMailServer().getPort(); oldMailIp = settings.getMailServer().getIp(); } protected void afterChange(Form form, AjaxRequestTarget target) { Settings settings = (Settings) form.getModelObject(); JavaMailSenderImpl mailSender = (JavaMailSenderImpl) NextServerApplication.get().getSpringBean("mailSender"); if (!oldMailIp.equals(settings.getMailServer().getIp()) || !oldMailPort.equals(settings.getMailServer().getPort())) { mailSender.setHost(settings.getMailServer().getIp()); mailSender.setPort(settings.getMailServer().getPort()); } mailSender.setPassword(settings.getMailServer().getPassword()); mailSender.setUsername(settings.getMailServer().getUsername()); mailSender.getJavaMailProperties().put("mail.smtp.starttls.enable", settings.getMailServer().getEnableTls()); } }