Sunday, May 3, 2015

Geospatial Data Quality System - "Project" object definition

Geospatial Data Quality System

Hello all - it was a good week for the GDQS project, not without some difficulties, but it ended with a breakthrough.  The bad part - something broke with my out-of-the-box GeoServer codebase in the repository.  Out of nowhere, there was a compilation error and there was a dependency missing, so I pulled that code from git and ran the install.  Since the goal is to only extend GeoServer and not customize it, that code is only there for reference.  It's all back to normal now and progress is moving forward.

"Project" Object definition

This was the highlight of the week, I looked at the system layout I had sketched last week to decide what would need to be done next.  I had already decided that GeoServer was going to be the nucleus of the enterprise and work would start there:





What's going to tie all of it together?  There needs to be a context for the work, and at the top level there should be a "Project".  The GeoServer Workspace looked like an attractive option, but maybe a little too simple.  The definition of a Workspace in the Data Directory looks like this:


That's as simple as it gets, a name and an ID.  In code, the WorkSpaceInfo class is used to interact with WorkSpace objects.  The WorkSpace interface includes a MetadataMap property:


The comment says it all and this is exactly what I will do to create my "Project" subtype, add an item to the Metadata Map that identifies the object as a Project.

Project Pages

Obviously users will need a way to work with projects, a table to view the projects on the system and a way to create new projects.  For this, I created 2 new pages - the ProjectListPage and the ProjectNewPage.  The ProjectListPage looks a lot like the OOTB Workspace Page, a list of the WorkSpaces on the system:


Right now, it shows all of the WorkSpaces on the system, but with the links to non-GDQS Workspaces disabled.  In the future, those Workspaces will be filtered out from the table results.

Users will need a way to create new projects, so I created a new GDQS project page:


The page is really just a clone of the new WorkSpace page, but with some custom labels.  The code that creates the Project includes setting the "GDQSProject" property in the metadata:



So that's this week's summary.  The plan is to dive one level deeper and setup GeoServer Stores, or maybe something else for next week.

No comments: