Personal tools
gvSIG Desktop
gvSIG Desktop

Cached time 11/22/13 07:54:44 Clear cache and reload

 
Version: 1.1

Introduction

gvSIG is designed as a base application (core) plus numerous plug-ins that can be installed on it. This document refers to the core and the main plug-ins. For the rest of the plug-ins it will be provided a provenance review report only in case its workgroup thinks it is necessary.

Outstanding Issues

The source code was reviewed in order to find:

  1. Errors in the headers of the source code files.

    They were checked and corrected (if needed) all the files.

  2. Fragments of source code coming from external projects.

    They were detected fragments of source code from external projects in several areas. When possible, the original libraries were used adding the corresponding dependency. In the rest of the cases the fragments were moved to a new project called gvSIG external so they are perfectly identified. This meta-project contains the following subprojects:

    • gvSIG external JEdit
    • gvSIG external JUMP
    • gvSIG External Raven
    • org.gvsig.jdk

    In a later review dependencies with some of this projects were eliminated so currently only two of them are being used:

    • gvSIG external JUMP
    • org.gvsig.jdk

    Apart from this, there is still external source code in the following modules inside the project:

    • SplitStrategy.java
    • ShapeFileHeader2.java
    • DbaseFile.java
    • DbaseFileHeader.java
    • GeneralPathXIterator.java
    • GeneralPathXIteratorSimple.java
    • DefaultGeneralPathX.java
    • DefaultSymbolManager.java
    • WKBParsere2.java
    • WKBParsere3.java
    • URLRetrieveTask
  3. Use of libraries with dubious licence.

    It was identified the licence of all the libraries used in the application. In order to avoid some incompatibilities it was updated the project license from GNU General Public License (GPL) version 2 to version 3.

Libraries

All the libraries used in gvSIG have an open source license compatible with GNU General Public License (GPL) version 3.

When possible, versions of libraries available in the Maven Central Repository are used. As a second option it is used the OSGeo Maven repository and as third option it is used the gvSIG Maven repository. There are some libraries that, because historical reasons or because they doesn't have published binaries, its version is not clear. These are the following:

  • geojava:geojava
  • net.sf:flib-jcalendar
  • zql:zql

Non-free Libraries

The project doesn't use non-free libraries.

Code Reviewed

As mentioned before, the gvSIG application is composed by a core and numerous plug-ins that can be installed on it. The development has been done in Java using Maven as construction tool.

The core is composed by the following projects:

  • org.gvsig.desktop with around 30000 source files (checked)
  • org.gvsig.tools with around 500 source files (checked)
  • org.gvsig.projection.api y org.gvsig.proj with around 60 source files (checked)
  • org.gvsig.timesupport with around XXX source files (TO DO)
  • org.gvsig.app.document.layout.app with around XXX source files (TO DO)
  • org.gvsig.jdk with around XXX source files (TO DO)
  • org.gvsig.external.jump with around XXX source files (TO DO)

These projects provide gvSIG a basic functionality for managing views, tables and layouts with vector layers and reprojection support.

All the projects that form the core are built using Maven, generating the sites with the information of dependencies and licenses which links are included in the following points:

org.gvsig.desktop

