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

Former-commit-id: d66287322c
pull/2/head
jensp 2017-04-13 09:36:16 +00:00
parent e00bb7b0cd
commit 33d8d6848f
4 changed files with 29 additions and 28 deletions

View File

@ -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<CcmObject> getFolder() {
final Optional<Categorization> 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()) {

View File

@ -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;

View File

@ -195,7 +195,7 @@ public class AssetRepository
final TypedQuery<Asset> 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<Asset> 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<Long> 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();
}

View File

@ -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<Asset> result1 = assetRepo.filterByFolderAndTitle(media,
@ -363,7 +363,7 @@ public class AssetRepositoryTest {
final List<Asset> 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<Asset> result1 = assetRepo.filterByFolderAndTypeAndTitle(
@ -457,7 +457,7 @@ public class AssetRepositoryTest {
final List<Asset> 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));