Revision 9524 branches/piloto3d/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/XTypes.java
XTypes.java | ||
---|---|---|
43 | 43 |
*/ |
44 | 44 |
package com.iver.cit.gvsig.fmap.drivers; |
45 | 45 |
|
46 |
import java.math.BigDecimal; |
|
46 | 47 |
import java.nio.ByteBuffer; |
47 | 48 |
import java.sql.ResultSet; |
48 | 49 |
import java.sql.ResultSetMetaData; |
49 | 50 |
import java.sql.SQLException; |
51 |
import java.sql.Timestamp; |
|
50 | 52 |
import java.sql.Types; |
51 | 53 |
|
52 | 54 |
import com.hardcode.gdbms.engine.values.BooleanValue; |
... | ... | |
63 | 65 |
import com.hardcode.gdbms.engine.values.Value; |
64 | 66 |
import com.hardcode.gdbms.engine.values.ValueFactory; |
65 | 67 |
|
66 |
public class XTypes{ |
|
67 |
public final static int POINT2D = 100; |
|
68 |
public final static int LINE2D = 101; |
|
69 |
public final static int POLYGON2D = 102; |
|
70 |
public final static int MULTI2D = 103; |
|
71 |
|
|
72 |
public static String fieldTypeToString(int fieldType) |
|
73 |
{ |
|
74 |
String aux = "text"; // Por defecto. |
|
75 |
switch (fieldType) |
|
76 |
{ |
|
77 |
case Types.SMALLINT: |
|
78 |
aux = "integer"; |
|
79 |
break; |
|
80 |
case Types.INTEGER: |
|
81 |
aux = "integer"; |
|
82 |
break; |
|
83 |
case Types.BIGINT: |
|
84 |
aux = "integer"; |
|
85 |
break; |
|
86 |
case Types.BOOLEAN: |
|
87 |
aux = "boolean"; |
|
88 |
break; |
|
89 |
case Types.DECIMAL: |
|
90 |
aux = "numeric"; |
|
91 |
break; |
|
92 |
case Types.DOUBLE: |
|
93 |
aux = "float8"; |
|
94 |
break; |
|
95 |
case Types.FLOAT: |
|
96 |
aux = "float"; |
|
97 |
break; |
|
98 |
case Types.CHAR: |
|
99 |
aux = "char"; |
|
100 |
break; |
|
101 |
case Types.VARCHAR: |
|
102 |
aux = "text"; |
|
103 |
break; |
|
104 |
case Types.LONGVARCHAR: |
|
105 |
aux = "text"; |
|
106 |
break; |
|
107 |
|
|
108 |
case POINT2D: |
|
109 |
aux = "POINT"; |
|
110 |
break; |
|
111 |
case LINE2D: |
|
112 |
aux = "MULTILINESTRING"; |
|
113 |
break; |
|
114 |
case POLYGON2D: |
|
115 |
aux = "MULTIPOLYGON"; |
|
116 |
break; |
|
117 |
case MULTI2D: |
|
118 |
aux = "GEOMETRY"; |
|
119 |
break; |
|
120 |
|
|
121 |
|
|
122 |
} |
|
123 |
|
|
124 |
return aux; |
|
125 |
} |
|
126 |
|
|
68 |
public class XTypes { |
|
69 |
public final static double NUM_msSecs2000 = 9.466776E11; |
|
70 |
public final static int POINT2D = 100; |
|
71 |
|
|
72 |
public final static int LINE2D = 101; |
|
73 |
|
|
74 |
public final static int POLYGON2D = 102; |
|
75 |
|
|
76 |
public final static int MULTI2D = 103; |
|
77 |
|
|
78 |
public static String fieldTypeToString(int fieldType) { |
|
79 |
String aux = "text"; // Por defecto. |
|
80 |
switch (fieldType) { |
|
81 |
case Types.SMALLINT: |
|
82 |
aux = "integer"; |
|
83 |
break; |
|
84 |
case Types.INTEGER: |
|
85 |
aux = "integer"; |
|
86 |
break; |
|
87 |
case Types.BIGINT: |
|
88 |
aux = "integer"; |
|
89 |
break; |
|
90 |
case Types.BOOLEAN: |
|
91 |
aux = "boolean"; |
|
92 |
break; |
|
93 |
case Types.DECIMAL: |
|
94 |
aux = "numeric"; |
|
95 |
break; |
|
96 |
case Types.DOUBLE: |
|
97 |
aux = "float8"; |
|
98 |
break; |
|
99 |
case Types.FLOAT: |
|
100 |
aux = "float"; |
|
101 |
break; |
|
102 |
case Types.CHAR: |
|
103 |
aux = "char"; |
|
104 |
break; |
|
105 |
case Types.VARCHAR: |
|
106 |
aux = "text"; |
|
107 |
break; |
|
108 |
case Types.LONGVARCHAR: |
|
109 |
aux = "text"; |
|
110 |
break; |
|
111 |
|
|
112 |
case POINT2D: |
|
113 |
aux = "POINT"; |
|
114 |
break; |
|
115 |
case LINE2D: |
|
116 |
aux = "MULTILINESTRING"; |
|
117 |
break; |
|
118 |
case POLYGON2D: |
|
119 |
aux = "MULTIPOLYGON"; |
|
120 |
break; |
|
121 |
case MULTI2D: |
|
122 |
aux = "GEOMETRY"; |
|
123 |
break; |
|
124 |
|
|
125 |
} |
|
126 |
|
|
127 |
return aux; |
|
128 |
} |
|
129 |
|
|
127 | 130 |
/** |
128 | 131 |
* @param fieldId |
129 | 132 |
* @throws SQLException |
... | ... | |
148 | 151 |
if (metaData.getColumnType(fieldId) == Types.SMALLINT) |
149 | 152 |
val = ValueFactory.createValue(buf.getShort()); |
150 | 153 |
if (metaData.getColumnType(fieldId) == Types.TINYINT) |
151 |
val = ValueFactory.createValue(buf.getShort());
|
|
154 |
val = ValueFactory.createValue(buf.getShort()); |
|
152 | 155 |
if (metaData.getColumnType(fieldId) == Types.BIGINT) |
153 | 156 |
val = ValueFactory.createValue(buf.getLong()); |
154 | 157 |
if (metaData.getColumnType(fieldId) == Types.BIT) |
... | ... | |
159 | 162 |
val = ValueFactory.createValue(rs.getTime(fieldId)); |
160 | 163 |
if (metaData.getColumnType(fieldId) == Types.TIMESTAMP) |
161 | 164 |
val = ValueFactory.createValue(rs.getTimestamp(fieldId)); |
162 |
|
|
165 |
|
|
163 | 166 |
} |
164 | 167 |
return val; |
165 | 168 |
} |
166 | 169 |
|
167 |
public static void updateValue(ResultSet rs, int fieldId_ceroBased, Value val) throws SQLException { |
|
170 |
public static void updateValue(ResultSet rs, int fieldId_ceroBased, |
|
171 |
Value val) throws SQLException { |
|
168 | 172 |
if (val instanceof NullValue) |
169 | 173 |
return; |
170 | 174 |
// byte[] data; |
171 | 175 |
ResultSetMetaData metaData = rs.getMetaData(); |
172 | 176 |
int fieldId = fieldId_ceroBased + 1; |
173 | 177 |
// System.out.println("EScritrua: " + metaData.isDefinitelyWritable(1)); |
174 |
switch (val.getSQLType()) |
|
175 |
{ |
|
178 |
switch (val.getSQLType()) { |
|
176 | 179 |
case Types.VARCHAR: |
177 | 180 |
case Types.LONGVARCHAR: |
178 | 181 |
// Para evitar escribir en el campo geometria: |
... | ... | |
180 | 183 |
return; |
181 | 184 |
StringValue valStr = (StringValue) val; |
182 | 185 |
rs.updateString(fieldId, valStr.getValue()); |
183 |
// System.out.println("Field " + fieldId + " :" + metaData.getColumnTypeName(fieldId)); |
|
186 |
// System.out.println("Field " + fieldId + " :" + |
|
187 |
// metaData.getColumnTypeName(fieldId)); |
|
184 | 188 |
break; |
185 | 189 |
case Types.FLOAT: |
186 | 190 |
FloatValue vFloat = (FloatValue) val; |
... | ... | |
192 | 196 |
break; |
193 | 197 |
case Types.INTEGER: |
194 | 198 |
IntValue vInt = (IntValue) val; |
195 |
rs.updateInt(fieldId, vInt.getValue());
|
|
199 |
rs.updateInt(fieldId, vInt.getValue()); |
|
196 | 200 |
case Types.SMALLINT: |
197 | 201 |
ShortValue vShort = (ShortValue) val; |
198 | 202 |
rs.updateShort(fieldId, vShort.shortValue()); |
... | ... | |
208 | 212 |
break; |
209 | 213 |
case Types.DATE: |
210 | 214 |
DateValue vDate = (DateValue) val; |
211 |
rs.updateDate(fieldId, vDate.getValue());
|
|
215 |
rs.updateDate(fieldId, vDate.getValue()); |
|
212 | 216 |
case Types.TIME: |
213 | 217 |
TimeValue vTime = (TimeValue) val; |
214 | 218 |
rs.updateTime(fieldId, vTime.getValue()); |
... | ... | |
217 | 221 |
TimestampValue vTimeStamp = (TimestampValue) val; |
218 | 222 |
rs.updateTimestamp(fieldId, vTimeStamp.getValue()); |
219 | 223 |
break; |
220 |
|
|
224 |
|
|
221 | 225 |
default: |
222 |
System.err.println("Tipo no soportado:" + metaData.getColumnType(fieldId) + ". Field:" + fieldId + ": " + metaData.getColumnName(fieldId)); |
|
223 |
// throw new UnsupportedOperationException(); |
|
224 |
|
|
226 |
System.err.println("Tipo no soportado:" |
|
227 |
+ metaData.getColumnType(fieldId) + ". Field:" + fieldId |
|
228 |
+ ": " + metaData.getColumnName(fieldId)); |
|
229 |
// throw new UnsupportedOperationException(); |
|
230 |
|
|
225 | 231 |
} |
226 | 232 |
} |
227 |
|
|
228 | 233 |
|
229 | 234 |
} |
Also available in: Unified diff