gvSIG bugs #2794

Cambio en los tipos de geometría que introduce una incompatibilidad con versiones previas

Added by Cesar Martinez Izquierdo over 9 years ago. Updated over 9 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:-
Target version:2.1.0-2246-testing
Severity:Major Add-on version:
gvSIG version:2.1.0 Add-on build:
gvSIG build:2245 Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch: Hito:
Add-on name:Unknown

Description

Recientemente se ha introducido un cambio en los tipos de geometría (org.gvsig.fmap.geom.Geometry.TYPES), a los que se ha añadido 2 nuevos tipos:
public final static int LINE = 11;
public final static int POLYGON = 12;

Este cambio introduce una incompatibilidad con versiones previas de la librería, ya que los códigos 11 y 12 estaban anteriormente reservados para CIRCLE y ARC, respectivamente.

Cualquier plugin que utilize Geometry.TYPES (con códigos superiores al 10) funcionará incorrectamente hasta que se actualice la dependencia en el pom.xml del plugin a la última versión de org.gvsig.desktop y se recompile dicho plugin.

Un ejemplo de dicho funcionamiento incorrecto es la herramienta de creación de círculos en el documento Mapa (Layout), que no funciona en los últimos builds. Es posible que haya errores en otros plugins por el mismo motivo.

Un solución sería restablecer los códigos originales, y añadir LINE y POLYGON usando códigos no utilizados anteriormente (por ejemplo 18 y 19).
Otra solución es actualizar la dependencia de todos los plugins a la última versión de org.gvsig.desktop y recompilarlos, pero es difícil a priori detectar qué plugins están afectados.


Related issues

Related to Application: gvSIG desktop - gvSIG bugs #2776: "Select by circle" draws a square and returns weird selec... Invalid 08/06/2014
Related to Application: gvSIG desktop - gvSIG bugs #2812: No carga WFS Closed 09/15/2014

Associated revisions

Revision 41690
Added by Joaquín del Cerro Murciano over 9 years ago

Cambiados los valores para las constantes de LINE y POLYGON en la clase Geometry para mantener compatibiliad binaria con los tipos que habian antes ( refs #2794)

History

#1 Updated by Álvaro Anguix over 9 years ago

Si es correcta y no tiene implicaciones la de añadir nuevos códigos, es preferible. Deberíamos intentar evitar incompatibilidades salvo en casos necesarios. Más aún si la otra opción va a hacer que herramientas no controladas dejen de funcionar.

#2 Updated by Álvaro Anguix over 9 years ago

  • Target version set to 2.1.0-2259-rc3

#3 Updated by Antonio Falciano over 9 years ago

Another example of incompatibility introduced by the recent geometry types changes could be #2776.

#4 Updated by Cesar Martinez Izquierdo over 9 years ago

A ver qué opina Joaquín, ya que él hizo estos cambios.

Lo de usar códigos más altos será similar a lo que hay ahora (ya que igualmente se añadieron 2 códigos) pero sin alterar los códigos anteriores.

En cualquier caso creo que hay que repensar el cambio un poco más a fondo, ya que me da la impresión de que los nuevos tipos LINE y POLYGON son equivalentes a los ya existentes CURVE y SURFACE, y por tanto redundantes:

/**
 * A straight or curved geometric element that is generated by a moving
 * point and that has extension only along the path of the point.
*/
public final static int CURVE = 2;
/**
 * A closed plane figure bounded by straight lines.
*/
public final static int SURFACE = 3;

#5 Updated by Álvaro Anguix over 9 years ago

  • Related to gvSIG bugs #2776: "Select by circle" draws a square and returns weird selections added

#6 Updated by Joaquín del Cerro Murciano over 9 years ago

  • Severity changed from Minor to Major
  • Assignee set to Joaquín del Cerro Murciano
  • Status changed from New to Fixed

No me di cuenta de las repercusiones del cambio.
De momento voy a poner los codigos 18 y 19 (como sugieres) a los nuevos tipos para minimizar los problemas.

Respecto a si son redundantes o no los nuevos tipos...
Ahora mismo tal como esta si, lo son.
En algun momento cuando se abordo el API de geometrias se nos fue la olla a alguno
y se asumio que un Polygon es un Surface y que una Line es una Curve, y no es asi.
De hecho, en la implementacion eso habia causado errores importantes, y algunos
de ellos aun persisten.

Curve deberia ser un tipo de geometria no instanciable del que deriban Line o Arc,
y con Surface pasaria algo similar.

#7 Updated by Joaquín del Cerro Murciano over 9 years ago

  • Target version changed from 2.1.0-2259-rc3 to 2.1.0-2246-testing

#8 Updated by Álvaro Anguix over 9 years ago

  • Status changed from Fixed to Closed

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

Also available in: Atom PDF