From d856912acf8f658656283a3ddde7d52dc5c454bf Mon Sep 17 00:00:00 2001 From: Vova Perebykivskiy Date: Fri, 4 Dec 2015 17:27:39 +0200 Subject: [PATCH 1/3] Email functionality bug fixes. --- .../common/entities/PredefinedConnectors.java | 1 + .../business/email/daos/EmailTemplateDAO.java | 28 +++++++++++++++---- .../email/daos/IEmailTemplateDAO.java | 3 ++ .../web/common/ConfigurationController.java | 2 -- .../web/email/EmailTemplateController.java | 9 ++++++ .../web/email/EmailTemplateModel.java | 12 ++++++++ .../web/email/IEmailTemplateModel.java | 3 ++ 7 files changed, 50 insertions(+), 8 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectors.java b/libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectors.java index 1d44db2ad..b647d1c0d 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectors.java +++ b/libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectors.java @@ -57,6 +57,7 @@ public enum PredefinedConnectors { ConnectorProperty.create(PredefinedConnectorProperties.PROTOCOL, ""), ConnectorProperty.create(PredefinedConnectorProperties.HOST, ""), ConnectorProperty.create(PredefinedConnectorProperties.PORT, ""), + ConnectorProperty.create(PredefinedConnectorProperties.EMAIL_SENDER, ""), ConnectorProperty.create(PredefinedConnectorProperties.EMAIL_USERNAME, ""), ConnectorProperty.create(PredefinedConnectorProperties.EMAIL_PASSWORD, "") diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java b/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java index df4751ff5..bae685a2a 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java @@ -59,7 +59,7 @@ public class EmailTemplateDAO extends GenericDAOHibernate i List emailTemplates = list(EmailTemplate.class); for ( int i = 0; i < emailTemplates.size(); i++) // language.ordinal.equals(3) - English - if ( emailTemplates.get(i).getType().ordinal() == 0 && emailTemplates.get(i).getLanguage().ordinal() == 3) + if ( emailTemplates.get(i).getType().ordinal() == 0 && emailTemplates.get(i).getLanguage().ordinal() == 3 ) return emailTemplates.get(i).getSubject(); }catch (Exception e){} @@ -70,9 +70,8 @@ public class EmailTemplateDAO extends GenericDAOHibernate i @Override public String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal) { for (int i = 0; i < list(EmailTemplate.class).size(); i++) - if (list(EmailTemplate.class).get(i).getLanguage().ordinal() == languageOrdinal && - // emailTemplateTypeOrdinal + 1, because first value is 0 - list(EmailTemplate.class).get(i).getType().ordinal() == emailTemplateTypeOrdinal + 1) + if ( list(EmailTemplate.class).get(i).getLanguage().ordinal() == languageOrdinal && + list(EmailTemplate.class).get(i).getType().ordinal() == emailTemplateTypeOrdinal ) return list(EmailTemplate.class).get(i).getContent(); return ""; } @@ -80,11 +79,28 @@ public class EmailTemplateDAO extends GenericDAOHibernate i @Override public String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal) { for (int i = 0; i < list(EmailTemplate.class).size(); i++) - // emailTemplateTypeOrdinal + 1, because first value is 0 - if ( list(EmailTemplate.class).get(i).getType().ordinal() == emailTemplateTypeOrdinal + 1 && + if ( list(EmailTemplate.class).get(i).getType().ordinal() == emailTemplateTypeOrdinal && list(EmailTemplate.class).get(i).getLanguage().ordinal() == languageOrdinal ) return list(EmailTemplate.class).get(i).getContent(); return ""; } + @Override + public String getSubjectBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal) { + for (int i = 0; i < list(EmailTemplate.class).size(); i++) + if ( list(EmailTemplate.class).get(i).getLanguage().ordinal() == languageOrdinal && + list(EmailTemplate.class).get(i).getType().ordinal() == emailTemplateTypeOrdinal ) + return list(EmailTemplate.class).get(i).getSubject(); + return ""; + } + + @Override + public String getSubjectBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal) { + for (int i = 0; i < list(EmailTemplate.class).size(); i++) + if ( list(EmailTemplate.class).get(i).getType().ordinal() == emailTemplateTypeOrdinal && + list(EmailTemplate.class).get(i).getLanguage().ordinal() == languageOrdinal ) + return list(EmailTemplate.class).get(i).getSubject(); + return ""; + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java b/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java index 57acd30a9..a48eca74e 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java @@ -41,4 +41,7 @@ public interface IEmailTemplateDAO extends IGenericDAO{ String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal); String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal); + + String getSubjectBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal); + String getSubjectBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java index d2187e6cc..2eb97e7e8 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java @@ -1325,7 +1325,6 @@ public class ConfigurationController extends GenericForwardComposer { } private boolean isEmailFieldsValid(){ - if ( protocolsCombobox.getSelectedItem().getLabel().equals("STARTTLS") && emailUsernameTextbox.getValue() != null && emailPasswordTextbox.getValue() != null && @@ -1336,5 +1335,4 @@ public class ConfigurationController extends GenericForwardComposer { else return false; } - } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java index 69e4b82aa..91dc01026 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java @@ -108,6 +108,7 @@ public class EmailTemplateController extends GenericForwardComposer{ public void setSelectedLanguage(Language language){ emailTemplateModel.setLanguage(language); + getSubjectDataBySelectedLanguage(); getContentDataBySelectedLanguage(); } @@ -139,6 +140,7 @@ public class EmailTemplateController extends GenericForwardComposer{ public void setSelectedEmailTemplateEnum(EmailTemplateEnum emailTemplateEnum){ emailTemplateModel.setEmailTemplateEnum(emailTemplateEnum); + getSubjectDataBySelectedTemplate(); getContentDataBySelectedTemplate(); } @@ -177,4 +179,11 @@ public class EmailTemplateController extends GenericForwardComposer{ private void getContentDataBySelectedTemplate(){ contentsTextbox.setValue( emailTemplateModel.getContentBySelectedTemplate( getSelectedEmailTemplateEnum().ordinal(), getSelectedLanguage().ordinal() ) ); } + + private void getSubjectDataBySelectedLanguage(){ + subjectTextbox.setValue(emailTemplateModel.getSubjectBySelectedLanguage(getSelectedLanguage().ordinal(), getSelectedEmailTemplateEnum().ordinal())); + } + private void getSubjectDataBySelectedTemplate(){ + subjectTextbox.setValue( emailTemplateModel.getContentBySelectedTemplate( getSelectedEmailTemplateEnum().ordinal(), getSelectedLanguage().ordinal() ) ); + } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java index c54985bf2..1045864b6 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java @@ -157,6 +157,18 @@ public class EmailTemplateModel implements IEmailTemplateModel { public String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal) { return emailTemplateDAO.getContentBySelectedTemplate(emailTemplateTypeOrdinal, languageOrdinal); } + + @Override + @Transactional + public String getSubjectBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal) { + return emailTemplateDAO.getSubjectBySelectedLanguage(languageOrdinal, emailTemplateTypeOrdinal); + } + + @Override + @Transactional + public String getSubjectBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal) { + return emailTemplateDAO.getSubjectBySelectedTemplate(emailTemplateTypeOrdinal, languageOrdinal); + } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java index 09f9f0491..7138f7e02 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java @@ -46,6 +46,9 @@ public interface IEmailTemplateModel { String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal); String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal); + String getSubjectBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal); + String getSubjectBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal); + String getContent(); void setContent(String content); From b8b05c03fc2ff062e1b7120b9f11e2a865370411 Mon Sep 17 00:00:00 2001 From: Vova Perebykivskiy Date: Mon, 7 Dec 2015 15:08:53 +0200 Subject: [PATCH 2/3] Changes to email functionality. --- .../business/email/daos/EmailTemplateDAO.java | 28 ------------- .../email/daos/IEmailTemplateDAO.java | 3 -- .../web/email/EmailTemplateController.java | 40 ++++++++++++++----- .../web/email/EmailTemplateModel.java | 23 ++++++----- .../web/email/IEmailTemplateModel.java | 3 -- 5 files changed, 41 insertions(+), 56 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java b/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java index bae685a2a..efebb758a 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailTemplateDAO.java @@ -40,33 +40,6 @@ public class EmailTemplateDAO extends GenericDAOHibernate i return list(EmailTemplate.class); } - @Override - public String initializeContent() { - try{ - List emailTemplates = list(EmailTemplate.class); - for ( int i = 0; i < emailTemplates.size(); i++) - // language.ordinal.equals(3) - English - if ( emailTemplates.get(i).getType().ordinal() == 0 && emailTemplates.get(i).getLanguage().ordinal() == 3) - return emailTemplates.get(i).getContent(); - }catch (Exception e){} - - return " "; - } - - @Override - public String initializeSubject() { - try{ - List emailTemplates = list(EmailTemplate.class); - for ( int i = 0; i < emailTemplates.size(); i++) - // language.ordinal.equals(3) - English - if ( emailTemplates.get(i).getType().ordinal() == 0 && emailTemplates.get(i).getLanguage().ordinal() == 3 ) - return emailTemplates.get(i).getSubject(); - }catch (Exception e){} - - return " "; - } - - @Override public String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal) { for (int i = 0; i < list(EmailTemplate.class).size(); i++) @@ -102,5 +75,4 @@ public class EmailTemplateDAO extends GenericDAOHibernate i return list(EmailTemplate.class).get(i).getSubject(); return ""; } - } diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java b/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java index a48eca74e..ab2fe1635 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailTemplateDAO.java @@ -36,9 +36,6 @@ public interface IEmailTemplateDAO extends IGenericDAO{ List getAll(); - String initializeContent(); - String initializeSubject(); - String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal); String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java index 91dc01026..5d48f8ff3 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateController.java @@ -24,9 +24,14 @@ import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.settings.entities.Language; import org.libreplan.business.email.entities.EmailTemplateEnum; +import org.libreplan.business.users.daos.IUserDAO; +import org.libreplan.business.users.entities.User; import org.libreplan.web.common.IMessagesForUser; import org.libreplan.web.common.Level; import org.libreplan.web.common.MessagesForUser; +import org.libreplan.web.security.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.zkoss.zk.ui.Component; @@ -52,8 +57,12 @@ import static org.libreplan.web.I18nHelper._; */ public class EmailTemplateController extends GenericForwardComposer{ - private IEmailTemplateModel emailTemplateModel; + @Autowired + private IUserDAO userDAO; + private User user; + + private IEmailTemplateModel emailTemplateModel; private IMessagesForUser messages; @@ -79,8 +88,14 @@ public class EmailTemplateController extends GenericForwardComposer{ super.doAfterCompose(comp); comp.setVariable("emailTemplateController", this, true); messages = new MessagesForUser(messagesContainer); - contentsTextbox.setValue(getInitialContentData()); - subjectTextbox.setValue(getInitialSubjectData()); + + // Set default template and language for user + // And content and subject for it + setUser(); + setSelectedLanguage(user.getApplicationLanguage()); + + getContentDataBySelectedLanguage(); + getSubjectDataBySelectedLanguage(); } public boolean save(){ @@ -162,28 +177,31 @@ public class EmailTemplateController extends GenericForwardComposer{ public void setSelectedContent(){ emailTemplateModel.setContent(contentsTextbox.getValue()); } - public String getInitialContentData(){ - return emailTemplateModel.initializeContent(); - } public void setSelectedSubject(){ emailTemplateModel.setSubject(subjectTextbox.getValue()); } - public String getInitialSubjectData(){ - return emailTemplateModel.initializeSubject(); - } private void getContentDataBySelectedLanguage(){ contentsTextbox.setValue(emailTemplateModel.getContentBySelectedLanguage(getSelectedLanguage().ordinal(), getSelectedEmailTemplateEnum().ordinal())); } private void getContentDataBySelectedTemplate(){ - contentsTextbox.setValue( emailTemplateModel.getContentBySelectedTemplate( getSelectedEmailTemplateEnum().ordinal(), getSelectedLanguage().ordinal() ) ); + contentsTextbox.setValue( emailTemplateModel.getContentBySelectedTemplate(getSelectedEmailTemplateEnum().ordinal(), getSelectedLanguage().ordinal()) ); } private void getSubjectDataBySelectedLanguage(){ subjectTextbox.setValue(emailTemplateModel.getSubjectBySelectedLanguage(getSelectedLanguage().ordinal(), getSelectedEmailTemplateEnum().ordinal())); } private void getSubjectDataBySelectedTemplate(){ - subjectTextbox.setValue( emailTemplateModel.getContentBySelectedTemplate( getSelectedEmailTemplateEnum().ordinal(), getSelectedLanguage().ordinal() ) ); + subjectTextbox.setValue( emailTemplateModel.getContentBySelectedTemplate(getSelectedEmailTemplateEnum().ordinal(), getSelectedLanguage().ordinal()) ); + } + + @Transactional + private void setUser(){ + try { + user = userDAO.findByLoginName(SecurityUtils.getSessionUserLoginName()); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java index 1045864b6..adbb0dba8 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailTemplateModel.java @@ -24,7 +24,10 @@ import org.libreplan.business.settings.entities.Language; import org.libreplan.business.email.daos.IEmailTemplateDAO; import org.libreplan.business.email.entities.EmailTemplate; import org.libreplan.business.email.entities.EmailTemplateEnum; +import org.libreplan.business.users.daos.IUserDAO; +import org.libreplan.business.users.entities.User; import org.libreplan.web.common.concurrentdetection.OnConcurrentModification; +import org.libreplan.web.security.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -48,6 +51,9 @@ public class EmailTemplateModel implements IEmailTemplateModel { @Autowired private IEmailTemplateDAO emailTemplateDAO; + @Autowired + private IUserDAO userDAO; + private Language language = Language.ENGLISH_LANGUAGE; private EmailTemplateEnum emailTemplateEnum = EmailTemplateEnum.TEMPLATE_TASK_ASSIGNED_TO_RESOURCE; @@ -56,6 +62,8 @@ public class EmailTemplateModel implements IEmailTemplateModel { private String subject; + private User user; + private EmailTemplate emailTemplate = new EmailTemplate(); @Override @@ -103,11 +111,14 @@ public class EmailTemplateModel implements IEmailTemplateModel { } @Override + @Transactional public Language getLanguage() { return this.emailTemplate.getLanguage(); } @Override - public void setLanguage(Language language){ this.emailTemplate.setLanguage(language);} + public void setLanguage(Language language){ + this.emailTemplate.setLanguage(language); + } @Override public EmailTemplateEnum getEmailTemplateEnum() { @@ -136,16 +147,6 @@ public class EmailTemplateModel implements IEmailTemplateModel { this.emailTemplate.setSubject(subject); } - @Override - @Transactional - public String initializeContent() { - return emailTemplateDAO.initializeContent(); - } - - @Override - @Transactional - public String initializeSubject() { return emailTemplateDAO.initializeSubject(); } - @Override @Transactional public String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal) { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java index 7138f7e02..74740e622 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailTemplateModel.java @@ -40,9 +40,6 @@ public interface IEmailTemplateModel { List getAll(); - String initializeContent(); - String initializeSubject(); - String getContentBySelectedLanguage(int languageOrdinal, int emailTemplateTypeOrdinal); String getContentBySelectedTemplate(int emailTemplateTypeOrdinal, int languageOrdinal); From b5b7851cfbeb30cccef9410feba8ed261dc627db Mon Sep 17 00:00:00 2001 From: Vova Perebykivskiy Date: Mon, 7 Dec 2015 16:04:38 +0200 Subject: [PATCH 3/3] Fix Configuration Controller bug. --- .../java/org/libreplan/web/common/ConfigurationController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java index 2eb97e7e8..5e62a9ed4 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/ConfigurationController.java @@ -242,7 +242,8 @@ public class ConfigurationController extends GenericForwardComposer { public void save() throws InterruptedException { - if ( getSelectedConnector().getName().equals("E-mail") && isEmailFieldsValid() == false) { + if ( getSelectedConnector() != null && getSelectedConnector().getName().equals("E-mail") && + isEmailFieldsValid() == false ) { messages.showMessage(Level.ERROR, _("Check username/password/sender fields")); } else { ConstraintChecker.isValid(configurationWindow);