From 01e0e68ac35b5e70b7b5b623e88615c825f3433c Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 25 Jul 2017 14:56:17 +0000 Subject: [PATCH] CCM NG/ccm-cms: Several bug fixes and improvments for assets, especially binary assets git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4886 8810af33-2d31-482b-a856-94f89814c4df --- .../src/main/resources/log4j2.xml | 3 ++ .../cms/ui/assets/AbstractAssetForm.java | 5 +++ .../cms/ui/assets/forms/ImageForm.java | 18 ++++++--- .../java/org/librecms/assets/BinaryAsset.java | 2 - .../librecms/contentsection/AssetManager.java | 4 +- .../contentsection/AssetRepository.java | 40 ++++++++++++------- ..._remove_not_null_binary_asset_mimetype.sql | 2 + ..._remove_not_null_binary_asset_mimetype.sql | 2 + .../org/librecms/CmsResources.properties | 1 + .../org/librecms/CmsResources_de.properties | 1 + .../org/librecms/CmsResources_fr.properties | 1 + .../scripts/create_ccm_cms_schema.sql | 4 +- .../scripts/create_ccm_cms_schema.sql | 4 +- 13 files changed, 61 insertions(+), 26 deletions(-) create mode 100644 ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql create mode 100644 ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql diff --git a/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml b/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml index 22a97f7e2..3c20db8e4 100644 --- a/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml +++ b/ccm-bundle-devel-wildfly-web/src/main/resources/log4j2.xml @@ -71,6 +71,9 @@ + + diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AbstractAssetForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AbstractAssetForm.java index 9c79e61b0..b8595be24 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AbstractAssetForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AbstractAssetForm.java @@ -340,6 +340,11 @@ public abstract class AbstractAssetForm if (selectedAsset.isPresent()) { + name.setValue(state, + selectedAsset + .get() + .getDisplayName()); + title.setValue(state, selectedAsset .get() diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java index f6c3d5c3b..490b40171 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java @@ -104,7 +104,7 @@ public class ImageForm extends AbstractBinaryAssetForm { } } } - + @Override protected Class getAssetClass() { return Image.class; @@ -132,7 +132,6 @@ public class ImageForm extends AbstractBinaryAssetForm { // // return image; // } - @Override protected void updateAsset(final Asset asset, final FormSectionEvent event) @@ -144,8 +143,18 @@ public class ImageForm extends AbstractBinaryAssetForm { final Image image = (Image) asset; - image.setHeight(Long.parseLong((String) height.getValue(state))); - image.setWidth(Long.parseLong((String) width.getValue(state))); + if (height.getValue(state) == null + || ((String) height.getValue(state)).trim().isEmpty()) { + image.setHeight(-1); + } else { + image.setHeight(Long.parseLong((String) height.getValue(state))); + } + if (width.getValue(state) == null + || ((String) width.getValue(state)).trim().isEmpty()) { + image.setWidth(-1); + } else { + image.setWidth(Long.parseLong((String) width.getValue(state))); + } updateData(image, state); } @@ -172,5 +181,4 @@ public class ImageForm extends AbstractBinaryAssetForm { // protected BinaryAsset createBinaryAsset(final PageState state) { // return new Image(); // } - } diff --git a/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java b/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java index 68b694854..ef20797c2 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java +++ b/ccm-cms/src/main/java/org/librecms/assets/BinaryAsset.java @@ -69,12 +69,10 @@ public class BinaryAsset extends Asset implements Serializable { private LocalizedString description; @Column(name = "FILENAME", length = 512, nullable = false) - @NotEmpty private String fileName; @Column(name = "MIME_TYPE", length = 512, nullable = false) @Convert(converter = MimeTypeConverter.class) - @NotNull private MimeType mimeType; @Column(name = "ASSET_DATA") 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 3d36b4ec9..e97598cc9 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/AssetManager.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/AssetManager.java @@ -117,7 +117,9 @@ public class AssetManager { asset.getTitle().addValue(locale, title); assetRepo.save(asset); - categoryManager.addObjectToCategory(asset, folder); + categoryManager.addObjectToCategory(asset, + folder, + CmsConstants.CATEGORIZATION_TYPE_FOLDER); permissionManager.copyPermissions(folder, asset, true); return asset; 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 5eca5f75a..9d6223b22 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/AssetRepository.java @@ -25,16 +25,18 @@ import org.libreccm.categorization.Categorization; import org.libreccm.categorization.Category; import org.libreccm.categorization.CategoryManager; import org.libreccm.categorization.ObjectNotAssignedToCategoryException; -import org.libreccm.core.CcmObject; import org.libreccm.core.CcmObjectRepository; import org.libreccm.core.UnexpectedErrorException; import org.libreccm.security.AuthorizationRequired; +import org.libreccm.security.Permission; import org.libreccm.security.PermissionChecker; +import org.libreccm.security.PermissionManager; import org.libreccm.security.RequiresPrivilege; import org.libreccm.security.Role; import org.libreccm.security.Shiro; import org.libreccm.security.User; import org.librecms.contentsection.privileges.AssetPrivileges; +import org.librecms.contentsection.rs.Assets; import java.util.Collections; import java.util.List; @@ -62,25 +64,28 @@ public class AssetRepository .getLogger(AssetRepository.class); @Inject - private Shiro shiro; - - @Inject - private PermissionChecker permissionChecker; - - @Inject - private EntityManager entityManager; - - @Inject - private CcmObjectRepository ccmObjectRepo; + private AssetManager assetManager; @Inject private CategoryManager categoryManager; + @Inject + private CcmObjectRepository ccmObjectRepo; + + @Inject + private EntityManager entityManager; + @Inject private FolderRepository folderRepo; @Inject - private AssetManager assetManager; + private PermissionChecker permissionChecker; + + @Inject + private PermissionManager permissionManager; + + @Inject + private Shiro shiro; @Override public Long getEntityId(final Asset asset) { @@ -193,6 +198,13 @@ public class AssetRepository } } + final List permissions = asset.getPermissions(); + for (final Permission permission : permissions) { + permissionManager.revokePrivilege(permission.getGrantedPrivilege(), + permission.getGrantee(), + asset); + } + ccmObjectRepo.delete(asset); } } @@ -542,7 +554,7 @@ public class AssetRepository Asset.class) .setParameter("folder", folder) .setParameter("name", name); -// setAuthorizationParameters(query); + setAuthorizationParameters(query); try { return Optional.of(query.getSingleResult()); @@ -594,7 +606,7 @@ public class AssetRepository } if (folder.isPresent()) { - LOGGER.debug("transaction is active? {}", + LOGGER.debug("transaction is active? {}", entityManager.isJoinedToTransaction()); LOGGER.debug("Folder for path {} found...", path); // LOGGER.debug("Assets in the folder:"); diff --git a/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql new file mode 100644 index 000000000..3bf12c53c --- /dev/null +++ b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/h2/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql @@ -0,0 +1,2 @@ +ALTER TABLE ccm_cms.binary_assets ALTER COLUMN mime_type SET NULL; +ALTER TABLE ccm_cms.binary_assets ALTER COLUMN filename SET NULL; \ No newline at end of file diff --git a/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql new file mode 100644 index 000000000..31d2d8ce9 --- /dev/null +++ b/ccm-cms/src/main/resources/db/migrations/org/librecms/ccm_cms/pgsql/V7_0_0_14__remove_not_null_binary_asset_mimetype.sql @@ -0,0 +1,2 @@ +ALTER TABLE ccm_cms.binary_assets ALTER COLUMN mime_type DROP NOT NULL; +ALTER TABLE ccm_cms.binary_assets ALTER COLUMN filename DROP NOT NULL; diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index f8c4c2a57..61dd5bd32 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -385,3 +385,4 @@ image_step.description=Attach images related_info_step_description=Add related information cms.ui.authoring.file_upload.auto_detect=(Auto-Detect) cms.ui.upload_new_content=Upload new content +cms.ui.asset.name=Name diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties index 26c6475b0..cf9025d60 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -382,3 +382,4 @@ image_step.description=Bilder hinzuf\u00fcgen related_info_step_description=Weiterf\u00fchrende Informationen hinzuf\u00fcgen cms.ui.authoring.file_upload.auto_detect=(Automatisch erkennen) cms.ui.upload_new_content=Neuen Inhalt hochladen +cms.ui.asset.name=Name diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties index e64423fa4..6a8a620f3 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties @@ -341,3 +341,4 @@ image_step.description=Attach images related_info_step_description=Add related information cms.ui.authoring.file_upload.auto_detect=(Auto-Detect) cms.ui.upload_new_content=Upload new content +cms.ui.asset.name=Name diff --git a/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql b/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql index 129c16ab2..e485d2bb5 100644 --- a/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql +++ b/ccm-cms/src/test/resources-wildfly-remote-h2-mem/scripts/create_ccm_cms_schema.sql @@ -170,8 +170,8 @@ create schema CCM_CORE; create table CCM_CMS.BINARY_ASSETS ( ASSET_DATA blob, - FILENAME varchar(512) not null, - MIME_TYPE varchar(512) not null, + FILENAME varchar(512), + MIME_TYPE varchar(512), DATA_SIZE bigint, OBJECT_ID bigint not null, primary key (OBJECT_ID) diff --git a/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql b/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql index b7d615029..625ef09a7 100644 --- a/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql +++ b/ccm-cms/src/test/resources-wildfly-remote-pgsql/scripts/create_ccm_cms_schema.sql @@ -170,8 +170,8 @@ create schema CCM_CORE; create table CCM_CMS.BINARY_ASSETS ( ASSET_DATA oid, - FILENAME varchar(512) not null, - MIME_TYPE varchar(512) not null, + FILENAME varchar(512), + MIME_TYPE varchar(512), DATA_SIZE int8, OBJECT_ID int8 not null, primary key (OBJECT_ID)