All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.tidalwave.bluebill.mobile.observation.impl.ObservationItemHtmlRenderable Maven / Gradle / Ivy

The newest version!
/***********************************************************************************************************************
 *
 * blueBill Mobile - Android - open source birding
 * Copyright (C) 2009-2011 by Tidalwave s.a.s. (http://www.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.
 *
 ***********************************************************************************************************************
 *
 * WWW: http://bluebill.tidalwave.it/mobile
 * SCM: https://java.net/hg/bluebill-mobile~android-src
 *
 **********************************************************************************************************************/
package it.tidalwave.bluebill.mobile.observation.impl;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import java.util.Locale;
import it.tidalwave.util.NotFoundException;
import it.tidalwave.role.HtmlRenderable;
import it.tidalwave.netbeans.util.Locator;
import it.tidalwave.observation.ObservationItem;
import it.tidalwave.bluebill.taxonomy.mobile.Taxon;
import it.tidalwave.bluebill.mobile.preferences.TaxonomyPreferences;
import static it.tidalwave.bluebill.taxonomy.mobile.Taxon.Taxon;

/***********************************************************************************************************************
 *
 * @author  Fabrizio Giudici
 * @version $Id$
 *
 **********************************************************************************************************************/
public class ObservationItemHtmlRenderable extends ObservationItemTextRenderableSupport implements HtmlRenderable
  {
    @Nonnull
    private final Provider taxonomyPreferences = Locator.createProviderFor(TaxonomyPreferences.class);
    
    public ObservationItemHtmlRenderable (final @Nonnull ObservationItem observationItem) 
      {
        super(observationItem);
      }
    
    @Nonnull
    public String render (final @Nonnull Object ... args)
      {
        final Taxon taxon = observationItem.getObservable().as(Taxon);
        String extra = renderArgs(args);

        final StringBuilder buffer = new StringBuilder();

        String separator = "";
        String style1 = "";
        String style2 = "";
        String size1 = "";
        String size2 = "";
        boolean atLeastOneLocalizedNameRendered = false;

        for (final Locale locale : taxonomyPreferences.get().getTaxonomyLocales())
          {
            try
              {
                final String displayName = taxon.getDisplayName(locale);
                buffer.append(separator + size1 + style1 + displayName + extra + style2 + size2);
                style1 = style2 = extra =  "";
                separator = "
"; size1 = ""; size2 = ""; atLeastOneLocalizedNameRendered = true; } catch (NotFoundException e) { // no display name with the current locale, ignore it } } if (!atLeastOneLocalizedNameRendered || taxonomyPreferences.get().isScientificNamesRenderingEnabled()) { buffer.append(separator); buffer.append(String.format("%s", taxon.getScientificName())); } return buffer.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy