= Proposal number : Proposal title: Collection of changes originating from [http://nationaalgeoregister.nl Nationaal Georegister] = || '''Date''' || 2009/08/24 || || '''Contact(s)''' || [http://wiki.osgeo.org/wiki/User:Heikki Heikki Doeleman] || || '''Last edited''' || [[Timestamp]] || || '''Status''' || draft || || '''Assigned to release''' || 2.5 || || '''Resources''' || The work is done in the NGR project || == Overview == This proposal combines various changes originally implemented in a !GeoNetwork fork in the project [http://nationaalgeoregister.nl Nationaal Georegister]. The changes are otherwise unrelated, but they are not very big and I think it's more efficient to bundle them in this single proposal. The proposed changes are: '''1.''' Performance improvement to search[[BR]] '''2.''' Persistent validation results[[BR]] '''3.''' Organizations[[BR]] '''4.''' Service monitoring[[BR]] '''5.''' Tabbed view of Metadata[[BR]] '''6.''' Local rating[[BR]] Another change proposal (INSPIRE support) will be separately described by [http://wiki.osgeo.org/wiki/User:Fxp Francois] and [http://wiki.osgeo.org/wiki/User:Heikki Heikki]. Yet another change proposal (replacing !InterMap by !OpenLayers) is already described [http://trac.osgeo.org/geonetwork/wiki/ReplacingIntermap here]. === Proposal Type === * '''Type''': GUI Change, Core Change, Module Change * '''App''': !GeoNetwork * '''Module''': Search engine, Data Manager, Group Manager, Rating === Links === * '''Email discussions''': on geonetwork-devel: [http://n2.nabble.com/Proposals-to-include-NGR-functionality-to-GeoNetwork-trunk-td3365623.html#a3365623 "Proposals to include NGR functionality to GeoNetwork trunk"] === Voting History === * None as yet ---- == Motivations == The motivations for these changes are : '''1.''' A better performance is preferred[[BR]] '''2.''' The "validation status", that is to say whether or not a metadata is valid, is readily available e.g. for display in search results[[BR]] '''3.''' The notion of Organization is lacking in !GeoNetwork's domain model[[BR]] '''4.''' The uptime percentage of services is readily available, e.g. for display in search results[[BR]] '''5.''' A nice layout for the large view-metadata page[[BR]] '''6.''' Only the metadata rating of users of your own !GeoNetwork node is counted[[BR]] == Proposal == '''1.''' Performance improvement to search[[BR]] In current !GeoNetwork, the search from the main page works as follows: the request with search parameters is sent to !GeoNetwork and is turned into a JDOM structure by Jeeves; this request object is processed in XSLT (lucene.xsl), the result of which is a different JDOM structure; this in turn is further processed in Java to create the actual Lucene query.[[BR]][[BR]] This proposal removes the step of XSLT processing by lucene.xsl. The function of lucene.xsl is exactly re-built in Java (!LuceneQueryBuilder.java). The resulting Lucene query is not changed in this proposal.[[BR]] !LuceneQueryBuilder.java was developed [http://www.extremeprogramming.org/rules/testfirst.html test-first] and as a result, it's well covered by a unit test.[[BR]][[BR]] A second performance gain is effected by a change to retrieving the regions data in the search service. In standard !GeoNetwork, the regions are retrieved from the DB at each search request; in this proposal, it happens only once, after which the regions data is kept in memory for application lifetime.[[BR]][[BR]] Performance metrics from [http://www.yourkit.com/ YourKit Java Profiler] show that this change leads to a 90% performance increase of the search service as such (excluding the creation of the search results page). '''2.''' Persistent validation results[[BR]] '''3.''' Organizations[[BR]] '''4.''' Service monitoring[[BR]] '''5.''' Tabbed view of Metadata[[BR]] '''6.''' Local rating[[BR]] === Backwards Compatibility Issues === '''1.''' none[[BR]] '''2.''' a database change is required. SQL script to update existing DBs will be available[[BR]] '''3.''' a database change is required. SQL script to update existing DBs will be available[[BR]] '''4.''' a database change is required. SQL script to update existing DBs will be available[[BR]] '''5.''' none[[BR]] '''6.''' none[[BR]] == Risks == == Participants == * As above