gvSIG bugs #2190

Error Postgresql guardando una feature de tipo int2

Added by Francisco Díaz Carsí over 10 years ago. Updated over 10 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:Juan Lucas Domínguez
Category:-
Target version:2.1.0-2217-devel
Severity: Add-on version:
gvSIG version:2.1.0 Add-on build:
gvSIG build: Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch:No Hito:
Add-on name:Unknown

Description

Se soluciona de la siguiente manera:

En la clase JDBHelper, en el método EditableFeatureAttributeDescriptor se saca el código del default del switch a un nuevo método, de la siguiente manera:

    protected EditableFeatureAttributeDescriptor createAttributeFromJDBC(
            EditableFeatureType fType, Connection conn,
            ResultSetMetaData rsMetadata, int colIndex)
        throws java.sql.SQLException {

        EditableFeatureAttributeDescriptor column;
        switch (rsMetadata.getColumnType(colIndex)) {

        .....

        default:
            column = createAttributeFromJDBCNativeType(fType, rsMetadata, colIndex);

            break;
        }

        return column;

    }

    protected EditableFeatureAttributeDescriptor createAttributeFromJDBCNativeType(
        EditableFeatureType fType, ResultSetMetaData rsMetadata, int colIndex)
        throws SQLException {
        EditableFeatureAttributeDescriptor column;
        column = fType.add(rsMetadata.getColumnName(colIndex),
                DataTypes.OBJECT);
        column.setAdditionalInfo("SQLType", new Integer(rsMetadata
                .getColumnType(colIndex)));
        column.setAdditionalInfo("SQLTypeName", rsMetadata
                .getColumnTypeName(colIndex));
        return column;
    }

Y en la clase PostgreSQLHelper

Se sobrescriben los dos métodos siguientes:

    @Override
    protected EditableFeatureAttributeDescriptor createAttributeFromJDBCNativeType(
        EditableFeatureType fType, ResultSetMetaData rsMetadata, int colIndex)
        throws SQLException {

        EditableFeatureAttributeDescriptor column;

        String nativeType = rsMetadata.getColumnTypeName(colIndex);

        if (nativeType.startsWith("int")) {
            column = fType.add(rsMetadata.getColumnName(colIndex),
                DataTypes.INT);
            column.setAdditionalInfo("SQLType", new Integer(rsMetadata
                .getColumnType(colIndex)));
            column.setAdditionalInfo("SQLTypeName", rsMetadata
                .getColumnTypeName(colIndex));
            return column;
        }
        return super.createAttributeFromJDBCNativeType(fType, rsMetadata, colIndex);
    }

    @Override
    public Object dalValueToJDBC(
        FeatureAttributeDescriptor attributeDescriptor, Object object)
        throws WriteException {
           if ("int2".equals(attributeDescriptor.getAdditionalInfo("SQLTypeName"))) {
                return new Short(String.valueOf(object));
            }

        return super.dalValueToJDBC(attributeDescriptor, object);
    }

Related issues

Duplicates Application: gvSIG desktop - gvSIG bugs #1802: Falta tipo de dato smallint de base de datos en el regist... Closed 04/19/2013

History

#1 Updated by Juan Lucas Domínguez over 10 years ago

  • Status changed from New to Fixed
  • Assignee set to Juan Lucas Domínguez

Fixed management of not-so-common data types in databases (patch provided by fdiaz)

gvsig-desktop:r41042
gvsig-postgresql:r44

#2 Updated by Joaquín del Cerro Murciano over 10 years ago

  • Target version set to 2.1.0-2217-devel

#3 Updated by Álvaro Anguix over 10 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF