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
parent
e00bb7b0cd
commit
33d8d6848f
|
|
@ -70,11 +70,11 @@ import static org.librecms.CmsConstants.*;
|
||||||
,
|
,
|
||||||
@NamedQuery(name = "Asset.findByTitle'",
|
@NamedQuery(name = "Asset.findByTitle'",
|
||||||
query = "SELECT a FROM Asset a JOIN a.title.values t "
|
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",
|
@NamedQuery(name = "Asset.findByTitleAndType",
|
||||||
query = "SELECT a FROM Asset a "
|
query = "SELECT a FROM Asset a JOIN a.title.values t "
|
||||||
+ "WHERE :title MEMBER OF a.title.values "
|
+ "WHERE LOWER(t) LIKE CONCAT('%', :title, '%') "
|
||||||
+ "AND TYPE(a) = :type")
|
+ "AND TYPE(a) = :type")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
|
|
@ -126,12 +126,13 @@ import static org.librecms.CmsConstants.*;
|
||||||
+ "AND TYPE(a) = :type")
|
+ "AND TYPE(a) = :type")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "Asset.filterByFolderAndNameAndType",
|
name = "Asset.filterByFolderAndTitleAndType",
|
||||||
query = "SELECT a FROM Asset a "
|
query = "SELECT a FROM Asset a "
|
||||||
|
+ "JOIN a.title.values t "
|
||||||
+ "JOIN a.categories c "
|
+ "JOIN a.categories c "
|
||||||
+ "WHERE c.category = :folder "
|
+ "WHERE c.category = :folder "
|
||||||
+ "AND c.type = '" + CATEGORIZATION_TYPE_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")
|
+ "AND TYPE(a) = :type")
|
||||||
,
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
|
|
@ -205,8 +206,8 @@ public class Asset extends CcmObject {
|
||||||
private Optional<CcmObject> getFolder() {
|
private Optional<CcmObject> getFolder() {
|
||||||
final Optional<Categorization> result = getCategories()
|
final Optional<Categorization> result = getCategories()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(categorization -> CmsConstants.CATEGORIZATION_TYPE_FOLDER
|
.filter(categorization -> CmsConstants.CATEGORIZATION_TYPE_FOLDER.
|
||||||
.equals(categorization.getType()))
|
equals(categorization.getType()))
|
||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
if (result.isPresent()) {
|
if (result.isPresent()) {
|
||||||
|
|
|
||||||
|
|
@ -353,7 +353,7 @@ public class AssetManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetFolder.equals(getAssetFolder(asset).orElse(null))) {
|
if (targetFolder.equals(getAssetFolder(asset).orElse(null))) {
|
||||||
final long number = assetRepo.countFilterByFolderAndName(
|
final long number = assetRepo.countFilterByFolderAndTitle(
|
||||||
targetFolder, String.format("%s_copy",
|
targetFolder, String.format("%s_copy",
|
||||||
asset.getDisplayName()));
|
asset.getDisplayName()));
|
||||||
final long index = number + 1;
|
final long index = number + 1;
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@ public class AssetRepository
|
||||||
|
|
||||||
final TypedQuery<Asset> query = entityManager.createNamedQuery(
|
final TypedQuery<Asset> query = entityManager.createNamedQuery(
|
||||||
"Asset.findByTitle", Asset.class);
|
"Asset.findByTitle", Asset.class);
|
||||||
query.setParameter("query", String.format("%%%s%%", title));
|
query.setParameter("title", title);
|
||||||
|
|
||||||
return query.getResultList();
|
return query.getResultList();
|
||||||
}
|
}
|
||||||
|
|
@ -224,7 +224,7 @@ public class AssetRepository
|
||||||
|
|
||||||
final TypedQuery<Asset> query = entityManager.createNamedQuery(
|
final TypedQuery<Asset> query = entityManager.createNamedQuery(
|
||||||
"Asset.findByTitle", Asset.class);
|
"Asset.findByTitle", Asset.class);
|
||||||
query.setParameter("query", title);
|
query.setParameter("title", title);
|
||||||
query.setParameter("type", type);
|
query.setParameter("type", type);
|
||||||
|
|
||||||
return query.getResultList();
|
return query.getResultList();
|
||||||
|
|
@ -291,19 +291,19 @@ public class AssetRepository
|
||||||
*
|
*
|
||||||
* @param folder The {@link Folder} which {@link Asset}s are filtered using
|
* @param folder The {@link Folder} which {@link Asset}s are filtered using
|
||||||
* the provided {@code name}.
|
* 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}.
|
* {@code folder}.
|
||||||
*
|
*
|
||||||
* @return The number of {@link Asset}s in the provided {@link Folder} which
|
* @return The number of {@link Asset}s in the provided {@link Folder} which
|
||||||
* name starts with the provided string.
|
* name starts with the provided string.
|
||||||
*/
|
*/
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
public long countFilterByFolderAndName(final Folder folder,
|
public long countFilterByFolderAndTitle(final Folder folder,
|
||||||
final String name) {
|
final String title) {
|
||||||
final TypedQuery<Long> query = entityManager.createNamedQuery(
|
final TypedQuery<Long> query = entityManager.createNamedQuery(
|
||||||
"Asset.countFilterByFolderAndName", Long.class);
|
"Asset.countFilterByFolderAndTitle", Long.class);
|
||||||
query.setParameter("folder", folder);
|
query.setParameter("folder", folder);
|
||||||
query.setParameter("name", name);
|
query.setParameter("title", title);
|
||||||
|
|
||||||
return query.getSingleResult();
|
return query.getSingleResult();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -355,7 +355,7 @@ public class AssetRepositoryTest {
|
||||||
@InSequence(500)
|
@InSequence(500)
|
||||||
@UsingDataSet(
|
@UsingDataSet(
|
||||||
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
||||||
public void filterAssetByFolderAndName() {
|
public void filterAssetByFolderAndTitle() {
|
||||||
final Folder media = folderRepo.findById(-400L).get();
|
final Folder media = folderRepo.findById(-400L).get();
|
||||||
|
|
||||||
final List<Asset> result1 = assetRepo.filterByFolderAndTitle(media,
|
final List<Asset> result1 = assetRepo.filterByFolderAndTitle(media,
|
||||||
|
|
@ -363,7 +363,7 @@ public class AssetRepositoryTest {
|
||||||
final List<Asset> result2 = assetRepo.filterByFolderAndTitle(media,
|
final List<Asset> result2 = assetRepo.filterByFolderAndTitle(media,
|
||||||
"photo");
|
"photo");
|
||||||
|
|
||||||
assertThat(result1.size(), is(1));
|
assertThat(result1.size(), is(2));
|
||||||
assertThat(result2.size(), is(0));
|
assertThat(result2.size(), is(0));
|
||||||
|
|
||||||
assertThat(result1.get(0).getDisplayName(), is(equalTo("header.png")));
|
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
|
* Tries to count the {@link Asset}s in a {@link Folder} matching a name
|
||||||
* pattern by using
|
* pattern by using
|
||||||
* {@link AssetRepository#countFilterByFolderAndName(org.librecms.contentsection.Folder, java.lang.String)}.
|
* {@link AssetRepository#countFilterByFolderAndTitle(org.librecms.contentsection.Folder, java.lang.String)}.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
@InSequence(510)
|
@InSequence(510)
|
||||||
@UsingDataSet(
|
@UsingDataSet(
|
||||||
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
||||||
public void countFilterAssetByFolderAndName() {
|
public void countFilterAssetByFolderAndTitle() {
|
||||||
final Folder media = folderRepo.findById(-400L).get();
|
final Folder media = folderRepo.findById(-400L).get();
|
||||||
|
|
||||||
assertThat(assetRepo.countFilterByFolderAndName(media, "hea"),
|
assertThat(assetRepo.countFilterByFolderAndTitle(media, "hea"),
|
||||||
is(1L));
|
is(2L));
|
||||||
assertThat(assetRepo.countFilterByFolderAndName(media, "photo"),
|
assertThat(assetRepo.countFilterByFolderAndTitle(media, "photo"),
|
||||||
is(0L));
|
is(0L));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -449,7 +449,7 @@ public class AssetRepositoryTest {
|
||||||
@InSequence(600)
|
@InSequence(600)
|
||||||
@UsingDataSet(
|
@UsingDataSet(
|
||||||
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
||||||
public void filterAssetsByFolderAndTypeAndName() {
|
public void filterAssetsByFolderAndTypeAndTitle() {
|
||||||
final Folder media = folderRepo.findById(-400L).get();
|
final Folder media = folderRepo.findById(-400L).get();
|
||||||
|
|
||||||
final List<Asset> result1 = assetRepo.filterByFolderAndTypeAndTitle(
|
final List<Asset> result1 = assetRepo.filterByFolderAndTypeAndTitle(
|
||||||
|
|
@ -457,7 +457,7 @@ public class AssetRepositoryTest {
|
||||||
final List<Asset> result2 = assetRepo.filterByFolderAndTypeAndTitle(
|
final List<Asset> result2 = assetRepo.filterByFolderAndTypeAndTitle(
|
||||||
media, File.class, "hea");
|
media, File.class, "hea");
|
||||||
|
|
||||||
assertThat(result1.size(), is(1));
|
assertThat(result1.size(), is(2));
|
||||||
assertThat(result2.size(), is(0));
|
assertThat(result2.size(), is(0));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -471,12 +471,12 @@ public class AssetRepositoryTest {
|
||||||
@InSequence(610)
|
@InSequence(610)
|
||||||
@UsingDataSet(
|
@UsingDataSet(
|
||||||
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
|
||||||
public void countFilterAssetsByFolderAndTypeAndName() {
|
public void countFilterAssetsByFolderAndTypeAndTitle() {
|
||||||
final Folder media = folderRepo.findById(-400L).get();
|
final Folder media = folderRepo.findById(-400L).get();
|
||||||
|
|
||||||
assertThat(assetRepo.countFilterByFolderAndTypeAndTitle(
|
assertThat(assetRepo.countFilterByFolderAndTypeAndTitle(
|
||||||
media, Image.class, "hea"),
|
media, Image.class, "hea"),
|
||||||
is(1L));
|
is(2L));
|
||||||
assertThat(assetRepo.countFilterByFolderAndTypeAndTitle(
|
assertThat(assetRepo.countFilterByFolderAndTypeAndTitle(
|
||||||
media, File.class, "hea"),
|
media, File.class, "hea"),
|
||||||
is(0L));
|
is(0L));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue