From a36ba081e6a64173d1547a2fd0975965b5c36f5c Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 6 Mar 2020 14:20:06 +0100
Subject: [PATCH] OO-4556: show only published videos in LearnTube

---
 .../olat/modules/video/ui/VideoEntryDataSource.java   |  4 ++--
 .../olat/modules/video/ui/VideoListingController.java |  7 ++++---
 .../manager/RepositoryEntryMyCourseQueries.java       |  8 ++------
 .../model/SearchMyRepositoryEntryViewParams.java      | 11 ++++++-----
 .../repository/ui/catalog/CatalogNodeController.java  |  5 +++--
 .../ui/list/OverviewRepositoryListController.java     |  5 +++--
 .../ui/list/RepositoryEntryListController.java        | 11 ++++++++++-
 7 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/src/main/java/org/olat/modules/video/ui/VideoEntryDataSource.java b/src/main/java/org/olat/modules/video/ui/VideoEntryDataSource.java
index 214fb5d1df5..cc065a135e3 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoEntryDataSource.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoEntryDataSource.java
@@ -86,7 +86,7 @@ public class VideoEntryDataSource implements FlexiTableDataSourceDelegate<Reposi
 	public ResultInfos<RepositoryEntryRow> getRows(String query, List<FlexiTableFilter> filters,
 			List<String> condQueries, int firstResult, int maxResults, SortKey... orderBy) {
 		
-		if(condQueries != null && condQueries.size() > 0) {
+		if(condQueries != null && !condQueries.isEmpty()) {
 			String filter = condQueries.get(0);
 			if(StringHelper.containsNonWhitespace(filter)) {
 				searchParams.setFilters(Collections.singletonList(Filter.valueOf(filter)));
@@ -111,7 +111,7 @@ public class VideoEntryDataSource implements FlexiTableDataSourceDelegate<Reposi
 		List<RepositoryEntryRow> rows = processViewModel(views);
 		ResultInfos<RepositoryEntryRow> results = new DefaultResultInfos<>(firstResult + rows.size(), -1, rows);
 		if(firstResult == 0 && views.size() < maxResults) {
-			count = new Integer(views.size());
+			count = Integer.valueOf(views.size());
 		}
 		return results;
 	}
diff --git a/src/main/java/org/olat/modules/video/ui/VideoListingController.java b/src/main/java/org/olat/modules/video/ui/VideoListingController.java
index 2f8c1cfe8d3..fe9d4f58b02 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoListingController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoListingController.java
@@ -58,6 +58,7 @@ import org.olat.core.util.vfs.VFSMediaResource;
 import org.olat.fileresource.types.VideoFileResource;
 import org.olat.modules.video.ui.VideoEntryDataModel.Cols;
 import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryEntryStatusEnum;
 import org.olat.repository.RepositoryManager;
 import org.olat.repository.RepositoryModule;
 import org.olat.repository.RepositoryService;
@@ -81,7 +82,6 @@ public class VideoListingController extends FormBasicController implements Activ
 
 	private final String imgUrl;
 	private FlexiTableElement tableEl;
-	private VideoEntryDataModel model;
 	private VideoEntryDataSource dataSource;
 	private SearchMyRepositoryEntryViewParams searchParams;
 
@@ -94,11 +94,12 @@ public class VideoListingController extends FormBasicController implements Activ
 
 	public VideoListingController(UserRequest ureq, WindowControl wControl, TooledStackedPanel toolbarPanel) {		
 		super(ureq, wControl, "video_listing");
-		this.setTranslator(Util.createPackageTranslator(RepositoryService.class, getLocale(), getTranslator()));
+		setTranslator(Util.createPackageTranslator(RepositoryService.class, getLocale(), getTranslator()));
 		
 		this.toolbarPanel = toolbarPanel;
 		
 		searchParams = new SearchMyRepositoryEntryViewParams(getIdentity(), ureq.getUserSession().getRoles(), VideoFileResource.TYPE_NAME);
+		searchParams.setEntryStatus(new RepositoryEntryStatusEnum[] { RepositoryEntryStatusEnum.published });
 		dataSource = new VideoEntryDataSource(searchParams);
 		imgUrl = registerMapper(ureq, new VideoMapper());
 
@@ -111,7 +112,7 @@ public class VideoListingController extends FormBasicController implements Activ
 		FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.key.i18nKey(), Cols.key.ordinal(), true, OrderBy.key.name()));
 
-		model = new VideoEntryDataModel(dataSource, columnsModel);
+		VideoEntryDataModel model = new VideoEntryDataModel(dataSource, columnsModel);
 		tableEl = uifactory.addTableElement(getWindowControl(), "table", model, 20, false, getTranslator(), formLayout);
 		tableEl.setAvailableRendererTypes(FlexiTableRendererType.custom);
 		tableEl.setRendererType(FlexiTableRendererType.custom);
diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
index 4b7ea6028b7..5c8ec0714cb 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
@@ -219,12 +219,8 @@ public class RepositoryEntryMyCourseQueries {
 		sb.append(" where ");
 		needIdentityKey |= appendMyViewAccessSubSelect(sb, roles, params.getFilters(), params.isMembershipMandatory());
 
-		if(params.getClosed() != null) {
-			if(params.getClosed().booleanValue()) {
-				sb.append(" and v.status ").in(RepositoryEntryStatusEnum.closed);
-			} else {
-				sb.append(" and v.status ").in(RepositoryEntryStatusEnum.preparationToPublished());
-			}
+		if(params.getEntryStatus() != null) {
+			sb.append(" and v.status ").in(params.getEntryStatus());
 		}
 		
 		if(params.getFilters() != null) {
diff --git a/src/main/java/org/olat/repository/model/SearchMyRepositoryEntryViewParams.java b/src/main/java/org/olat/repository/model/SearchMyRepositoryEntryViewParams.java
index c74fa6316d0..e297679d8ea 100644
--- a/src/main/java/org/olat/repository/model/SearchMyRepositoryEntryViewParams.java
+++ b/src/main/java/org/olat/repository/model/SearchMyRepositoryEntryViewParams.java
@@ -26,6 +26,7 @@ import org.olat.core.id.Identity;
 import org.olat.core.id.Roles;
 import org.olat.modules.curriculum.CurriculumRef;
 import org.olat.repository.CatalogEntry;
+import org.olat.repository.RepositoryEntryStatusEnum;
 
 /**
  * 
@@ -38,8 +39,8 @@ public class SearchMyRepositoryEntryViewParams {
 	private Roles roles;
 	
 	private Boolean marked;
-	private Boolean closed;
 	private boolean membershipMandatory = false;
+	private RepositoryEntryStatusEnum[] entryStatus;
 	
 	private OrderBy orderBy;
 	private boolean asc;
@@ -182,12 +183,12 @@ public class SearchMyRepositoryEntryViewParams {
 		return roles;
 	}
 	
-	public Boolean getClosed() {
-		return closed;
+	public RepositoryEntryStatusEnum[] getEntryStatus() {
+		return entryStatus;
 	}
 
-	public void setClosed(Boolean closed) {
-		this.closed = closed;
+	public void setEntryStatus(RepositoryEntryStatusEnum[] entryStatus) {
+		this.entryStatus = entryStatus;
 	}
 
 	public Boolean getMarked() {
diff --git a/src/main/java/org/olat/repository/ui/catalog/CatalogNodeController.java b/src/main/java/org/olat/repository/ui/catalog/CatalogNodeController.java
index 3c930ed8bc2..de08a8f437b 100644
--- a/src/main/java/org/olat/repository/ui/catalog/CatalogNodeController.java
+++ b/src/main/java/org/olat/repository/ui/catalog/CatalogNodeController.java
@@ -47,6 +47,7 @@ import org.olat.core.util.resource.OresHelper;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.repository.CatalogEntry;
 import org.olat.repository.CatalogEntry.Style;
+import org.olat.repository.RepositoryEntryStatusEnum;
 import org.olat.repository.RepositoryManager;
 import org.olat.repository.manager.CatalogManager;
 import org.olat.repository.model.SearchMyRepositoryEntryViewParams;
@@ -145,7 +146,7 @@ public class CatalogNodeController extends BasicController implements Activateab
 		SearchMyRepositoryEntryViewParams searchParams
 			= new SearchMyRepositoryEntryViewParams(getIdentity(), ureq.getUserSession().getRoles());
 		searchParams.setParentEntry(catalogEntry);
-		searchParams.setClosed(Boolean.FALSE);
+		searchParams.setEntryStatus(RepositoryEntryStatusEnum.preparationToPublished());
 		
 		entryListController = new RepositoryEntryListController(ureq, wControl, searchParams, true, false, "catalog", stackPanel);
 		if(!entryListController.isEmpty() || searchParams.getFilters() != null) {
@@ -157,7 +158,7 @@ public class CatalogNodeController extends BasicController implements Activateab
 		SearchMyRepositoryEntryViewParams searchClosedParams
 				= new SearchMyRepositoryEntryViewParams(getIdentity(), ureq.getUserSession().getRoles());
 		searchClosedParams.setParentEntry(catalogEntry);
-		searchClosedParams.setClosed(Boolean.TRUE);
+		searchClosedParams.setEntryStatus(new RepositoryEntryStatusEnum[] {RepositoryEntryStatusEnum.closed });
 		closedEntryListController = new RepositoryEntryListController(ureq, wControl, searchClosedParams, true, false, "catalog-closed", stackPanel);
 		if(!closedEntryListController.isEmpty() || searchClosedParams.getFilters() != null) {
 			mainVC.put("closedEntries", closedEntryListController.getInitialComponent());
diff --git a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java
index d607b447dcf..87f65b95c76 100644
--- a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java
+++ b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java
@@ -49,6 +49,7 @@ import org.olat.modules.curriculum.CurriculumModule;
 import org.olat.modules.curriculum.CurriculumService;
 import org.olat.modules.curriculum.ui.CurriculumListController;
 import org.olat.repository.CatalogEntry;
+import org.olat.repository.RepositoryEntryStatusEnum;
 import org.olat.repository.RepositoryManager;
 import org.olat.repository.RepositoryModule;
 import org.olat.repository.RepositoryService;
@@ -314,7 +315,7 @@ public class OverviewRepositoryListController extends BasicController implements
 		SearchMyRepositoryEntryViewParams searchParams
 			= new SearchMyRepositoryEntryViewParams(getIdentity(), ureq.getUserSession().getRoles());
 		searchParams.setMembershipMandatory(true);
-		searchParams.setClosed(Boolean.FALSE);
+		searchParams.setEntryStatus(RepositoryEntryStatusEnum.preparationToPublished());
 
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance("My", 0l);
 		ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
@@ -407,7 +408,7 @@ public class OverviewRepositoryListController extends BasicController implements
 		SearchMyRepositoryEntryViewParams searchParams
 			= new SearchMyRepositoryEntryViewParams(getIdentity(), ureq.getUserSession().getRoles());
 		searchParams.setMembershipMandatory(true);
-		searchParams.setClosed(Boolean.TRUE);
+		searchParams.setEntryStatus(new RepositoryEntryStatusEnum[] {RepositoryEntryStatusEnum.closed });
 
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance("Closed", 0l);
 		ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
diff --git a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java
index 318bb1ddf2c..2970e4b3f82 100644
--- a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java
+++ b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java
@@ -75,6 +75,7 @@ import org.olat.core.util.Util;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.course.CorruptedCourseException;
 import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryEntryStatusEnum;
 import org.olat.repository.RepositoryManager;
 import org.olat.repository.RepositoryModule;
 import org.olat.repository.RepositoryService;
@@ -496,7 +497,15 @@ public class RepositoryEntryListController extends FormBasicController
 		searchParams.setAuthor(se.getAuthor());
 		searchParams.setText(se.getDisplayname());
 		searchParams.setMembershipMandatory(se.isMembershipMandatory());
-		searchParams.setClosed(se.getClosed());
+		if(se.getClosed() != null) {
+			if(se.getClosed().booleanValue()) {
+				searchParams.setEntryStatus(new RepositoryEntryStatusEnum[] { RepositoryEntryStatusEnum.closed });
+			} else {
+				searchParams.setEntryStatus(RepositoryEntryStatusEnum.preparationToPublished());
+			}
+		} else {
+			searchParams.setEntryStatus(null);
+		}
 		tableEl.reset(true, true, true);
 		
 		RepositoryEntryListState state = new RepositoryEntryListState();
-- 
GitLab