From 180acafe94881d568945135aefdd1037fddf1769 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Tue, 19 Mar 2019 16:56:42 +0100 Subject: [PATCH] OO-3977: filter type in memory for some kind of resources queries --- .../RepositoryEntryAuthorViewResults.java | 47 +++++ .../olat/repository/RepositoryService.java | 2 +- .../manager/RepositoryEntryAuthorQueries.java | 35 +++- .../manager/RepositoryServiceImpl.java | 4 +- .../ui/author/AuthoringEntryDataSource.java | 8 +- .../RepositoryEntryAuthorQueriesTest.java | 184 +++++++++++------- 6 files changed, 190 insertions(+), 90 deletions(-) create mode 100644 src/main/java/org/olat/repository/RepositoryEntryAuthorViewResults.java diff --git a/src/main/java/org/olat/repository/RepositoryEntryAuthorViewResults.java b/src/main/java/org/olat/repository/RepositoryEntryAuthorViewResults.java new file mode 100644 index 00000000000..24f1aa03005 --- /dev/null +++ b/src/main/java/org/olat/repository/RepositoryEntryAuthorViewResults.java @@ -0,0 +1,47 @@ +/** + * <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.repository; + +import java.util.List; + +/** + * + * Initial date: 19 mars 2019<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class RepositoryEntryAuthorViewResults { + + private final boolean complete; + private final List<RepositoryEntryAuthorView> views; + + public RepositoryEntryAuthorViewResults(List<RepositoryEntryAuthorView> views, boolean complete) { + this.views = views; + this.complete = complete; + } + + public boolean isComplete() { + return complete; + } + + public List<RepositoryEntryAuthorView> getViews() { + return views; + } +} diff --git a/src/main/java/org/olat/repository/RepositoryService.java b/src/main/java/org/olat/repository/RepositoryService.java index bbac9152fbe..2f5ba53065e 100644 --- a/src/main/java/org/olat/repository/RepositoryService.java +++ b/src/main/java/org/olat/repository/RepositoryService.java @@ -311,7 +311,7 @@ public interface RepositoryService { public int countAuthorView(SearchAuthorRepositoryEntryViewParams params); - public List<RepositoryEntryAuthorView> searchAuthorView(SearchAuthorRepositoryEntryViewParams params, int firstResult, int maxResults); + public RepositoryEntryAuthorViewResults searchAuthorView(SearchAuthorRepositoryEntryViewParams params, int firstResult, int maxResults); /** diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java index 4f3be232525..97cdb268715 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java +++ b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java @@ -41,6 +41,7 @@ import org.olat.core.util.StringHelper; import org.olat.modules.lecture.LectureModule; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryAuthorView; +import org.olat.repository.RepositoryEntryAuthorViewResults; import org.olat.repository.RepositoryEntryStatusEnum; import org.olat.repository.model.RepositoryEntryAuthorImpl; import org.olat.repository.model.SearchAuthorRepositoryEntryViewParams; @@ -78,21 +79,31 @@ public class RepositoryEntryAuthorQueries { log.error("No identity defined for query"); return 0; } - - TypedQuery<Number> query = createViewQuery(params, Number.class); + + TypedQuery<Number> query = createViewQuery(params, false, Number.class); Number count = query.getSingleResult(); return count == null ? 0 : count.intValue(); } - public List<RepositoryEntryAuthorView> searchViews(SearchAuthorRepositoryEntryViewParams params, int firstResult, int maxResults) { + public RepositoryEntryAuthorViewResults searchViews(SearchAuthorRepositoryEntryViewParams params, int firstResult, int maxResults) { if(params.getIdentity() == null) { log.error("No identity defined for query"); - return Collections.emptyList(); + return new RepositoryEntryAuthorViewResults(Collections.emptyList(), true); + } + + List<String> inMemoryTypes = null; + if(params.isOwnedResourcesOnly() && params.isResourceTypesDefined()) { + maxResults = -1; + if(params.getResourceTypes().size() == 1) { + inMemoryTypes = Collections.singletonList(params.getResourceTypes().get(0)); + } else { + inMemoryTypes = params.getResourceTypes(); + } } - TypedQuery<Object[]> query = createViewQuery(params, Object[].class); + TypedQuery<Object[]> query = createViewQuery(params, inMemoryTypes != null, Object[].class); query.setFirstResult(firstResult); - if(maxResults > 0) { + if(maxResults > 0 && inMemoryTypes == null) { query.setMaxResults(maxResults); } @@ -100,6 +111,10 @@ public class RepositoryEntryAuthorQueries { List<RepositoryEntryAuthorView> views = new ArrayList<>(objects.size()); for(Object[] object:objects) { RepositoryEntry re = (RepositoryEntry)object[0]; + if(inMemoryTypes != null &&!inMemoryTypes.contains(re.getOlatResource().getResourceableTypeName())) { + continue; + } + Number numOfMarks = (Number)object[1]; boolean hasMarks = numOfMarks != null && numOfMarks.longValue() > 0; Number numOffers = (Number)object[2]; @@ -125,10 +140,10 @@ public class RepositoryEntryAuthorQueries { views.add(new RepositoryEntryAuthorImpl(re, hasMarks, offers, references, deletedByName, lectureEnabled, rollCallEnabled)); } - return views; + return new RepositoryEntryAuthorViewResults(views, inMemoryTypes != null); } - protected <T> TypedQuery<T> createViewQuery(SearchAuthorRepositoryEntryViewParams params, + protected <T> TypedQuery<T> createViewQuery(SearchAuthorRepositoryEntryViewParams params, boolean inMemoryTypes, Class<T> type) { IdentityRef identity = params.getIdentity(); @@ -188,7 +203,7 @@ public class RepositoryEntryAuthorQueries { sb.append(" exists (select ref.key from references as ref where ref.target.key=res.key)"); } - if (params.isResourceTypesDefined()) { + if (params.isResourceTypesDefined() && !inMemoryTypes) { sb.append(" and res.resName in (:resourcetypes)"); } if(params.getMarked() != null && params.getMarked().booleanValue()) { @@ -284,7 +299,7 @@ public class RepositoryEntryAuthorQueries { TypedQuery<T> dbQuery = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), type); - if (params.isResourceTypesDefined()) { + if (params.isResourceTypesDefined() && !inMemoryTypes) { dbQuery.setParameter("resourcetypes", resourceTypes); } if(id != null) { diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java index ecff11dbf90..2417a52d1cd 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java +++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java @@ -79,7 +79,7 @@ import org.olat.modules.taxonomy.TaxonomyLevelRef; import org.olat.repository.ErrorList; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryAllowToLeaveOptions; -import org.olat.repository.RepositoryEntryAuthorView; +import org.olat.repository.RepositoryEntryAuthorViewResults; import org.olat.repository.RepositoryEntryDataDeletable; import org.olat.repository.RepositoryEntryManagedFlag; import org.olat.repository.RepositoryEntryMyView; @@ -815,7 +815,7 @@ public class RepositoryServiceImpl implements RepositoryService, OrganisationDat } @Override - public List<RepositoryEntryAuthorView> searchAuthorView(SearchAuthorRepositoryEntryViewParams params, + public RepositoryEntryAuthorViewResults searchAuthorView(SearchAuthorRepositoryEntryViewParams params, int firstResult, int maxResults) { return authorViewQueries.searchViews(params, firstResult, maxResults); } diff --git a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java index cde39c10b06..bb38672b320 100644 --- a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java +++ b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java @@ -32,13 +32,14 @@ import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DefaultResultInfos; import org.olat.core.commons.persistence.ResultInfos; import org.olat.core.commons.persistence.SortKey; -import org.olat.core.commons.services.license.ResourceLicense; import org.olat.core.commons.services.license.LicenseService; +import org.olat.core.commons.services.license.ResourceLicense; import org.olat.core.gui.components.form.flexible.elements.FlexiTableFilter; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataSourceDelegate; import org.olat.core.id.OLATResourceable; import org.olat.core.util.StringHelper; import org.olat.repository.RepositoryEntryAuthorView; +import org.olat.repository.RepositoryEntryAuthorViewResults; import org.olat.repository.RepositoryService; import org.olat.repository.model.SearchAuthorRepositoryEntryViewParams; import org.olat.repository.model.SearchAuthorRepositoryEntryViewParams.OrderBy; @@ -128,10 +129,11 @@ public class AuthoringEntryDataSource implements FlexiTableDataSourceDelegate<Au searchParams.setIdRefsAndTitle(null); } - List<RepositoryEntryAuthorView> views = repositoryService.searchAuthorView(searchParams, firstResult, maxResults); + RepositoryEntryAuthorViewResults viewResults = repositoryService.searchAuthorView(searchParams, firstResult, maxResults); + List<RepositoryEntryAuthorView> views = viewResults.getViews(); List<AuthoringEntryRow> rows = processViewModel(views); ResultInfos<AuthoringEntryRow> results = new DefaultResultInfos<>(firstResult + rows.size(), -1, rows); - if(firstResult == 0 && views.size() < maxResults) { + if(viewResults.isComplete() || (firstResult == 0 && views.size() < maxResults)) { count = Integer.valueOf(views.size() ); } return results; diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java index 18ff7774087..598a39712b1 100644 --- a/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java +++ b/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java @@ -30,6 +30,7 @@ import org.olat.core.id.Identity; import org.olat.core.id.Roles; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryAuthorView; +import org.olat.repository.RepositoryEntryAuthorViewResults; import org.olat.repository.RepositoryEntryStatusEnum; import org.olat.repository.RepositoryManager; import org.olat.repository.model.SearchAuthorRepositoryEntryViewParams; @@ -70,8 +71,9 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { = new SearchAuthorRepositoryEntryViewParams(id, roles); params.setMarked(Boolean.TRUE); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); - Assert.assertNotNull(views); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); + Assert.assertNotNull(results); + Assert.assertNotNull(results.getViews()); } @Test @@ -83,8 +85,9 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { = new SearchAuthorRepositoryEntryViewParams(id, null); params.setMarked(Boolean.TRUE); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); - Assert.assertNotNull(views); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); + Assert.assertNotNull(results); + Assert.assertNotNull(results.getViews()); } @Test @@ -97,8 +100,9 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { = new SearchAuthorRepositoryEntryViewParams(id, roles); params.setDeleted(true); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); - Assert.assertNotNull(views); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); + Assert.assertNotNull(results); + Assert.assertNotNull(results.getViews()); } /** @@ -117,9 +121,9 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertTrue(contains(reOwner, views)); - Assert.assertFalse(contains(reNotOwner, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertTrue(contains(reOwner, results)); + Assert.assertFalse(contains(reNotOwner, results)); } /** @@ -147,12 +151,12 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertTrue(contains(reOwner, views)); - Assert.assertFalse(contains(reNotOwner, views)); - Assert.assertTrue(contains(reNotOwnerButCopy, views)); - Assert.assertTrue(contains(reNotOwnerButReference, views)); - Assert.assertTrue(contains(reNotOwnerButDownload, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertTrue(contains(reOwner, results)); + Assert.assertFalse(contains(reNotOwner, results)); + Assert.assertTrue(contains(reNotOwnerButCopy, results)); + Assert.assertTrue(contains(reNotOwnerButReference, results)); + Assert.assertTrue(contains(reNotOwnerButDownload, results)); } /** @@ -174,10 +178,10 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); params.setIdAndRefs(reOwner.getKey().toString()); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertTrue(contains(reOwner, views)); - Assert.assertFalse(contains(reNotOwner, views)); - Assert.assertFalse(contains(reNotOwnerButCopy, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertTrue(contains(reOwner, results)); + Assert.assertFalse(contains(reNotOwner, results)); + Assert.assertFalse(contains(reNotOwnerButCopy, results)); } /** @@ -215,14 +219,14 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertFalse(contains(rePreparation, views)); - Assert.assertTrue(contains(reReview, views)); - Assert.assertTrue(contains(reCoachPublished, views)); - Assert.assertTrue(contains(rePublished, views)); - Assert.assertTrue(contains(reClosed, views)); - Assert.assertFalse(contains(reTrash, views)); - Assert.assertFalse(contains(reDeleted, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertFalse(contains(rePreparation, results)); + Assert.assertTrue(contains(reReview, results)); + Assert.assertTrue(contains(reCoachPublished, results)); + Assert.assertTrue(contains(rePublished, results)); + Assert.assertTrue(contains(reClosed, results)); + Assert.assertFalse(contains(reTrash, results)); + Assert.assertFalse(contains(reDeleted, results)); } /** @@ -253,14 +257,14 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertFalse(contains(rePreparation, views)); - Assert.assertFalse(contains(reReview, views)); - Assert.assertFalse(contains(reCoachPublished, views)); - Assert.assertTrue(contains(rePublished, views)); - Assert.assertTrue(contains(reClosed, views)); - Assert.assertFalse(contains(reTrash, views)); - Assert.assertFalse(contains(reDeleted, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertFalse(contains(rePreparation, results)); + Assert.assertFalse(contains(reReview, results)); + Assert.assertFalse(contains(reCoachPublished, results)); + Assert.assertTrue(contains(rePublished, results)); + Assert.assertTrue(contains(reClosed, results)); + Assert.assertFalse(contains(reTrash, results)); + Assert.assertFalse(contains(reDeleted, results)); } /** @@ -300,14 +304,14 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { params.setDeleted(true); params.setOwnedResourcesOnly(true); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertFalse(contains(rePreparation, views)); - Assert.assertFalse(contains(reReview, views)); - Assert.assertFalse(contains(reCoachPublished, views)); - Assert.assertFalse(contains(rePublished, views)); - Assert.assertFalse(contains(reClosed, views)); - Assert.assertTrue(contains(reTrash, views)); - Assert.assertFalse(contains(reDeleted, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertFalse(contains(rePreparation, results)); + Assert.assertFalse(contains(reReview, results)); + Assert.assertFalse(contains(reCoachPublished, results)); + Assert.assertFalse(contains(rePublished, results)); + Assert.assertFalse(contains(reClosed, results)); + Assert.assertTrue(contains(reTrash, results)); + Assert.assertFalse(contains(reDeleted, results)); } /** @@ -337,14 +341,41 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertTrue(contains(rePreparation, views)); - Assert.assertTrue(contains(reReview, views)); - Assert.assertTrue(contains(reCoachPublished, views)); - Assert.assertTrue(contains(rePublished, views)); - Assert.assertTrue(contains(reClosed, views)); - Assert.assertFalse(contains(reTrash, views)); - Assert.assertFalse(contains(reDeleted, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertTrue(contains(rePreparation, results)); + Assert.assertTrue(contains(reReview, results)); + Assert.assertTrue(contains(reCoachPublished, results)); + Assert.assertTrue(contains(rePublished, results)); + Assert.assertTrue(contains(reClosed, results)); + Assert.assertFalse(contains(reTrash, results)); + Assert.assertFalse(contains(reDeleted, results)); + } + + /** + * Check the visibility of entries with different status as an author. + */ + @Test + public void searchViews_status_asOwner() { + Identity id = JunitTestHelper.createAndPersistIdentityAsRndLearnResourceManager("view-4-"); + + // a set of entries with every possible status + RepositoryEntry reOwned = JunitTestHelper.createAndPersistRepositoryEntry(true); + reOwned = repositoryManager.setAccess(reOwned, RepositoryEntryStatusEnum.preparation, true, true); + repositoryEntryRelationDao.addRole(id, reOwned, GroupRoles.owner.name()); + RepositoryEntry reOwned2 = JunitTestHelper.createAndPersistRepositoryEntry(true); + reOwned2 = repositoryManager.setAccess(reOwned2, RepositoryEntryStatusEnum.preparation, true, true); + repositoryEntryRelationDao.addRole(id, reOwned2, GroupRoles.owner.name()); + dbInstance.commitAndCloseSession(); + + SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); + params.setOwnedResourcesOnly(true); + params.addResourceTypes(reOwned.getOlatResource().getResourceableTypeName()); + params.addResourceTypes(reOwned2.getOlatResource().getResourceableTypeName()); + + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, 1); + Assert.assertTrue(contains(reOwned, results)); + Assert.assertEquals(2, results.getViews().size()); + Assert.assertTrue(results.isComplete()); } /** @@ -374,14 +405,14 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.administratorRoles()); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertTrue(contains(rePreparation, views)); - Assert.assertTrue(contains(reReview, views)); - Assert.assertTrue(contains(reCoachPublished, views)); - Assert.assertTrue(contains(rePublished, views)); - Assert.assertTrue(contains(reClosed, views)); - Assert.assertFalse(contains(reTrash, views)); - Assert.assertFalse(contains(reDeleted, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertTrue(contains(rePreparation, results)); + Assert.assertTrue(contains(reReview, results)); + Assert.assertTrue(contains(reCoachPublished, results)); + Assert.assertTrue(contains(rePublished, results)); + Assert.assertTrue(contains(reClosed, results)); + Assert.assertFalse(contains(reTrash, results)); + Assert.assertFalse(contains(reDeleted, results)); } /** @@ -412,14 +443,14 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.administratorRoles()); params.setDeleted(true); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertFalse(contains(rePreparation, views)); - Assert.assertFalse(contains(reReview, views)); - Assert.assertFalse(contains(reCoachPublished, views)); - Assert.assertFalse(contains(rePublished, views)); - Assert.assertFalse(contains(reClosed, views)); - Assert.assertTrue(contains(reTrash, views)); - Assert.assertFalse(contains(reDeleted, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertFalse(contains(rePreparation, results)); + Assert.assertFalse(contains(reReview, results)); + Assert.assertFalse(contains(reCoachPublished, results)); + Assert.assertFalse(contains(rePublished, results)); + Assert.assertFalse(contains(reClosed, results)); + Assert.assertTrue(contains(reTrash, results)); + Assert.assertFalse(contains(reDeleted, results)); } /** @@ -436,8 +467,8 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { SearchAuthorRepositoryEntryViewParams params = new SearchAuthorRepositoryEntryViewParams(id, Roles.authorRoles()); params.setOwnedResourcesOnly(true); - List<RepositoryEntryAuthorView> views = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); - Assert.assertTrue(contains(reOwner, views)); + RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1); + Assert.assertTrue(contains(reOwner, results)); } @Test @@ -453,15 +484,20 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase { for(OrderBy orderBy:OrderBy.values()) { params.setOrderBy(orderBy); params.setOrderByAsc(true); - List<RepositoryEntryAuthorView> viewAsc = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); - Assert.assertNotNull(viewAsc); + RepositoryEntryAuthorViewResults resultsAsc = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); + Assert.assertNotNull(resultsAsc); + Assert.assertNotNull(resultsAsc.getViews()); params.setOrderByAsc(false); - List<RepositoryEntryAuthorView> viewDesc = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); - Assert.assertNotNull(viewDesc); + RepositoryEntryAuthorViewResults resultsDesc = repositoryEntryAuthorViewQueries.searchViews(params, 0, 10); + Assert.assertNotNull(resultsDesc); + Assert.assertNotNull(resultsDesc.getViews()); } } - private final boolean contains(RepositoryEntry re, List<RepositoryEntryAuthorView> views) { + private final boolean contains(RepositoryEntry re, RepositoryEntryAuthorViewResults results) { + if(results == null || results.getViews() == null) return false; + + List<RepositoryEntryAuthorView> views = results.getViews(); for(RepositoryEntryAuthorView view:views) { if(re.getKey().equals(view.getKey())) { return true; -- GitLab