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 af35377 [OPENMEETINGS-2465] meeting room is available few minutes before start for OM internal users af35377 is described below commit af35377abfe90e2e682f2bf2eca166bdbb058e03 Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Wed Oct 14 00:06:31 2020 +0700 [OPENMEETINGS-2465] meeting room is available few minutes before start for OM internal users --- .../db/dao/basic/ConfigurationDao.java | 58 ++++++---------------- .../db/entity/calendar/Appointment.java | 5 ++ .../apache/openmeetings/db/entity/user/User.java | 6 ++- .../installation/ImportInitvalues.java | 8 ++- .../service/calendar/AppointmentLogic.java | 8 +-- .../service/room/InvitationManager.java | 13 ++--- .../openmeetings/util/OpenmeetingsVariables.java | 20 +++++++- .../apache/openmeetings/web/room/RoomPanel.java | 3 +- 8 files changed, 61 insertions(+), 60 deletions(-) diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java index 273ce5f..3561fdb 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java @@ -287,19 +287,11 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { reloadRestAllowOrigin(); break; case CONFIG_LOGIN_MIN_LENGTH: - reloadLoginMinLength(); - break; case CONFIG_PASS_MIN_LENGTH: - reloadPasswdMinLength(); - break; case CONFIG_PASS_CHECK_UPPER: - reloadPwdCheckUpper(); - break; case CONFIG_PASS_CHECK_DIGIT: - reloadPwdCheckDigit(); - break; case CONFIG_PASS_CHECK_SPECIAL: - reloadPwdCheckSpecial(); + reloadLoginPassword(); break; case CONFIG_DEFAULT_GROUP_ID: reloadDefaultGroup(); @@ -317,13 +309,9 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { reloadChatSendOnEnter(); break; case CONFIG_REGISTER_FRONTEND: - reloadAllowRegisterFront(); - break; case CONFIG_REGISTER_SOAP: - reloadAllowRegisterSoap(); - break; case CONFIG_REGISTER_OAUTH: - reloadAllowRegisterOauth(); + reloadRegister(); break; case CONFIG_EMAIL_VERIFICATION: reloadSendVerificationEmail(); @@ -359,6 +347,10 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { case CONFIG_SMTP_TIMEOUT: reloadMailSettings(); break; + case CONFIG_APPOINTMENT_REMINDER_MINUTES: + case CONFIG_APPOINTMENT_PRE_START_MINUTES: + reloadAppointmentSettings(); + break; } return entity; } @@ -430,23 +422,11 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { setRestAllowOrigin(getString(CONFIG_REST_ALLOW_ORIGIN, null)); } - private void reloadLoginMinLength() { + private void reloadLoginPassword() { setMinLoginLength(getInt(CONFIG_LOGIN_MIN_LENGTH, USER_LOGIN_MINIMUM_LENGTH)); - } - - private void reloadPasswdMinLength() { setMinPasswdLength(getInt(CONFIG_LOGIN_MIN_LENGTH, USER_PASSWORD_MINIMUM_LENGTH)); - } - - private void reloadPwdCheckUpper() { setPwdCheckUpper(getBool(CONFIG_PASS_CHECK_UPPER, true)); - } - - private void reloadPwdCheckDigit() { setPwdCheckDigit(getBool(CONFIG_PASS_CHECK_DIGIT, true)); - } - - private void reloadPwdCheckSpecial() { setPwdCheckSpecial(getBool(CONFIG_PASS_CHECK_SPECIAL, true)); } @@ -470,15 +450,9 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { setChatSendOnEnter(getBool(CONFIG_CHAT_SEND_ON_ENTER, false)); } - private void reloadAllowRegisterFront() { + private void reloadRegister() { setAllowRegisterFrontend(getBool(CONFIG_REGISTER_FRONTEND, false)); - } - - private void reloadAllowRegisterSoap() { setAllowRegisterSoap(getBool(CONFIG_REGISTER_SOAP, false)); - } - - private void reloadAllowRegisterOauth() { setAllowRegisterOauth(getBool(CONFIG_REGISTER_OAUTH, false)); } @@ -511,6 +485,11 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { setMailAddReplyTo(getBool(CONFIG_REPLY_TO_ORGANIZER, true)); } + private void reloadAppointmentSettings() { + setAppointmentPreStartMinutes(getInt(CONFIG_APPOINTMENT_PRE_START_MINUTES, 5)); + setAppointmentReminderMinutes(getInt(CONFIG_APPOINTMENT_REMINDER_MINUTES, 15)); + } + public void reinit() { reloadMaxUpload(); reloadCrypt(); @@ -524,24 +503,19 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> { reloadTimezone(); reloadRestAllowOrigin(); reloadRoomSettings(); - reloadLoginMinLength(); - reloadPasswdMinLength(); - reloadPwdCheckUpper(); - reloadPwdCheckDigit(); - reloadPwdCheckSpecial(); + reloadLoginPassword(); reloadDefaultGroup(); reloadSipContext(); reloadFnameMinLength(); reloadLnameMinLength(); reloadChatSendOnEnter(); - reloadAllowRegisterFront(); - reloadAllowRegisterSoap(); - reloadAllowRegisterOauth(); + reloadRegister(); reloadSendVerificationEmail(); reloadSendRegisterEmail(); reloadDisplayNameEditable(); reloadMyRoomsEnabled(); reloadMailSettings(); + reloadAppointmentSettings(); updateCsp(); } diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java index e605cc0..28572bd 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java @@ -19,6 +19,7 @@ package org.apache.openmeetings.db.entity.calendar; import static org.apache.openmeetings.db.bind.Constants.APPOINTMENT_NODE; +import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentPreStartMinutes; import java.util.Calendar; import java.util.Date; @@ -331,6 +332,10 @@ public class Appointment extends HistoricalEntity { return start; } + public static Date allowedStart(Date start) { + return new Date(start.getTime() - (getAppointmentPreStartMinutes() * 60 * 1000)); + } + public Calendar startCalendar(TimeZone timeZone) { Calendar cal = Calendar.getInstance(timeZone); cal.setTime(start); diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java index 05388a3..e225a32 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java @@ -409,7 +409,9 @@ public class User extends HistoricalEntity { } public User setDisplayName(String displayName) { - if (!Strings.isEmpty(displayName)) { + if (Strings.isEmpty(displayName)) { + resetDisplayName(); + } else { this.displayName = escapeMarkup(displayName).toString(); } return this; @@ -673,7 +675,7 @@ public class User extends HistoricalEntity { if (!Strings.isEmpty(last)) { sb.append(delim).append(last); } - if (Strings.isEmpty(sb)) { + if (id != null && Strings.isEmpty(sb)) { if (Type.CONTACT == type && address != null && !Strings.isEmpty(address.getEmail())) { sb.append(address.getEmail()); } else { diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java index 60fe1cf..718078e 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java @@ -25,6 +25,7 @@ import static org.apache.openmeetings.db.dto.user.OAuthUser.PARAM_LNAME; import static org.apache.openmeetings.db.dto.user.OAuthUser.PARAM_LOGIN; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_NAME; +import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_PRE_START_MINUTES; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_REMINDER_MINUTES; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_AUTO_OPEN_SHARING; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_ROOM_CAPACITY; @@ -108,9 +109,10 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CSP_DAT import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CSP_FONT; import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CSP_STYLE; import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_MAX_UPLOAD_SIZE; -import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_MINUTES_REMINDER_SEND; import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH; import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH; +import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentPreStartMinutes; +import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentReminderMinutes; import static org.apache.openmeetings.util.OpenmeetingsVariables.getAudioBitrate; import static org.apache.openmeetings.util.OpenmeetingsVariables.getAudioRate; import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultGroup; @@ -307,7 +309,7 @@ public class ImportInitvalues { addCfg(list, CONFIG_MAX_UPLOAD_SIZE, String.valueOf(DEFAULT_MAX_UPLOAD_SIZE), Configuration.Type.NUMBER, "Maximum size of upload file (bytes)", VER_1_8); - addCfg(list, CONFIG_APPOINTMENT_REMINDER_MINUTES, String.valueOf(DEFAULT_MINUTES_REMINDER_SEND), Configuration.Type.NUMBER, + addCfg(list, CONFIG_APPOINTMENT_REMINDER_MINUTES, String.valueOf(getAppointmentReminderMinutes()), Configuration.Type.NUMBER, "The number of minutes before reminder emails are send. Set to 0 to disable reminder emails", VER_1_9); addCfg(list, CONFIG_LOGIN_MIN_LENGTH, String.valueOf(USER_LOGIN_MINIMUM_LENGTH), Configuration.Type.NUMBER, @@ -391,6 +393,8 @@ public class ImportInitvalues { addCfg(list, CONFIG_PASS_CHECK_UPPER, String.valueOf(true), Configuration.Type.BOOL, "Whether or not Password MUST contain uppercase characters", VER_5_0_1); addCfg(list, CONFIG_PASS_CHECK_DIGIT, String.valueOf(true), Configuration.Type.BOOL, "Whether or not Password MUST contain numeric", VER_5_0_1); addCfg(list, CONFIG_PASS_CHECK_SPECIAL, String.valueOf(true), Configuration.Type.BOOL, "Whether or not Password MUST contain special character", VER_5_0_1); + addCfg(list, CONFIG_APPOINTMENT_PRE_START_MINUTES, String.valueOf(getAppointmentPreStartMinutes()), Configuration.Type.NUMBER + , "How many minutes before the start the room should be open (default: " + getAppointmentPreStartMinutes() + ")", VER_5_0_1); return list; } public void loadConfiguration(InstallationConfig cfg) { diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java index ba872e4..5d31d5a 100644 --- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java +++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java @@ -19,8 +19,7 @@ package org.apache.openmeetings.service.calendar; import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone; -import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPOINTMENT_REMINDER_MINUTES; -import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_MINUTES_REMINDER_SEND; +import static org.apache.openmeetings.util.OpenmeetingsVariables.getAppointmentReminderMinutes; import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl; import java.util.Calendar; @@ -28,7 +27,6 @@ import java.util.List; import java.util.TimeZone; import org.apache.openmeetings.core.notifier.NotifierService; -import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.calendar.AppointmentDao; import org.apache.openmeetings.db.dao.room.InvitationDao; import org.apache.openmeetings.db.entity.calendar.Appointment; @@ -47,8 +45,6 @@ public class AppointmentLogic { @Autowired private AppointmentDao appointmentDao; @Autowired - private ConfigurationDao cfgDao; - @Autowired private InvitationDao invitationDao; @Autowired private NotifierService notifierService; @@ -81,7 +77,7 @@ public class AppointmentLogic { log.error("Error retrieving baseUrl for application"); return; } - int minutesReminderSend = cfgDao.getInt(CONFIG_APPOINTMENT_REMINDER_MINUTES, DEFAULT_MINUTES_REMINDER_SEND); + int minutesReminderSend = getAppointmentReminderMinutes(); if (minutesReminderSend == 0) { log.warn("minutesReminderSend is 0, disabling reminder scheduler"); 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 4f594f3..9dde6a5 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 @@ -19,6 +19,7 @@ package org.apache.openmeetings.service.room; import static java.util.UUID.randomUUID; +import static org.apache.openmeetings.db.entity.calendar.Appointment.allowedStart; import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication; import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone; @@ -183,8 +184,8 @@ public class InvitationManager implements IInvitationManager { @Override public Invitation getInvitation(Invitation inInvitation, User inveetee, Room room - , boolean isPasswordProtected, String invitationpass, Valid valid, - User createdBy, Long languageId, Date gmtTimeStart, Date gmtTimeEnd + , boolean isPasswordProtected, String invitationpass, Valid valid + , User createdBy, Long languageId, Date mmStart, Date mmEnd , Appointment appointment) { Invitation invitation = inInvitation; @@ -204,8 +205,8 @@ public class InvitationManager implements IInvitationManager { // valid period of Invitation switch (valid) { case PERIOD: - invitation.setValidFrom(new Date(gmtTimeStart.getTime() - (5 * 60 * 1000))); - invitation.setValidTo(gmtTimeEnd); + invitation.setValidFrom(allowedStart(mmStart)); + invitation.setValidTo(mmEnd); break; case ENDLESS: case ONE_TIME: @@ -229,10 +230,10 @@ public class InvitationManager implements IInvitationManager { @Override public Invitation getInvitation(User inveetee, Room room, boolean isPasswordProtected, String invitationpass, Valid valid, - User createdBy, Long languageId, Date gmtTimeStart, Date gmtTimeEnd, Appointment appointment) + User createdBy, Long languageId, Date mmStart, Date mmEnd, Appointment appointment) { Invitation i = getInvitation((Invitation)null, inveetee, room, isPasswordProtected, invitationpass, valid, createdBy - , languageId, gmtTimeStart, gmtTimeEnd, appointment); + , languageId, mmStart, mmEnd, appointment); i = invitationDao.update(i); return i; } diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java index 5455445..0b9fc15 100644 --- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java +++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java @@ -57,6 +57,7 @@ public class OpenmeetingsVariables { public static final String CONFIG_IGNORE_BAD_SSL = "oauth2.ignore.bad.ssl"; public static final String CONFIG_REDIRECT_URL_FOR_EXTERNAL = "redirect.url.for.external.users"; public static final String CONFIG_APPOINTMENT_REMINDER_MINUTES = "number.minutes.reminder.send"; + public static final String CONFIG_APPOINTMENT_PRE_START_MINUTES = "appointment.pre.start.minutes"; public static final String CONFIG_APPLICATION_NAME = "application.name"; public static final String CONFIG_APPLICATION_BASE_URL = "application.base.url"; public static final String CONFIG_SCREENSHARING_QUALITY = "screensharing.default.quality"; @@ -118,7 +119,6 @@ public class OpenmeetingsVariables { public static final String DEFAULT_APP_NAME = "OpenMeetings"; public static final String DEFAULT_CONTEXT_NAME = "openmeetings"; public static final long DEFAULT_MAX_UPLOAD_SIZE = 100 * 1024 * 1024L; // 100MB - public static final int DEFAULT_MINUTES_REMINDER_SEND = 15; public static final String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/"; public static final String DEFAULT_SIP_CONTEXT = "rooms"; public static final String DEFAULT_CSP_FONT = "https://fonts.gstatic.com"; @@ -175,6 +175,8 @@ public class OpenmeetingsVariables { private static int smtpConnectionTimeOut; private static String mailFrom; private static boolean mailAddReplyTo; + private static int appointmentReminderMinutes = 15; + private static int appointmentPreStartMinutes = 5; private OpenmeetingsVariables() {} @@ -582,4 +584,20 @@ public class OpenmeetingsVariables { public static void setMailAddReplyTo(boolean addReplyTo) { mailAddReplyTo = addReplyTo; } + + public static int getAppointmentPreStartMinutes() { + return appointmentPreStartMinutes; + } + + public static void setAppointmentPreStartMinutes(int minutes) { + appointmentPreStartMinutes = minutes; + } + + public static int getAppointmentReminderMinutes() { + return appointmentReminderMinutes; + } + + public static void setAppointmentReminderMinutes(int minutes) { + appointmentReminderMinutes = minutes; + } } diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java index ce40b7d..73f9049 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java @@ -21,6 +21,7 @@ package org.apache.openmeetings.web.room; import static java.time.Duration.ZERO; import static org.apache.openmeetings.core.remote.KurentoHandler.activityAllowed; import static org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX; +import static org.apache.openmeetings.db.entity.calendar.Appointment.allowedStart; import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF; import static org.apache.openmeetings.web.app.WebSession.getDateFormat; import static org.apache.openmeetings.web.app.WebSession.getUserId; @@ -335,7 +336,7 @@ public class RoomPanel extends BasePanel { } if (allowed) { Calendar cal = WebSession.getCalendar(); - if (isOwner || cal.getTime().after(a.getStart()) && cal.getTime().before(a.getEnd())) { + if (isOwner || cal.getTime().after(allowedStart(a.getStart())) && cal.getTime().before(a.getEnd())) { eventDetail = new EventDetailDialog(EVENT_DETAILS_ID, a); } else { allowed = false;