Content of file FileEntityPresentable.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>FileEntityPresentable.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">SteelBlue - Examples - Large</a> &gt; <a href="../index.html" class="el_bundle">it-tidalwave-steelblue-example-backend</a> &gt; <a href="index.source.html" class="el_package">it.tidalwave.role.ui.javafx.example.large.mainscreen.impl</a> &gt; <span class="el_source">FileEntityPresentable.java</span></div><h1>FileEntityPresentable.java</h1><pre class="source lang-java linenums">/*
 * *********************************************************************************************************************
 *
 * SteelBlue: DCI User Interfaces
 * http://tidalwave.it/projects/steelblue
 *
 * Copyright (C) 2015 - 2021 by 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.
 *
 * *********************************************************************************************************************
 *
 * git clone https://bitbucket.org/tidalwave/steelblue-src
 * git clone https://github.com/tidalwave-it/steelblue-src
 *
 * *********************************************************************************************************************
 */
package it.tidalwave.role.ui.javafx.example.large.mainscreen.impl;

import javax.annotation.Nonnull;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Collection;
import java.io.IOException;
import java.util.Locale;
import it.tidalwave.dci.annotation.DciRole;
import it.tidalwave.role.Aggregate;
import it.tidalwave.role.ui.Displayable;
import it.tidalwave.role.ui.PresentationModel;
import it.tidalwave.role.ui.PresentationModelAggregate;
import it.tidalwave.role.ui.Styleable;
import it.tidalwave.role.ui.javafx.example.large.data.impl.FileEntity;
import it.tidalwave.role.ui.spi.SimpleCompositePresentable;
import it.tidalwave.util.LocalizedDateTimeFormatters;
import lombok.extern.slf4j.Slf4j;
import static it.tidalwave.util.Parameters.r;

/***********************************************************************************************************************
 *
 * @author  Fabrizio Giudici
 *
 **********************************************************************************************************************/
<span class="nc" id="L52">@DciRole(datumType = FileEntity.class) @Slf4j</span>
public class FileEntityPresentable extends SimpleCompositePresentable&lt;FileEntity&gt;
  {
    @Nonnull
    private final FileEntity owner;

    public FileEntityPresentable (@Nonnull final FileEntity owner)
      {
<span class="nc" id="L60">        super(owner);</span>
<span class="nc" id="L61">        this.owner = owner;</span>
<span class="nc" id="L62">      }</span>

    @Override @Nonnull
    public PresentationModel createPresentationModel (@Nonnull final Collection&lt;Object&gt; roles)
      {
        try
          {
            // TODO: add roles such as Removable, present only if permissions allow
            // TODO: iconprovider
iconprovider
<span class="nc" id="L71"> final DateTimeFormatter formatter =</span> <span class="nc" id="L72"> LocalizedDateTimeFormatters.getDateTimeFormatterFor(FormatStyle.SHORT, Locale.getDefault());</span> <span class="nc" id="L73"> final Aggregate&lt;PresentationModel&gt; aggregate = PresentationModelAggregate.newInstance()</span> <span class="nc" id="L74"> .withPmOf(&quot;name&quot;,</span> <span class="nc" id="L75"> r(Displayable.of(owner.getDisplayName())))</span> <span class="nc" id="L76"> .withPmOf(&quot;size&quot;,</span> <span class="nc" id="L77"> r(Displayable.of(&quot;&quot; + owner.getSize()), Styleable.of(&quot;right-aligned&quot;)))</span> <span class="nc" id="L78"> .withPmOf(&quot;creationDate&quot;,</span> <span class="nc" id="L79"> r(Displayable.of(formatter.format(owner.getCreationDateTime()))))</span> <span class="nc" id="L80"> .withPmOf(&quot;latestModificationDate&quot;,</span> <span class="nc" id="L81"> r(Displayable.of(formatter.format(owner.getLastModifiedDateTime()))));</span> <span class="nc" id="L82"> return super.createPresentationModel(r(aggregate, roles));</span> } <span class="nc" id="L84"> catch (IOException e)</span> { <span class="nc" id="L86"> log.error(&quot;While creating a PresentationModel: &quot;, e);</span> <span class="nc" id="L87"> return PresentationModel.of(owner, Displayable.of(e.toString()));</span> } // final Selectable selectable = () -&gt; onSelected(entity); } } </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>