module merge - STEMLab/geotools GitHub Wiki

So we have the go ahead to slice and dice the module structure that has been used by Geotools for the 2.0 stream.

Research

To provide a guideline for this merge process we are sorting modules into three camps:

  • main: core geotools2 library
  • plugins: modules that intergrate at runtime with the whole via a Plugin or Facotry interface
  • extentions: independent libraries built on top of the main

To acomplish this we:

  • Released Modules: split the existing modules up based on release
  • Unrelased Modules: asked for public feedback on unreleased modules
  • submitied conservative, crazy and wild plans to the list/wiki for review

Merge Goals

Goals for this merge process:

  • stop the insanity
  • provide a structure that we can maintain Going Forward
  • provide a migration path for plugins/extensions
  • ensure that existing CVS branches like grid-exp, fid-exp can be merged back into the result

Main

We intendend to group these core modules together into one source tree similar in style to the one already deployed.

Plugins

Short Term: placed in a plugin directory next to module

Long Term: move into separte projects besides geotools

Extensions

Short Term: placed in a ext directory next to module

Long Term: move into separte projects besides geotools

The directory "ext" is recomended so the directory can capture both demos,validation,graph. Name is similar to the ext directory in a jre. Plus it handles extension and extra.

The gap between short and long term plans is limited by our ability to hack our maven build process. While it is temping to move to the long terms solution until the build process is in place it would just ensure the orphaning process.

The Great Module Round Up

  • Everything will stay the same in terms of the build enviornment based on maven.xml
  • Half the modules are merged together into a single main module.
  • The demos module is merged in just like a normal module.
  • the geotools-src is renamed to module
  • The spikes projects are removed
  • geotools2 is renamed to geotools (could shorten to gt)

Repository:

Where above geotools directory contains:

design/**                 replace with wiki and recent aaime uml diagrams?

doc/**                    Is this the website generation?      

module/main**             merged modules from the required list
module/mapinfo/**         orphan                               
module/resources/**       orphan                               
module/svgsupport**       orphan                               
module/imagedatasource**  orphan                               
module/vpf**              orphan                               
module/utils**            orphan                               
module/sample-data**      orphan                               
module/legend**           orphan                               

plugin/pickle**           plugin disk serialization            
plugin/arcsde**           plugin arcsde access                 
plugin/geomedia**         plugin arcsde access                 
plugin/gtopo30**          plugin for GTOPO30 file support      
plugin/mysql**            plugin mysql access                  
plugin/oracle-spatial**   plugin oracle access                 
plugin/postgis**          plugin postgis access                
plugin/shapefile**        plugin for shapefile support         
plugin/tiger**            plugin tiger access                  

ext/graph**               tree and graph creation/walker/visito
ext/validation**          validation framework used by geoserve
ext/demo**                geotools-demos has moved here        

buildlist.txt                                   
geotools_checks.xml                            
build.properties                                
GT2Eclipse.java                                 
maven.xml                                       
navigation.vm                                   
optionalList.txt                                
project.xml               root maven project file 
README.txt                                      
requiredList.txt                                
run-maven.xml                                   

Module structure:

src/**                    source code for module
test/**                   junit tests for module
target/**                 (generated) not part of svn but **is** the structure seen during build
project.xml               maven build file
build.xml                 would be nice as part of long term plan plan

Merge Branch

Log of actions to acomplish the above on the merge branch.

prep

svn mv geotools2 gt
svn mv gt/docs gt/doc
svn mv gt/spike spike
svn mv gt/geotools-demos gt/ext
svn mv gt/geotools-src gt/module
svn mkdir gt/plugin

plugin

svn mv gt/module/arcgrid gt/plugin/arcgrid
svn mv gt/module/arcsde gt/plugin/arcsde
svn mv gt/module/geomediea gt/plugin/geomediea
svn mv gt/module/gtopo30 gt/plugin/gtopo30
svn mv gt/module/mysql gt/plugin/mysql
svn mv gt/module/oracle-spatial gt/plugin/oracle-spatial
svn mv gt/module/postgis gt/plugin/postgis
svn mv gt/module/shapefile gt/plugin/shapefile
svn mv gt/module/tiger gt/plugin/tiger

Pickle was not transfered to the plugin folder (intended for caching).

ext

svn mv gt/module/graph gt/ext/graph
svn mv gt/module/validation gt/ext/validation
svn mv gt/module/j2se-demos gt/ext/demo

Merge Main

svn mv gt/module/core gt/module/main
svn mv gt/module/main/tests/unit gt/module/main/test
svn rm gt/module/main/tests  

svn mv gt/module/defaultcore/tests/unit gt/module/main/test

:warning: I am stuck at this last mv command (it won't let me play) - do I have to move files over one at a time?

:warning: I am not sure how to merge sdocbook folders as their are name conflicts.