Licence:GPL3
Owner:gvSIG Association
Home:https://devel.gvsig.org/redmine/projects/gvsig-desktop
SVN:https://devel.gvsig.org/svn/gvsig-desktop/trunk/org.gvsig.desktop
source files:30000
Site:https://devel.gvsig.org/sites/org.gvsig.desktop/2.0.16/
mvn repository:https://devel.gvsig.org/m2repo/j2se/
external dependencies:
 
  • ant-contrib:ant-contrib:jar:1.0b3
  • antlr:antlr:jar:2.7.7
  • batik:batik-transcoder:jar:1.5
  • bouncycastle:bcmail-jdk14:jar:138
  • bouncycastle:bcprov-jdk14:jar:138
  • castor:castor:jar:0.9.5.3
  • cglib:cglib-nodep:jar:2.1
  • com.h2database:h2:jar:1.3.150
  • com.jgoodies:forms:jar:1.0.7
  • com.jgoodies:looks:jar:2.1.4
  • com.jhlabs:filters:jar:2.0.235
  • com.lowagie:itext:jar:2.1.4
  • commons-cli:commons-cli:jar:1.2
  • commons-codec:commons-codec:jar:1.6
  • commons-dbcp:commons-dbcp:jar:1.2.2
  • commons-io:commons-io:jar:2.4
  • commons-pool:commons-pool:jar:1.6
  • com.sardak:antform:jar:2.0
  • com.sun:jimi:jar:1.1
  • com.toedter:jcalendar:jar:1.1.4
  • com.vividsolutions:jts:jar:1.13
  • easymock:easymockclassextension:jar:1.2
  • easymock:easymock:jar:1.2_Java1.3
  • edu.oswego:concurrent:jar:1.3.4
  • geojava:geojava:jar:unknown
  • hsqldb:hsqldb:jar:1.8.0.10
  • java3d:vecmath:jar:1.3.1
  • javax.help:javahelp:jar:2.0.05
  • javax.media:jai_codec:jar:1.1.3
  • javax.media:jai_core:jar:1.1.3
  • javax.units:jsr108:jar:0.01
  • jdom:jdom:jar:1.0
  • joda-time:joda-time:jar:1.6
  • jwizardcomponent:jwizardcomponent-0i18n:jar:1.2.2.1
  • jwizardcomponent:jwizardcomponent:jar:1.2.2
  • log4j:log4j:jar:1.2.14
  • net.java.dev.jna:jna:jar:3.2.3
  • net.sf:flib-jcalendar:jar:unknown
  • net.sf.kxml:kxml2:jar:2.2.2
  • net.sf:sqljep:jar:0.2.1
  • org.antlr:antlr-runtime:jar:3.1.3
  • org.antlr:stringtemplate:jar:3.2
  • org.apache.ant:ant:jar:1.8.1
  • org.apache.ant:ant-launcher:jar:1.8.1
  • org.apache.xmlgraphics:batik-anim:jar:1.7
  • org.apache.xmlgraphics:batik-awt-util:jar:1.7
  • org.apache.xmlgraphics:batik-bridge:jar:1.7
  • org.apache.xmlgraphics:batik-css:jar:1.7
  • org.apache.xmlgraphics:batik-dom:jar:1.7
  • org.apache.xmlgraphics:batik-ext:jar:1.7
  • org.apache.xmlgraphics:batik-gui-util:jar:1.7
  • org.apache.xmlgraphics:batik-gvt:jar:1.7
  • org.apache.xmlgraphics:batik-js:jar:1.7
  • org.apache.xmlgraphics:batik-parser:jar:1.7
  • org.apache.xmlgraphics:batik-script:jar:1.7
  • org.apache.xmlgraphics:batik-svg-dom:jar:1.7
  • org.apache.xmlgraphics:batik-util:jar:1.7
  • org.apache.xmlgraphics:batik-xml:jar:1.7
  • org.geotools:gt2-api:jar:2.2.2
  • org.geotools:gt2-coverage:jar:2.2-RC2
  • org.geotools:gt2-legacy:jar:2.2-RC2
  • org.geotools:gt2-main:jar:2.2.2
  • org.geotools:gt2-referencing:jar:2.2-RC2
  • org.geotools:gt2-render:jar:2.2-RC2
  • org.jfree:jcommon:jar:1.0.17
  • org.jfree:jfreechart:jar:1.0.14
  • org.jpedal:jpedal_lgpl:jar:4.37b36
  • org.opengis:geoapi:jar:2.0
  • org.opengis:geoapi-legacy:jar:0.2
  • org.slf4j:slf4j-api:jar:1.5.5
  • org.slf4j:slf4j-log4j12:jar:1.5.5
  • org.swinglabs:swing-worker:jar:1.1
  • org.swinglabs:swingx:jar:1.6
  • org.tmatesoft.sqljet:sqljet:jar:1.0.2
  • org.tmatesoft.svnkit:trilead-ssh2:jar:build213-svnkit-1.3-patch
  • oro:oro:jar:2.0.8
  • xalan:xalan:jar:2.6.0
  • xerces:xercesImpl:jar:2.5.0
  • xml-apis:xml-apis-ext:jar:1.3.04
  • xml-apis:xml-apis:jar:1.3.04
  • xmlpull:xmlpull:jar:1.1.3.1
  • zql:zql:jar:unknown
