From d66287322cd4f1023aecabccbc347b296f1298c0 Mon Sep 17 00:00:00 2001 From: jensp Date: Thu, 13 Apr 2017 09:36:16 +0000 Subject: [PATCH] CCM NG/ccm-cms: Fixed some bugs in the AssetRepository git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4672 8810af33-2d31-482b-a856-94f89814c4df --- .../org/librecms/contentsection/Asset.java | 19 ++++++++-------- .../librecms/contentsection/AssetManager.java | 2 +- .../contentsection/AssetRepository.java | 14 ++++++------ .../contentsection/AssetRepositoryTest.java | 22 +++++++++---------- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/Asset.java b/ccm-cms/src/main/java/org/librecms/contentsection/Asset.java index c45297ca3..4e0584edf 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/Asset.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/Asset.java @@ -70,11 +70,11 @@ import static org.librecms.CmsConstants.*; , @NamedQuery(name = "Asset.findByTitle'", query = "SELECT a FROM Asset a JOIN a.title.values t " - + "WHERE t LIKE :query") + + "WHERE LOWER(t) LIKE CONCAT('%', :title, '%')") , @NamedQuery(name = "Asset.findByTitleAndType", - query = "SELECT a FROM Asset a " - + "WHERE :title MEMBER OF a.title.values " + query = "SELECT a FROM Asset a JOIN a.title.values t " + + "WHERE LOWER(t) LIKE CONCAT('%', :title, '%') " + "AND TYPE(a) = :type") , @NamedQuery( @@ -95,7 +95,7 @@ import static org.librecms.CmsConstants.*; name = "Asset.filterByFolderAndTitle", query = "SELECT a FROM Asset a " + "JOIN a.categories c " - + "JOIN a.title.values t " + + "JOIN a.title.values t " + "WHERE c.category = :folder " + "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER + "' " + "AND LOWER(t) LIKE CONCAT('%', LOWER(:title), '%')") @@ -126,19 +126,20 @@ import static org.librecms.CmsConstants.*; + "AND TYPE(a) = :type") , @NamedQuery( - name = "Asset.filterByFolderAndNameAndType", + name = "Asset.filterByFolderAndTitleAndType", query = "SELECT a FROM Asset a " + + "JOIN a.title.values t " + "JOIN a.categories c " + "WHERE c.category = :folder " + "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER + "' " - + "AND LOWER(a.displayName) LIKE CONCAT(LOWER(:name), '%') " + + "AND LOWER(t) LIKE CONCAT('%', LOWER(:title), '%') " + "AND TYPE(a) = :type") , @NamedQuery( name = "Asset.countFilterByFolderAndTitleAndType", query = "SELECT COUNT(a) FROM Asset a " + "JOIN a.categories c " - + "JOIN a.title.values t " + + "JOIN a.title.values t " + "WHERE c.category = :folder " + "AND c.type = '" + CATEGORIZATION_TYPE_FOLDER + "' " + "AND LOWER(t) LIKE CONCAT('%', LOWER(:title), '%') " @@ -205,8 +206,8 @@ public class Asset extends CcmObject { private Optional getFolder() { final Optional result = getCategories() .stream() - .filter(categorization -> CmsConstants.CATEGORIZATION_TYPE_FOLDER - .equals(categorization.getType())) + .filter(categorization -> CmsConstants.CATEGORIZATION_TYPE_FOLDER. + equals(categorization.getType())) .findFirst(); if (result.isPresent()) { diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/AssetManager.java b/ccm-cms/src/main/java/org/librecms/contentsection/AssetManager.java index 60dfa5eb5..c7c5fdb03 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/AssetManager.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/AssetManager.java @@ -353,7 +353,7 @@ public class AssetManager { } if (targetFolder.equals(getAssetFolder(asset).orElse(null))) { - final long number = assetRepo.countFilterByFolderAndName( + final long number = assetRepo.countFilterByFolderAndTitle( targetFolder, String.format("%s_copy", asset.getDisplayName())); final long index = number + 1; diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java b/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java index 1547ca7f1..b4eb976ac 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java @@ -195,7 +195,7 @@ public class AssetRepository final TypedQuery query = entityManager.createNamedQuery( "Asset.findByTitle", Asset.class); - query.setParameter("query", String.format("%%%s%%", title)); + query.setParameter("title", title); return query.getResultList(); } @@ -224,7 +224,7 @@ public class AssetRepository final TypedQuery query = entityManager.createNamedQuery( "Asset.findByTitle", Asset.class); - query.setParameter("query", title); + query.setParameter("title", title); query.setParameter("type", type); return query.getResultList(); @@ -291,19 +291,19 @@ public class AssetRepository * * @param folder The {@link Folder} which {@link Asset}s are filtered using * the provided {@code name}. - * @param name The string used to fiter the {@link Assets} in the provided + * @param title The string used to fiter the {@link Assets} in the provided * {@code folder}. * * @return The number of {@link Asset}s in the provided {@link Folder} which * name starts with the provided string. */ @Transactional(Transactional.TxType.REQUIRED) - public long countFilterByFolderAndName(final Folder folder, - final String name) { + public long countFilterByFolderAndTitle(final Folder folder, + final String title) { final TypedQuery query = entityManager.createNamedQuery( - "Asset.countFilterByFolderAndName", Long.class); + "Asset.countFilterByFolderAndTitle", Long.class); query.setParameter("folder", folder); - query.setParameter("name", name); + query.setParameter("title", title); return query.getSingleResult(); } diff --git a/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java b/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java index 25f288458..39f675af5 100644 --- a/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java +++ b/ccm-cms/src/test/java/org/librecms/contentsection/AssetRepositoryTest.java @@ -355,7 +355,7 @@ public class AssetRepositoryTest { @InSequence(500) @UsingDataSet( "datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml") - public void filterAssetByFolderAndName() { + public void filterAssetByFolderAndTitle() { final Folder media = folderRepo.findById(-400L).get(); final List result1 = assetRepo.filterByFolderAndTitle(media, @@ -363,7 +363,7 @@ public class AssetRepositoryTest { final List result2 = assetRepo.filterByFolderAndTitle(media, "photo"); - assertThat(result1.size(), is(1)); + assertThat(result1.size(), is(2)); assertThat(result2.size(), is(0)); assertThat(result1.get(0).getDisplayName(), is(equalTo("header.png"))); @@ -372,18 +372,18 @@ public class AssetRepositoryTest { /** * Tries to count the {@link Asset}s in a {@link Folder} matching a name * pattern by using - * {@link AssetRepository#countFilterByFolderAndName(org.librecms.contentsection.Folder, java.lang.String)}. + * {@link AssetRepository#countFilterByFolderAndTitle(org.librecms.contentsection.Folder, java.lang.String)}. */ @Test @InSequence(510) @UsingDataSet( "datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml") - public void countFilterAssetByFolderAndName() { + public void countFilterAssetByFolderAndTitle() { final Folder media = folderRepo.findById(-400L).get(); - assertThat(assetRepo.countFilterByFolderAndName(media, "hea"), - is(1L)); - assertThat(assetRepo.countFilterByFolderAndName(media, "photo"), + assertThat(assetRepo.countFilterByFolderAndTitle(media, "hea"), + is(2L)); + assertThat(assetRepo.countFilterByFolderAndTitle(media, "photo"), is(0L)); } @@ -449,7 +449,7 @@ public class AssetRepositoryTest { @InSequence(600) @UsingDataSet( "datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml") - public void filterAssetsByFolderAndTypeAndName() { + public void filterAssetsByFolderAndTypeAndTitle() { final Folder media = folderRepo.findById(-400L).get(); final List result1 = assetRepo.filterByFolderAndTypeAndTitle( @@ -457,7 +457,7 @@ public class AssetRepositoryTest { final List result2 = assetRepo.filterByFolderAndTypeAndTitle( media, File.class, "hea"); - assertThat(result1.size(), is(1)); + assertThat(result1.size(), is(2)); assertThat(result2.size(), is(0)); } @@ -471,12 +471,12 @@ public class AssetRepositoryTest { @InSequence(610) @UsingDataSet( "datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml") - public void countFilterAssetsByFolderAndTypeAndName() { + public void countFilterAssetsByFolderAndTypeAndTitle() { final Folder media = folderRepo.findById(-400L).get(); assertThat(assetRepo.countFilterByFolderAndTypeAndTitle( media, Image.class, "hea"), - is(1L)); + is(2L)); assertThat(assetRepo.countFilterByFolderAndTypeAndTitle( media, File.class, "hea"), is(0L));