package prefuse.data.parser;
/**
* DataParser instance that parses float values from a text string. Float
* values can be explicitly coded for by using a 'f' at the end of a
* number. For example "1.0" could parse as a double or a float, but
* "1.0f" will only parse as a float.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public class FloatParser implements DataParser {
/**
* Returns float.class.
* @see prefuse.data.parser.DataParser#getType()
*/
public Class getType() {
return float.class;
}
/**
* @see prefuse.data.parser.DataParser#format(java.lang.Object)
*/
public String format(Object value) {
if ( value == null ) return null;
if ( !(value instanceof Number) )
throw new IllegalArgumentException(
"This class can only format Objects of type Number.");
return String.valueOf(((Number)value).floatValue())+"f";
}
/**
* @see prefuse.data.parser.DataParser#canParse(java.lang.String)
*/
public boolean canParse(String text) {
try {
Float.parseFloat(text);
return true;
} catch ( NumberFormatException e ) {
return false;
}
}
/**
* @see prefuse.data.parser.DataParser#parse(java.lang.String)
*/
public Object parse(String text) throws DataParseException {
return new Float(parseFloat(text));
}
/**
* Parse a float value from a text string.
* @param text the text string to parse
* @return the parsed float value
* @throws DataParseException if an error occurs during parsing
*/
public static float parseFloat(String text) throws DataParseException {
try {
return Float.parseFloat(text);
} catch ( NumberFormatException e ) {
throw new DataParseException(e);
}
}
} // end of class FloatParser