CCM NG/ccm-cms: Implementation of AssetManager#move

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4411 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2016-10-27 14:03:04 +00:00
parent 91642426b2
commit a8a9a4cf28
4 changed files with 89 additions and 12 deletions

View File

@ -18,6 +18,7 @@
*/ */
package org.librecms.assets; package org.librecms.assets;
import com.arsdigita.util.UncheckedWrapperException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -46,6 +47,7 @@ import org.librecms.contentsection.FolderRepository;
import org.librecms.contentsection.privileges.AssetPrivileges; import org.librecms.contentsection.privileges.AssetPrivileges;
import java.util.Objects; import java.util.Objects;
import org.libreccm.categorization.ObjectNotAssignedToCategoryException;
import static org.librecms.CmsConstants.*; import static org.librecms.CmsConstants.*;
@ -160,7 +162,29 @@ public class AssetManager {
final Asset asset, final Asset asset,
@RequiresPrivilege(AssetPrivileges.CREATE_NEW) @RequiresPrivilege(AssetPrivileges.CREATE_NEW)
final Folder targetFolder) { final Folder targetFolder) {
throw new UnsupportedOperationException("Not implemented yet.");
if (asset == null) {
throw new IllegalArgumentException("No asset to move provided.");
}
if (targetFolder == null) {
throw new IllegalArgumentException("No target folder specified.");
}
final Optional<Folder> currentFolder = getAssetFolder(asset);
if (currentFolder.isPresent()) {
try {
categoryManager.removeObjectFromCategory(asset,
currentFolder.get());
} catch(ObjectNotAssignedToCategoryException ex) {
throw new UncheckedWrapperException(ex);
}
}
categoryManager.addObjectToCategory(asset,
targetFolder,
CATEGORIZATION_TYPE_FOLDER);
} }
/** /**

View File

@ -306,15 +306,24 @@ public class AssetManagerTest {
* section using * section using
* {@link AssetManager#copy(org.librecms.assets.Asset, org.librecms.contentsection.Folder)}. * {@link AssetManager#copy(org.librecms.assets.Asset, org.librecms.contentsection.Folder)}.
*/ */
@Test
@InSequence(400) @InSequence(400)
@UsingDataSet("datasets/org/librecms/assets/AssetManagerTest/data.xml") @UsingDataSet("datasets/org/librecms/assets/AssetManagerTest/data.xml")
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/librecms/assets/AssetManagerTest/" value = "datasets/org/librecms/assets/AssetManagerTest/"
+ "after-move-to-other-folder.xml", + "after-move-to-other-folder.xml",
excludeColumns = {"object_id", excludeColumns = {"categorization_id",
"object_id",
"object_order",
"uuid"}) "uuid"})
public void moveAssetToOtherFolder() { public void moveAssetToOtherFolder() {
fail(); final Asset asset = assetRepo.findById(-900L);
assertThat(asset, is(not(nullValue())));
final Folder folder = folderRepo.findById(-410L);
assertThat(folder, is(not(nullValue())));
assetManager.move(asset, folder);
} }
/** /**

View File

@ -23,6 +23,12 @@
<ccm_core.ccm_objects object_id="-400" <ccm_core.ccm_objects object_id="-400"
display_name="media" display_name="media"
uuid="f8546369-4d06-47ea-9138-345d29ab8d68" /> uuid="f8546369-4d06-47ea-9138-345d29ab8d68" />
<ccm_core.ccm_objects object_id="-410"
display_name="images"
uuid="713d857d-dd0e-4fc5-85d6-d85d25279a10" />
<ccm_core.ccm_objects object_id="-420"
display_name="downloads"
uuid="9d89913d-759e-4de9-b2fb-c6f58e55de09" />
<ccm_core.ccm_objects object_id="-500" <ccm_core.ccm_objects object_id="-500"
display_name="data" display_name="data"
uuid="18fbc7f4-ce7e-45d6-8dad-02887164b99d" /> uuid="18fbc7f4-ce7e-45d6-8dad-02887164b99d" />
@ -111,13 +117,31 @@
category_order="1"/> category_order="1"/>
<ccm_core.categories object_id="-400" <ccm_core.categories object_id="-400"
unique_id="f8546369-4d06-47ea-9138-345d29ab8d68" unique_id="f8546369-4d06-47ea-9138-345d29ab8d68"
parent_category_id="-300"
name="media" name="media"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false" abstract_category="false"
category_order="1"/> category_order="1"/>
<ccm_core.categories object_id="-410"
unique_id="713d857d-dd0e-4fc5-85d6-d85d25279a10"
parent_category_id="-400"
name="images"
enabled="true"
visible="true"
abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-420"
unique_id="9d89913d-759e-4de9-b2fb-c6f58e55de09"
parent_category_id="-400"
name="downloads"
enabled="true"
visible="true"
abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-500" <ccm_core.categories object_id="-500"
unique_id="18fbc7f4-ce7e-45d6-8dad-02887164b99d" unique_id="18fbc7f4-ce7e-45d6-8dad-02887164b99d"
parent_category_id="-300"
name="data" name="data"
enabled="true" enabled="true"
visible="true" visible="true"
@ -139,6 +163,7 @@
category_order="1" /> category_order="1" />
<ccm_core.categories object_id="-1600" <ccm_core.categories object_id="-1600"
unique_id="ec3f0d51-5d9b-440e-bb5a-5fac7da94af1" unique_id="ec3f0d51-5d9b-440e-bb5a-5fac7da94af1"
parent_category_id="-1500"
name="media" name="media"
enabled="true" enabled="true"
visible="true" visible="true"
@ -146,6 +171,7 @@
category_order="1" /> category_order="1" />
<ccm_core.categories object_id="-1700" <ccm_core.categories object_id="-1700"
unique_id="80086df3-d682-42bb-9939-8cc04a300575" unique_id="80086df3-d682-42bb-9939-8cc04a300575"
parent_category_id="-1500"
name="data" name="data"
enabled="true" enabled="true"
visible="true" visible="true"
@ -161,6 +187,12 @@
<ccm_core.category_titles object_id="-400" <ccm_core.category_titles object_id="-400"
locale="en" locale="en"
localized_value="media" /> localized_value="media" />
<ccm_core.category_titles object_id="-410"
locale="en"
localized_value="images" />
<ccm_core.category_titles object_id="-420"
locale="en"
localized_value="downloads" />
<ccm_core.category_titles object_id="-500" <ccm_core.category_titles object_id="-500"
locale="en" locale="en"
localized_value="data" /> localized_value="data" />
@ -196,6 +228,10 @@
type="ASSETS_FOLDER" /> type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-400" <ccm_cms.folders object_id="-400"
type="ASSETS_FOLDER" /> type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-410"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-420"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-500" <ccm_cms.folders object_id="-500"
type="ASSETS_FOLDER" /> type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-1400" <ccm_cms.folders object_id="-1400"
@ -222,6 +258,10 @@
content_section_id="-100" /> content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-400" <ccm_cms.folder_content_section_map folder_id="-400"
content_section_id="-100" /> content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-410"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-420"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-500" <ccm_cms.folder_content_section_map folder_id="-500"
content_section_id="-100" /> content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-1400" <ccm_cms.folder_content_section_map folder_id="-1400"
@ -275,7 +315,7 @@
localized_value="product1-datasheet.pdf" localized_value="product1-datasheet.pdf"
locale="en" /> locale="en" />
<ccm_cms.asset_titles asset_id="-1100" <ccm_cms.asset_titles asset_id="-1100"
localized_value="catelog.pdf" localized_value="catalog.pdf"
locale="en" /> locale="en" />
<ccm_cms.asset_titles asset_id="-1150" <ccm_cms.asset_titles asset_id="-1150"
localized_value="orphan.pdf" localized_value="orphan.pdf"
@ -325,7 +365,7 @@
rev="0" rev="0"
filename="product1-datasheet.pdf" filename="product1-datasheet.pdf"
mime_type="application/pdf" mime_type="application/pdf"
data_size="0" /> data_size="0" />
<ccm_cms.binary_assets_aud object_id="-1100" <ccm_cms.binary_assets_aud object_id="-1100"
rev="0" rev="0"
filename="catalog.pdf" filename="catalog.pdf"
@ -398,9 +438,13 @@
<ccm_cms.asset_titles_aud asset_id="-1100" <ccm_cms.asset_titles_aud asset_id="-1100"
rev="0" rev="0"
revtype="0" revtype="0"
localized_value="catelog.pdf" localized_value="catalog.pdf"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-1150"
rev="0"
revtype="0"
localized_value="orphan.pdf"
locale="en" /> locale="en" />
<ccm_cms.content_items_aud object_id="-600" <ccm_cms.content_items_aud object_id="-600"
rev="0" rev="0"
@ -454,28 +498,28 @@
category_index="false" category_index="false"
type="folder" /> type="folder" />
<ccm_core.categorizations categorization_id="-30200" <ccm_core.categorizations categorization_id="-30200"
category_id="-400" category_id="-410"
object_id="-700" object_id="-700"
category_order="1" category_order="1"
object_order="2" object_order="2"
category_index="false" category_index="false"
type="folder" /> type="folder" />
<ccm_core.categorizations categorization_id="-30300" <ccm_core.categorizations categorization_id="-30300"
category_id="-400" category_id="-410"
object_id="-800" object_id="-800"
category_order="1" category_order="1"
object_order="3" object_order="3"
category_index="false" category_index="false"
type="folder" /> type="folder" />
<ccm_core.categorizations categorization_id="-30400" <ccm_core.categorizations categorization_id="-30400"
category_id="-400" category_id="-410"
object_id="-900" object_id="-900"
category_order="1" category_order="1"
object_order="4" object_order="4"
category_index="false" category_index="false"
type="folder" /> type="folder" />
<ccm_core.categorizations categorization_id="-30600" <ccm_core.categorizations categorization_id="-30600"
category_id="-400" category_id="-420"
object_id="-1100" object_id="-1100"
category_order="1" category_order="1"
object_order="6" object_order="6"

View File

@ -365,7 +365,7 @@
rev="0" rev="0"
filename="product1-datasheet.pdf" filename="product1-datasheet.pdf"
mime_type="application/pdf" mime_type="application/pdf"
data_size="0" /> data_size="0" />
<ccm_cms.binary_assets_aud object_id="-1100" <ccm_cms.binary_assets_aud object_id="-1100"
rev="0" rev="0"
filename="catalog.pdf" filename="catalog.pdf"