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;

Reply via email to