IMRCruisetoolbox a technical presentation Trond Westgård Senior engineer Norwegian Marine Datacenter (NMD)
Purpose <ul><li>Establish a framework to store, retrieve and distribute data sampled from research vessel surveys. </li></ul>
Principles <ul><li>All data stored in relational databases with the OGC spatial extension </li></ul><ul><li>Modern feature...
Databases so far <ul><li>IMRReference – (species, platforms, persons, roles, gears, categories, ……) </li></ul><ul><li>IMRH...
Quick overview - DB <ul><li>Rules for establishing new databases (GUID, original, last edited,…) </li></ul><ul><li>Copies ...
Quick overview - Architecture <ul><li>5 layer architecture (GUI, …., DB) </li></ul><ul><li>Use of ORM and business logic w...
Architecture GUI Data and Storage Management Data Access Business Logic UI Presentation
Tools used JAVA / IDE NetBeans 6.8 DB – JDBC, PostgreSQL, PostGIS Data Access – ORM iBATIS Business Logic – JavaBeans VO, ...
Libraries and applications Imrcore.jar Guid,  sync , BaseVO, DBList,VisualBaseVO Imrreflib.jar Logon,Species, Platform,Rol...
Data distribution  HUB REF BIO ECHO HUB REF BIO ECHO HUB REF BIO ECHO Sync Sync Sync H R B E
Example application - IMRfrontend
Whats left ???  <ul><li>Rock solid framework for RCA (help,language,toolbar,docking,plugins..) </li></ul><ul><li>Framework...
Ownership –  Klausul / Clause <ul><li>Institution  (that owns some dataset and wants a clause on it) </li></ul><ul><li>Per...
Ownership –  “relations” ? IMR- biotic Person/Group Institution Clause Report Data
Ownership – imrreference Clause Clause_person_group Clause_vobject Person vobject Group Person_group
Ownership any database –  applies to all nmd  database tables with observations or derived data elements that contains bus...
Ownership – some imr data database clause_object table <ul><li>id </li></ul><ul><li>original </li></ul><ul><li>last_edited...
0 = GEOMETRY1 = POINT 2 = CURVE 3 = LINESTRING 4 = SURFACE 5 = POLYGON 6 = COLLECTION 7 = MULTIPOINT 8 = MULTICURVE 9 = MU...
WHY ?
Every ”framework” has it’s own way
<ul><li>Java based and inherits from Swing and is true to Java core principles </li></ul><ul><li>Helpsets and multilanguag...
<ul><li>Helpsets and multilanguage user interfaces </li></ul><ul><li>Best practices for logging of messages and errors (lo...
Upcoming SlideShare
Loading in …5
×

IMRCruisetoolbox: A Technical Presentation

875 views

Published on

Presentation by the Norwegian Marine Datacenter, explaining their architecture and their plans around the NetBeans Platform.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
875
On SlideShare
0
From Embeds
0
Number of Embeds
322
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Tittelside
  • IMRCruisetoolbox: A Technical Presentation

    1. 1. IMRCruisetoolbox a technical presentation Trond Westgård Senior engineer Norwegian Marine Datacenter (NMD)
    2. 2. Purpose <ul><li>Establish a framework to store, retrieve and distribute data sampled from research vessel surveys. </li></ul>
    3. 3. Principles <ul><li>All data stored in relational databases with the OGC spatial extension </li></ul><ul><li>Modern feature-rich end-user dialogs </li></ul><ul><li>Multiuser access to databases </li></ul><ul><li>Open source software if possible </li></ul><ul><li>Object oriented design with reuse of components </li></ul><ul><li>“ Smooth” distribution and sharing of data </li></ul><ul><li>A “family” of databases where each db deals with a specific research area </li></ul>
    4. 4. Databases so far <ul><li>IMRReference – (species, platforms, persons, roles, gears, categories, ……) </li></ul><ul><li>IMRHub – (cruise data: track, crew, tasks, purpose, stations, weather,….) </li></ul><ul><li>IMRBiotic – (prototype.biological samples of fish and other taxonomic groups) </li></ul><ul><li>IMREchosounder – (interpreted echo values for different acoustic categories) </li></ul><ul><li>IMRSurvey – (estimated indexes for different stocks/surveys) </li></ul><ul><li>More to come …. </li></ul>
    5. 5. Quick overview - DB <ul><li>Rules for establishing new databases (GUID, original, last edited,…) </li></ul><ul><li>Copies of data should be easy to distribute in as many copies as needed (but only one database keeps the original/master value stored in a row in a table). </li></ul><ul><li>Mechanisms for: ”transfer ownership”, ”update/sync copies” </li></ul><ul><li>Central log on to access rights </li></ul><ul><li>The databases are not always in a network (e.g.: field work in remote places) </li></ul><ul><li>“ Foreign keys” may refer ACROSS databases/schema </li></ul><ul><li>PostgreSQL/PostGIS as database engine. </li></ul>
    6. 6. Quick overview - Architecture <ul><li>5 layer architecture (GUI, …., DB) </li></ul><ul><li>Use of ORM and business logic with business objects </li></ul><ul><li>Mechanisms for: ”transfer ownership”, ”update/sync copies” </li></ul><ul><li>“ Central” log on to access rights </li></ul><ul><li>The databases are not always in a network (e.g.: field work in remote places) </li></ul><ul><li>“ Foreign keys” may refer ACROSS databases/schema </li></ul><ul><li>UDP, list, limit value, area, …. </li></ul><ul><li>Open Source tools if possible </li></ul><ul><li>Java as primary language </li></ul><ul><li>NetBeans IDE as main development tool </li></ul>
    7. 7. Architecture GUI Data and Storage Management Data Access Business Logic UI Presentation
    8. 8. Tools used JAVA / IDE NetBeans 6.8 DB – JDBC, PostgreSQL, PostGIS Data Access – ORM iBATIS Business Logic – JavaBeans VO, Java GUI – OpenSwing/Swing/JMapPane(gt) NetBeans Platform
    9. 9. Libraries and applications Imrcore.jar Guid, sync , BaseVO, DBList,VisualBaseVO Imrreflib.jar Logon,Species, Platform,Role Imrbioticlib.jar Sample, Individual IMRFrontend, Application IMR- hub IMR- reference IMR- biotic Imrhublib.jar Cruise,Track, Station Imrechosounderlib.jar SA,Distance, Frequency IMR- echosounder
    10. 10. Data distribution HUB REF BIO ECHO HUB REF BIO ECHO HUB REF BIO ECHO Sync Sync Sync H R B E
    11. 11. Example application - IMRfrontend
    12. 12. Whats left ??? <ul><li>Rock solid framework for RCA (help,language,toolbar,docking,plugins..) </li></ul><ul><li>Framework for web services and web based applications (Spring?) </li></ul>
    13. 13. Ownership – Klausul / Clause <ul><li>Institution (that owns some dataset and wants a clause on it) </li></ul><ul><li>Person (that is responsible for the clause, could be empty). </li></ul><ul><li>Description (text explaining what the clause is about) </li></ul><ul><li>Sampledatestart (start field sample date the clause is about) </li></ul><ul><li>Sampledateend (end field sample date that the clause is about) </li></ul><ul><li>Expiredate (The date when the clause could be disregarded) </li></ul><ul><li>Inherit (0,1- Underlying objects are also restricted by this clause) </li></ul><ul><li>Severity </li></ul><ul><ul><li>0 = open access, </li></ul></ul><ul><ul><li>1 = signed on user with read access, </li></ul></ul><ul><ul><li>2 = signed on user with read/write permission to the database, </li></ul></ul><ul><ul><li>3 = signed on user must have explicit permission to bypass the clause, i.e. it must exist an entry in the Clause_person_group table. </li></ul></ul>
    14. 14. Ownership – “relations” ? IMR- biotic Person/Group Institution Clause Report Data
    15. 15. Ownership – imrreference Clause Clause_person_group Clause_vobject Person vobject Group Person_group
    16. 16. Ownership any database – applies to all nmd database tables with observations or derived data elements that contains business object id’s <ul><li>id </li></ul><ul><li>original </li></ul><ul><li>last_edited </li></ul><ul><li>id_r_institution_owner </li></ul><ul><li>sampledate </li></ul><ul><li>somedatacolumn_one </li></ul><ul><li>somedatacolumn_two </li></ul><ul><li>etc …. </li></ul><ul><li>NOTE: When id_r_institution_owner and sampledate is NULL no clause applies to the datarow </li></ul>
    17. 17. Ownership – some imr data database clause_object table <ul><li>id </li></ul><ul><li>original </li></ul><ul><li>last_edited </li></ul><ul><li>id_r_vobject </li></ul><ul><li>id_r_clause </li></ul><ul><li>id_object </li></ul><ul><li>(id_r_vobject,id_r_clause,id_object) unique constraint </li></ul>
    18. 18. 0 = GEOMETRY1 = POINT 2 = CURVE 3 = LINESTRING 4 = SURFACE 5 = POLYGON 6 = COLLECTION 7 = MULTIPOINT 8 = MULTICURVE 9 = MULTILINESTRING 10 = MULTISURFACE 11 = MULTIPOLYGON
    19. 19. WHY ?
    20. 20. Every ”framework” has it’s own way
    21. 21. <ul><li>Java based and inherits from Swing and is true to Java core principles </li></ul><ul><li>Helpsets and multilanguage build in </li></ul><ul><li>Plug in architecture – freely adaptable also for end-user </li></ul><ul><li>Subscribe on updates for modules </li></ul><ul><li>Floating windows/toolbars/DnD/Trees/Tables/Properties…. </li></ul><ul><li>Context sensitive pop-up menus </li></ul><ul><li>Remembers last user session </li></ul><ul><li>Well documented with courses </li></ul><ul><li>Open Source </li></ul><ul><li>Only one real opponent – Eclipse </li></ul><ul><li>Context events – One toolbar many functions – Subscribe to events </li></ul><ul><li>A rich set of API’s </li></ul><ul><li>MODULARITY </li></ul><ul><li>API “discipline” (publish classes in folders) </li></ul><ul><li>Oracle states continued support (Jbuilder, Eclipse Plugin, NetBeans) </li></ul><ul><li>more …. </li></ul>Some facts about NetBeans Platform
    22. 22. <ul><li>Helpsets and multilanguage user interfaces </li></ul><ul><li>Best practices for logging of messages and errors (log4J ?) </li></ul><ul><li>Migrate OpenSwing MDI to NetBeans Platform RCA </li></ul><ul><ul><li>toolbar – grid – form – module(s) </li></ul></ul><ul><li>Config.xml handled by NetBeans Platform </li></ul><ul><li>Geotools and JMapPane as modules </li></ul><ul><li>From TopComponent to BusinessAO to BusinessVO objects </li></ul><ul><li>Persistence of objects and wrapping of data access into modules </li></ul><ul><li>Lazy loading using NetBeans PlatformTrees and Ibatis </li></ul><ul><li>Services to access business objects both for RCA and Web applications </li></ul>Workshop items

    ×