dependencies with other gvSIG projects:
 
  • org.gvsig.external:org.gvsig.external.jump
  • org.gvsig:org.gvsig.about.api
  • org.gvsig:org.gvsig.about.impl
  • org.gvsig:org.gvsig.jdk.v1_4
  • org.gvsig:org.gvsig.jdk.v1_6
  • org.gvsig:org.gvsig.timesupport.lib.api
  • org.gvsig:org.gvsig.timesupport.lib.impl
  • org.gvsig:org.gvsig.timesupport.swing.api
  • org.gvsig:org.gvsig.timesupport.swing.impl
  • org.gvsig:org.gvsig.tools.lib
  • org.gvsig:org.gvsig.tools.swing.api
  • org.gvsig:org.gvsig.tools.swing.impl
  • org.gvsig:org.gvsig.tools.swing.serv.field
  • org.gvsig:org.gvsig.tools.swing.serv.jform
  • org.gvsig:org.gvsig.tools.swing.serv.jlist
  • org.gvsig:org.gvsig.tools.swing.spi

It consists in a Maven multi-module project including the gvSIG basic functionality. This Maven project is composed by sub-projects that include libraries and plug-ins.

It is possible to compile this project without recompiling any of the others that forms the basic application, provided that we have access to the gvSIG Maven repository, just downloading the root project and executing "mvn install".

The source code of this project represents approximately the 90% of the code reviewed.

It includes the following sub-project:

