📄 schedulingmanager.java
字号:
//Jahr
Node yearNode = root.selectSingleNode("//events/event/year");
int year = -1;
if(yearNode != null && yearNode.getText() != null)
year = Integer.parseInt(yearNode.getText());
try
{
AlarmEntry alarmEntry = new AlarmEntry(name,minutes,hours,dayOfMonth,months,dayOfWeek,year,alarm);
alarmEntry.setRingInNewThead();
if(log.isDebugEnabled())
log.debug("adding event: "+ alarmEntry);
alarmManager.addAlarm(alarmEntry);
}
catch (PastDateException e)
{
if(log.isInfoEnabled())
log.info("ignoring old event: " + name);
}
}
}
}
/**
* This method reads for all users the job and event jobs for the time period.
* Creates for every job a ReminderMail and a MailJob.
* @param startDate the start date of the time period
* @param endDate the end date of the time period
*/
public void loadReminderJobsfromDB(Date startDate, Date endDate)
{
if(!Settings.getInstance().isMailReminderEnabled())
{
if(log.isDebugEnabled())
log.debug("reminder mail disabled");
return;
}
if(log.isDebugEnabled()){
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm");
log.debug("loading jobs from: " + sdf.format(startDate.getTime()) + " to " + sdf.format(endDate.getTime()));
}
SchedulingManager manager = SchedulingManager.getInstance();
List<UserVO> users = new UserDAO().getAll();
for(UserVO user : users)
{
if(log.isDebugEnabled())
log.debug("loading jobs for: " + user.getUserName());
UserConfiguration userConf = new UserConfiguration(user);
EventBeanCalculator calc = new EventBeanCalculator(user.getCalendar(),startDate,endDate);
calc.setWithReminderDate(true);
List<EventBean> eventBeanList = calc.getEventBeans();
if(log.isDebugEnabled())
log.debug(eventBeanList.size() + " event jobs found");
for(EventBean event : eventBeanList)
{
if(event.getReminderDate() != null && event.getReminderDate().before(endDate) && event.getReminderDate().after(startDate))
{
if(log.isDebugEnabled())
log.debug("generating job for event: " + event);
EventReminderMail reminderMail;
try
{
reminderMail = new EventReminderMail();
}
catch (AddressException e1)
{
log.warn("cannot create reminder mail, incorrect sender address",e1);
return;
}
reminderMail.setEvent(event.getEvent());
try
{
reminderMail.setUser(user);
MailJob mailJob = new MailJob(reminderMail);
for(Object obj : manager.getAlarmManager().getAllAlarms())
{
AlarmEntry alarmEntry = (AlarmEntry) obj;
String name;
if(event.getRecurrenceNumber() != null)
name = "EVENT"+event.getEvent().getId()+"."+event.getRecurrenceNumber();
else
name = "EVENT" + event.getEvent().getId();
if(alarmEntry.getName().equals(name)){
if(log.isDebugEnabled())
log.debug("removing mail job for: " + event);
manager.getAlarmManager().removeAlarm(alarmEntry);
}
}
try
{
if(log.isInfoEnabled())
log.info("adding mailJob for: " + event);
String name;
if(event.getRecurrenceNumber() != null)
name = "EVENT"+event.getEvent().getId()+"."+event.getRecurrenceNumber();
else
name = "EVENT" + event.getEvent().getId();
AlarmEntry alarmEntry = new AlarmEntry(name,event.getReminderDate(),mailJob);
alarmEntry.setRingInNewThead();
manager.getAlarmManager().addAlarm(alarmEntry);
}
catch (PastDateException e)
{
if(log.isInfoEnabled())
log.info("ignoring old event alarm: " + event);
}
}catch(NoValidSenderException e)
{
log.warn("no person for user: " + user);
}
}
else
{
if(log.isInfoEnabled())
log.info("no reminder date of old reminder date for: " + event);
}
}
List<JobVO> jobs = new JobDAO().getByUser(user, startDate, endDate);
if(log.isDebugEnabled())
log.debug(jobs.size() + " job jobs found");
for(JobVO job : jobs)
{
if(log.isDebugEnabled())
log.debug("generating jobs for job: " + job);
JobReminderMail reminderMail;
try
{
reminderMail = new JobReminderMail();
}
catch (AddressException e1)
{
log.warn("cannot create reminder mail, incorrect sender address",e1);
return;
}
reminderMail.setJob(job);
try
{
reminderMail.setUser(user);
MailJob mailJob = new MailJob(reminderMail);
for(Object obj : manager.getAlarmManager().getAllAlarms())
{
AlarmEntry alarmEntry = (AlarmEntry) obj;
if(alarmEntry.getName().equals("EVENT"+job.getId())){
if(log.isDebugEnabled())
log.debug("removing mail job for: " + job);
manager.getAlarmManager().removeAlarm(alarmEntry);
}
}
try
{
if(log.isInfoEnabled())
log.info("adding mailJob for: " + job);
Calendar reminderDate = GregorianCalendar.getInstance();
reminderDate.setTime(job.getDueDate());
reminderDate.add(Calendar.MINUTE, -1 * Settings.getInstance().getAlarmBeforeJob());
manager.getAlarmManager().addAlarm("EVENT"+job.getId(),reminderDate.getTime(),mailJob);
}
catch (PastDateException e)
{
if(log.isInfoEnabled())
log.info("ignoring old event alarm: " + job);
}
}
catch (NoValidSenderException e1)
{
log.warn("no person for user: " + job.getAssignedUser());
}
}
}
}
private int[] getChildEntries(Element parent, String s)
{
List entryList = parent.selectNodes(s);
int dates[] = new int[entryList.size()];
if(entryList.size() == 0)
{
dates = new int[1];
dates[0] = -1;
}
else
{
int i = 0;
for(Object tmp : entryList){
Element element2 = (Element) tmp;
dates[i++] = Integer.parseInt(element2.getText());
}
}
return dates;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -