diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailNotificationDAO.java b/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailNotificationDAO.java
index 57cdf2671..2aad7ebc9 100644
--- a/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailNotificationDAO.java
+++ b/libreplan-business/src/main/java/org/libreplan/business/email/daos/EmailNotificationDAO.java
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.business.email.daos;
import org.libreplan.business.common.daos.GenericDAOHibernate;
@@ -7,6 +26,8 @@ import org.springframework.stereotype.Repository;
import java.util.List;
/**
+ * Dao for {@link EmailNotification}
+ *
* Created by
* @author Vova Perebykivskiy
* on 19.10.15.
@@ -18,4 +39,17 @@ public class EmailNotificationDAO extends GenericDAOHibernate getAll() {
return list(EmailNotification.class);
}
+
+ @Override
+ public boolean deleteAll() {
+ List notifications = list(EmailNotification.class);
+ for (Object item : notifications){
+ getSession().delete(item);
+ }
+ getSession().getTransaction().commit();
+
+ if ( list(EmailNotification.class).size() == 0 ) return true;
+ return false;
+ }
+
}
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 a927d3dc7..df4751ff5 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
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.business.email.daos;
import org.libreplan.business.common.daos.GenericDAOHibernate;
@@ -7,6 +26,8 @@ import org.springframework.stereotype.Repository;
import java.util.List;
/**
+ * DAO for {@link EmailTemplate}
+ *
* Created by
* @author Vova Perebykivskiy
* on 24.09.15.
@@ -24,6 +45,7 @@ public class EmailTemplateDAO extends GenericDAOHibernate i
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){}
@@ -36,6 +58,7 @@ public class EmailTemplateDAO extends GenericDAOHibernate i
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){}
diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailNotificationDAO.java b/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailNotificationDAO.java
index 6e19ac1d0..5b4a545a1 100644
--- a/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailNotificationDAO.java
+++ b/libreplan-business/src/main/java/org/libreplan/business/email/daos/IEmailNotificationDAO.java
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.business.email.daos;
import org.libreplan.business.common.daos.IGenericDAO;
@@ -6,11 +25,13 @@ import org.libreplan.business.email.entities.EmailNotification;
import java.util.List;
/**
+ * Contract for {@link EmailNotificationDAO}
+ *
* Created by
* @author Vova Perebykivskiy
* on 19.10.15.
- *
*/
public interface IEmailNotificationDAO extends IGenericDAO {
List getAll();
+ boolean deleteAll();
}
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 dd43b5f14..57acd30a9 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
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.business.email.daos;
import org.libreplan.business.common.daos.IGenericDAO;
@@ -7,6 +26,7 @@ import java.util.List;
/**
* DAO interface for the EmailTemplate entity.
+ * Contract for {@link EmailTemplateDAO}
*
* Created by
* @author Vova Perebykivskiy
diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailNotification.java b/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailNotification.java
index fd550a702..817fb4dc2 100644
--- a/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailNotification.java
+++ b/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailNotification.java
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.business.email.entities;
import org.libreplan.business.common.BaseEntity;
@@ -5,11 +24,12 @@ import org.libreplan.business.common.BaseEntity;
import org.libreplan.business.planner.entities.TaskElement;
import org.libreplan.business.resources.entities.Resource;
-
import java.util.Date;
/**
- * EmailNotification entity representing table: notification_queue
+ * EmailNotification entity representing table: notification_queue.
+ * This class is intended to work as a Hibernate component.
+ * It represents the Email notification to be send to user.
*
* Created by
* @author Vova Perebykivskiy
diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplate.java b/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplate.java
index bafdb32ed..a4f6d2c10 100644
--- a/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplate.java
+++ b/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplate.java
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.business.email.entities;
import org.libreplan.business.common.BaseEntity;
@@ -5,6 +24,8 @@ import org.libreplan.business.settings.entities.Language;
/**
* EmailTemplate entity, represents a template that LibrePlan user may use.
+ * This class is intended to work as a Hibernate component.
+ * It represents the E-mail template to be modified by admin and send to user.
*
* Created by
* @author Vova Perebykivskiy
diff --git a/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplateEnum.java b/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplateEnum.java
index 53d51407a..1402115fa 100644
--- a/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplateEnum.java
+++ b/libreplan-business/src/main/java/org/libreplan/business/email/entities/EmailTemplateEnum.java
@@ -1,9 +1,28 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.business.email.entities;
import static org.libreplan.business.i18n.I18nHelper._;
/**
- * Available E-mail templates
+ * Available E-mail templates.
*
* Created by
* @author Vova Perebykivskiy
diff --git a/libreplan-webapp/pom.xml b/libreplan-webapp/pom.xml
index 029df0928..f80cf8816 100644
--- a/libreplan-webapp/pom.xml
+++ b/libreplan-webapp/pom.xml
@@ -11,6 +11,7 @@
LibrePlan Web Client Module
+
reports
@@ -71,6 +72,7 @@
+
userguide
@@ -195,6 +197,7 @@
+
i18n
diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/ISendEmail.java b/libreplan-webapp/src/main/java/org/libreplan/importers/ISendEmail.java
index cff3fb483..7fe5cbba0 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/importers/ISendEmail.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/importers/ISendEmail.java
@@ -1,15 +1,33 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.importers;
-import java.util.List;
/**
+ * Sends E-mail to users with data that storing in notification_queue table
+ *
* Created by
* @author Vova Perebykivskiy
* on 13.10.15.
- *
*/
public interface ISendEmail {
void sendEmail();
-
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmail.java b/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmail.java
index cb85023a5..9b651ae0a 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmail.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmail.java
@@ -1,5 +1,23 @@
-package org.libreplan.importers;
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package org.libreplan.importers;
import org.libreplan.business.common.daos.IConnectorDAO;
import org.libreplan.business.common.entities.Connector;
@@ -21,15 +39,21 @@ import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
-// TODO not importing all packages
-import javax.mail.*;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Transport;
+import javax.mail.Session;
+import javax.mail.PasswordAuthentication;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
-// TODO not importing all packages
-import java.util.*;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
/**
+ * Sends E-mail to users with data that storing in notification_queue table
+ *
* Created by
* @author Vova Perebykivskiy
* on 13.10.15.
@@ -54,16 +78,8 @@ public class SendEmail implements ISendEmail {
private List emailTemplates;
-
-
@Override
public void sendEmail() {
- /*
- // TODO
- 1. check all added classes to identity (Licenses, annotations, comments, ...)
- 2. the mvn compile flags -Ddefault.passwordsControl=false -Ddefault.exampleUsersDisabled=false are used to compile the demo version of LibrePlan.
- There must also be a flag like "sendingEmail" that can be set to false to make sure that the demo edition will not become the worlds biggest spammer.
- */
notifications = emailNotificationModel.getAll();
@@ -90,7 +106,6 @@ public class SendEmail implements ISendEmail {
// Modify text that will be composed
- //List predefinedCommandsForTemplateTaskAssignedToResource;
String text = currentEmailTemplate.getContent();
if ( type.equals(EmailTemplateEnum.TEMPLATE_TASK_ASSIGNED_TO_RESOURCE) ){
@@ -115,7 +130,6 @@ public class SendEmail implements ISendEmail {
String psswrd = null;
for (int i = 0; i < emailConnectorProperties.size(); i++){
- if (emailConnectorProperties.get(i).getValue() != null)
switch (i){
case 1: {
protocol = emailConnectorProperties.get(1).getValue();
@@ -148,15 +162,14 @@ public class SendEmail implements ISendEmail {
Properties properties = new Properties();
if ( protocol.equals("STARTTLS") ) {
+ properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", host);
- properties.put("mail.smtp.socketFactory.port", "465");
+ properties.put("mail.smtp.socketFactory.port", port);
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.auth", "true");
- properties.put("mail.smtp.port", "465");
+ properties.put("mail.smtp.port", port);
}
else if ( protocol.equals("SMTP") ) {
- properties.put("mail.smtp.auth", "true");
- properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", port);
}
@@ -164,7 +177,8 @@ public class SendEmail implements ISendEmail {
final String username = usrnme;
final String password = psswrd;
- Session mailSession = Session.getDefaultInstance(properties,
+ /* It is very important to use Session.getInstance instead of Session.getDefaultInstance */
+ Session mailSession = Session.getInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
@@ -172,28 +186,27 @@ public class SendEmail implements ISendEmail {
});
// Send message
- try{
- MimeMessage message = new MimeMessage(mailSession);
- // TODO check from field
- message.setFrom(new InternetAddress(sender));
- message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver));
+ try{
+ MimeMessage message = new MimeMessage(mailSession);
- String subject = currentEmailTemplate.getSubject();
- message.setSubject(subject);
+ message.setFrom(new InternetAddress(sender));
+ message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver));
- message.setText(text);
+ String subject = currentEmailTemplate.getSubject();
+ message.setSubject(subject);
- // TODO delete me
- mailSession.setDebug(true);
+ message.setText(text);
- Transport.send(message);
+ Transport.send(message);
- }catch (MessagingException e){throw new RuntimeException(e);}
+ }catch (MessagingException e){throw new RuntimeException(e);}
}
+
private void deleteAllNotificationsAfterSending(){
-
+ emailNotificationModel.deleteAll();
}
+
private List getEmailConnectorProperties() {
Connector connector = connectorDAO.findUniqueByName("E-mail");
@@ -202,6 +215,7 @@ public class SendEmail implements ISendEmail {
return properties;
}
+
private EmailTemplate findCurrentEmailTemplate(EmailTemplateEnum templateEnum, Locale locale){
emailTemplates = emailTemplateModel.getAll();
for (EmailTemplate item : emailTemplates)
@@ -209,6 +223,7 @@ public class SendEmail implements ISendEmail {
return item;
return null;
}
+
private Worker getCurrentWorker(Long resourceID){
List workerList = workerModel.getWorkers();
for(int i = 0; i < workerList.size(); i++)
diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmailJob.java b/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmailJob.java
index cb36b7517..fa7dab5b8 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmailJob.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/importers/SendEmailJob.java
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.importers;
import org.quartz.JobExecutionContext;
@@ -6,6 +25,8 @@ import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
/**
+ * Sends E-mail to users with data that storing in notification_queue table
+ *
* Created by
* @author Vova Perebykivskiy
* on 13.10.15.
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 b33ad48aa..791c43203 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
@@ -23,9 +23,23 @@ package org.libreplan.web.common;
import static org.libreplan.web.I18nHelper._;
-import java.util.*;
-// TODO not importing all packages
-import javax.mail.*;
+import java.util.List;
+import java.util.ConcurrentModificationException;
+import java.util.Comparator;
+import java.util.Properties;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.Map;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Arrays;
+
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.AuthenticationFailedException;
+import javax.mail.MessagingException;
+
+
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
@@ -63,8 +77,27 @@ import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.SelectEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
-// TODO not importing all packages
-import org.zkoss.zul.*;
+
+
+import org.zkoss.zul.ListitemRenderer;
+import org.zkoss.zul.Listbox;
+import org.zkoss.zul.Grid;
+import org.zkoss.zul.Combobox;
+import org.zkoss.zul.Intbox;
+import org.zkoss.zul.Textbox;
+import org.zkoss.zul.Radiogroup;
+import org.zkoss.zul.Listitem;
+import org.zkoss.zul.Row;
+import org.zkoss.zul.Constraint;
+import org.zkoss.zul.RowRenderer;
+import org.zkoss.zul.Comboitem;
+import org.zkoss.zul.Radio;
+import org.zkoss.zul.Button;
+import org.zkoss.zul.Label;
+import org.zkoss.zul.Rows;
+import org.zkoss.zul.SimpleListModel;
+import org.zkoss.zul.Messagebox;
+
import org.zkoss.zul.api.Window;
import org.zkoss.zul.impl.InputElement;
@@ -118,6 +151,10 @@ public class ConfigurationController extends GenericForwardComposer {
private Combobox protocolsCombobox;
+ private Textbox emailUsernameTextbox;
+
+ private Textbox emailPasswordTextbox;
+
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
@@ -202,32 +239,38 @@ public class ConfigurationController extends GenericForwardComposer {
}
public void save() throws InterruptedException {
- ConstraintChecker.isValid(configurationWindow);
- if (checkValidEntitySequenceRows()) {
- try {
- configurationModel.confirm();
- configurationModel.init();
- messages.showMessage(Level.INFO, _("Changes saved"));
- if (getSelectedConnector() != null
- && !configurationModel
- .scheduleOrUnscheduleJobs(getSelectedConnector())) {
- messages.showMessage(
- Level.ERROR,
- _("Scheduling or unscheduling of jobs for this connector is not completed"));
+
+ if ( getSelectedConnector().getName().equals("E-mail") && emailUsernamePasswordIsEmpty() == true) {
+ messages.showMessage(Level.ERROR, _("E-mail username/password - empty"));
+ } else {
+ ConstraintChecker.isValid(configurationWindow);
+ if (checkValidEntitySequenceRows()) {
+ try {
+ configurationModel.confirm();
+ configurationModel.init();
+ messages.showMessage(Level.INFO, _("Changes saved"));
+ if (getSelectedConnector() != null
+ && !configurationModel
+ .scheduleOrUnscheduleJobs(getSelectedConnector())) {
+ messages.showMessage(
+ Level.ERROR,
+ _("Scheduling or unscheduling of jobs for this connector is not completed"));
+ }
+ reloadWindow();
+ reloadEntitySequences();
+ reloadConnectors();
+ } catch (ValidationException e) {
+ messages.showInvalidValues(e);
+ } catch (ConcurrentModificationException e) {
+ messages.showMessage(Level.ERROR, e.getMessage());
+ configurationModel.init();
+ reloadWindow();
+ reloadEntitySequences();
+ reloadConnectors();
}
- reloadWindow();
- reloadEntitySequences();
- reloadConnectors();
- } catch (ValidationException e) {
- messages.showInvalidValues(e);
- } catch (ConcurrentModificationException e) {
- messages.showMessage(Level.ERROR, e.getMessage());
- configurationModel.init();
- reloadWindow();
- reloadEntitySequences();
- reloadConnectors();
}
}
+
}
public void cancel() throws InterruptedException {
@@ -1132,7 +1175,7 @@ public class ConfigurationController extends GenericForwardComposer {
Util.appendLabel(row, _(property.getKey()));
- // FIXME this is not perfect solution for future
+ // FIXME this is not perfect solution
if ( property.getKey().equals("Protocol") ) appendValueCombobox(row, property);
else appendValueTextbox(row, property);
}
@@ -1157,6 +1200,7 @@ public class ConfigurationController extends GenericForwardComposer {
property.setValue(value);
}
});
+
if ( property.getKey().equals(
PredefinedConnectorProperties.PASSWORD) ||
property.getKey().equals(
@@ -1164,6 +1208,13 @@ public class ConfigurationController extends GenericForwardComposer {
textbox.setType("password");
}
+ // Need for method emailUsernamePasswordIsEmpty()
+ if ( property.getKey().equals(
+ PredefinedConnectorProperties.EMAIL_USERNAME) ) emailUsernameTextbox = textbox;
+
+ if ( property.getKey().equals(
+ PredefinedConnectorProperties.EMAIL_PASSWORD) ) emailPasswordTextbox = textbox;
+
row.appendChild(textbox);
}
@@ -1218,49 +1269,7 @@ public class ConfigurationController extends GenericForwardComposer {
row.appendChild(combobox);
// Need for testing E-mail connection
- protocolsCombobox= combobox;
-
-
-
-
- /*final Combobox combobox = new Combobox();
- combobox.setWidth("400px");
-
-
- // TODO make get/set
-
- Util.bind(combobox, new Util.Getter() {
-
- @Override
- public Comboitem get() {
- Comboitem comboitem = new Comboitem();
- comboitem.setLabel("SMTP");
- return comboitem;
- }
- }, new Util.Setter() {
-
- @Override
- public void set(Comboitem value) {
- property.setValue("comboitem" *//*value.getLabel()*//*);
- value.setLabel(property.getValue());
- }
- });
-
-
- Comboitem comboitem = new Comboitem();
- comboitem.setLabel("SMTP");
-
- Comboitem comboitem1 = new Comboitem();
- comboitem1.setLabel("STARTTLS");
-
- combobox.getItems().add(comboitem);
- combobox.getItems().add(comboitem1);
- combobox.setSelectedIndex(0);
-
- row.appendChild(combobox);
-
- // Need for testing E-mail connection
- protocolsCombobox= combobox;*/
+ protocolsCombobox = combobox;
}
public Constraint checkPropertyValue(
@@ -1269,27 +1278,33 @@ public class ConfigurationController extends GenericForwardComposer {
return new Constraint() {
@Override
public void validate(Component comp, Object value) {
- if (key.equals(PredefinedConnectorProperties.ACTIVATED)) {
- if (!((String) value).equalsIgnoreCase("Y")
- && !((String) value).equalsIgnoreCase("N")) {
+ if ( key.equals(PredefinedConnectorProperties.ACTIVATED) ) {
+ if ( !((String) value).equalsIgnoreCase("Y")
+ && !((String) value).equalsIgnoreCase("N") ) {
throw new WrongValueException(comp, _(
"Only {0} allowed", "Y/N"));
}
- } else if (key
+ } else if ( key
.equals(PredefinedConnectorProperties.SERVER_URL)
|| key.equals(PredefinedConnectorProperties.USERNAME)
|| key.equals(PredefinedConnectorProperties.PASSWORD)
- || key.equals(PredefinedConnectorProperties.JIRA_HOURS_TYPE)) {
+ || key.equals(PredefinedConnectorProperties.JIRA_HOURS_TYPE) ) {
((InputElement) comp).setConstraint("no empty:"
+ _("cannot be empty"));
- } else if (key
+ } else if ( key
.equals(PredefinedConnectorProperties.TIM_NR_DAYS_TIMESHEET)
- || key.equals(PredefinedConnectorProperties.TIM_NR_DAYS_ROSTER)) {
- if (!isNumeric((String) value)) {
+ || key.equals(PredefinedConnectorProperties.TIM_NR_DAYS_ROSTER) ) {
+ if ( !isNumeric((String) value) ) {
throw new WrongValueException(comp,
_("Only digits allowed"));
}
}
+
+ // Validate E-mail connector
+ if ( key.equals(PredefinedConnectorProperties.HOST) ||
+ key.equals(PredefinedConnectorProperties.PORT) ||
+ key.equals(PredefinedConnectorProperties.EMAIL_SENDER) )
+ ((InputElement) comp).setConstraint("no empty:" + _("cannot be empty"));
}
};
}
@@ -1306,4 +1321,16 @@ public class ConfigurationController extends GenericForwardComposer {
};
}
+ private boolean emailUsernamePasswordIsEmpty(){
+
+ if ( protocolsCombobox.getSelectedItem().getLabel().equals("STARTTLS") &&
+ emailUsernameTextbox.getValue() != null &&
+ emailPasswordTextbox.getValue() != null &&
+ emailUsernameTextbox.getValue().length() != 0 &&
+ emailPasswordTextbox.getValue().length() != 0 )
+ return false;
+
+ else return true;
+ }
+
}
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailNotificationModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailNotificationModel.java
index ab05a8d7c..49d6c3a2a 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailNotificationModel.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/EmailNotificationModel.java
@@ -1,12 +1,31 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.web.email;
import org.libreplan.business.common.exceptions.ValidationException;
-import org.libreplan.business.email.daos.EmailNotificationDAO;
+
import org.libreplan.business.email.daos.IEmailNotificationDAO;
-import org.libreplan.business.email.entities.EmailTemplate;
+
import org.libreplan.business.email.entities.EmailTemplateEnum;
import org.libreplan.business.email.entities.EmailNotification;
-import org.libreplan.business.planner.entities.Task;
+
import org.libreplan.business.planner.entities.TaskElement;
import org.libreplan.business.resources.entities.Resource;
import org.springframework.beans.factory.annotation.Autowired;
@@ -19,10 +38,11 @@ import java.util.Date;
import java.util.List;
/**
+ * Model for operations related to {@link EmailNotification}.
+ *
* Created by
* @author Vova Perebykivskiy
* on 21.10.15.
- *
*/
@Service
@@ -56,6 +76,11 @@ public class EmailNotificationModel implements IEmailNotificationModel {
return emailNotificationDAO.getAll();
}
+ @Override
+ public boolean deleteAll() {
+ return emailNotificationDAO.deleteAll();
+ }
+
@Override
public void setType(EmailTemplateEnum type) {
this.emailNotification.setType(type);
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 5926e3852..903207579 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
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.web.email;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
@@ -18,8 +37,10 @@ import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import org.zkoss.zul.Textbox;
-// TODO not importing all packages
-import java.util.*;
+import java.util.List;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import static org.libreplan.web.I18nHelper._;
@@ -85,6 +106,7 @@ public class EmailTemplateController extends GenericForwardComposer{
public Language getSelectedLanguage() {
return emailTemplateModel.getLanguage();
}
+
public void setSelectedLanguage(Language language){
emailTemplateModel.setLanguage(language);
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 d66901ede..c54985bf2 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
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.web.email;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
@@ -15,6 +34,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
+ * Model for operations related to {@link EmailTemplate}.
+ *
* Created by
* @author Vova Perebykivskiy
* on 25.09.15.
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailNotificationModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailNotificationModel.java
index a91d6d60e..f4ed94648 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailNotificationModel.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/email/IEmailNotificationModel.java
@@ -1,9 +1,27 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.web.email;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.email.entities.EmailTemplateEnum;
import org.libreplan.business.email.entities.EmailNotification;
-import org.libreplan.business.planner.entities.Task;
import org.libreplan.business.planner.entities.TaskElement;
import org.libreplan.business.resources.entities.Resource;
@@ -11,6 +29,8 @@ import java.util.Date;
import java.util.List;
/**
+ * Contract for {@link EmailNotification}
+ *
* Created by
* @author Vova Perebykivskiy
* on 21.10.15.
@@ -21,6 +41,8 @@ public interface IEmailNotificationModel {
List getAll();
+ boolean deleteAll();
+
void setType(EmailTemplateEnum type);
void setUpdated(Date date);
void setResource(Resource resource);
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 3ecd3712b..09f9f0491 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
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibrePlan
+ *
+ * Copyright (C) 2015 LibrePlan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
package org.libreplan.web.email;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
@@ -9,7 +28,7 @@ import org.libreplan.business.email.entities.EmailTemplateEnum;
import java.util.List;
/**
- * Model E-mail Templates
+ * Contract for {@link EmailTemplate}
*
* Created by
* @author Vova Perebykivskiy
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java
index dc5a5bc2b..ba4ff4365 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java
@@ -85,7 +85,6 @@ import org.zkoss.zk.ui.util.Composer;
public class MultipleTabsPlannerController implements Composer,
IGlobalViewEntryPoints {
- // TODO i18n
public static String WELCOME_URL = "-- no URL provided --";
private final class TabWithLoadingFeedback extends TabProxy {
diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/taskedition/TaskPropertiesController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/taskedition/TaskPropertiesController.java
index e6435340f..4934390af 100644
--- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/taskedition/TaskPropertiesController.java
+++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/taskedition/TaskPropertiesController.java
@@ -433,7 +433,7 @@ public class TaskPropertiesController extends GenericForwardComposer {
}
public void accept() {
- addNewRowToEmailNotificationeWithEmailTemplateTypeOne();
+ EmailNotificationAddNewWithTaskAssignedToResource();
boolean ok = true;
if (currentTaskElement instanceof ITaskPositionConstrained) {
@@ -730,8 +730,7 @@ public class TaskPropertiesController extends GenericForwardComposer {
return Util.getMoneyFormat();
}
-
- private void addNewRowToEmailNotificationeWithEmailTemplateTypeOne(){
+ private void EmailNotificationAddNewWithTaskAssignedToResource(){
if ( allocationResult != null ) {
@@ -771,7 +770,6 @@ public class TaskPropertiesController extends GenericForwardComposer {
emailNotificationModel.confirmSave();
}
-
}
}
}
diff --git a/libreplan-webapp/src/main/resources/i18n/keys.pot b/libreplan-webapp/src/main/resources/i18n/keys.pot
index b8c60726b..b50895554 100644
--- a/libreplan-webapp/src/main/resources/i18n/keys.pot
+++ b/libreplan-webapp/src/main/resources/i18n/keys.pot
@@ -9233,4 +9233,12 @@ msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/common/entities/PredefinedConnectorProperties.java:56
msgid "Protocol"
-msgstr ""
\ No newline at end of file
+msgstr ""
+
+#: libreplan-webapp/src/main/webapp/email/email_templates.zul:56
+msgid "Possible content values:"
+msgstr ""
+
+#: libreplan-webapp/src/main/webapp/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController:90
+msgid "-- no URL provided --"
+msgstr ""
diff --git a/libreplan-webapp/src/main/webapp/email/email_templates.zul b/libreplan-webapp/src/main/webapp/email/email_templates.zul
index 2d24cb818..bf96c6eaa 100644
--- a/libreplan-webapp/src/main/webapp/email/email_templates.zul
+++ b/libreplan-webapp/src/main/webapp/email/email_templates.zul
@@ -1,3 +1,23 @@
+
+
+
@@ -55,7 +75,6 @@
rows="15" width="400px;"
tabindex="11"/>
-