Logo
Distributed Genetic Programming Framework
print print

File org.jfree.xml.ParserUtil.java

Here you can find all the information about the file org.jfree.xml.ParserUtil.java. You may explore it here or download it onto your local disk.
/* ========================================================================
 * JCommon : a free general purpose class library for the Java(tm) platform
 * ========================================================================
 *
 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
 * 
 * Project Info:  http://www.jfree.org/jcommon/index.html
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 * USA.  
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 * in the United States and other countries.]
 * 
 * ---------------
 * ParserUtil.java
 * ---------------
 * (C)opyright 2002-2005, by Thomas Morgner and Contributors.
 *
 * Original Author:  Thomas Morgner (taquera@sherito.org);
 * Contributor(s):   David Gilbert (for Object Refinery Limited);
 *
 * $Id: ParserUtil.java,v 1.3 2005/10/18 13:25:44 mungady Exp $
 *
 * Changes
 * -------
 * 21-May-2002 : Contains utility functions to make parsing easier.
 * 10-Dec-2002 : Fixed issues reported by Checkstyle (DG);
 * 29-Apr-2003 : Distilled from the JFreeReport project and moved into JCommon;
 * 23-Sep-2003 : Minor Javadoc updates (DG);
 *
 */

package org.jfree.xml;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
import java.lang.reflect.Field;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;

/**
 * Basic helper functions to ease up the process of parsing.
 *
 * @author Thomas Morgner
 */

public class ParserUtil {

    /**
     * Parses the string <code>text</code> into an int. If text is null or does not
     * contain a parsable value, the message given in <code>message</code> is used to
     * throw a SAXException.
     *
     * @param text  the text to parse.
     * @param message  the error message if parsing fails.
     *
     * @return the int value.
     *
     * @throws SAXException if there is a problem with the parsing.
     */

    public static int parseInt(final String text, final String message) throws SAXException {
        if (text == null) {
            throw new SAXException(message);
        }

        try {
            return Integer.parseInt(text);
        }
        catch (NumberFormatException nfe) {
            throw new SAXException("NumberFormatError: " + message);
        }
    }

    /**
     * Parses an integer.
     *
     * @param text  the text to parse.
     * @param defaultVal  the default value.
     *
     * @return the integer.
     */

    public static int parseInt(final String text, final int defaultVal) {
        if (text == null) {
            return defaultVal;
        }

        try {
            return Integer.parseInt(text);
        }
        catch (NumberFormatException nfe) {
            return defaultVal;
        }
    }

    /**
     * Parses the string <code>text</code> into an float. If text is null or does not
     * contain a parsable value, the message given in <code>message</code> is used to
     * throw a SAXException.
     *
     * @param text  the text to parse.
     * @param message  the error message if parsing fails.
     *
     * @return the float value.
     *
     * @throws SAXException if there is a problem with the parsing.
     */

    public static float parseFloat(final String text, final String message) throws SAXException {
        if (text == null) {
            throw new SAXException(message);
        }
        try {
            return Float.parseFloat(text);
        }
        catch (NumberFormatException nfe) {
            throw new SAXException("NumberFormatError: " + message);
        }
    }

    /**
     * Parses the string <code>text</code> into an float. If text is null or does not
     * contain a parsable value, the message given in <code>message</code> is used to
     * throw a SAXException.
     *
     * @param text  the text to parse.
     * @param defaultVal the defaultValue returned if parsing fails.
     *
     * @return the float value.
     */

    public static float parseFloat(final String text, final float defaultVal) {
        if (text == null) {
            return defaultVal;
        }
        try {
            return Float.parseFloat(text);
        }
        catch (NumberFormatException nfe) {
            return defaultVal;
        }
    }

    /**
     * Parses a boolean. If the string <code>text</code> contains the value of "true", the
     * true value is returned, else false is returned.
     *
     * @param text  the text to parse.
     * @param defaultVal  the default value.
     *
     * @return a boolean.
     */

    public static boolean parseBoolean(final String text, final boolean defaultVal) {
        if (text == null) {
            return defaultVal;
        }
        return text.equalsIgnoreCase("true");
    }

    /**
     * Parses a string. If the <code>text</code> is null, defaultval is returned.
     *
     * @param text  the text to parse.
     * @param defaultVal  the default value.
     *
     * @return a string.
     */

