From: <fg...@us...> - 2010-02-13 19:12:11
|
Revision: 1914 http://openutils.svn.sourceforge.net/openutils/?rev=1914&view=rev Author: fgiust Date: 2010-02-13 19:12:05 +0000 (Sat, 13 Feb 2010) Log Message: ----------- MEDIA-94 New EL functions for getting the original width/height of media Modified Paths: -------------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/tags/el/MediaEl.java trunk/openutils-mgnlmedia/src/main/resources/META-INF/media.tld Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/tags/el/MediaEl.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/tags/el/MediaEl.java 2010-02-13 18:35:26 UTC (rev 1913) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/tags/el/MediaEl.java 2010-02-13 19:12:05 UTC (rev 1914) @@ -23,6 +23,7 @@ import info.magnolia.cms.core.Content; import info.magnolia.cms.core.HierarchyManager; import info.magnolia.cms.core.NodeData; +import info.magnolia.cms.util.DateUtil; import info.magnolia.cms.util.NodeDataUtil; import info.magnolia.context.MgnlContext; @@ -30,6 +31,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; @@ -37,11 +39,13 @@ import javax.jcr.ItemNotFoundException; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; +import javax.jcr.Value; import javax.jcr.query.InvalidQueryException; import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaConfigurationManager; import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaTypeConfiguration; import net.sourceforge.openutils.mgnlmedia.media.lifecycle.MediaModule; +import net.sourceforge.openutils.mgnlmedia.media.types.MediaTypeHandler; import net.sourceforge.openutils.mgnlmedia.media.types.impl.BaseTypeHandler; import net.sourceforge.openutils.mgnlmedia.media.utils.ImageUtils; @@ -430,16 +434,13 @@ * Get an array of String(s) containing a list of web pages where this media is used, an empty array otherwise * @param media media to search in web pages * @return an array of String(s) containing a list of web pages where this media is used, an empty array otherwise - * @throws IllegalArgumentException if media is null */ public static String[] findMediaUsedInWebPages(Content media) { if (media == null) { - String msg = "media cannot be null"; - log.error(msg); - - throw new IllegalArgumentException(msg); + log.warn("findMediaUsedInWebPages called with a null media"); + return new String[]{}; } try { @@ -458,4 +459,91 @@ } return EMPTY_STRING_ARRAY; } + + /** + * Returns a property (nodeData) of the media Content. + * @param media media Content + * @param property property name + * @return the value of the given nodedata or null if not found + */ + public static Object property(Content media, String property) + { + try + { + if (media == null || !media.hasNodeData(property)) + { + return null; + } + } + catch (RepositoryException e) + { + // return null; + } + + return getValueAsObject(media.getNodeData(property).getValue()); + + } + + /** + * Returns the width of the <strong>original</strong> media, if available. + * @param media media Content + * @return width of the original media, if available + */ + public static Integer width(Content media) + { + Long longproperty = (Long) property(media, MediaTypeHandler.METADATA_WIDTH); + if (longproperty != null) + { + return longproperty.intValue(); + } + return null; + } + + /** + * Returns the height of the <strong>original</strong> media, if available. + * @param media media Content + * @return height of the original media, if available + */ + public static Integer height(Content media) + { + Long longproperty = (Long) property(media, MediaTypeHandler.METADATA_HEIGHT); + if (longproperty != null) + { + return longproperty.intValue(); + } + return null; + } + + /** + * Private method, not an EL function + */ + private static Object getValueAsObject(Value value) + { + try + { + switch (value.getType()) + { + case (PropertyType.STRING) : + return value.getString(); + case (PropertyType.DOUBLE) : + return value.getDouble(); + case (PropertyType.LONG) : + return value.getLong(); + case (PropertyType.BOOLEAN) : + return value.getBoolean(); + case (PropertyType.DATE) : + return value.getDate(); + case (PropertyType.BINARY) : + // don't return + default : + return null; + } + } + catch (Exception e) + { + log.debug("Exception caught: " + e.getMessage(), e); + } + return null; + } + } Modified: trunk/openutils-mgnlmedia/src/main/resources/META-INF/media.tld =================================================================== --- trunk/openutils-mgnlmedia/src/main/resources/META-INF/media.tld 2010-02-13 18:35:26 UTC (rev 1913) +++ trunk/openutils-mgnlmedia/src/main/resources/META-INF/media.tld 2010-02-13 19:12:05 UTC (rev 1914) @@ -18,7 +18,7 @@ ]]> </example> </tag-file> - <tag-file> + <tag-file> <name>player</name> <path>/META-INF/tags/media/player.tag</path> <display-name>Player Tag</display-name> @@ -42,7 +42,7 @@ <description>Get the media module instance.</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>net.sourceforge.openutils.mgnlmedia.media.lifecycle.MediaModule getModule()</function-signature> - <display-name>Function module</display-name> + <display-name>module</display-name> <example> <![CDATA[ <c:set var="player" value="${media:module().player}" /> @@ -54,7 +54,7 @@ <description>Load a node from the media repository, given the UUID of the media node.</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>info.magnolia.cms.core.Content getNode(java.lang.Object)</function-signature> - <display-name>Function node</display-name> + <display-name>node</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -66,7 +66,7 @@ <description>Get the description from a media, given the media node itself.</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getDescription(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function desc</display-name> + <display-name>desc</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -79,7 +79,7 @@ <description>Get the description from a media, given the media node itself and a locale. Try to get the value from nodedata "description-{locale}"; if not found get the value from "description-en"; if not found again, get the value from "description".</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getDescription(info.magnolia.cms.core.Content, java.util.Locale)</function-signature> - <display-name>Function descLoc</display-name> + <display-name>descLoc</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -92,7 +92,7 @@ <description>Get the title from a media, given the media node itself.</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getTitle(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function title</display-name> + <display-name>title</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -105,7 +105,7 @@ <description>Get the title from a media, given the media node itself and a locale. Try to get the value from nodedata "title-{locale}"; if not found get the value from "title-en"; if not found again, get the value from "title".</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getTitle(info.magnolia.cms.core.Content, java.util.Locale)</function-signature> - <display-name>Function titleLoc</display-name> + <display-name>titleLoc</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -118,7 +118,7 @@ <description>Get the tags from a media, given the media node itself.</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String[] getTags(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function tags</display-name> + <display-name>tags</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -133,7 +133,7 @@ <description>Get the tags from a media, given the media node itself and a locale. Try to get the value from nodedata "tags-{locale}"; if not found get the value from "tags-en"; if not found again, get the value from "tags".</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String[] getTags(info.magnolia.cms.core.Content, java.util.Locale)</function-signature> - <display-name>Function tagsLoc</display-name> + <display-name>tagsLoc</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -148,7 +148,7 @@ <description>Get the url to the media, given the media node itself</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getUrl(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function url</display-name> + <display-name>url</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -161,7 +161,7 @@ <description>Get the url to the media, given the media node itself and an options map</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getUrl2(info.magnolia.cms.core.Content, java.util.Map)</function-signature> - <display-name>Function url2</display-name> + <display-name>url2</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -200,7 +200,7 @@ </description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getResolutionUrl(info.magnolia.cms.core.Content, java.lang.String)</function-signature> - <display-name>Function urlres</display-name> + <display-name>urlres</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -213,7 +213,7 @@ <description>Get all the resolutions for a given media node.</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String[] listResolutions(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function resolutions</display-name> + <display-name>resolutions</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -228,7 +228,7 @@ <description>Get the url to the thumbnail (l100x100 resolution) for a given media node (image or flv/youtube preview)</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getThumbnail(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function thumbnail</display-name> + <display-name>thumbnail</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -238,10 +238,10 @@ </function> <function> <name>preview</name> - <description>Get the url to the preview (l450x350 resolution) for a given media node (image or flv/youtube preview)</description> + <description>Get the url to the preview (l45x350 resolution) for a given media node (image or flv/youtube preview)</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getPreview(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function preview</display-name> + <display-name>preview</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -254,7 +254,7 @@ <description>Get the media type for a given media node</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String getType(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function type</display-name> + <display-name>type</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -270,7 +270,7 @@ Parameters are the media node and a resolution. You can use 'original' as resolution to get the size of the original image</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>int[] getSize(info.magnolia.cms.core.Content, java.lang.String)</function-signature> - <display-name>Function size</display-name> + <display-name>size</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -284,7 +284,7 @@ <description>Get list of path to content nodes of website repository in which the given media node is used</description> <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> <function-signature>java.lang.String[] findMediaUsedInWebPages(info.magnolia.cms.core.Content)</function-signature> - <display-name>Function usedInWebPages</display-name> + <display-name>usedInWebPages</display-name> <example> <![CDATA[ <c:set var="mediaNode" value="${media:node(content.image)}" /> @@ -294,4 +294,25 @@ ]]> </example> </function> + <function> + <name>width</name> + <description>Returns the width of the *original* media, if available</description> + <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> + <function-signature>java.lang.Integer width(info.magnolia.cms.core.Content)</function-signature> + <display-name>width</display-name> + </function> + <function> + <name>height</name> + <description>Returns the height of the *original* media, if available</description> + <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> + <function-signature>java.lang.Integer height(info.magnolia.cms.core.Content)</function-signature> + <display-name>height</display-name> + </function> + <function> + <name>property</name> + <description>Returns a property (nodeData) of the media, given the media Content and the property name</description> + <function-class>net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl</function-class> + <function-signature>java.lang.Object property(info.magnolia.cms.core.Content, java.lang.String)</function-signature> + <display-name>property</display-name> + </function> </taglib> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |