From bab92b56885663e20c7bc5010d94b4a6c23ea53e Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Thu, 9 Apr 2020 15:33:30 +0200 Subject: [PATCH] OO-4626: beautify status, remove debug code --- .../manager/BigBlueButtonManagerImpl.java | 6 +- .../model/BigBlueButtonServerInfos.java | 13 +++- .../BigBlueButtonAdminServersController.java | 2 +- .../BigBlueButtonAdminServersTableModel.java | 4 +- .../ui/BigBlueButtonServerRow.java | 12 ++-- .../bigbluebutton/ui/StatusCellRenderer.java | 66 +++++++++++++++++++ .../ui/_i18n/LocalStrings_de.properties | 4 ++ .../ui/_i18n/LocalStrings_en.properties | 4 ++ 8 files changed, 97 insertions(+), 14 deletions(-) create mode 100644 src/main/java/org/olat/modules/bigbluebutton/ui/StatusCellRenderer.java diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java index 14ce098f809..ee20ee7da46 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java +++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java @@ -253,7 +253,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ .filter(meeting -> instanceMeetingsIds.contains(meeting.getMeetingId())) .collect(Collectors.toList()); double load = this.calculateLoad(info.getServer(), instanceMeetings); - instanceInfos.add(new BigBlueButtonServerInfos(info.getServer(), instanceMeetings, load)); + instanceInfos.add(new BigBlueButtonServerInfos(info.getServer(), info.isAvailable(), instanceMeetings, load)); } return instanceInfos; } @@ -409,7 +409,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ return threads.stream() .filter(MeetingInfosThread::isExecuted) .filter(thread -> !thread.hasErrors()) - .map(thread -> new BigBlueButtonServerInfos(thread.getServer(), thread.getMeetingsInfos(), + .map(thread -> new BigBlueButtonServerInfos(thread.getServer(), thread.isExecuted(), thread.getMeetingsInfos(), calculateLoad(thread.getServer(), thread.getMeetingsInfos()))) .collect(Collectors.toList()); } @@ -600,8 +600,6 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ @Override public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, Boolean isRunning, BigBlueButtonErrors errors) { - this.getAvailableServer(); - String joinUrl = null; if(isRunning != null && isRunning.booleanValue() && meeting.getServer() != null) { joinUrl = buildJoinUrl(meeting, meeting.getServer(), identity, moderator, guest); diff --git a/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonServerInfos.java b/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonServerInfos.java index d0162ffd385..57535d23bd7 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonServerInfos.java +++ b/src/main/java/org/olat/modules/bigbluebutton/model/BigBlueButtonServerInfos.java @@ -19,6 +19,7 @@ */ package org.olat.modules.bigbluebutton.model; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -33,19 +34,29 @@ import org.olat.modules.bigbluebutton.BigBlueButtonServer; public class BigBlueButtonServerInfos { private double load; + private boolean available; private final BigBlueButtonServer server; private final List<BigBlueButtonMeetingInfos> meetingsInfos; - public BigBlueButtonServerInfos(BigBlueButtonServer server, List<BigBlueButtonMeetingInfos> meetingsInfos, double load) { + public BigBlueButtonServerInfos(BigBlueButtonServer server, boolean available, List<BigBlueButtonMeetingInfos> meetingsInfos, double load) { this.load = load; this.server = server; + this.available = available; this.meetingsInfos = meetingsInfos; } + public static final BigBlueButtonServerInfos empty(BigBlueButtonServer server) { + return new BigBlueButtonServerInfos(server, false, new ArrayList<>(), 0.0d); + } + public double getLoad() { return load; } + public boolean isAvailable() { + return available; + } + public BigBlueButtonServer getServer() { return server; } diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersController.java index 04baceada2c..4cdb7f704fb 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersController.java @@ -65,7 +65,7 @@ public class BigBlueButtonAdminServersController extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ServersCols.enabled)); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ServersCols.status, new StatusCellRenderer(getTranslator()))); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ServersCols.url)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ServersCols.capacityFactor, new CapacityFactorCellRenderer())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ServersCols.moderatorCount)); diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersTableModel.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersTableModel.java index dbe5e31e462..f1c2ea7688a 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersTableModel.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonAdminServersTableModel.java @@ -73,7 +73,7 @@ implements SortableFlexiTableDataModel<BigBlueButtonServerRow>, FilterableFlexiT public Object getValueAt(BigBlueButtonServerRow row, int col) { switch(COLS[col]) { case url: return row.getUrl(); - case enabled: return row.isEnabled(); + case status: return row.isEnabled(); case capacityFactor: return row.getCapacityFactor(); case moderatorCount: return allInstances ? row.getAllInstancesServerInfos().getModeratorCount() : row.getServerInfos().getModeratorCount(); @@ -105,7 +105,7 @@ implements SortableFlexiTableDataModel<BigBlueButtonServerRow>, FilterableFlexiT public enum ServersCols implements FlexiSortableColumnDef { url("table.header.server.url"), - enabled("table.header.server.enabled"), + status("table.header.server.enabled"), capacityFactor("table.header.capacity.factor"), moderatorCount("table.header.moderator.count"), participantCount("table.header.participant.count"), diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonServerRow.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonServerRow.java index 62506b318c3..036e0bd9e7a 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonServerRow.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonServerRow.java @@ -19,8 +19,6 @@ */ package org.olat.modules.bigbluebutton.ui; -import java.util.ArrayList; - import org.olat.modules.bigbluebutton.BigBlueButtonServer; import org.olat.modules.bigbluebutton.model.BigBlueButtonServerInfos; @@ -40,10 +38,8 @@ public class BigBlueButtonServerRow { BigBlueButtonServerInfos allInstanceServerInfos, BigBlueButtonServerInfos serverInfos) { this.server = server; - this.serverInfos = serverInfos == null - ? new BigBlueButtonServerInfos(server, new ArrayList<>(), 0.0d) : serverInfos; - this.allInstanceServerInfos = allInstanceServerInfos == null - ? new BigBlueButtonServerInfos(server, new ArrayList<>(), 0.0d) : allInstanceServerInfos; + this.serverInfos = serverInfos == null ? BigBlueButtonServerInfos.empty(server) : serverInfos; + this.allInstanceServerInfos = allInstanceServerInfos == null ? BigBlueButtonServerInfos.empty(server) : allInstanceServerInfos; } public String getUrl() { @@ -54,6 +50,10 @@ public class BigBlueButtonServerRow { return server.isEnabled(); } + public boolean isAvailable() { + return allInstanceServerInfos.isAvailable(); + } + public Double getCapacityFactor() { return server.getCapacityFactory(); } diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/StatusCellRenderer.java b/src/main/java/org/olat/modules/bigbluebutton/ui/StatusCellRenderer.java new file mode 100644 index 00000000000..77bcaef3281 --- /dev/null +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/StatusCellRenderer.java @@ -0,0 +1,66 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.bigbluebutton.ui; + +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent; +import org.olat.core.gui.render.Renderer; +import org.olat.core.gui.render.StringOutput; +import org.olat.core.gui.render.URLBuilder; +import org.olat.core.gui.translator.Translator; + +/** + * + * Initial date: 8 avr. 2020<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class StatusCellRenderer implements FlexiCellRenderer { + + private final Translator translator; + + public StatusCellRenderer(Translator translator) { + this.translator = translator; + } + + @Override + public void render(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source, + URLBuilder ubu, Translator trans) { + Object obj = source.getFlexiTableElement().getTableDataModel().getObject(row); + if(obj instanceof BigBlueButtonServerRow) { + BigBlueButtonServerRow server = (BigBlueButtonServerRow)obj; + + String title; + String statusCssClass; + if(!server.isEnabled()) { + title = "server.status.disabled"; + statusCssClass = "o_icon_disabled"; + } else if(!server.isAvailable()) { + statusCssClass = "o_icon_warn"; + title = "server.status.offline"; + } else { + statusCssClass = "o_icon_accept"; + title = "server.status.available"; + } + target.append("<span title=\"").append(translator.translate(title)) + .append("\"><i class='o_icon ").append(statusCssClass).append("'> </i></span>"); + } + } +} diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties index 8888e1fc999..44b254b9d6b 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties @@ -98,6 +98,9 @@ role.group=Gruppenmitglied role.owner=Kursbesitzer server.overloaded=F\u00FCr das gew\u00E4hlten Datum/Uhrzeit ist kein Raum verf\u00FCgbar. W\u00E4hlen Sie ein anderes Datum/Uhrzeit oder eine andere Raumvorlage. servers.title=Server +server.status.available=Verf\u00FCgbar +server.status.offline=Scheint offline zu sein +server.status.disabled=Abgeschaltet table.header.available=Verf\u00FCgbarkeit table.header.breakout.meetings=\# Breakout table.header.breakout.recording.meetings=\# Breakout Recording @@ -121,6 +124,7 @@ table.header.recording.open=\u00D6ffnen table.header.recording.start=Beginn table.header.recording.type=Typ table.header.server.enabled=Eingeschaltet +table.header.server.status=Status table.header.server.recording=Aufzeichnungen URL table.header.server.url=URL table.header.system=System diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties index c2a39241c04..94b9c8756aa 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties @@ -97,6 +97,9 @@ role.coach=Coach role.group=Group user role.owner=Course owner server.overloaded=There is no room available for the choosen date/time. Choose another date/time or another room template. +server.status.available=Available +server.status.offline=Seems to be offline +server.status.disabled=Disabled servers.title=Servers table.header.available=Availability table.header.breakout.meetings=\# Breakout @@ -121,6 +124,7 @@ table.header.recording.open=Open table.header.recording.start=Start table.header.recording.type=Type table.header.server.enabled=Enabled +table.header.server.status=Status table.header.server.recording=Recording URL table.header.server.url=URL table.header.system=System -- GitLab