This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new cde0394  [OPENMEETINGS-2481] initial refactoring of IcalHandler
cde0394 is described below

commit cde03944fbb9ec4e4bd95451673f3c75ac809536
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Thu Oct 15 21:03:54 2020 +0700

    [OPENMEETINGS-2481] initial refactoring of IcalHandler
---
 .../db/dao/calendar/AppointmentDao.java            |   4 +-
 .../service/calendar/caldav/IcalUtils.java         |  12 +-
 .../service/room/InvitationManager.java            |  37 ++---
 .../apache/openmeetings/util/mail/IcalHandler.java | 130 ++++++-----------
 .../apache/openmeetings/util/mail/MailUtil.java    |   2 +
 .../openmeetings/calendar/TestSendIcalMessage.java | 161 ++++-----------------
 6 files changed, 97 insertions(+), 249 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
index 474df5d..c97654e 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.calendar;
 
+import static java.util.UUID.randomUUID;
 import static org.apache.openmeetings.db.util.DaoHelper.UNSUPPORTED;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_ROOM_CAPACITY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
@@ -100,8 +101,10 @@ public class AppointmentDao implements 
IDataProviderDao<Appointment>{
                }
                a.setRoom(roomDao.update(r, userId));
                final boolean newApp = a.getId() == null;
+               Appointment a0 = newApp ? null : get(a.getId());
                if (newApp) {
                        a.setInserted(new Date());
+                       a.setIcalId(randomUUID().toString());
                        em.persist(a);
                } else {
                        a.setUpdated(new Date());
@@ -111,7 +114,6 @@ public class AppointmentDao implements 
IDataProviderDao<Appointment>{
                        Set<Long> mmIds = newApp ? new HashSet<>()
                                        : 
meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());
                        // update meeting members
-                       Appointment a0 = newApp ? null : get(a.getId());
                        boolean sendMail = a0 == null || 
!a0.getTitle().equals(a.getTitle()) ||
                                        !(a0.getDescription() != null ? 
a0.getDescription().equals(a.getDescription()) : true) ||
                                        !(a0.getLocation() != null ? 
a0.getLocation().equals(a.getLocation()) : true) ||
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
index 53a8cae..57a3ce2 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
@@ -20,6 +20,8 @@ package org.apache.openmeetings.service.calendar.caldav;
 
 import static java.util.UUID.randomUUID;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
+import static org.apache.openmeetings.util.mail.MailUtil.MAILTO;
+import static org.apache.openmeetings.util.mail.MailUtil.SCHEME_MAILTO;
 
 import java.net.URI;
 import java.text.ParsePosition;
@@ -228,7 +230,7 @@ public class IcalUtils {
                        URI uri = URI.create(organizer.getValue());
 
                        //If the value of the organizer is an email
-                       if ("mailto".equals(uri.getScheme())) {
+                       if (SCHEME_MAILTO.equals(uri.getScheme())) {
                                String email = uri.getSchemeSpecificPart();
 
                                organizerEmail = email;
@@ -248,7 +250,7 @@ public class IcalUtils {
                if (attendees != null && !attendees.isEmpty()) {
                        for (Property attendee : attendees) {
                                URI uri = URI.create(attendee.getValue());
-                               if ("mailto".equals(uri.getScheme())) {
+                               if (SCHEME_MAILTO.equals(uri.getScheme())) {
                                        String email = 
uri.getSchemeSpecificPart();
 
                                        Role role = 
attendee.getParameter(Role.CHAIR.getName());
@@ -439,14 +441,14 @@ public class IcalUtils {
 
                if (appointment.getMeetingMembers() != null) {
                        for (MeetingMember meetingMember : 
appointment.getMeetingMembers()) {
-                               Attendee attendee = new 
Attendee(URI.create("mailto:"; +
-                                               
meetingMember.getUser().getAddress().getEmail()));
+                               Attendee attendee = new 
Attendee(URI.create(MAILTO
+                                               + 
meetingMember.getUser().getAddress().getEmail()));
                                
attendee.getParameters().add(Role.REQ_PARTICIPANT);
                                attendee.getParameters().add(new 
Cn(meetingMember.getUser().getLogin()));
                                meeting.getProperties().add(attendee);
                        }
                }
-               URI orgUri = URI.create("mailto:"; + 
appointment.getOwner().getAddress().getEmail());
+               URI orgUri = URI.create(MAILTO + 
appointment.getOwner().getAddress().getEmail());
                Attendee orgAtt = new Attendee(orgUri);
                orgAtt.getParameters().add(Role.CHAIR);
                Cn orgCn = new Cn(appointment.getOwner().getLogin());
diff --git 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
index 9dde6a5..0192d1b 100644
--- 
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
+++ 
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
@@ -23,10 +23,7 @@ import static 
org.apache.openmeetings.db.entity.calendar.Appointment.allowedStar
 import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
 
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.List;
-import java.util.Map;
 import java.util.TimeZone;
 
 import org.apache.openmeetings.IApplication;
@@ -50,7 +47,6 @@ import 
org.apache.openmeetings.service.mail.template.subject.SubjectEmailTemplat
 import 
org.apache.openmeetings.service.mail.template.subject.UpdatedAppointmentTemplate;
 import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.openmeetings.util.mail.IcalHandler;
-import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -116,29 +112,18 @@ public class InvitationManager implements 
IInvitationManager {
                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()));
+                       IcalHandler handler = new 
IcalHandler(MessageType.CANCEL == type ? IcalHandler.ICAL_METHOD_CANCEL : 
IcalHandler.ICAL_METHOD_REQUEST)
+                                       
.createVEvent(getTimeZone(owner).getID(), a.getStart(), a.getEnd(), 
a.getTitle())
+                                       .addOrganizer(replyToEmail, 
owner.getLogin())
+                                       .addAttendee(email, username, isOwner)
+                                       .setLocation(a.getLocation())
+                                       .setDescription(invitationLink)
+                                       .setUid(a.getIcalId())
+                                       .build();
+
+                       log.debug(handler.toString());
+                       mailHandler.send(new MailMessage(email, replyToEmail, 
subject, template, handler.toByteArray()));
                } else {
                        mailHandler.send(email, replyToEmail, subject, 
template);
                }
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
index 3ede26f..3d30ab7 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
@@ -18,18 +18,14 @@
  */
 package org.apache.openmeetings.util.mail;
 
-import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.util.mail.MailUtil.MAILTO;
 
 import java.io.ByteArrayOutputStream;
 import java.io.FileOutputStream;
 import java.net.URI;
 import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import java.util.NoSuchElementException;
 
-import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -68,6 +64,8 @@ public class IcalHandler {
 
        /** ICal instance */
        private final Calendar icsCalendar;
+       private TimeZone timeZone;
+       private VEvent meeting;
 
        /** Creation of a new Event */
        public static final Method ICAL_METHOD_REQUEST = Method.REQUEST;
@@ -90,36 +88,12 @@ public class IcalHandler {
                icsCalendar.getProperties().add(method);
        }
 
-       /**
-        *
-        * @param startDate
-        *            use standard TimeZone!!
-        * @param endDate
-        *            use standard time zone!!
-        * @param name
-        *            meeting name
-        * @param attendees
-        *            List of attendees (use getAttendeeData to retrieve valid 
records)
-        * @param description
-        *            containing the meeting description
-        * @param organizer
-        *            organizer
-        * @param uid
-        *            (maybe null)
-        * @param javaTzId ID of owner's java time zone
-        * @return UID of Meeting
-        */
-       // 
---------------------------------------------------------------------------------------
-       public String addNewMeeting(Date startDate, Date endDate, String name,
-                       List<Map<String, String>> attendees, String description,
-                       Map<String, String> organizer, String uid, String 
javaTzId)
-       {
-
+       public IcalHandler createVEvent(String tz, Date startDate, Date 
endDate, String name) {
                TimeZoneRegistry registry = 
TimeZoneRegistryFactory.getInstance().createRegistry();
 
-               TimeZone timeZone = registry.getTimeZone(javaTzId);
+               timeZone = registry.getTimeZone(tz);
                if (timeZone == null) {
-                       throw new NoSuchElementException("Unable to get time 
zone by id provided: " + javaTzId);
+                       throw new NoSuchElementException("Unable to get time 
zone by id provided: " + tz);
                }
 
                DateTime start = new DateTime(startDate);
@@ -127,63 +101,54 @@ public class IcalHandler {
                DateTime end = new DateTime(endDate);
                end.setTimeZone(timeZone);
 
-               VEvent meeting = new VEvent(start, end, name);
+               meeting = new VEvent(start, end, name);
+               meeting.getProperties().add(Transp.OPAQUE);
+               return this;
+       }
 
+       public IcalHandler setDescription(String description) {
                meeting.getProperties().add(new Description(description));
-               meeting.getProperties().add(new Sequence(0));
-               meeting.getProperties().add(new Location(""));
-               meeting.getProperties().add(Transp.OPAQUE);
+               return this;
+       }
 
-               // generate unique identifier (if not submitted)
-               Uid ui;
-               if (Strings.isEmpty(uid)) {
-                       ui = new Uid(randomUUID().toString());
-                       log.debug("Generating Meeting UID : {}", ui.getValue());
-               } else {
-                       ui = new Uid(uid);
-                       log.debug("Using Meeting UID : {}", ui.getValue());
-               }
+       public IcalHandler setLocation(String location) {
+               meeting.getProperties().add(new Location(location));
+               return this;
+       }
 
-               meeting.getProperties().add(ui);
+       public IcalHandler setSequence(int seq) {
+               meeting.getProperties().add(new Sequence(seq));
+               return this;
+       }
 
-               for (Map<String, String> att : attendees) {
-                       Attendee uno = new Attendee(URI.create(att.get("uri")));
-                       String chair = att.get("chair");
-                       uno.getParameters().add("0".equals(chair) ? 
Role.REQ_PARTICIPANT : Role.CHAIR);
-                       uno.getParameters().add(new Cn(att.get("cn")));
-                       meeting.getProperties().add(uno);
-               }
+       public IcalHandler setUid(String uid) {
+               meeting.getProperties().add(new Uid(uid));
+               return this;
+       }
 
-               Organizer orger = new 
Organizer(URI.create(organizer.get("uri")));
-               orger.getParameters().add(new Cn(organizer.get("cn")));
+       private static URI getMailto(String email) {
+               return URI.create(MAILTO + email);
+       }
 
+       public IcalHandler addOrganizer(String email, String name) {
+               Organizer orger = new Organizer(getMailto(email));
+               orger.getParameters().add(new Cn(name));
                meeting.getProperties().add(orger);
-
-               icsCalendar.getComponents().add(timeZone.getVTimeZone());
-               icsCalendar.getComponents().add(meeting);
-
-               return ui.getValue();
+               return this;
        }
 
-       /**
-        * Use this function to build a valid record for the AttendeeList for
-        * addMeetings Generate a Attendee
-        *
-        * @param emailAdress
-        *            - email of attendee
-        * @param displayName
-        *            - name of attendee
-        * @param chair
-        *            - is this organizer
-        * @return attendee data as {@link Map}
-        */
-       public Map<String, String> getAttendeeData(String emailAdress, String 
displayName, boolean chair) {
-               Map<String, String> oneRecord = new HashMap<>();
-               oneRecord.put("uri", "mailto:"; + emailAdress);
-               oneRecord.put("cn", displayName);
-               oneRecord.put("chair", chair ? "1" : "0");
+       public IcalHandler addAttendee(String email, String display, boolean 
chair) {
+               Attendee uno = new Attendee(URI.create(MAILTO + email));
+               uno.getParameters().add(chair ? Role.REQ_PARTICIPANT : 
Role.CHAIR);
+               uno.getParameters().add(new Cn(display));
+               meeting.getProperties().add(uno);
+               return this;
+       }
 
-               return oneRecord;
+       public IcalHandler build() {
+               icsCalendar.getComponents().add(timeZone.getVTimeZone());
+               icsCalendar.getComponents().add(meeting);
+               return this;
        }
 
        /**
@@ -194,7 +159,7 @@ public class IcalHandler {
         * @throws Exception
         *             - in case of error during writing to the file
         */
-       public void writeDataToFile(String inFilerPath) throws Exception {
+       public void toFile(String inFilerPath) throws Exception {
                String filerPath = inFilerPath.endsWith(".ics") ? inFilerPath
                                : String.format("%s.ics", inFilerPath);
 
@@ -211,7 +176,7 @@ public class IcalHandler {
         * @throws Exception
         *             - in case of error during writing to byte array
         */
-       public byte[] getIcalAsByteArray() throws Exception {
+       public byte[] toByteArray() throws Exception {
                ByteArrayOutputStream bout = new ByteArrayOutputStream();
                CalendarOutputter outputter = new CalendarOutputter();
                outputter.output(icsCalendar, bout);
@@ -221,7 +186,8 @@ public class IcalHandler {
        /**
         * Retrieving Data as String
         */
-       public String getICalDataAsString() {
-               return icsCalendar.toString();
+       @Override
+       public String toString() {
+               return icsCalendar == null ? null : icsCalendar.toString();
        }
 }
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
index c7ab2dd..a051d7f 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
@@ -23,6 +23,8 @@ import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.validation.Validatable;
 
 public class MailUtil {
+       public static final String SCHEME_MAILTO = "mailto";
+       public static final String MAILTO = SCHEME_MAILTO + ":";
        private MailUtil() {}
 
        public static boolean isValid(String email) {
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
index 958db62..1b6926c 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
@@ -19,15 +19,12 @@
 package org.apache.openmeetings.calendar;
 
 import static java.util.UUID.randomUUID;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.net.URI;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.Map;
+import java.util.TimeZone;
 
 import javax.activation.DataHandler;
 import javax.mail.BodyPart;
@@ -48,23 +45,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import net.fortuna.ical4j.data.CalendarOutputter;
-import net.fortuna.ical4j.model.DateTime;
-import net.fortuna.ical4j.model.TimeZone;
-import net.fortuna.ical4j.model.TimeZoneRegistry;
-import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
-import net.fortuna.ical4j.model.component.VEvent;
-import net.fortuna.ical4j.model.component.VTimeZone;
-import net.fortuna.ical4j.model.parameter.Cn;
-import net.fortuna.ical4j.model.parameter.Role;
-import net.fortuna.ical4j.model.property.Attendee;
-import net.fortuna.ical4j.model.property.CalScale;
-import net.fortuna.ical4j.model.property.Method;
-import net.fortuna.ical4j.model.property.Organizer;
-import net.fortuna.ical4j.model.property.ProdId;
-import net.fortuna.ical4j.model.property.Uid;
-import net.fortuna.ical4j.model.property.Version;
-
 class TestSendIcalMessage extends AbstractJUnitDefaults {
        private static final Logger log = 
LoggerFactory.getLogger(TestSendIcalMessage.class);
 
@@ -78,120 +58,31 @@ class TestSendIcalMessage extends AbstractJUnitDefaults {
        String htmlBody = "test";
 
 
-       public void simpleInvitionIcalLink() {
-               // Create a TimeZone
-               TimeZoneRegistry registry = 
TimeZoneRegistryFactory.getInstance().createRegistry();
-               TimeZone timezone = registry.getTimeZone("America/Mexico_City");
-               VTimeZone tz = timezone.getVTimeZone();
-
-               // Start Date is on: April 1, 2008, 9:00 am
-               java.util.Calendar startDate = new GregorianCalendar();
-               startDate.setTimeZone(timezone);
-               startDate.set(java.util.Calendar.MONTH, 
java.util.Calendar.APRIL);
-               startDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
-               startDate.set(java.util.Calendar.YEAR, 2008);
-               startDate.set(java.util.Calendar.HOUR_OF_DAY, 9);
-               startDate.set(java.util.Calendar.MINUTE, 0);
-               startDate.set(java.util.Calendar.SECOND, 0);
-
-               // End Date is on: April 1, 2008, 13:00
-               java.util.Calendar endDate = new GregorianCalendar();
-               endDate.setTimeZone(timezone);
-               endDate.set(java.util.Calendar.MONTH, java.util.Calendar.APRIL);
-               endDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
-               endDate.set(java.util.Calendar.YEAR, 2008);
-               endDate.set(java.util.Calendar.HOUR_OF_DAY, 13);
-               endDate.set(java.util.Calendar.MINUTE, 0);
-               endDate.set(java.util.Calendar.SECOND, 0);
-
-               // Create the event
-               String eventName = "Progress Meeting";
-               DateTime start = new DateTime(startDate.getTime());
-               DateTime end = new DateTime(endDate.getTime());
-               VEvent meeting = new VEvent(start, end, eventName);
-
-               // add timezone info..
-               meeting.getProperties().add(tz.getTimeZoneId());
-
-               // generate unique identifier..
-               Uid uid = new Uid(randomUUID().toString());
-               meeting.getProperties().add(uid);
-
-               // add attendees..
-               Attendee dev1 = new 
Attendee(URI.create("mailto:d...@mycompany.com";));
-               dev1.getParameters().add(Role.REQ_PARTICIPANT);
-               dev1.getParameters().add(new Cn("Developer 1"));
-               meeting.getProperties().add(dev1);
-
-               Attendee dev2 = new 
Attendee(URI.create("mailto:d...@mycompany.com";));
-               dev2.getParameters().add(Role.OPT_PARTICIPANT);
-               dev2.getParameters().add(new Cn("Developer 2"));
-               meeting.getProperties().add(dev2);
-
-               // Create a calendar
-               net.fortuna.ical4j.model.Calendar icsCalendar = new 
net.fortuna.ical4j.model.Calendar();
-               icsCalendar.getProperties().add(
-                               new ProdId("-//Events Calendar//iCal4j 
1.0//EN"));
-               icsCalendar.getProperties().add(CalScale.GREGORIAN);
-               icsCalendar.getProperties().add(Version.VERSION_2_0);
-
-               // Add the event and print
-               icsCalendar.getComponents().add(meeting);
-
-               Organizer orger = new 
Organizer(URI.create("seba.wag...@gmail.com"));
-               orger.getParameters().add(new Cn("Sebastian Wagner"));
-               meeting.getProperties().add(orger);
-
-               icsCalendar.getProperties().add(Method.REQUEST);
-
-               log.debug(icsCalendar.toString());
-
-               ByteArrayOutputStream bout = new ByteArrayOutputStream();
-               CalendarOutputter outputter = new CalendarOutputter();
-               try {
-                       outputter.output(icsCalendar, bout);
-                       iCalMimeBody = bout.toByteArray();
-
-                       sendIcalMessage();
-               } catch (Exception e) {
-                       log.error("Error", e);
-               }
-       }
-
        @Test
-       void sendInvitionIcalLink() {
-               try {
-                       String email = "h...@webbase-design.de";
-                       String username = "shans";
-                       boolean invitor = false;
-
-                       Calendar start = Calendar.getInstance();
-                       Calendar end = Calendar.getInstance();
-                       IcalHandler handler = new 
IcalHandler(IcalHandler.ICAL_METHOD_REQUEST);
-
-                       // Transforming Meeting Members
-
-                       Map<String, String> attendeeList = 
handler.getAttendeeData(email, username, invitor);
-                       Map<String, String> organizerAttendee = 
handler.getAttendeeData(recipients, "seba-test", true);
-
-                       List<Map<String, String>> atts = List.of(attendeeList);
-
-                       // Create ICal Message
-                       String meetingId = 
handler.addNewMeeting(start.getTime(), end.getTime(), "test event",
-                                       atts, 
"localhost:5080/link_openmeetings",
-                                       organizerAttendee, "", 
java.util.TimeZone.getDefault().getID());
-
-                       log.debug("meetingId " + meetingId);
-
-                       iCalMimeBody = handler.getIcalAsByteArray();
-
-                       sendIcalMessage();
-
-                       // return MailHandler.sendMail(email, subject, 
template);
-
-               } catch (Exception err) {
-                       log.error("sendInvitionIcalLink", err);
-               }
+       void sendInvitionIcalLink() throws Exception {
+               String email = "h...@webbase-design.de";
+               String username = "shans";
+               boolean invitor = false;
+
+               Date start = Calendar.getInstance().getTime();
+               Calendar endCal = Calendar.getInstance();
+               endCal.add(Calendar.HOUR_OF_DAY, 1);
+               Date end = endCal.getTime();
+               IcalHandler handler = new 
IcalHandler(IcalHandler.ICAL_METHOD_REQUEST)
+                               .createVEvent(TimeZone.getDefault().getID(), 
start, end, "test event")
+                               .addOrganizer(recipients, "seba-test")
+                               .addAttendee(email, username, invitor)
+                               
.setDescription("localhost:5080/link_openmeetings")
+                               .setLocation("")
+                               .setUid(randomUUID().toString())
+                               .build();
+
+               log.debug("ICS: {}", handler.toString());
+               assertNotNull(handler.toString(), "Valid ICS should be 
created");
+
+               iCalMimeBody = handler.toByteArray();
+
+               sendIcalMessage();
        }
 
        private void sendIcalMessage() throws Exception {

Reply via email to