From 1088af9978b5c2502b0d64089a1f90476c99466e Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Fri, 19 Feb 2021 11:02:33 +0100 Subject: [PATCH] OO-5301: Standard user display name in large files list --- .../admin/sysinfo/LargeFilesController.java | 13 ++-- .../sysinfo/model/LargeFilesTableModel.java | 6 +- .../user/ui/UserDisplayNameCellRenderer.java | 65 +++++++++++++++++++ 3 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/olat/user/ui/UserDisplayNameCellRenderer.java diff --git a/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java b/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java index 44a32801495..c13b68c584b 100644 --- a/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java +++ b/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java @@ -79,6 +79,7 @@ import org.olat.core.util.StringHelper; import org.olat.core.util.mail.ContactList; import org.olat.core.util.mail.ContactMessage; import org.olat.modules.co.ContactFormController; +import org.olat.user.ui.UserDisplayNameCellRenderer; import org.springframework.beans.factory.annotation.Autowired; @@ -215,9 +216,7 @@ public class LargeFilesController extends FormBasicController implements Extende } } - Collections.sort(rows, (row1,row2) -> { - return row2.getSize().intValue() - row1.getSize().intValue(); - }); + Collections.sort(rows, (row1, row2) -> (row2.getSize().intValue() - row1.getSize().intValue())); if(maxResults != 0 && maxResults < rows.size()) { rows = rows.subList(0, maxResults); @@ -332,7 +331,9 @@ public class LargeFilesController extends FormBasicController implements Extende columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.fileType)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.downloadCount)); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.author, "selectAuthor")); + DefaultFlexiColumnModel authorModel = new DefaultFlexiColumnModel(false, LargeFilesTableColumns.author, "selectAuthor"); + authorModel.setCellRenderer(UserDisplayNameCellRenderer.get()); + columnsModel.addFlexiColumnModel(authorModel); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.license)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.language)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.source)); @@ -342,7 +343,9 @@ public class LargeFilesController extends FormBasicController implements Extende columnsModel.addFlexiColumnModel(column); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.lockedAt)); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.lockedBy, "selectLockedBy")); + DefaultFlexiColumnModel lockedByModel = new DefaultFlexiColumnModel(false, LargeFilesTableColumns.lockedBy, "selectLockedBy"); + lockedByModel.setCellRenderer(UserDisplayNameCellRenderer.get()); + columnsModel.addFlexiColumnModel(lockedByModel); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.creator)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.publisher)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, LargeFilesTableColumns.pubDate)); diff --git a/src/main/java/org/olat/admin/sysinfo/model/LargeFilesTableModel.java b/src/main/java/org/olat/admin/sysinfo/model/LargeFilesTableModel.java index ad95804a6db..4fa78189570 100644 --- a/src/main/java/org/olat/admin/sysinfo/model/LargeFilesTableModel.java +++ b/src/main/java/org/olat/admin/sysinfo/model/LargeFilesTableModel.java @@ -42,7 +42,7 @@ public class LargeFilesTableModel extends DefaultFlexiTableDataModel<LargeFilesT implements SortableFlexiTableDataModel<LargeFilesTableContentRow> { private final Locale locale; - + public LargeFilesTableModel(FlexiTableColumnModel columnModel, Locale locale) { super(columnModel); this.locale = locale; @@ -72,7 +72,7 @@ implements SortableFlexiTableDataModel<LargeFilesTableContentRow> { case contextInfo: return row.getContextInfo(); case path: return row.getPath(); case showPath: return row.getShowPath(); - case author: return row.getAuthor() != null ? row.getAuthor().getUser().getFirstName() + " " + row.getAuthor().getUser().getLastName() : null; + case author: return row.getAuthor(); case revision: return row.isRevision(); case fileCategory: return row.getFileCategory(); case fileType: return row.getFileType(); @@ -91,7 +91,7 @@ implements SortableFlexiTableDataModel<LargeFilesTableContentRow> { case pubDate: return returnNullSafeDate(row.getPubDate()); case language: return row.getLanguage(); case locked: return row.isLocked(); - case lockedBy: return row.getLockedBy() != null ? row.getLockedBy().getUser().getFirstName() + " " + row.getLockedBy().getUser().getLastName() : null; + case lockedBy: return row.getLockedBy(); case lockedAt: return returnNullSafeDate(row.getLockedAt()); case revisionComment: return row.getRevisionComment(); case revisionNr: return row.getRevisionNr(); diff --git a/src/main/java/org/olat/user/ui/UserDisplayNameCellRenderer.java b/src/main/java/org/olat/user/ui/UserDisplayNameCellRenderer.java new file mode 100644 index 00000000000..add40df5730 --- /dev/null +++ b/src/main/java/org/olat/user/ui/UserDisplayNameCellRenderer.java @@ -0,0 +1,65 @@ +/** + * <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.user.ui; + +import org.olat.core.CoreSpringFactory; +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; +import org.olat.core.id.Identity; +import org.olat.core.id.User; +import org.olat.user.UserManager; + +/** + * + * Initial date: 19 Feb 2021<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class UserDisplayNameCellRenderer implements FlexiCellRenderer { + + private static final UserDisplayNameCellRenderer INSTANCE = new UserDisplayNameCellRenderer(); + + private final UserManager userManager; + + public static UserDisplayNameCellRenderer get() { + return INSTANCE; + } + + private UserDisplayNameCellRenderer() { + this.userManager = CoreSpringFactory.getImpl(UserManager.class); + } + + @Override + public void render(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source, + URLBuilder ubu, Translator translator) { + if (cellValue instanceof Identity) { + String userDisplayName = userManager.getUserDisplayName(((Identity)cellValue).getKey()); + target.append(userDisplayName); + } else if (cellValue instanceof User) { + String userDisplayName = userManager.getUserDisplayName(((User)cellValue)); + target.append(userDisplayName); + } + } + +} -- GitLab