2021SC@SDUSC
openmeetings(十二)
一.前言
前面几章,我们分析了,quartz目录下的源码,今天这篇文章我们来分析service目录下的最后一个子目录room
我们看到,room目录下只有一个源文件,invitation的管理,
@Autowired
private InvitationDao invitationDao;
@Autowired
private MailHandler mailHandler;
成员变量有操作数据库中invitation的dao层对象和emailhandle,我们来看一个方法的实现
生成email,循环添加加入者,最后将邮件发送出去。
@Override
public 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 Organizer
Map<String, String> organizerAttendee = handler.getAttendeeData(replyToEmail, owner.getLogin(), isOwner);
Appointment a = i.getAppointment();
// Create ICal Message
String meetingId = handler.addNewMeeting(a.getStart(), a.getEnd(), a.getTitle(), atts, invitationLink,
organizerAttendee, a.getIcalId(), getTimeZone(owner).getID());
// Writing back meetingUid
if (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);
}
}
改类中实现了发送invitation,生成invitation,接受invitation等操作,我们来分析发送invitaion链接的方法,其他方法大致调用对象都是类似的,就不再赘述。
总结
本篇文章分析的内容较少,改目录下仅有invitationmanager一个java文件,业务逻辑也与之前其他部分重合,所以没有什么新出现的技术。