└── org.gvsig.desktop
    ├── org.gvsig.desktop.compat.cdc
    │   ├── org.gvsig.compat
    │   │   ├── org.gvsig.compat.api
    │   │   └── org.gvsig.compat.se
    │   ├── org.gvsig.fmap.dal
    │   │   ├── org.gvsig.fmap.dal.api
    │   │   ├── org.gvsig.fmap.dal.db
    │   │   │   ├── org.gvsig.fmap.dal.db.h2
    │   │   │   ├── org.gvsig.fmap.dal.db.jdbc
    │   │   │   └── org.gvsig.fmap.dal.db.lib
    │   │   ├── org.gvsig.fmap.dal.file
    │   │   │   ├── org.gvsig.fmap.dal.file.dbf
    │   │   │   ├── org.gvsig.fmap.dal.file.lib
    │   │   │   └── org.gvsig.fmap.dal.file.shp
    │   │   ├── org.gvsig.fmap.dal.impl
    │   │   └── org.gvsig.fmap.dal.spi
    │   ├── org.gvsig.fmap.geometry
    │   │   ├── org.gvsig.fmap.geometry.api
    │   │   ├── org.gvsig.fmap.geometry.impl
    │   │   └── org.gvsig.fmap.geometry.operation
    │   ├── org.gvsig.fmap.mapcontext
    │   │   ├── org.gvsig.fmap.mapcontext.api
    │   │   ├── org.gvsig.fmap.mapcontext.impl
    │   │   └── org.gvsig.fmap.mapcontext.operation
    │   ├── org.gvsig.i18n
    │   ├── org.gvsig.projection
    │   │   └── org.gvsig.projection.cresques
    │   │       ├── org.gvsig.projection.cresques.impl
    │   │       └── org.gvsig.projection.cresques.ui
    │   ├── org.gvsig.metadata.basic
    │   │   ├── org.gvsig.metadata.basic.lib
    │   │   └── org.gvsig.metadata.basic.swing
    │   └── org.gvsig.remoteclient
    │
    ├── org.gvsig.desktop.framework
    │   ├── org.gvsig.andami
    │   └── org.gvsig.andami.updater
    │
    ├── org.gvsig.desktop.installer
    │
    ├── org.gvsig.desktop.library
    │   ├── org.gvsig.annotation
    │   │   ├── org.gvsig.annotation.lib
    │   │   │   ├── org.gvsig.annotation.lib.api
    │   │   │   └── org.gvsig.annotation.lib.impl
    │   │   ├── org.gvsig.annotation.main
    │   │   └── org.gvsig.annotation.swing
    │   │       ├── org.gvsig.annotation.swing.api
    │   │       └── org.gvsig.annotation.swing.impl
    │   ├── org.gvsig.exportto
    │   │   ├── org.gvsig.exportto.lib
    │   │   │   ├── org.gvsig.exportto.lib.api
    │   │   │   └── org.gvsig.exportto.lib.impl
    │   │   ├── org.gvsig.exportto.main
    │   │   └── org.gvsig.exportto.swing
    │   │       ├── org.gvsig.exportto.swing.api
    │   │       ├── org.gvsig.exportto.swing.impl
    │   │       ├── org.gvsig.exportto.swing.prov
    │   │       │   ├── org.gvsig.exportto.swing.prov.dbf
    │   │       │   ├── org.gvsig.exportto.swing.prov.dxf
    │   │       │   ├── org.gvsig.exportto.swing.prov.file
    │   │       │   ├── org.gvsig.exportto.swing.prov.generic
    │   │       │   ├── org.gvsig.exportto.swing.prov.jdbc
    │   │       │   ├── org.gvsig.exportto.swing.prov.mysql
    │   │       │   ├── org.gvsig.exportto.swing.prov.postgresql
    │   │       │   └── org.gvsig.exportto.swing.prov.shape
    │   │       └── org.gvsig.exportto.swing.spi
    │   ├── org.gvsig.fmap.control
    │   ├── org.gvsig.installer
    │   │   ├── org.gvsig.installer.lib
    │   │   │   ├── org.gvsig.installer.lib.api
    │   │   │   ├── org.gvsig.installer.lib.impl
    │   │   │   └── org.gvsig.installer.lib.spi
    │   │   ├── org.gvsig.installer.main
    │   │   ├── org.gvsig.installer.maven
    │   │   ├── org.gvsig.installer.prov
    │   │   │   └── org.gvsig.installer.prov.plugin
    │   │   └── org.gvsig.installer.swing
    │   │       ├── org.gvsig.installer.swing.api
    │   │       └── org.gvsig.installer.swing.impl
    │   ├── org.gvsig.newlayer
    │   │   ├── org.gvsig.newlayer.lib
    │   │   │   ├── org.gvsig.newlayer.lib.api
    │   │   │   └── org.gvsig.newlayer.lib.impl
    │   │   └── org.gvsig.newlayer.prov
    │   │       ├── org.gvsig.newlayer.prov.file
    │   │       ├── org.gvsig.newlayer.prov.generic
    │   │       └── org.gvsig.newlayer.prov.shape
    │   ├── org.gvsig.personaldb
    │   │   ├── org.gvsig.personaldb.lib
    │   │   │   ├── org.gvsig.personaldb.lib.api
    │   │   │   └── org.gvsig.personaldb.lib.impl
    │   │   └── org.gvsig.personaldb.main
    │   ├── org.gvsig.symbology
    │   │   ├── org.gvsig.symbology.lib
    │   │   │   ├── org.gvsig.symbology.lib.api
    │   │   │   └── org.gvsig.symbology.lib.impl
    │   │   ├── org.gvsig.symbology.main
    │   │   └── org.gvsig.symbology.swing
    │   │       ├── org.gvsig.symbology.swing.api
    │   │       └── org.gvsig.symbology.swing.impl
    │   ├── org.gvsig.ui
    │   └── org.gvsig.utils
    │
    └── org.gvsig.desktop.plugin
        ├── org.gvsig.annotation.app
        │   └── org.gvsig.annotation.app.mainplugin
        ├── org.gvsig.app
        │   └── org.gvsig.app.mainplugin
        ├── org.gvsig.app.document.table.app
        │   └── org.gvsig.app.document.table.app.mainplugin
        ├── org.gvsig.centerviewpoint.app
        │   └── org.gvsig.centerviewpoint.app.mainplugin
        ├── org.gvsig.coreplugin.app
        │   └── org.gvsig.coreplugin.app.mainplugin
        ├── org.gvsig.daltransform.app
        │   ├── org.gvsig.daltransform.app.eventtheme
        │   ├── org.gvsig.daltransform.app.join
        │   └── org.gvsig.daltransform.app.mainplugin
        ├── org.gvsig.datalocator.app
        │   └── org.gvsig.datalocator.app.mainplugin
        ├── org.gvsig.editing.app
        │   └── org.gvsig.editing.app.mainplugin
        ├── org.gvsig.exportto.app
        │   └── org.gvsig.exportto.app.mainplugin
        ├── org.gvsig.geodb.app
        │   └── org.gvsig.geodb.app.mainplugin
        ├── org.gvsig.geometry.app
        │   └── org.gvsig.geometry.app.generalpath
        ├── org.gvsig.geometrymeasurement.app
        │   └── org.gvsig.geometrymeasurement.app.mainplugin
        ├── org.gvsig.help.app
        │   └── org.gvsig.help.app.mainplugin
        ├── org.gvsig.i18n.app
        │   └── org.gvsig.i18n.app.mainplugin
        ├── org.gvsig.installer.app
        │   └── org.gvsig.installer.app.mainplugin
        ├── org.gvsig.mkmvnproject.app
        │   └── org.gvsig.mkmvnproject.app.mainplugin
        ├── org.gvsig.newlayer.app
        │   └── org.gvsig.newlayer.app.mainplugin
        ├── org.gvsig.projection.app
        │   ├── org.gvsig.projection.app.cresques
        │   └── org.gvsig.projection.app.proj4j
        ├── org.gvsig.selectiontools.app
        │   └── org.gvsig.selectiontools.app.mainplugin
        └── org.gvsig.symbology.app
            ├── org.gvsig.symbology.app.importsymbols
            └── org.gvsig.symbology.app.symbolinstaller

