= 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]] This proposal is to run validation (XSD+Schematron) every time a metadata is inserted or changed. The result of validation is persisted in the DB. This way we can always show the current "validation status" of metadata, e.g. in the search results page.[[BR]][[BR]] Validation status is either "valid", "not valid", or "not determined". This last status is the initial validation status when validation has not yet run.[[BR]][[BR]] A validation report is also stored in the DB. It contains any XSD or schematron validation messages, a reference to the schematron file that was used, a timestamp, and if applicable a message saying that the metadata profile could not be determined.[[BR]][[BR]] An icon indicating the validation status, that links to the validation report if the metadata is not valid, can be included in the search results page an/or in the show metadata page. This indicates something about the quality of the metadata to users, and may encourage metadata providers to produce more valid metadata.[[BR]][[BR]] TODO add screenshot '''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