package cern.colt.matrix;

/**
 * Factory producing implementations of {@link cern.colt.matrix.Former} via
 * method create(); Serves to isolate the interface of String formatting from
 * the actual implementation. If you want to plug in a different String
 * formatting implementation, simply replace this class with your alternative.
 * 
 * @author wolfgang.hoschek@cern.ch
 * @version 1.0, 21/07/00
 */
public class FormerFactory {
/**
     * Constructs and returns a new format instance.
     * 
     * @param format
     *            the format string following printf conventions. The string has
     *            a prefix, a format code and a suffix. The prefix and suffix
     *            become part of the formatted output. The format code directs
     *            the formatting of the (single) parameter to be formatted. The
     *            code has the following structure
     *            
     * @exception IllegalArgumentException
     *                if bad format
     */
    public Former create(final String format) {
        return new Former() {
            public String form(double value) {
                return String.format(format, value);
            }

            public String form(float value) {
                return String.format(format, value);
            }

            public String form(int value) {
                return String.format(format, value);
            }

            public String form(long value) {
                return String.format(format, value);
            }

            public String form(double[] value) {
                if (value[0] == 0 && value[1] == 0) {
                    return "0";
                }
                if (value[1] == 0) {
                    return String.format(format, value[0]);
                }
                if (value[1] < 0) {
                    return String.format(format, value[0]) + " - " + String.format(format, -value[1]);
                }
                return String.format(format, value[0]) + " + " + String.format(format, value[1]);
            }

            public String form(float[] value) {
                if (value[0] == 0 && value[1] == 0) {
                    return "0";
                }
                if (value[1] == 0) {
                    return String.format(format, value[0]);
                }
                if (value[1] < 0) {
                    return String.format(format, value[0]) + " - " + String.format(format, -value[1]);
                }
                return String.format(format, value[0]) + " + " + String.format(format, value[1]);
            }

        };
    }
}

 

Ads help maintain this website.