org.gvsig.tools

Licence:GPL3
Owner:gvSIG Association
Home:https://devel.gvsig.org/redmine/projects/gvsig-tools
SVN:https://devel.gvsig.org/svn/gvsig-tools
source files:500
Site:https://devel.gvsig.org/sites/org.gvsig.tools/3.0.7/
mvn repository:https://devel.gvsig.org/m2repo/j2se/
External dependencies:
 
  • org.slf4j:slf4j-api:jar:1.5.5:compile
  • org.slf4j:slf4j-log4j12:jar:1.5.5:compile
  • net.sf.kxml:kxml2:jar:2.2.2:compile
  • xmlpull:xmlpull:jar:1.1.3.1:compile
dependencies with other gvSIG projects:
 (any)

It provides the structural elements used by all the gvSIG modules.

org.gvsig.proj

Licence:GPL3
Owner:gvSIG Association
Home:https://devel.gvsig.org/redmine/projects/gvsig-jcrs
SVN:https://devel.gvsig.org/svn/gvsig-jcrs/org.gvsig.proj/trunk/ https://devel.gvsig.org/svn/gvsig-jcrs/org.gvsig.projection/trunk/
source files:60
Site:https://devel.gvsig.org/sites/org.gvsig.projection.api/2.0.13/ https://devel.gvsig.org/sites/org.gvsig.proj/1.0.1/
mvn repository:https://devel.gvsig.org/m2repo/j2se/
External dependencies:
 
  • org.slf4j:slf4j-api:jar:1.5.5:compile
  • org.slf4j:slf4j-log4j12:jar:1.5.5:compile
  • TO DO
dependencies with other gvSIG projects:
 
  • org.gvsig:org.gvsig.tools.lib:jar:3.0.0:compile

Provides the API and an implementation for managing projections. It includes the following projects:

  • org.gvsig.projection.api
  • org.gvsig.proj, API implementation based on proj4j.

org.gvsig.timesupport

Licence:GPL2
Owner:gvSIG Association
Home:https://devel.gvsig.org/redmine/projects/gvsig-sensors
SVN:https://devel.gvsig.org/svn//gvsig-sensors/org.gvsig.timesupport/
source files:(TO DO)
Site:https://devel.gvsig.org/sites/org.gvsig.timesupport/1.0.0/org.gvsig.timesupport/
mvn repository:https://devel.gvsig.org/m2repo/j2se/
External dependencies:
 
  • org.slf4j:slf4j-api:jar:1.5.5:compile
  • org.slf4j:slf4j-log4j12:jar:1.5.5:compile
  • joda-time:joda-time:1.6:jar:compile
  • com.toedter:jcalendar:1.3.2:jar:compile
  • org.swinglabs:swingx:1.6:jar:compile
  • (TO DO)
dependencies with other gvSIG projects:
 
  • org.gvsig:org.gvsig.tools.lib:jar:3.0.0:compile
  • org.gvsig:org.gvsig.ui:jar:2.0.10:compile
  • org.gvsig:org.gvsig.i18n:jar:2.0.10:compile

org.gvsig.jdk

Licence:GPL2
Owner:gvSIG Association
Home:https://devel.gvsig.org/redmine/projects/gvsig-external-jdk
SVN:https://devel.gvsig.org/svn/gvsig-external-jdk/org.gvsig.jdk/trunk/org.gvsig.jdk/
source files:(TO DO)
Site:https://devel.gvsig.org/sites/org.gvsig.jdk/1.0.0/org.gvsig.jdk/
mvn repository:https://devel.gvsig.org/m2repo/j2se/
External dependencies:
 
  • (TO DO)
dependencies with other gvSIG projects:
 
  • (TO DO)

This project provides functionalities that depends on the implementation of the JDK used for compiling gvSIG. It contains external source code.

org.gvsig.external.jump

Licence:GPL2
Owner:Asociacion gvSIG
Home:https://devel.gvsig.org/redmine/projects/gvsig-external-jump
SVN:https://devel.gvsig.org/svn/gvsig-external-jump/trunk/org.gvsig.external.jump/
Site:(TO DO)
source files:(TO DO)
mvn repository:https://devel.gvsig.org/m2repo/j2se/
External dependencies:
 
  • org.slf4j:slf4j-log4j12:jar:1.5.5:compile
  • com.vividsolutions:jts:jar:1.9:compile
  • log4j:log4j:jar:1.2.14:runtime
  • junit:junit:jar:3.8.1:test
  • (TO DO)
dependencies with other gvSIG projects:
 
  • org.gvsig:org.gvsig.i18n:jar:2.0.10:compile
  • (TO DO)

Not reviewed projects

Apart from the projects included in this review there are other libraries and plug-ins that provides extra functionality as:

  • org.gvsig.hyperlink.app
  • org.gvsig.raster
  • org.gvsig.expressionfield
  • org.gvsig.mysql
  • org.gvsig.projection.cresques
  • org.gvsig.jcrs
  • org.gvsig.dwg
  • org.gvsig.dxf
  • org.gvsig.dgn
  • org.gvsig.wfs.app
  • extGazetteer y appGazetteer
  • extCatalog y appCatalog
  • org.gvsig.geoprocess

All these projects (which can be installed in gvSIG as plug-ins) are independent from gvSIG. The status, origin and license of its source code is a responsibility of each development team.

Change log
versión Descripción
1.1 Added to item 2 of Outstanding Issues section some source files with external code to gvSIG.

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: