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

it.tidalwave.metadata.text.APEXFormat Maven / Gradle / Ivy

The newest version!
/***********************************************************************************************************************
 *
 * blueMarine Metadata - open source media workflow
 * Copyright (C) 2007-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://bluemarine.tidalwave.it
 * SCM: https://kenai.com/hg/bluemarine~metadata-src
 *
 **********************************************************************************************************************/
package it.tidalwave.metadata.text;

import java.text.DecimalFormat;
import java.text.FieldPosition;
import javax.annotation.Nonnegative;
import javax.annotation.Nonnull;

/*******************************************************************************
 * 
 * A formatter for APEX units.
 * 
 * @author  fritz
 * @version $Id$
 *
 ******************************************************************************/
public abstract class APEXFormat extends DecimalFormat
  {
    @Nonnegative
    private final double base;

    @Nonnull
    private final String prefix;
    
    @Nonnull
    private final String suffix;

    /***************************************************************************
     * 
     * 
     **************************************************************************/
    public APEXFormat (@Nonnegative final double base,
                       @Nonnull final String prefix,
                       @Nonnull final String suffix)
      {
        this.base = base;
        this.prefix = prefix;
        this.suffix = suffix;
      }

    /***************************************************************************
     * 
     * {@inheritDoc}
     * 
     **************************************************************************/
    @Override
    @Nonnull
    public StringBuffer format (final double d, 
                                @Nonnull final StringBuffer toAppendTo,
                                @Nonnull final FieldPosition pos)
      {
        toAppendTo.append(String.format("%s%s%s (APEX = %s)", prefix, formatMain(Math.pow(base, d)), suffix, toString(d)));
        return toAppendTo;
      }
  
    /***************************************************************************
     * 
     * @param d
     * @return
     * 
     **************************************************************************/
    @Nonnull
    protected String formatMain (final double d)
      {
        return toString(d);
      }

    /***************************************************************************
     * 
     * @param d
     * @return
     * 
     **************************************************************************/
    @Nonnull
    private String toString (final double number)
      {
        return String.format("%.1f", number).replaceAll("\\.0$", "");
      }

    /***************************************************************************
     * 
     * {@inheritDoc}
     * 
     **************************************************************************/
    @Override
    @Nonnull
    public Number parse (final String s)
      {
        throw new UnsupportedOperationException();
      }
  }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy