You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2021/12/23 16:30:11 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2675] code clean-up

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 4ac3436  [OPENMEETINGS-2675] code clean-up
4ac3436 is described below

commit 4ac3436982b2a8f38d03ae0ca6be67090b34cac1
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Dec 23 23:29:55 2021 +0700

    [OPENMEETINGS-2675] code clean-up
---
 .../service/calendar/caldav/IcalUtils.java         | 105 +++++++++------------
 1 file changed, 43 insertions(+), 62 deletions(-)

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 f83dff8..5c57007 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
@@ -41,6 +41,7 @@ import java.util.Set;
 import java.util.TimeZone;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -57,8 +58,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import net.fortuna.ical4j.model.Calendar;
 import net.fortuna.ical4j.model.Component;
+import net.fortuna.ical4j.model.ComponentList;
 import net.fortuna.ical4j.model.Parameter;
+import net.fortuna.ical4j.model.ParameterList;
 import net.fortuna.ical4j.model.Property;
+import net.fortuna.ical4j.model.PropertyList;
 import net.fortuna.ical4j.model.component.CalendarComponent;
 import net.fortuna.ical4j.model.component.VEvent;
 import net.fortuna.ical4j.model.parameter.Cn;
@@ -131,8 +135,7 @@ public class IcalUtils {
 			a.setDeleted(false);
 			a.setRoom(createDefaultRoom());
 			a.setReminder(Appointment.Reminder.NONE);
-			a = addVEventPropertiestoAppointment(a, event);
-			appointments.add(a);
+			appointments.add(addVEventPropertiestoAppointment(a, event));
 		}
 		return appointments;
 	}
@@ -353,21 +356,35 @@ public class IcalUtils {
 		return c.getTime();
 	}
 
