From 23e0a7f5ead02dba3724ce7fdbdcb6f24d8b7d5b Mon Sep 17 00:00:00 2001
From: Andreas Svanberg <andreass@dsv.su.se>
Date: Wed, 5 Mar 2025 14:07:47 +0100
Subject: [PATCH] Improvements to the Excel export of projects (#126)

The research area column show the string "null" instead of being an empty cell for projects without a research area. This has been fixed everywhere and not just on the project export.

The reviewer column showed weird technical details (`User#toString()`) instead of the reviewers name.

## How to test
1. On `develop` branch
2. Log in as the default admin
3. Go to "Project management / Projects"
4. Click "Excel export" under the table
5. Open the file and see
6. Repeat 1-5 on this branch

Co-authored-by: Nico Athanassiadis <nico@dsv.su.se>
Reviewed-on: https://gitea.dsv.su.se/DMC/scipro/pulls/126
Reviewed-by: Nico Athanassiadis <nico@dsv.su.se>
Co-authored-by: Andreas Svanberg <andreass@dsv.su.se>
Co-committed-by: Andreas Svanberg <andreass@dsv.su.se>
---
 .../dsv/scipro/datatables/project/ProjectDataPanel.java   | 8 +++++---
 view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java | 4 +++-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java b/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java
index 04b5d7b3f8..e58b5cce94 100644
--- a/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/datatables/project/ProjectDataPanel.java
@@ -1,6 +1,5 @@
 package se.su.dsv.scipro.datatables.project;
 
-import com.google.common.eventbus.EventBus;
 import jakarta.inject.Inject;
 import java.util.*;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -33,7 +32,6 @@ import se.su.dsv.scipro.components.datatables.MultipleUsersColumn;
 import se.su.dsv.scipro.components.datatables.UserColumn;
 import se.su.dsv.scipro.dataproviders.FilteredDataProvider;
 import se.su.dsv.scipro.datatables.AjaxCheckboxWrapper;
-import se.su.dsv.scipro.notifications.NotificationController;
 import se.su.dsv.scipro.profile.UserLinkPanel;
 import se.su.dsv.scipro.project.Project;
 import se.su.dsv.scipro.project.ProjectService;
@@ -45,7 +43,6 @@ import se.su.dsv.scipro.system.ProjectType;
 import se.su.dsv.scipro.system.ProjectTypeService;
 import se.su.dsv.scipro.system.ResearchArea;
 import se.su.dsv.scipro.system.User;
-import se.su.dsv.scipro.system.UserService;
 import se.su.dsv.scipro.util.PageParameterKeys;
 
 public class ProjectDataPanel extends Panel {
@@ -170,6 +167,11 @@ public class ProjectDataPanel extends Panel {
             ) {
                 cellItem.add(new ReviewerColumnCell(componentId, rowModel));
             }
+
+            @Override
+            public IModel<?> getDataModel(IModel<Project> rowModel) {
+                return rowModel.map(Project::getReviewer).map(User::getFullName);
+            }
         };
     }
 
diff --git a/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java b/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java
index 14946fc9a4..7e4edfd722 100644
--- a/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java
+++ b/view/src/main/java/se/su/dsv/scipro/io/ExcelExporter.java
@@ -72,7 +72,9 @@ public class ExcelExporter extends AbstractDataExporter {
         for (int i = 0; i < columns.size(); i++) {
             Object cellValue = columns.get(i).getDataModel(data).getObject();
             Cell cell = row.createCell(i);
-            cell.setCellValue(String.valueOf(cellValue));
+            if (cellValue != null) {
+                cell.setCellValue(cellValue.toString());
+            }
         }
     }
 }