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

org.solovyev.common.text.NumberParser Maven / Gradle / Ivy

/*
 * Copyright (c) 2009-2011. Created by serso aka se.solovyev.
 * For more information, please, contact [email protected]
 * or visit http://se.solovyev.org
 */

package org.solovyev.common.text;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * User: serso
 * Date: 9/26/11
 * Time: 11:07 PM
 */
public class NumberParser implements Parser {

	@NotNull
	private final Class clazz;

    /**
     * Use org.solovyev.common.text.NumberParser#getParser(java.lang.Class) instead
     * @param clazz class representing parsing object
     */
    @Deprecated
	public NumberParser(@NotNull Class clazz) {
		this.clazz = clazz;
	}

	@Override
	public N parseValue(@Nullable String value) throws IllegalArgumentException {
		N result;

		if (value != null) {
			if (this.clazz.equals(Integer.class)) {
				result = (N) Integer.valueOf(value);
			} else if (this.clazz.equals(Float.class)) {
				result = (N) Float.valueOf(value);
			} else if (this.clazz.equals(Long.class)) {
				result = (N) Long.valueOf(value);
            } else if (this.clazz.equals(Double.class)) {
                result = (N) Double.valueOf(value);
			} else {
				throw new UnsupportedOperationException(this.clazz + " is not supported!");
			}
		} else {
			result = null;
		}

		return result;
	}

            /*
    **********************************************************************
    *
    *                           STATIC
    *
    **********************************************************************
    */

    static final List> supportedClasses = Arrays.>asList(Integer.class, Float.class, Long.class, Double.class);

    private static final Map, Parser> parsers = new HashMap, Parser>(supportedClasses.size());

    static {
        for (Class supportedClass : supportedClasses) {
            parsers.put(supportedClass, new NumberParser(supportedClass));
        }
    }

    @NotNull
    public static  Parser getParser(@NotNull Class clazz) {
        assert supportedClasses.contains(clazz) : "Class " + clazz + " is not supported by " + NumberParser.class;
        return (Parser) parsers.get(clazz);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy