Content of file EmbeddedMediaMetadataProvider.java.html

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>EmbeddedMediaMetadataProvider.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">NorthernWind :: Frontend :: Media</a> &gt; <a href="index.source.html" class="el_package">it.tidalwave.northernwind.frontend.media.impl</a> &gt; <span class="el_source">EmbeddedMediaMetadataProvider.java</span></div><h1>EmbeddedMediaMetadataProvider.java</h1><pre class="source lang-java linenums"><span class="fc" id="L1">/*</span>
 * #%L
 * *********************************************************************************************************************
 *
 * NorthernWind - lightweight CMS
 * http://northernwind.tidalwave.it - git clone https://bitbucket.org/tidalwave/northernwind-src.git
 * %%
 * Copyright (C) 2011 - 2023 Tidalwave s.a.s. (http://tidalwave.it)
 * %%
 * *********************************************************************************************************************
 *
 * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations under the License.
 *
 * *********************************************************************************************************************
 *
 *
 * *********************************************************************************************************************
 * #L%
 */
package it.tidalwave.northernwind.frontend.media.impl;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.List;
import java.io.IOException;
import it.tidalwave.util.Id;
import it.tidalwave.util.Key;
import it.tidalwave.util.NotFoundException;
import it.tidalwave.northernwind.aspect.DebugProfiling;
import it.tidalwave.northernwind.core.model.ResourceProperties;
import it.tidalwave.northernwind.frontend.ui.component.gallery.spi.MediaMetadataProvider;
import lombok.extern.slf4j.Slf4j;

/***********************************************************************************************************************
 *
 * An implementation of {@link MediaMetadataProvider} which retrieves metadata from embedded data inside media files.
 *
 * @author  Fabrizio Giudici
 *
 **********************************************************************************************************************/
<span class="fc" id="L48">@Slf4j</span>
<span class="fc" id="L49">public class EmbeddedMediaMetadataProvider implements MediaMetadataProvider</span>
  {
<span class="fc" id="L51">    public static final Key&lt;List&lt;String&gt;&gt; P_CAMERA_IDS = new Key&lt;&gt;(&quot;cameraIds&quot;) {};</span>

<span class="fc" id="L53">    public static final Key&lt;List&lt;String&gt;&gt; P_LENS_IDS = new Key&lt;&gt;(&quot;lensIds&quot;) {};</span>

<span class="fc" id="L55">    public static final Key&lt;List&lt;String&gt;&gt; P_MEDIA_PATHS = new Key&lt;&gt;(&quot;mediaPaths&quot;) {};</span>

<span class="fc" id="L57">    public static final Id P_GROUP_ID = new Id(&quot;EmbeddedMediaMetadataProvider&quot;);</span>

    @Inject
    private MetadataCache metadataCache;

    /*******************************************************************************************************************
     *
     * {@inheritDoc}
     *
     ******************************************************************************************************************/
    // FIXME: should use the Metadata API of blueMarine, but we have first to make it work with Spring and its DI.
should use the Metadata API of blueMarine, but we have first to make it work with Spring and its DI.
@Override @Nonnull @DebugProfiling(message = &quot;metadata retrieved&quot;) public String getMetadataString (@Nonnull final Id mediaId, @Nonnull final String template, @Nonnull final ResourceProperties properties) { try { <span class="fc" id="L75"> final var metadata = metadataCache.findMetadataById(mediaId, properties);</span> return metadata.interpolateString(template, properties); } catch (NotFoundException e) { log.warn(&quot;Cannot find media for id {}: {}&quot;, mediaId, e.toString()); return &quot;&quot;; } catch (IOException e) { log.warn(&quot;Unexpected I/O error for id {}: {}&quot;, mediaId, e.toString()); return &quot;&quot;; } } } </pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.9.202303310957</span></div></body></html>