Coder Social home page Coder Social logo

geonetwork-ga / core-geonetwork Goto Github PK

View Code? Open in Web Editor NEW

This project forked from anzmest/core-geonetwork

0.0 3.0 2.0 273 MB

GeoNetwork repository

Home Page: http://geonetwork-opensource.org/

PowerShell 0.02% Java 33.57% XSLT 16.79% Shell 0.11% HTML 2.44% Scheme 0.15% CSS 1.11% JavaScript 41.83% PLpgSQL 0.04% Batchfile 0.01% Dockerfile 0.01% AMPL 0.08% Groovy 0.28% TSQL 3.58%

core-geonetwork's Introduction

Build Health

Build Status

Features

  • Immediate search access to local and distributed geospatial catalogues
  • Up- and downloading of data, graphics, documents, pdf files and any other content type
  • An interactive Web Map Viewer to combine Web Map Services from distributed servers around the world
  • Online editing of metadata with a powerful template system
  • Scheduled harvesting and synchronization of metadata between distributed catalogs
  • Support for OGC-CSW 2.0.2 ISO Profile, OAI-PMH, SRU protocols
  • Fine-grained access control with group and user management
  • Multi-lingual user interface

Documentation

User documentation is in the docs submodule in the current repository and is compiled into html pages during a release for publishing on a website.

Developer documentation is also in the docs submodule but is being migrated out of that project into the Readme files in each module in the project. General documentation for the project as a whole is in this Readme and module specific documentation can be found in each module (assuming there is module specific documentation required).

Software Development

Instructions for setting up a development environment/building Geonetwork/compiling user documentation/making a release see: Software Development Documentation

Testing

With regards to testing Geonetwork is a standard Java project and primarily depends on JUnit for testing. However there is a very important issue to consider when writing JUnit tests in Geonetwork and that is the separation between unit tests and integration tests

  • Unit Tests - In Geonetwork unit tests should be very very quick to execute and not start up any subsystems of the application in order to keep the execution time of the unit tests very short. Integration tests do not require super classes and any assistance methods can be static imports, for example statically importing org.junit.Assert or org.junit.Assume or org.fao.geonet.Assert.
  • Integration Tests - Integration Test typically start much or all of Geonetwork as part of the test and will take longer to run than a unit test. However, even though the tests take longer they should still be implemented in such a way to be as efficient as possible. Starting Geonetwork in a way that isolates each integration test from each other integration test is non-trivial. Because of this there are abstract super classes to assist with this. Many modules have module specific Abstract classes. For example at the time that this is being written domain, core, harvesters and services modules all have module specific super classes that need to be used. (harvesting has 2 superclasses depending on what is to be tested.) The easiest way to learn how to implement an integration test is to search for other integration tests in the same module as the class you want to test. The following list provides a few tips:
    • IMPORTANT: All Integrations tests must end in IntegrationTest. The build system assumes all tests ending in IntegrationTest is an integration test and runs them in a build phase after unit tests. All other tests are assumed to be unit tests.
    • Prefer unit tests over Integration Tests because they are faster.
    • Search the current module for IntegrationTest to find tests to model your integration test against
    • This you might want integration tests for are:
      • Services: If the service already exists and you quick need to write a test to debug/fix its behaviour. If you are writing a new service it is better to use Mockito to mock the dependencies of the service so the test is a unit test.
      • Harvesters
      • A behaviour that crosses much of the full system

org.fao.geonet.utils.GeonetHttpRequestFactory: When making Http requests you should use org.fao.geonet.utils.GeonetHttpRequestFactory instead of directly using HttpClient. This is because there are mock instances of org.fao.geonet.utils.GeonetHttpRequestFactory that can be used to mock responses when performing tests.

core-geonetwork's People

Watchers

 avatar  avatar  avatar

core-geonetwork's Issues

Weirdness in the editor?

Thanks for the discussion on the editor weirdness - I'm not sure what was going on!? However, I just added the topicCategory and operationDescription fields to the editor config-editor.xml file as per the commit geonetwork-ga/schema-plugins@60e6c4a in the way in which I previously advised - everything worked just fine.

But maybe a couple of things I always do when working with changes/debugging (sorry if they seem motherhood but something odd has been going on?):

  1. If in doubt restart the server - shouldn't always be necessary but...
  2. When I open a geonetwork session in the browser (chrome usually) I have the dev tools open and the cache switched off
  3. Easiest to test on a local copy installed on your machine - I realize dev and test are there for a reason but they are usually slow to stop/start etc

No 2 shouldn't be applicable here but number 1 is always a good idea. :-)

Unauthenticated CSW requests returning non-published records

Unauthenticated CSW GetRecords requests have access to records that shouldn't be allowed, i.e. records are returned that do not have the "Publish" privilege assigned to the "All" group. Searches via the GeoNetwork GUI as an anonymous user obey the non-published privilege, whereby the records cannot be retrieved in a search.

xml.config.set service returning error

Requests to the xml.config.set service are returning the following error message:
ERROR: null value in column "source" violates not-null constraint
Detail: Failing row contains (1, 457ca2fd-efda-41cd-a0d6-706bab51b641, iso19115-3, y, n, 2016-03-21T00:53:44, 2016-03-21T00:53:44, <mdb:MD_Metadata xmlns:mdb="http://standards.iso.org/iso/19115/-..., null, null, mdb:MD_Metadata, null, 1, null, 1, null, 0, 0, null).

Error can be repeated by obtaining the xml response document from the xml.config.get service and sending that as the body in a post request to the xml.config.set service (as per documentation at http://geonetwork-opensource.org/manuals/2.10.4/eng/developer/xml_services/system_configuration.html#xml-config-get).

service metadata needs to have lineage statement, lineage statement doesn't appear if we just add a tab with mrl:statement in it

Martin,

Your/our earlier approach didn't work because the service metadata template (schemaPlugins/iso19115-3/templates/ga-19115-3-service.xml) doesn't have an mdb:resourceLineage element (unlike the dataset template).

Solve this by adding the following to the service template:

mdb:resourceLineage
mrl:LI_Lineage
mrl:statement
gco:CharacterString/
/mrl:statement
mrl:scope
mcc:MD_Scope
mcc:level
<mcc:MD_ScopeCode codeList="codeListLocation#MD_ScopeCode" codeListValue="service"/>
/mcc:level
/mcc:MD_Scope
/mrl:scope
/mrl:LI_Lineage
/mdb:resourceLineage

This is ok because the element is needed as we need to set level/MD_ScopeCode to service.

If the element was optional we could have added the following to config-editor.xml:

Maybe with an add action to control what was

OR we could have used a notEvaluated, templateModeOnly approach (just for extra complexity).

Add manuals to GeoNetwork 'Help' link

Not sure whether this is a great idea - some of the information is very up to date and ok in the user manual. Other information is way out of date. Developer manual is probably best kept hidden.

I suggest we include instead a simple quickstart guide - I already have the bare bones of one of these on http://waveatlas.marine.csiro.au/geonetwork/docs/eng/users/simple/

This can be very quickly adapted to suit the GA context - later on as the UAT gets closer we can add some more stuff to this specific for the GA editor workflow.

National Map sourced layers externally do not work.

Aaron: This looks like a problem with accessing GA’s proxy. Simon, are you able to get the GN proxy service which is taking the WMS requests from the National Map application to use the proxy settings in GN’s “System Configurations” administration page? Also, are the proxy capabilities of GN able to handle NTLM authentication? GA uses a Forefront TMG firewall with NTLM authentication.

Simon: I'll check on NTLM support in GN proxy settings. On getting proxy settings from GN - we can do that - will report shortly. If too hard to do NTLM before UAT, then I suggest we drop the external layers from the NM config for UAT?

CSW outputSchema="own" not using expected style sheets

When making a CSW request with the outputSchema value set to "own", one of own-brief.xsl, own-summary.xsl or own-full.xsl in WEB-INF/data/config/schema_plugins/iso19115-3/present/csw should be applied to the response documents. Testing has shown that the equivalent iso-*.xsl style sheets in the same directory are being applied instead.

"My Metadata" listing reverts to full catalogue listing

When logged in as a user with metadata records in the catalogue, ticking the "My Metadata" checkbox on the main search page brings back that user's records in the results list. After about 20 seconds the search results list reverts to the entire set of visible records in the catalogue. This occurs on both Firefox and Chrome.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.