KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mckoi > database > TNumericType


1 /**
2  * com.mckoi.database.TNumericType 26 Jul 2002
3  *
4  * Mckoi SQL Database ( http://www.mckoi.com/database )
5  * Copyright (C) 2000, 2001, 2002 Diehl and Associates, Inc.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * Version 2 as published by the Free Software Foundation.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License Version 2 for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * Version 2 along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19  *
20  * Change Log:
21  *
22  *
23  */

24
25 package com.mckoi.database;
26
27 import com.mckoi.util.BigNumber;
28
29 /**
30  * An implementation of TType for a number.
31  *
32  * @author Tobias Downer
33  */

34
35 public final class TNumericType extends TType {
36
37   static final long serialVersionUID = -5133489773377747175L;
38
39   /**
40    * The size of the number.
41    */

42   private int size;
43   
44   /**
45    * The scale of the number.
46    */

47   private int scale;
48   
49   
50   /**
51    * Constructs a type with the given sql_type value, the size,
52    * and the scale of the number. Note that the 'sql_type' MUST be a numeric
53    * SQL type (FLOAT, INTEGER, DOUBLE, etc).
54    */

55   public TNumericType(int sql_type, int size, int scale) {
56     super(sql_type);
57     this.size = size;
58     this.scale = scale;
59   }
60
61   /**
62    * Returns the size of the number (-1 is don't care).
63    */

64   public int getSize() {
65     return size;
66   }
67   
68   /**
69    * Returns the scale of the number (-1 is don't care).
70    */

71   public int getScale() {
72     return scale;
73   }
74
75   // ---------- Implemented from TType ----------
76

77   public boolean comparableTypes(TType type) {
78     return (type instanceof TNumericType ||
79             type instanceof TBooleanType);
80   }
81
82   public int compareObs(Object JavaDoc ob1, Object JavaDoc ob2) {
83     BigNumber n1 = (BigNumber) ob1;
84     BigNumber n2;
85
86     if (ob2 instanceof BigNumber) {
87       n2 = (BigNumber) ob2;
88     }
89     else {
90       n2 = ob2.equals(Boolean.TRUE) ?
91                         BigNumber.BIG_NUMBER_ONE : BigNumber.BIG_NUMBER_ZERO;
92     }
93     
94     return n1.compareTo(n2);
95   }
96
97   public int calculateApproximateMemoryUse(Object JavaDoc ob) {
98     // A heuristic - it's difficult to come up with an accurate number
99
// for this.
100
return 25 + 16;
101   }
102
103   public Class JavaDoc javaClass() {
104     return BigNumber.class;
105   }
106
107 }
108
Popular Tags