OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Blame | Last modification | View Log | RSS feed

/*
 * Copyright 2015 Daniel Gredler
 *
 * 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.
 */

package uk.org.okapibarcode.output;

import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.Locale;

/**
 * {@link OutputStreamWriter} extension which provides some convenience methods for writing numbers.
 */
class ExtendedOutputStreamWriter extends OutputStreamWriter {

    /** Format to use when writing doubles to the stream. */
    private final String doubleFormat;

    /**
     * Creates a new extended output stream writer, using the UTF-8 charset.
     *
     * @param out the stream to write to
     * @param doubleFormat the format to use when writing doubles to the stream
     */
    public ExtendedOutputStreamWriter(final OutputStream out, final String doubleFormat) {
        super(out, StandardCharsets.UTF_8);
        this.doubleFormat = doubleFormat;
    }

    /** {@inheritDoc} */
    @Override
    public ExtendedOutputStreamWriter append(final CharSequence cs) throws IOException {
        super.append(cs);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public ExtendedOutputStreamWriter append(final CharSequence cs, final int start, final int end) throws IOException {
        super.append(cs, start, end);
        return this;
    }

    /**
     * Writes the specified double to the stream, formatted according to the format specified in the
     * constructor.
     *
     * @param d the double to write to the stream
     * @return this writer
     * @throws IOException if an I/O error occurs
     */
    public ExtendedOutputStreamWriter append(final double d) throws IOException {
        super.append(String.format(Locale.ROOT, this.doubleFormat, d));
        return this;
    }

    /**
     * Writes the specified integer to the stream.
     *
     * @param i the integer to write to the stream
     * @return this writer
     * @throws IOException if an I/O error occurs
     */
    public ExtendedOutputStreamWriter appendInt(final int i) throws IOException {
        super.append(String.valueOf(i));
        return this;
    }
}