KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > pdfbox > cos > COSNumber


1 /**
2  * Copyright (c) 2003, www.pdfbox.org
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * 3. Neither the name of pdfbox; nor the names of its
14  * contributors may be used to endorse or promote products derived from this
15  * software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
24  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  * http://www.pdfbox.org
29  *
30  */

31 package org.pdfbox.cos;
32
33 import java.io.IOException JavaDoc;
34
35 import java.util.HashMap JavaDoc;
36 import java.util.Map JavaDoc;
37
38 /**
39  * This class represents an abstract number in a PDF document.
40  *
41  * @author <a HREF="mailto:ben@benlitchfield.com">Ben Litchfield</a>
42  * @version $Revision: 1.10 $
43  */

44 public abstract class COSNumber extends COSBase
45 {
46     /**
47      * ZERO.
48     */

49     public static final COSInteger ZERO = new COSInteger( 0 );
50     /**
51      * ONE.
52     */

53     public static final COSInteger ONE = new COSInteger( 1 );
54     private static final Map JavaDoc COMMON_NUMBERS = new HashMap JavaDoc();
55
56     static
57     {
58         COMMON_NUMBERS.put( "0", ZERO );
59         COMMON_NUMBERS.put( "1", ONE );
60     }
61
62     /**
63      * This will get the float value of this number.
64      *
65      * @return The float value of this object.
66      */

67     public abstract float floatValue();
68
69     /**
70      * This will get the double value of this number.
71      *
72      * @return The double value of this number.
73      */

74     public abstract double doubleValue();
75
76     /**
77      * This will get the integer value of this number.
78      *
79      * @return The integer value of this number.
80      */

81     public abstract int intValue();
82
83     /**
84      * This will get the long value of this number.
85      *
86      * @return The long value of this number.
87      */

88     public abstract long longValue();
89
90     /**
91      * This factory method will get the appropriate number object.
92      *
93      * @param number The string representation of the number.
94      *
95      * @return A number object, either float or int.
96      *
97      * @throws IOException If the string is not a number.
98      */

99     public static COSNumber get( String JavaDoc number ) throws IOException JavaDoc
100     {
101         COSNumber result = (COSNumber)COMMON_NUMBERS.get( number );
102         if( result == null )
103         {
104             if (number.indexOf('.') >= 0)
105             {
106                 result = new COSFloat( number );
107             }
108             else
109             {
110                 result = new COSInteger( number );
111             }
112         }
113         return result;
114     }
115 }
Popular Tags