2011-03-10 36 views
2

我们在我们的Web应用程序中有一个日历。事件可以添加到日历中,事件将具有一些开始日期和结束日期。如何在Java中创建自己的日历提醒?

活动还可以提醒。因此,在添加事件时,如果用户决定通过提醒电子邮件通知事件,则用户可以在事件中设置提醒值。类似于我们在Outlook

例如,事件名称:每周会议

开始时间:10年3月1日AM

提醒:1小时(也可以是15分钟,30分钟,1个小时,2小时,1天, 2天等)。

因此,在这种情况下,应该在事件发生之前(即1小时前)向用户发送电子邮件。

数据库中的事件表具有事件名称,开始日期,提醒。

如何在Java中实现这个?

+0

我建议给我们看一些代码。 – peterh 2015-09-19 16:33:35

回答

1

如果您不想使用外部调度程序,则可以使用Java Timer。您需要实现TimerTask接口并使用Timer对其进行调度,以满足您需要的任何频率。 TimerTask应该简单地查询数据库以获取所有即将发生的事件并发送电子邮件。

要获取所有即将发生的事件,使用正确的SQL语法数据库 -

WHERE(START_DATE - 今天)< REMINDER_ADVANCE

要发送电子邮件,使用Java mail API

+0

我们将使用石英和弹簧集成来安排通知电子邮件。真正的问题是准确地获取即将发生的事件。什么才是正确的查询来获得事件通知? – ashishjmeshram 2011-03-10 10:58:19

+0

@rahulmohan我必须为每个reminder_advances运行单独的查询吗?即查询是否在未来15分钟内有事件,另一个查询为30分钟等等,为期1天,2天等等? – ashishjmeshram 2011-03-10 11:02:49

+0

@Ashish:不,你只需要一个查询“SELECT * FROM EVENTS WHERE START_DATE - SYSDATE rahulmohan 2011-03-10 11:37:40

0

您可能想要运行预定的作业来检查事件和提醒,并在必要时发送电子邮件。

如果您使用JBoss等应用服务器,您可以使用Quartz scheduler(JBoss通常包含石英版本)。然后将作业设置为以最低的提醒粒度运行,例如每15分钟一班。

1

现代方式:您可以将您的网络应用程序与某些云提醒服务(Google日历,RTM,ToodleDo等)集成。Google日历的日历服务具有Java API,其他API也有用。

+0

现在使用完全不同的东西是不可能的。所以我们将不得不继续我们所拥有的并试图实现它。 :( – ashishjmeshram 2011-03-10 11:05:56

+0

我并没有完全不同,你可以通过API将你的网站wtth整合到google中,例如google,所以你的用户仍然会使用你的网站,但是你的网站会使用谷歌作为后端提醒引擎。 – 2011-03-10 12:20:42