-	/**
-	 * Adds the Appointment Properties to the given VEvent
-	 *
-	 * @param appointment Appointment whose properties are taken
-	 * @param meeting     VEvent of the Appointment
-	 * @return Updated VEvent
-	 */
-	private static void addVEventpropsfromAppointment(Appointment appointment, VEvent meeting) {
+	private net.fortuna.ical4j.model.TimeZone getTimazone(String tzid) {
+		net.fortuna.ical4j.model.TimeZone timeZone = TZ_REGISTRY.getTimeZone(tzid);
+		if (timeZone == null) {
+			throw new NoSuchElementException("Unable to get time zone by id provided: " + tzid);
+		}
+		return timeZone;
+	}
+
+	private Calendar getCalendar(net.fortuna.ical4j.model.TimeZone timeZone, List<CalendarComponent> events) {
+		List<CalendarComponent> comps = new ArrayList<>(events);
+		comps.add(0, timeZone.getVTimeZone());
+		return new Calendar(
+				new PropertyList(List.of(new ProdId(PROD_ID), Version.VERSION_2_0, CalScale.GREGORIAN))
+				, new ComponentList<>(comps));
+	}
+
+	private VEvent parseAppointment(Appointment appointment, net.fortuna.ical4j.model.TimeZone timeZone) {
+		ZonedDateTime start = getZoneDateTime(appointment.getStart(), timeZone.getID());
+		ZonedDateTime end = getZoneDateTime(appointment.getEnd(), timeZone.getID());
+
+		VEvent meeting = new VEvent(start, end, appointment.getTitle());
+		List<Property> mProperties = new ArrayList<>(meeting.getProperties().getAll());
 		if (appointment.getLocation() != null) {
-			meeting.getProperties().add(new Location(appointment.getLocation()));
+			mProperties.add(new Location(appointment.getLocation()));
 		}
 
-		meeting.getProperties().add(new Description(appointment.getDescription()));
-		meeting.getProperties().add(new Sequence(0));
-		meeting.getProperties().add(Transp.OPAQUE);
+		mProperties.add(new Description(appointment.getDescription()));
+		mProperties.add(new Sequence(0));
+		mProperties.add(Transp.OPAQUE);
 
 		String uid = appointment.getIcalId();
 		Uid ui;
@@ -379,53 +396,23 @@ public class IcalUtils {
 			ui = new Uid(uid);
 		}
 
-		meeting.getProperties().add(ui);
+		mProperties.add(ui);
 
 		if (appointment.getMeetingMembers() != null) {
 			for (MeetingMember meetingMember : appointment.getMeetingMembers()) {
-				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);
+				mProperties.add(new Attendee(
+						new ParameterList(List.of(Role.REQ_PARTICIPANT, new Cn(meetingMember.getUser().getLogin())))
+						, URI.create(MAILTO + meetingMember.getUser().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());
-		orgAtt.getParameters().add(orgCn);
-		meeting.getProperties().add(orgAtt);
+		mProperties.add(new Attendee(new ParameterList(List.of(Role.CHAIR, orgCn)), orgUri));
 
-		Organizer organizer = new Organizer(orgUri);
-		organizer.getParameters().add(orgCn);
-		meeting.getProperties().add(organizer);
-	}
+		mProperties.add(new Organizer(new ParameterList(List.of(orgCn)), orgUri));
 
-	private net.fortuna.ical4j.model.TimeZone getTimazone(String tzid) {
-		net.fortuna.ical4j.model.TimeZone timeZone = TZ_REGISTRY.getTimeZone(tzid);
-		if (timeZone == null) {
-			throw new NoSuchElementException("Unable to get time zone by id provided: " + tzid);
-		}
-		return timeZone;
-	}
-
-	private Calendar getCalendar(net.fortuna.ical4j.model.TimeZone timeZone) {
-		Calendar icsCalendar = new Calendar();
-		icsCalendar.getProperties().add(new ProdId(PROD_ID));
-		icsCalendar.getProperties().add(Version.VERSION_2_0);
-		icsCalendar.getProperties().add(CalScale.GREGORIAN);
-		icsCalendar.getComponents().add(timeZone.getVTimeZone());
-		return icsCalendar;
-	}
-
-	private void parseAppointment(Appointment appointment, Calendar icsCalendar, net.fortuna.ical4j.model.TimeZone timeZone) {
-		ZonedDateTime start = getZoneDateTime(appointment.getStart(), timeZone.getID());
-		ZonedDateTime end = getZoneDateTime(appointment.getEnd(), timeZone.getID());
-
-		VEvent meeting = new VEvent(start, end, appointment.getTitle());
-		addVEventpropsfromAppointment(appointment, meeting);
-		icsCalendar.getComponents().add(meeting);
+		meeting.setProperties(new PropertyList(mProperties));
+		return meeting;
 	}
 
 	/**
@@ -437,10 +424,7 @@ public class IcalUtils {
 	public Calendar parseAppointmenttoCalendar(Appointment appointment) {
 		net.fortuna.ical4j.model.TimeZone timeZone = getTimazone(parseTimeZone(null, appointment.getOwner()).getID());
 
-		Calendar icsCalendar = getCalendar(timeZone);
-		parseAppointment(appointment, icsCalendar, timeZone);
-
-		return icsCalendar;
+		return getCalendar(timeZone, List.of(parseAppointment(appointment, timeZone)));
 	}
 
 	/**
@@ -453,11 +437,8 @@ public class IcalUtils {
 	public Calendar parseAppointmentstoCalendar(List<Appointment> appointments, Long ownerId) {
 		net.fortuna.ical4j.model.TimeZone timeZone = getTimazone(parseTimeZone(null, userDao.get(ownerId)).getID());
 
-		Calendar icsCalendar = getCalendar(timeZone);
-
-		for (Appointment appointment : appointments) {
-			parseAppointment(appointment, icsCalendar, timeZone);
-		}
-		return icsCalendar;
+		return getCalendar(timeZone, appointments.stream()
+				.map(appointment -> parseAppointment(appointment, timeZone))
+				.collect(Collectors.toList()));
 	}
 }