openmeetings(八)

2021SC@SDUSC

一.前言

上篇文章我们了解了一下notifier的源代码,今天我们继续来看下一个子目录下quartz

二.目录结构


quartz下包含scheduler和room两个子目录,
其中room下只有一个文件,封装了对invitation的操作

三.代码分析

private void sendInvitionLink(Appointment a, MeetingMember mm, MessageType type, boolean ical) throws Exception  {User owner = a.getOwner();String invitorName = owner.getFirstname() + " " + owner.getLastname();TimeZone tz = getTimeZone(mm.getUser());SubjectEmailTemplate t;switch (type) {case Cancel:t = CanceledAppointmentTemplate.get(mm.getUser(), a, tz, invitorName);break;case Create:t = CreatedAppointmentTemplate.get(mm.getUser(), a, tz, invitorName);break;case Update:default:t = UpdatedAppointmentTemplate.get(mm.getUser(), a, tz, invitorName);break;}sendInvitationLink(mm.getInvitation(), type, t.getSubject(), t.getEmail(), ical);}

创建不同类型的appointment ,然后发送出去,我们来看看童敏的sendInvitationLink的另一个方法

@Overridepublic void sendInvitationLink(Invitation i, MessageType type, String subject, String message, boolean ical) throws Exception {String invitationLink = null;if (type != MessageType.Cancel) {IApplication app = ensureApplication(1L);invitationLink = app.getOmInvitationLink(i);}User owner = i.getInvitedBy();String invitorName = owner.getFirstname() + " " + owner.getLastname();String template = InvitationTemplate.getEmail(i.getInvitee(), invitorName, message, invitationLink);String email = i.getInvitee().getAddress().getEmail();String replyToEmail = owner.getAddress().getEmail();if (ical) {String username = i.getInvitee().getLogin();boolean isOwner = owner.getId().equals(i.getInvitee().getId());IcalHandler handler = new IcalHandler(MessageType.Cancel == type ? IcalHandler.ICAL_METHOD_CANCEL : IcalHandler.ICAL_METHOD_REQUEST);Map<String, String> attendeeList = handler.getAttendeeData(email, username, isOwner);List<Map<String, String>> atts = new ArrayList<>();atts.add(attendeeList);// Defining OrganizerMap<String, String> organizerAttendee = handler.getAttendeeData(replyToEmail, owner.getLogin(), isOwner);Appointment a = i.getAppointment();// Create ICal MessageString meetingId = handler.addNewMeeting(a.getStart(), a.getEnd(), a.getTitle(), atts, invitationLink,organizerAttendee, a.getIcalId(), getTimeZone(owner).getID());// Writing back meetingUidif (Strings.isEmpty(a.getIcalId())) {a.setIcalId(meetingId);}log.debug(handler.getICalDataAsString());mailHandler.send(new MailMessage(email, replyToEmail, subject, template, handler.getIcalAsByteArray()));} else {mailHandler.send(email, replyToEmail, subject, template);}}

其中ical是icalenda是否被附加在邮件中的一个标记变量

@Overridepublic Invitation getInvitation(Invitation _invitation, User inveetee, Room room, boolean isPasswordProtected, String invitationpass, Valid valid,User createdBy, Long languageId, Date gmtTimeStart, Date gmtTimeEnd, Appointment appointment) {Invitation invitation = _invitation;if (null == _invitation) {invitation = new Invitation();invitation.setHash(UUID.randomUUID().toString());}invitation.setPasswordProtected(isPasswordProtected);if (isPasswordProtected) {invitation.setPassword(CryptProvider.get().hash(invitationpass));}invitation.setUsed(false);invitation.setValid(valid);// valid period of Invitationswitch (valid) {case Period:invitation.setValidFrom(new Date(gmtTimeStart.getTime() - (5 * 60 * 1000)));invitation.setValidTo(gmtTimeEnd);break;case Endless:case OneTime:default:break;}invitation.setDeleted(false);invitation.setInvitedBy(createdBy);invitation.setInvitee(inveetee);if (languageId != null && Type.contact == invitation.getInvitee().getType()) {invitation.getInvitee().setLanguageId(languageId);}invitation.setRoom(room);invitation.setInserted(new Date());invitation.setAppointment(appointment);return invitation;}

getInvitation方法里面传入房间,邀请,设置相关参数,返回一个invitation

总结

本篇文章看了quartz下的room,其中包含了对invitation,appoinment的综合使用。总体上实现了,发送、创建invitation的方法

openmeetings(八)相关推荐

  1. linux下的openmeetings的安装配置…

    linux下openmeetings安装配置方法 目录 目录... 1 硬件条件:... 2 需要的相关软件:... 3 安装配置... 3 第一步       安装mysql数据库... 3 1.1 ...

  2. 《将要淘汰的八种人》读后感

    前言: 将要淘汰的八种人http://blog.sina.com.cn/s/blog_638066ee0100nvis.html (不景气的社会,一定会淘汰不争气的人.如何不被淘汰,只要你不在八种之内 ...

  3. 大数据调度平台Airflow(八):Airflow分布式集群搭建及测试

    目录 Airflow分布式集群搭建及测试 一.节点规划 二.airflow集群搭建步骤 1.在所有节点安装python3.7 2.在所有节点上安装airflow 三.初始化Airflow 1.每台节点 ...

  4. 2021年大数据ELK(八):Elasticsearch安装IK分词器插件

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装IK分词器 一.下载Elasticsearch IK分词器 ...

  5. 2021年大数据Kafka(八):Kafka如何保证数据不丢失

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka如何保证数据不丢失 一.如何保证生产者数据不丢失 ...

  6. 2021年大数据HBase(八):Apache Phoenix的基本介绍

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 前言 系列历史文章 Apache Phoenix的基本介绍 Apache ...

  7. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

  8. java 数据类型转换的一场_Java基础 — 四类八种基本数据类型

    整型:整数类型int 一般的数据. long 极大的数据. short 用于特定的场合,比如底层的文件处理或者需要控制占用存储单元空间量的大数组. byte 用于特定的场合,比如底层的文件处理或者需要 ...

  9. 打印循环换行_科学向日葵在线课堂 ——张老师讲Python 第八课 周而复始为循环2...

    点击蓝字关注我们 张老师讲编程--和爸爸妈妈一起学Python Python 的编辑器有很多,例如 PyCharm.Spyder.Notepad++等等,大家根据需要选择一个就好,初期程序代码量不大, ...

最新文章

  1. Pytorch中的向前计算(autograd)、梯度计算以及实现线性回归操作
  2. python矩阵_Python 矩阵相关
  3. HttpServletRequest和@Requestparam、@RequestBody、直接实体接收请求参数的区别与示例
  4. on java8学习笔记2022.2.19-2022.2.20
  5. java merge css_一句命令快速合并 JS、CSS
  6. 利用border制作三角形原理
  7. Spring源码:StopWatch 计时秒表
  8. Xshell新手的下载及安装教程(超详细)
  9. mysql中 经纬度用什么类型存储_MySQL数据库之***mysql中经度纬度字段用什么存储(关于mysql的float和decimal区别)...
  10. php中用div句子给背景图片添加文字,PHP给图片添加文字水印实例
  11. wps居中对齐不在中间_如何解决wps表格居中调整
  12. java栈里储存的是什么_JVM中的堆和栈到底存储了什么
  13. 求助!KeyError:None of [Index(['2017-01-01, ...\n dtype='object', length=365)] are in the [columns]
  14. 【折腾系列—All In One主机】3、 iKuai软路由安装前的设置
  15. 一个功能简洁,使用简易的微信机器人
  16. Spring MVC + Java 多文件上传及多文件中转上传
  17. 大脑的未来将走向何方?《大脑全书》告诉你答案
  18. php tp5修改语句,tp5修改(实现即点即改)
  19. 机器学习数据集!CV、NLP 一应俱全
  20. 访问学者申请美国J1签证英语要求有规定吗?

热门文章

  1. hdu 5418 Victor and World (floyd+状压dp)
  2. C#.net 微信公众账号接口开发
  3. Gunicorn系列之利用Gunicorn启动项目
  4. mbio期刊拒稿率_PLoS Pathogens
  5. Navicat Premium 15.0.26 MacOS
  6. Linux perm
  7. 【2022.09.04】关于升级打怪学编程活动的通知
  8. 如何自学Axure(0基础入门教程)
  9. OpenHarmony如何拨打电话
  10. gsoc 任务_gsoc 2020火箭聊天React式全屏作曲家