From: <die...@us...> - 2014-01-30 16:19:53
|
Revision: 4558 http://openutils.svn.sourceforge.net/openutils/?rev=4558&view=rev Author: diego_schivo Date: 2014-01-30 16:19:49 +0000 (Thu, 30 Jan 2014) Log Message: ----------- MEDIA-312 - Possibility for MediaTypeHandler to do something on media deletion Modified Paths: -------------- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java 2014-01-28 15:49:36 UTC (rev 4557) +++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java 2014-01-30 16:19:49 UTC (rev 4558) @@ -1,5 +1,7 @@ package net.sourceforge.openutils.mgnlmedia.externalvideo; +import info.magnolia.cms.core.Content; + /** * @author molaschi * @version $Id: $ @@ -26,4 +28,12 @@ this.name = name; } + /** + * {@inheritDoc} + */ + public boolean onPreDelete(Content media) + { + return true; + } + } Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java 2014-01-28 15:49:36 UTC (rev 4557) +++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java 2014-01-30 16:19:49 UTC (rev 4558) @@ -36,4 +36,6 @@ String getPreviewUrl(Content media); String getFilename(Content media); + + boolean onPreDelete(Content media); } Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java 2014-01-28 15:49:36 UTC (rev 4557) +++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java 2014-01-30 16:19:49 UTC (rev 4558) @@ -34,13 +34,21 @@ import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaConfigurationManager; import net.sourceforge.openutils.mgnlmedia.media.types.MediaTypeHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /* * */ public class ExternalVideoTypeHandler extends BaseVideoTypeHandler { + /** + * Logger. + */ + private static final Logger log = LoggerFactory.getLogger(ExternalVideoTypeHandler.class); + public static final String ND_PROVIDER = "provider"; public static ExternalVideoProvider getExternalVideoProvider(Content media) @@ -157,7 +165,15 @@ ExternalVideoProvider provider = getVideoProvider(media); if (provider != null) { - provider.processVideo(media); + try + { + provider.processVideo(media); + } + catch (Throwable e) + { + log.error(e.getMessage(), e); + return false; + } } return super.onPostSave(media); @@ -166,6 +182,7 @@ /** * {@inheritDoc} */ + @Override public String getFilename(Content media) { ExternalVideoProvider provider = getVideoProvider(media); @@ -230,4 +247,22 @@ { return "/.resources/media/icons/thumb-video.png"; } + + /** + * {@inheritDoc} + */ + @Override + public boolean onPreDelete(Content media) + { + if (!super.onPreDelete(media)) + { + return false; + } + ExternalVideoProvider provider = getVideoProvider(media); + if (provider == null) + { + return true; + } + return provider.onPreDelete(media); + } } Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2014-01-28 15:49:36 UTC (rev 4557) +++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2014-01-30 16:19:49 UTC (rev 4558) @@ -29,6 +29,7 @@ import info.magnolia.cms.security.Permission; import info.magnolia.cms.util.AlertUtil; import info.magnolia.cms.util.ContentUtil; +import info.magnolia.cms.util.NodeDataUtil; import info.magnolia.commands.CommandsManager; import info.magnolia.context.Context; import info.magnolia.context.MgnlContext; @@ -56,6 +57,7 @@ import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaTypeConfiguration; import net.sourceforge.openutils.mgnlmedia.media.lifecycle.MediaModule; import net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl; +import net.sourceforge.openutils.mgnlmedia.media.types.MediaTypeHandler; import org.apache.commons.chain.Command; import org.apache.commons.lang.StringUtils; @@ -304,8 +306,26 @@ try { - hm.delete(this.node); - hm.save(); + Content content = hm.getContent(this.node); + if (MediaConfigurationManager.MEDIA.equals(content.getItemType())) + { + String type = NodeDataUtil.getString(node, "type"); + MediaTypeHandler typeHandler = type != null ? MediaConfigurationManager + .getInstance() + .getTypes() + .get(type) + .getHandler() : null; + // MEDIA-312 + if (typeHandler == null || typeHandler.onPreDelete(content)) + { + hm.delete(this.node); + hm.save(); + } + } + else if (ItemType.CONTENT.equals(content.getItemType())) + { + // TODO recursion? + } } catch (RepositoryException ex) { Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java 2014-01-28 15:49:36 UTC (rev 4557) +++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java 2014-01-30 16:19:49 UTC (rev 4558) @@ -208,4 +208,6 @@ * Notify module stopping to handler */ void stop(); + + boolean onPreDelete(Content media); } Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java =================================================================== --- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java 2014-01-28 15:49:36 UTC (rev 4557) +++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java 2014-01-30 16:19:49 UTC (rev 4558) @@ -384,6 +384,14 @@ { // Do nothing } + + /** + * {@inheritDoc} + */ + public boolean onPreDelete(Content media) + { + return true; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |