From 8fb611829196c8664910e9a09f1cbb558e72b519 Mon Sep 17 00:00:00 2001 From: Titogelo Date: Wed, 22 Mar 2017 01:16:53 +0100 Subject: [PATCH] #288 weekly digest --- .../org/celstec/arlearn2/api/Messages.java | 4 +- .../celstec/arlearn2/api/NotificationAPI.java | 3 +- .../arlearn2/delegators/MailDelegator.java | 1 + .../arlearn2/delegators/MessageDelegator.java | 32 +++++++++++ .../arlearn2/tasks/TimerSendEmail.java | 54 +++++++++++++++---- 5 files changed, 82 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/celstec/arlearn2/api/Messages.java b/src/main/java/org/celstec/arlearn2/api/Messages.java index 2a2d23e..bf38be7 100644 --- a/src/main/java/org/celstec/arlearn2/api/Messages.java +++ b/src/main/java/org/celstec/arlearn2/api/Messages.java @@ -43,12 +43,14 @@ public String sendMessage(@HeaderParam("Authorization") String token, @POST @Path("/send/email") public String sendReminder(@HeaderParam("Authorization") String token, - @PathParam("account") String account, @DefaultValue("application/json") @HeaderParam("Accept") String accept) { + @PathParam("account") String account, + @DefaultValue("application/json") @HeaderParam("Accept") String accept) { if (!validCredentials(token)) return serialise(getInvalidCredentialsBean(), accept); MailDelegator md = new MailDelegator(token); + String tomail = "suarezfdz86@gmail.com"; md.sendReminders(); return null; diff --git a/src/main/java/org/celstec/arlearn2/api/NotificationAPI.java b/src/main/java/org/celstec/arlearn2/api/NotificationAPI.java index ac90436..5f2ad9b 100644 --- a/src/main/java/org/celstec/arlearn2/api/NotificationAPI.java +++ b/src/main/java/org/celstec/arlearn2/api/NotificationAPI.java @@ -143,7 +143,8 @@ public String testAPN(@PathParam("token") String account, @PathParam("apns") Str @POST @Path("/reminders") public String sendReminder(@HeaderParam("Authorization") String token, - @PathParam("account") String account, @DefaultValue("application/json") @HeaderParam("Accept") String accept) { + @PathParam("account") String account, + @DefaultValue("application/json") @HeaderParam("Accept") String accept) { if (!validCredentials(token)) return serialise(getInvalidCredentialsBean(), accept); MailDelegator md = new MailDelegator(token); diff --git a/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java b/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java index 7344027..9933e82 100644 --- a/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java +++ b/src/main/java/org/celstec/arlearn2/delegators/MailDelegator.java @@ -37,6 +37,7 @@ public class MailDelegator extends GoogleDelegator { private static final Logger logger = Logger.getLogger(ActionDelegator.class.getName()); + private static final long MILLIS_PER_DAY = 1 * 5 * 60 * 1000L; // 5 minutes public MailDelegator(String authtoken) { super(authtoken); diff --git a/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java b/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java index 15105be..ed1eea1 100644 --- a/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java +++ b/src/main/java/org/celstec/arlearn2/delegators/MessageDelegator.java @@ -7,7 +7,11 @@ import org.celstec.arlearn2.jdo.manager.MessageManager; import org.celstec.arlearn2.jdo.manager.ThreadManager; +import java.util.logging.Logger; + public class MessageDelegator extends GoogleDelegator { + private static final Logger logger = Logger.getLogger(MessageDelegator.class.getName()); + private static final long MILLIS_PER_DAY = 1 * 5 * 60 * 1000L; // 1 minute public MessageDelegator(Service service) { super(service); @@ -26,9 +30,37 @@ public Message createMessage(Message message) { } Message returnMessage = MessageManager.createMessage(message); + /* + * Angel + * + * Added task which starts a timer of 1 minutes. + * If five minutes have passed after the last message the task will send and email + * to all the account that participate in the inquiry that did not login in the + * last 1 minutes. + * */ + +// Queue q = QueueFactory.getDefaultQueue(); +//// Queue q = QueueFactory.getQueue(String.valueOf(message.getRunId())); +// q.purge(); +// +//// q.deleteTask(String.valueOf(message.getRunId())); +// +// +// +// q.add(TaskOptions.Builder.withUrl("/setTimerEmailNotification").countdownMillis(MILLIS_PER_DAY) +// .param("token", this.getAuthToken()) +// .param("name", String.valueOf(message.getRunId()))); + RunAccessDelegator rad = new RunAccessDelegator(this); NotificationDelegator nd = new NotificationDelegator(this); for (RunAccess ra : rad.getRunAccess(message.getRunId()).getRunAccess()) { + + /* + * 1) new message is created + * 2) create a task, which sends an email after 2 hours + * 3) send the email only for users that did not login in the last two hours + * */ + nd.broadcast(returnMessage, ra.getAccount()); } diff --git a/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java b/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java index 6c69a77..24daa86 100644 --- a/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java +++ b/src/main/java/org/celstec/arlearn2/tasks/TimerSendEmail.java @@ -18,32 +18,66 @@ ******************************************************************************/ package org.celstec.arlearn2.tasks; -import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; +import org.celstec.arlearn2.beans.account.Account; +import org.celstec.arlearn2.beans.run.RunAccess; +import org.celstec.arlearn2.delegators.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import org.celstec.arlearn2.tasks.beans.GenericBean; +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; public class TimerSendEmail extends HttpServlet { - private static final Logger log = Logger.getLogger(TimerSendEmail.class.getName()); + private static final long MILLIS_PER_DAY = 1 * 1 * 60 * 1000L; // 1 minute + private static String token; + private static Long runId; + private static final Logger logger = Logger.getLogger(TimerSendEmail.class.getName()); + protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException { try { - BeanDeserialiser bd = new BeanDeserialiser(request); - GenericBean gb = bd.deserialize(); - gb.run(); + + token = request.getParameter("token"); + runId = Long.parseLong(request.getParameter("name")); + + RunAccessDelegator rad = new RunAccessDelegator(token); + AccountDelegator ad = new AccountDelegator(token); + NotificationDelegator nd = new NotificationDelegator(token); + MailDelegator md = new MailDelegator(token); + + for(RunAccess ra: rad.getRunAccess(runId).getRunAccess()) { + + Account account1 = ad.getContactDetails(ra.getAccount()); + + DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + Date date = new Date(); + System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43 + + md.sendReminders(); + + // if(Math.abs(account1.getLastModificationDate() - date.getTime()) < MILLIS_PER_DAY){ + // System.out.print("["+account1.getEmail()+"] "+account1.getName()+" login less than 1 minutes ago"); + // }else{ + // System.out.print("["+account1.getEmail()+"] "+account1.getName()+" login more than 1 minutes ago"); + // } + } + + } catch (Exception e) { - log.log(Level.SEVERE, e.getMessage(), e); + logger.log(Level.SEVERE, e.getMessage(), e); } } + + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }