Revision 34285 trunk/extensions/extOracleSpatial/src/es/prodevelop/cit/gvsig/fmap/drivers/jdbc/oracle/OracleSpatialDriver.java
OracleSpatialDriver.java | ||
---|---|---|
159 | 159 |
public static final String ORACLE_GEO_SCHEMA = "MDSYS"; |
160 | 160 |
public static final String CONN_STR_BEGIN = "jdbc:oracle:thin:"; |
161 | 161 |
|
162 |
public static final int VARCHAR2_DEFAULT_SIZE = 2000; // 512; |
|
163 |
public static final int VARCHAR2_MAX_SIZE = 2000;
|
|
162 |
// public static final int VARCHAR2_DEFAULT_SIZE = 2000; // 512;
|
|
163 |
public static final int VARCHAR2_MAX_SIZE = 4000;
|
|
164 | 164 |
|
165 | 165 |
public static final int MAX_ID_LENGTH = 30; |
166 | 166 |
private final static GeometryFactory geomFactory = new GeometryFactory(); |
... | ... | |
1234 | 1234 |
|
1235 | 1235 |
try { |
1236 | 1236 |
int aux = fieldId + 1; // fieldId viene basado en 0 |
1237 |
i = metaData.getColumnDisplaySize(aux); |
|
1237 |
int _type = metaData.getColumnType(aux); |
|
1238 |
if (NumberUtilities.isNumeric(_type)) { |
|
1239 |
i = metaData.getPrecision(aux); |
|
1240 |
} else { |
|
1241 |
i = metaData.getColumnDisplaySize(aux); |
|
1242 |
} |
|
1238 | 1243 |
} |
1239 | 1244 |
catch (SQLException e) { |
1240 | 1245 |
logger.error("While getting field width: " + e.getMessage()); |
... | ... | |
1718 | 1723 |
|
1719 | 1724 |
|
1720 | 1725 |
|
1721 |
public static String fieldTypeToSqlStringType(FieldDescription fieldDesc) { |
|
1722 |
String aux = "VARCHAR2(" + VARCHAR2_DEFAULT_SIZE + " BYTE)"; // Por defecto. |
|
1726 |
public static String fieldTypeToSqlStringType(FieldDescription fd) { |
|
1727 |
|
|
1728 |
String aux = "VARCHAR2(" + VARCHAR2_MAX_SIZE + ")"; // Por defecto. |
|
1729 |
int the_type = fd.getFieldType(); |
|
1730 |
|
|
1731 |
int _w = fd.getFieldLength(); |
|
1732 |
int _dec = 0; |
|
1733 |
|
|
1734 |
if (NumberUtilities.isNumeric(the_type)) { |
|
1735 |
_dec = fd.getFieldDecimalCount(); |
|
1736 |
} |
|
1723 | 1737 |
|
1724 |
switch (fieldDesc.getFieldType()) {
|
|
1738 |
switch (the_type) {
|
|
1725 | 1739 |
case Types.SMALLINT: |
1726 |
aux = "NUMBER(5, 0)"; |
|
1727 |
|
|
1740 |
aux = "NUMBER(" + _w + ", 0)"; |
|
1728 | 1741 |
break; |
1729 | 1742 |
|
1730 | 1743 |
case Types.INTEGER: |
1731 |
aux = "NUMBER(12, 0)"; |
|
1732 |
|
|
1744 |
aux = "NUMBER(" + _w + ", 0)"; |
|
1733 | 1745 |
break; |
1734 | 1746 |
|
1735 | 1747 |
case Types.BIGINT: |
1736 |
aux = "NUMBER(38, 0)"; |
|
1737 |
|
|
1748 |
aux = "NUMBER(" + _w + ", 0)"; |
|
1738 | 1749 |
break; |
1739 | 1750 |
|
1740 | 1751 |
case Types.BOOLEAN: |
1741 | 1752 |
aux = "NUMBER(1, 0)"; |
1742 |
|
|
1743 | 1753 |
break; |
1744 | 1754 |
|
1745 | 1755 |
case Types.DECIMAL: |
1746 |
aux = "NUMBER"; |
|
1747 |
|
|
1756 |
aux = "NUMBER(" + _w + ", " + _dec + ")"; |
|
1748 | 1757 |
break; |
1749 | 1758 |
|
1750 | 1759 |
case Types.NUMERIC: |
1751 |
aux = "NUMBER"; |
|
1752 |
|
|
1760 |
aux = "NUMBER(" + _w + ", " + _dec + ")"; |
|
1753 | 1761 |
break; |
1754 | 1762 |
|
1755 | 1763 |
case Types.DOUBLE: |
1756 |
aux = "FLOAT"; |
|
1757 |
|
|
1764 |
aux = "NUMBER(" + _w + ", " + _dec + ")"; |
|
1758 | 1765 |
break; |
1759 | 1766 |
|
1760 | 1767 |
case Types.FLOAT: |
1761 |
aux = "FLOAT"; |
|
1762 |
|
|
1768 |
aux = "NUMBER(" + _w + ", " + _dec + ")"; |
|
1763 | 1769 |
break; |
1764 | 1770 |
|
1765 | 1771 |
case Types.CHAR: |
1766 | 1772 |
aux = "CHAR(1 BYTE)"; |
1767 |
|
|
1768 | 1773 |
break; |
1769 | 1774 |
|
1770 | 1775 |
case Types.VARCHAR: |
1771 |
aux = "NVARCHAR2(" + nvarchar2Limited(fieldDesc.getFieldLength()) + ")"; |
|
1772 |
|
|
1776 |
aux = "VARCHAR2(" + _w + ")"; |
|
1773 | 1777 |
break; |
1774 | 1778 |
|
1775 | 1779 |
case Types.LONGVARCHAR: |
1776 |
aux = "NVARCHAR2(" + nvarchar2Limited(fieldDesc.getFieldLength()) + ")"; |
|
1777 |
|
|
1780 |
aux = "VARCHAR2(" + _w + ")"; |
|
1778 | 1781 |
break; |
1782 |
|
|
1783 |
case Types.DATE: |
|
1784 |
aux = "DATE"; |
|
1785 |
break; |
|
1786 |
|
|
1779 | 1787 |
} |
1780 | 1788 |
|
1781 | 1789 |
return aux; |
... | ... | |
2860 | 2868 |
|
2861 | 2869 |
try { |
2862 | 2870 |
STRUCT the_struct = OracleSpatialUtils.fShapeToSTRUCT(shp, _conn, |
2863 |
_srid, agu_bien, hasSrid); |
|
2871 |
_srid, agu_bien, hasSrid, _isGeoCS);
|
|
2864 | 2872 |
|
2865 | 2873 |
return the_struct; |
2866 | 2874 |
} |
... | ... | |
3738 | 3746 |
public void write(DataWare arg0) throws WriteDriverException, ReadDriverException { |
3739 | 3747 |
} |
3740 | 3748 |
|
3741 |
public static int nvarchar2Limited(int n) { |
|
3742 |
|
|
3743 |
if (n <= VARCHAR2_DEFAULT_SIZE) return VARCHAR2_DEFAULT_SIZE; |
|
3744 |
if (n <= VARCHAR2_MAX_SIZE) return n; |
|
3745 |
|
|
3746 |
return VARCHAR2_MAX_SIZE; |
|
3747 |
} |
|
3748 |
|
|
3749 |
|
|
3750 |
|
|
3751 |
|
|
3752 |
|
|
3753 | 3749 |
public static String removePrefix(String str) { |
3754 | 3750 |
|
3755 | 3751 |
int colon_ind = str.indexOf(":"); |
Also available in: Unified diff