<?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>GalleryDescription.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">blueMarine II :: Services :: StoppingDown</a> > <a href="index.source.html" class="el_package">it.tidalwave.bluemarine2.service.stoppingdown.impl</a> > <span class="el_source">GalleryDescription.java</span></div><h1>GalleryDescription.java</h1><pre class="source lang-java linenums">/*
* *********************************************************************************************************************
*
* blueMarine II: Semantic Media Centre
* http://tidalwave.it/projects/bluemarine2
*
* Copyright (C) 2015 - 2021 by Tidalwave s.a.s. (http://tidalwave.it)
*
* *********************************************************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License"); 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 "AS IS" 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.
*
* *********************************************************************************************************************
*
* git clone https://bitbucket.org/tidalwave/bluemarine2-src
* git clone https://github.com/tidalwave-it/bluemarine2-src
*
* *********************************************************************************************************************
*/
package it.tidalwave.bluemarine2.service.stoppingdown.impl;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.Immutable;
import java.util.Collection;
import java.util.function.BiFunction;
import java.nio.file.Path;
import java.nio.file.Paths;
import it.tidalwave.bluemarine2.model.MediaFolder;
import it.tidalwave.bluemarine2.model.VirtualMediaFolder;
import it.tidalwave.bluemarine2.model.VirtualMediaFolder.EntityCollectionFactory;
import it.tidalwave.bluemarine2.model.spi.PathAwareEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
/***********************************************************************************************************************
*
* @author Fabrizio Giudici
*
**********************************************************************************************************************/
@Immutable
<span class="pc bnc" id="L50" title="All 22 branches missed.">@RequiredArgsConstructor @Getter @EqualsAndHashCode @ToString</span>
public class GalleryDescription
{
@Nonnull
<span class="fc" id="L54"> private final String displayName;</span>
@Nonnull
<span class="fc" id="L57"> private final String url;</span>
/*******************************************************************************************************************
*
* Creates a {@link MediaFolder} with the given parent and the children provided by a factory.
*
* @param parent the parent folder
* @param entitiesFactory a function which, given the parent and a URL, provides the entities
* @return the folder
*
******************************************************************************************************************/
// FIXME: even though the finder is retrieved later, through the factory, the translation to DIDL does compute
even though the finder is retrieved later, through the factory, the translation to DIDL does compute
// the finder because it calls the count() for the children count
@Nonnull
public PathAwareEntity createFolder (@Nonnull final MediaFolder parent,
@Nonnull final BiFunction<MediaFolder, String, Collection<PathAwareEntity>> entitiesFactory)
{
<span class="fc" id="L74"> final Path path = Paths.get(url.replaceAll("^.*(themes|diary\\/[0-9]{4})\\/(.*)\\/images\\.xml", "$2"));</span>
<span class="fc" id="L75"> final EntityCollectionFactory ecf = p -> entitiesFactory.apply(p, url);</span>
<span class="fc" id="L76"> return new VirtualMediaFolder(parent, path, displayName, ecf);</span>
}
}
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>