    public static String parseString(final String text, final String defaultVal) {
        if (text == null) {
            return defaultVal;
        }
        return text;
    }

    /**
     * Creates a basic stroke given the width contained as float in the given string.
     * If the string could not be parsed into a float, a basic stroke with the width of
     * 1 is returned.
     *
     * @param weight  a string containing a number (the stroke weight).
     *
     * @return the stroke.
     */

    public static Stroke parseStroke(final String weight) {
        try {
            if (weight != null) {
                final Float w = new Float(weight);
                return new BasicStroke(w.floatValue());
            }
        }
        catch (NumberFormatException nfe) {
            //Log.warn("Invalid weight for stroke", nfe);
        }
        return new BasicStroke(1);
    }

    /**
     * Parses a color entry. If the entry is in hexadecimal or ocal notation, the color is
     * created using Color.decode(). If the string denotes a constant name of on of the color
     * constants defined in java.awt.Color, this constant is used.
     * <p>
     * As fallback the color black is returned if no color can be parsed.
     *
     * @param color  the color (as a string).
     *
     * @return the paint.
     */

    public static Color parseColor(final String color) {
        return parseColor(color, Color.black);
    }

    /**
     * Parses a color entry. If the entry is in hexadecimal or octal notation, the color is
     * created using Color.decode(). If the string denotes a constant name of one of the color
     * constants defined in java.awt.Color, this constant is used.
     * <p>
     * As fallback the supplied default value is returned if no color can be parsed.
     *
     * @param color  the color (as a string).
     * @param defaultValue  the default value (returned if no color can be parsed).
     *
     * @return the paint.
     */

    public static Color parseColor(final String color, final Color defaultValue) {
        if (color == null) {
            return defaultValue;
        }
        try {
            // get color by hex or octal value
            return Color.decode(color);
        }
        catch (NumberFormatException nfe) {
            // if we can't decode lets try to get it by name
            try {
                // try to get a color by name using reflection
                // black is used for an instance and not for the color itselfs
                final Field f = Color.class.getField(color);

                return (Color) f.get(null);
            }
            catch (Exception ce) {
                //Log.warn("No such Color : " + color);
                // if we can't get any color return black
                return defaultValue;
            }
        }
    }


    /**
     * Parses a position of an element. If a relative postion is given, the returnvalue
     * is a negative number between 0 and -100.
     *
     * @param value  the value.
     * @param exceptionMessage  the exception message.
     *
     * @return the float value.
     *
     * @throws SAXException if there is a problem parsing the string.
     */

    public static float parseRelativeFloat(final String value, final String exceptionMessage)
        throws SAXException {
        if (value == null) {
            throw new SAXException(exceptionMessage);
        }
        final String tvalue = value.trim();
        if (tvalue.endsWith("%")) {
            final String number = tvalue.substring(0, tvalue.indexOf("%"));
            final float f = parseFloat(number, exceptionMessage) * -1.0f;
            return f;
        }
        else {
            return parseFloat(tvalue, exceptionMessage);
        }
    }

    /**
     * Parses an element position. The position is stored in the attributes "x", "y", "width" and
     * "height". The attributes are allowed to have relative notion.
     *
     * @param atts  the attributes.
     *
     * @return the element position.
     *
     * @throws SAXException if there is a problem getting the element position.
     */

    public static Rectangle2D getElementPosition(final Attributes atts) throws SAXException {
        final float x = ParserUtil.parseRelativeFloat(atts.getValue("x"),
            "Element x not specified");
        final float y = ParserUtil.parseRelativeFloat(atts.getValue("y"),
            "Element y not specified");
        final float w = ParserUtil.parseRelativeFloat(atts.getValue("width"),
            "Element width not specified");
        final float h = ParserUtil.parseRelativeFloat(atts.getValue("height"),
            "Element height not specified");
        final Rectangle2D.Float retval = new Rectangle2D.Float(x, y, w, h);
        return retval;
    }

}

File Information:

file name:ParserUtil.java
package:org.jfree.xml
qualified name:org.jfree.xml.ParserUtil.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/jfree/xml/ParserUtil.java
size:10.564 KB (10818 B)
uploaded: 2015-07-22 04:11:10 GMT+0000
last update: 2006-09-26 10:30:36 GMT+0000
last access: 2018-01-22 00:17:36 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2018-01-22 00:17:36 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo