From c93379908da620be4eb17e473a69dfb30e24c806 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 30 Mar 2016 12:43:09 +0200 Subject: [PATCH 01/17] fixes on layout for schema-org microdata formatter --- .../formatter/schema-org/config.properties | 24 + .../iso19139/formatter/schema-org/view.xsl | 933 ++++++++++++++++++ web/src/main/webapp/WEB-INF/urlrewrite.xml | 4 +- web/src/main/webapp/xslt/base-layout-nojs.xsl | 20 +- .../main/webapp/xslt/skin/default/skin.xsl | 3 +- .../webapp/xslt/ui-search/search-nojs.xsl | 71 +- 6 files changed, 1016 insertions(+), 39 deletions(-) create mode 100644 schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/config.properties create mode 100644 schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/view.xsl diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/config.properties b/schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/config.properties new file mode 100644 index 00000000000..24452939606 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/config.properties @@ -0,0 +1,24 @@ +# +# Copyright (C) 2001-2016 Food and Agriculture Organization of the +# United Nations (FAO-UN), United Nations World Food Programme (WFP) +# and United Nations Environment Programme (UNEP) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# +# Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, +# Rome - Italy. email: geonetwork@osgeo.org +# + +published=true \ No newline at end of file diff --git a/schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/view.xsl b/schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/view.xsl new file mode 100644 index 00000000000..05cc055d611 --- /dev/null +++ b/schemas/iso19139/src/main/plugin/iso19139/formatter/schema-org/view.xsl @@ -0,0 +1,933 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+
+
+ + + + + + + + + + + + +
+

+ + +

+
+ +
+
+
+ + + + +
+ +
+
+ , + + , + +
+
+
+ +
+
+ + +
+ + + +
+
+
+ +
+
+
+ + + +
+
+
+ +
+
+
+ + + + + + + +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+
+
+
+ + + +
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + - + + + + () + + + + + + + + + +
+

+ + +

+
+
+ +
+
+
+
+ + + + + + + + + + + + + +
+
+ +
+
+ + + + / + + + + / + +

+ +

+
+
+
+ + + + +
+
+ + + + () + +
+
+ + + + +
+
+
+ + + +
+
+ + + () + +
+
+ + + + + +
+
+
+ + + +
+
+ +
+
+
    + + + + + + {$label} + + +
+
+
+
+ + + + +
+
+ +
+
+
    + +
  • + + () +

    + +

    +
  • +
    +
+
+
+
+ + + + + + +
+
+ + + () +
+ + + dateCreated + datePublished + dateModified + + +
+ + + + + +
+
+
+ + + + +
+
+ +
+
+ + + +
+
+
+ + + + + + + + + + +
+
+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http:// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://schema.org/Dataset +http://schema.org/DataCatalog +http://schema.org/DataCatalog +http://schema.org/SoftwareApplication +http://schema.org/Thing +http://schema.org/Dataset +http://schema.org/Dataset +http://schema.org/Dataset +http://schema.org/APIReference +http://schema.org/Dataset +http://schema.org/Thing +http://schema.org/Thing +http://schema.org/Thing + + + + + + <xsl:apply-templates mode="getMetadataTitle" select="$metadata"/> + + + + + + + + + + + + + + + + + + +
diff --git a/web/src/main/webapp/WEB-INF/urlrewrite.xml b/web/src/main/webapp/WEB-INF/urlrewrite.xml index 6d02774a479..151421ecef9 100644 --- a/web/src/main/webapp/WEB-INF/urlrewrite.xml +++ b/web/src/main/webapp/WEB-INF/urlrewrite.xml @@ -187,7 +187,7 @@ Example URL: http://localhost:8080/geonetwork/metadata/eng/summary/da165110-88fd-11da-a88f-000d939bc5d8.xml ^/metadata/(.*)/(.*)/(.*).(xml|html)$ - /srv/$1/metadata.formatter.$4?uuid=$3&xsl=$4 + /srv/$1/md.format.$4?uuid=$3&xsl=$4 @@ -196,7 +196,7 @@ Example URL: http://localhost:8080/geonetwork/metadata/da165110-88fd-11da-a88f-000d939bc5d8 ^/metadata/(.*)$ - %{context-path}/?uuid=$1 + /srv/eng/md.format.html?uuid=$1&xsl=schema-org diff --git a/web/src/main/webapp/xslt/base-layout-nojs.xsl b/web/src/main/webapp/xslt/base-layout-nojs.xsl index 3d375a3322b..36e49b0b1f6 100644 --- a/web/src/main/webapp/xslt/base-layout-nojs.xsl +++ b/web/src/main/webapp/xslt/base-layout-nojs.xsl @@ -58,17 +58,27 @@ - - + + + - -
- + +
+
diff --git a/web/src/main/webapp/xslt/skin/default/skin.xsl b/web/src/main/webapp/xslt/skin/default/skin.xsl index aab8c596e6b..5d5c9024fd5 100644 --- a/web/src/main/webapp/xslt/skin/default/skin.xsl +++ b/web/src/main/webapp/xslt/skin/default/skin.xsl @@ -31,8 +31,7 @@
  • - - + Search
  • diff --git a/web/src/main/webapp/xslt/ui-search/search-nojs.xsl b/web/src/main/webapp/xslt/ui-search/search-nojs.xsl index 699181ea289..1a61bfee6a3 100644 --- a/web/src/main/webapp/xslt/ui-search/search-nojs.xsl +++ b/web/src/main/webapp/xslt/ui-search/search-nojs.xsl @@ -29,51 +29,62 @@ + +
    +
    - +
    -
    - +
    + -
    -
    - - +
    + -
    -
    -From -to -out of results. -
    -
    +
    +
    + + + From + to + out of results. + + + No results + + +
    +
    - -
    -
    - - -
    - -
    -
    -
    + +
    +
    + + +
    + +
    +
    +
    + -
    -

    Browse by topic

    - -
    - ()
    -
    + From 812ebd910a5e3cfbaa9a3b5f989a4e7fc58b0ddf Mon Sep 17 00:00:00 2001 From: Jose Garcia Date: Wed, 23 Mar 2016 17:35:51 +0100 Subject: [PATCH 02/17] Revert "small CSS improvements for homepage" This reverts commit 1936efc87f42441151c647b17b710fb552afde82. --- web-ui/src/main/resources/catalog/style/gn.less | 10 +++++----- web-ui/src/main/resources/catalog/style/gn_search.less | 4 +++- .../catalog/views/default/less/gn_search_default.less | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/web-ui/src/main/resources/catalog/style/gn.less b/web-ui/src/main/resources/catalog/style/gn.less index ab80788d27e..f61fcb25a7d 100644 --- a/web-ui/src/main/resources/catalog/style/gn.less +++ b/web-ui/src/main/resources/catalog/style/gn.less @@ -542,13 +542,13 @@ i.fa-times.delete:hover { .gn-status { border: 3px solid darken(@brand-info, 5%); position: absolute; - bottom: 2px; + top: 95px; left: 2px; - border-radius: 5px; + border-radius: 15px; padding: 2px; - /* -ms-transform: rotate(-30deg); */ - /* -webkit-transform: rotate(-30deg); */ - /* transform: rotate(-30deg); */ + -ms-transform: rotate(-30deg); + -webkit-transform: rotate(-30deg); + transform: rotate(-30deg); color: @brand-info; font-weight: bold; font-size: 80%; diff --git a/web-ui/src/main/resources/catalog/style/gn_search.less b/web-ui/src/main/resources/catalog/style/gn_search.less index 22604cdaa4c..934208ae3d3 100644 --- a/web-ui/src/main/resources/catalog/style/gn_search.less +++ b/web-ui/src/main/resources/catalog/style/gn_search.less @@ -1,6 +1,8 @@ // GN Styles @import "../lib/style/font-awesome/less/font-awesome.less"; @import "gn_bootstrap.less"; +@import "gn_infolist.less"; +@import "gn_badge_categories.less"; @import "../lib/bootstrap.ext/tagsinput/bootstrap-tagsinput.less"; // import the css files as less files so they are included in the final output of wro4j @@ -37,7 +39,6 @@ margin-bottom: 0px; //width: 90%; /* hack */ cursor: pointer; - font-weight: normal; } label.gn-facet-active { color: @gray-darker @@ -71,6 +72,7 @@ } h4 { font-size: 14px; + font-weight: bold; text-transform: uppercase; margin-bottom: 0px; border-bottom: 2px @gray-lighter solid; diff --git a/web-ui/src/main/resources/catalog/views/default/less/gn_search_default.less b/web-ui/src/main/resources/catalog/views/default/less/gn_search_default.less index 462d45239e3..2685b39b9ef 100644 --- a/web-ui/src/main/resources/catalog/views/default/less/gn_search_default.less +++ b/web-ui/src/main/resources/catalog/views/default/less/gn_search_default.less @@ -174,7 +174,7 @@ ul.gn-resultview { .gn-md-title { margin-top: 2px; min-height: 3.5em; - max-height: 5em; + max-height: 3.5em; overflow: hidden; cursor: pointer; h3 { @@ -442,7 +442,7 @@ ul.gn-resultview { > div.gn-md-title { a { color: #333333; - font-size: 1.3em; + font-size: 120%; } } } From 9795af742eea265db797cc3897e2dcde95e9b67e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Fri, 25 Mar 2016 10:29:48 +0100 Subject: [PATCH 03/17] Update doc submodule. --- docs/manuals | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manuals b/docs/manuals index a3530f54574..b54e64c744a 160000 --- a/docs/manuals +++ b/docs/manuals @@ -1 +1 @@ -Subproject commit a3530f54574658a46b0033daef12f74bc1717b3f +Subproject commit b54e64c744a6e6258ec5fe70fd349f733c000416 From 1ee3badff819f9df8fa52d97774321b4b2230b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Fri, 25 Mar 2016 10:36:55 +0100 Subject: [PATCH 04/17] Updates from transifex. --- .../resources/catalog/locales/cz-admin.json | 13 ----- .../resources/catalog/locales/cz-core.json | 14 ++++++ .../resources/catalog/locales/cz-editor.json | 33 ++++++++++++- .../resources/catalog/locales/cz-search.json | 8 ++++ .../resources/catalog/locales/du-admin.json | 13 ----- .../resources/catalog/locales/du-core.json | 14 ++++++ .../resources/catalog/locales/du-editor.json | 33 ++++++++++++- .../resources/catalog/locales/du-search.json | 10 +++- .../resources/catalog/locales/es-admin.json | 13 ----- .../resources/catalog/locales/es-core.json | 14 ++++++ .../resources/catalog/locales/es-editor.json | 33 ++++++++++++- .../resources/catalog/locales/es-search.json | 8 ++++ .../resources/catalog/locales/fr-admin.json | 17 +------ .../resources/catalog/locales/fr-core.json | 14 ++++++ .../resources/catalog/locales/fr-editor.json | 33 ++++++++++++- .../resources/catalog/locales/fr-search.json | 8 ++++ .../resources/catalog/locales/ge-admin.json | 13 ----- .../resources/catalog/locales/ge-core.json | 14 ++++++ .../resources/catalog/locales/ge-editor.json | 33 ++++++++++++- .../resources/catalog/locales/ge-search.json | 8 ++++ .../resources/catalog/locales/it-admin.json | 13 ----- .../resources/catalog/locales/it-core.json | 14 ++++++ .../resources/catalog/locales/it-editor.json | 33 ++++++++++++- .../resources/catalog/locales/it-search.json | 8 ++++ .../resources/catalog/locales/ko-admin.json | 21 ++------- .../resources/catalog/locales/ko-core.json | 16 ++++++- .../resources/catalog/locales/ko-editor.json | 47 +++++++++++++++---- .../resources/catalog/locales/ko-search.json | 26 ++++++---- 28 files changed, 402 insertions(+), 122 deletions(-) diff --git a/web-ui/src/main/resources/catalog/locales/cz-admin.json b/web-ui/src/main/resources/catalog/locales/cz-admin.json index 9a830e00b56..451d2b89d28 100644 --- a/web-ui/src/main/resources/catalog/locales/cz-admin.json +++ b/web-ui/src/main/resources/catalog/locales/cz-admin.json @@ -574,22 +574,10 @@ "os.arch": "Systémová architektura", "os.name": "Název systému", "prefix": "Prefix", - "processError": "Chyba při zpracování.", - "processFinished": "Zpracování proběhlo.", "processRecommendedOnHostChange": "Aktualizovat metadatové záznamy", "processRecommendedOnPrefixChange": "Aktualizovat metadatové záznamy", "processRecommendedOnHostChange-help": "Po změně hostitelského názvu katalogu se doporučuje aktualizovat všechny odkazy, které jsou definovány v katalogových záznamech (např. náhledy, nahrané dokumenty, XLinks). Kliknutím nahradíte {{old}} za {{by}}", "processRecommendedOnPrefixChange-help": "Po změně prefixu identifikátoru se doporučuje aktualizovat identifikátory všech záznamů. Kliknutím proveďte konfiguraci aktualizace.", - "processReport-done": "Počet zpracovaných záznamů", - "processReportChangedRecords": "Změněno", - "processReportErrors": "Záznamy s chybou", - "processReportFor": "Zpráva pro proces:", - "processReportNoProcessFound": "Záznamy s procesem nejsou v tomto standardu definovány", - "processReportNotChangedRecords": "Nezměněno", - "processReportNotOwner": "Záznamy nelze upravovat", - "processReportNullRecords": "Záznamy nebyly nalezeny", - "processReportProcessedRecords": "Záznamy nebyly zpracovány", - "processReportTotalRecords": "Záznamy určené ke zpracování", "properties": "Pole", "pushStyleInWorkspace": "Push style in the workspace", "q": "Hledat", @@ -605,7 +593,6 @@ "recordsInGroup": "záznam(y) nalezeny ve skupině", "recordsIndexed": "záznamy opatřeny indexem.", "recordsOrigin": "Původ metadatových záznamů", - "recordsProcessed": "záznamy zpracovány", "recordsState": "Stav záznamů", "recordsStatistics": "Statistiky metadat", "recordsType": "Typ metadatových záznamů", diff --git a/web-ui/src/main/resources/catalog/locales/cz-core.json b/web-ui/src/main/resources/catalog/locales/cz-core.json index 9dff35468b3..74b8b43b83f 100644 --- a/web-ui/src/main/resources/catalog/locales/cz-core.json +++ b/web-ui/src/main/resources/catalog/locales/cz-core.json @@ -216,6 +216,20 @@ "userPreferences": "Uživatelské preference", "username": "Uživatelské jméno", "usernameHelp": "Jméno pro přihlašování", + "processError": "Processing error.", + "processFinished": "Processing done.", + "processReport-done": "Number of records proccessed", + "processReportChangedRecords": "Changed", + "processReportErrors": "Records with error", + "processReportFor": "Report for process:", + "processReportNoProcessFound": "Records with process not defined in its standard", + "processReportNotChangedRecords": "Not changed", + "processReportNotOwner": "Not editable records", + "processReportNullRecords": "Records not found", + "processReportProcessedRecords": "Records processed", + "processReportTotalRecords": "Records to process", + "recordsProcessed": "records processed", + "batchediting": "Batch editing", "west": "Západ", "year": "Rok", "zip": "ZIP", diff --git a/web-ui/src/main/resources/catalog/locales/cz-editor.json b/web-ui/src/main/resources/catalog/locales/cz-editor.json index 4fc853b2353..c8fd4d7a731 100644 --- a/web-ui/src/main/resources/catalog/locales/cz-editor.json +++ b/web-ui/src/main/resources/catalog/locales/cz-editor.json @@ -34,6 +34,37 @@ "chooseContactRole": "or choose role", "chooseEntry": "Search directory", "beforeUnloadEditor": "Je možné, že po posledním ukládání nebyly některé změny uloženy {{timeAgo}}.", + "batchEditing": "Batch editing", + "fieldIsRemoved": "This field will be removed", + "removeField": "Remove this field", + "addXpath-help": "Updating records using XPath need careful definition of the changes. A change is defined by:", + "addXpathTitle": "an optional tile", + "addXpathXpath": "a mandatory XPath to point to the element(s) to update. XPath can not contains filter expression.", + "addXpathInsertMode": "a type of update", + "xpath": "XPath", + "xpathValue": "Text or XML value", + "gn_create": "Create the element", + "gn_add": "Add the element or value (in the first matching parent) or create it", + "gn_replace": "Replace the element or value (in the first matching parent)", + "gn_delete": "Remove all matching elements", + "addXpathValue": "a value which could be an XML snippet if the mode is not delete", + "chooseASet": "1. Choose a set of records", + "defineEdits": "2. Define edits", + "confirmAndSave": "3. Apply changes", + "changesToApply": "Changes to apply:", + "resetChanges": "Reset changes", + "createSetFromSearch": "Search and select records or", + "chooseAnExistingSet": "choose a predefined set", + "chooseASetOfRecordHelp": "Select one or more records before defining which elements to update. Only records that you can edit are proposed.", + "defineEditsHelp": "Depending on the type of records selected the list of fields that you can update could change. When editing a mandatory field like title, the field is updated. When editing a field which can contain multiple values, the new value is added.", + "recordsInSelection": "record(s) in selection.", + "displaySelectionOnly": "View selection only", + "aboutToUpdateTheFollowing": "The following records will be updated:", + "resetSearchToDisplayAll": "Click to display selected records. Use reset to display all.", + "availableSet": "Available set", + "noChangesToApply": "Define changes first in order to update selected records.", + "selectRecordsToEdit": "Select one or more records to edit.", + "advancedBatchEditMode": "Advanced mode (XPath)", "cancel": "Zrušit", "cancelChangesFromNow": "Zrušit všechny změny od zahájení relace úprav {{timeAgo}}.", "cancelling": "Probíhá rušení ...", @@ -77,7 +108,7 @@ "description": "Popis", "directory": "Cesta ke složce", "directoryEntries": "Položky", - "drawRectangle": "Nakreslit obdélník", + "drawRectangle": "Draw extent", "error": "Chyba", "errors": "Chyba(y)", "serviceDetachedToCurrentRecord": "Služba odpojena od aktuálního záznamu", diff --git a/web-ui/src/main/resources/catalog/locales/cz-search.json b/web-ui/src/main/resources/catalog/locales/cz-search.json index d7ceffa025c..bda0a8f0d7b 100644 --- a/web-ui/src/main/resources/catalog/locales/cz-search.json +++ b/web-ui/src/main/resources/catalog/locales/cz-search.json @@ -62,6 +62,7 @@ "defaultView": "Implicitní zobrazení", "full": "Plné zobrazení", "securityConstraints": "Bezpečnostní omezení", + "otherConstraints": "Other constraints", "resourceConstraints": "Zdrojová omezení", "maintenanceAndUpdateFrequencies": "Frekvence aktualizace", "legalConstraints": "Zákonná omezení", @@ -155,7 +156,14 @@ "revisionDate": "Datum revize", "tempExtentBegin": "Období", "updateFrequency": "Aktualizovat četnost", + "quality": "Quality", "lineage": "Počet řádků", + "identification": "Identification", + "metadata": "Metadata", + "mdLanguage": "Metadata language", + "mdContact": "Metadata contact", + "parentIdentifier": "Parent metadata identifier", + "distributor": "Distributor", "sourceDataset": "Zdrojová datová sada", "metadataInXML": "Stáhnout metadata", "language": "Jazyk", diff --git a/web-ui/src/main/resources/catalog/locales/du-admin.json b/web-ui/src/main/resources/catalog/locales/du-admin.json index 04309d1d052..bf90c24489c 100644 --- a/web-ui/src/main/resources/catalog/locales/du-admin.json +++ b/web-ui/src/main/resources/catalog/locales/du-admin.json @@ -574,22 +574,10 @@ "os.arch": "Systeemarchitectuur", "os.name": "Naam systeem", "prefix": "Voorvoegsel", - "processError": "Bewerkingsfout.", - "processFinished": "Bewerking klaar.", "processRecommendedOnHostChange": "Metadata items bijwerken", "processRecommendedOnPrefixChange": "Metadata items bijwerken", "processRecommendedOnHostChange-help": "Na het veranderen van de naam catalogus eigenaar, is het aan te bevelen om alle links die in de catalogus items kunnen worden gedefinieerd ( bijv. miniaturen , geüploade documenten , XLinks ) bij te werken. Klik hier om te vervangen {{old}} door {{by}}", "processRecommendedOnPrefixChange-help": "Na het wijzigen van de identifier prefix wordt het aangeraden om alle record identifiers bij te werken. Klik hier om de wijziging te configureren.", - "processReport-done": "Aantal items verwerkt", - "processReportChangedRecords": "Gewijzigd", - "processReportErrors": "Items met fout", - "processReportFor": "Rapport voor proces:", - "processReportNoProcessFound": "Items met proces niet gedefinieerd in de standaard", - "processReportNotChangedRecords": "Ongewijzigd", - "processReportNotOwner": "Niet bewerkbare documenten", - "processReportNullRecords": "Niet gevonden items", - "processReportProcessedRecords": "Verwerkte items", - "processReportTotalRecords": "Items te verwerken", "properties": "Veld", "pushStyleInWorkspace": "Sla stijl op in de workspace", "q": "Zoeken", @@ -605,7 +593,6 @@ "recordsInGroup": "record(s) gevonden in groep", "recordsIndexed": "items geïndexeerd.", "recordsOrigin": "Oorsprong van de metadata", - "recordsProcessed": "verwerkte gegevens", "recordsState": "Staat van de items", "recordsStatistics": "Metadata statistieken", "recordsType": "Type metadata items", diff --git a/web-ui/src/main/resources/catalog/locales/du-core.json b/web-ui/src/main/resources/catalog/locales/du-core.json index 76ae0558f90..dc1d023e671 100644 --- a/web-ui/src/main/resources/catalog/locales/du-core.json +++ b/web-ui/src/main/resources/catalog/locales/du-core.json @@ -216,6 +216,20 @@ "userPreferences": "Gebruikersvoorkeuren", "username": "Gebruikersnaam", "usernameHelp": "Te gebruiken naam bij inloggen", + "processError": "Processing error.", + "processFinished": "Processing done.", + "processReport-done": "Number of records proccessed", + "processReportChangedRecords": "Changed", + "processReportErrors": "Records with error", + "processReportFor": "Report for process:", + "processReportNoProcessFound": "Records with process not defined in its standard", + "processReportNotChangedRecords": "Not changed", + "processReportNotOwner": "Not editable records", + "processReportNullRecords": "Records not found", + "processReportProcessedRecords": "Records processed", + "processReportTotalRecords": "Records to process", + "recordsProcessed": "records processed", + "batchediting": "Batch editing", "west": "West", "year": "Jaar", "zip": "ZIP", diff --git a/web-ui/src/main/resources/catalog/locales/du-editor.json b/web-ui/src/main/resources/catalog/locales/du-editor.json index bd773df6598..9a71159e6f5 100644 --- a/web-ui/src/main/resources/catalog/locales/du-editor.json +++ b/web-ui/src/main/resources/catalog/locales/du-editor.json @@ -34,6 +34,37 @@ "chooseContactRole": "of kies een rol", "chooseEntry": "Zoek in adressenboek", "beforeUnloadEditor": "U kunt opgeslagen wijzigingen hebben sinds vorig besparen {{timeago}} .", + "batchEditing": "Batch editing", + "fieldIsRemoved": "This field will be removed", + "removeField": "Remove this field", + "addXpath-help": "Updating records using XPath need careful definition of the changes. A change is defined by:", + "addXpathTitle": "an optional tile", + "addXpathXpath": "a mandatory XPath to point to the element(s) to update. XPath can not contains filter expression.", + "addXpathInsertMode": "a type of update", + "xpath": "XPath", + "xpathValue": "Text or XML value", + "gn_create": "Create the element", + "gn_add": "Add the element or value (in the first matching parent) or create it", + "gn_replace": "Replace the element or value (in the first matching parent)", + "gn_delete": "Remove all matching elements", + "addXpathValue": "a value which could be an XML snippet if the mode is not delete", + "chooseASet": "1. Choose a set of records", + "defineEdits": "2. Define edits", + "confirmAndSave": "3. Apply changes", + "changesToApply": "Changes to apply:", + "resetChanges": "Reset changes", + "createSetFromSearch": "Search and select records or", + "chooseAnExistingSet": "choose a predefined set", + "chooseASetOfRecordHelp": "Select one or more records before defining which elements to update. Only records that you can edit are proposed.", + "defineEditsHelp": "Depending on the type of records selected the list of fields that you can update could change. When editing a mandatory field like title, the field is updated. When editing a field which can contain multiple values, the new value is added.", + "recordsInSelection": "record(s) in selection.", + "displaySelectionOnly": "View selection only", + "aboutToUpdateTheFollowing": "The following records will be updated:", + "resetSearchToDisplayAll": "Click to display selected records. Use reset to display all.", + "availableSet": "Available set", + "noChangesToApply": "Define changes first in order to update selected records.", + "selectRecordsToEdit": "Select one or more records to edit.", + "advancedBatchEditMode": "Advanced mode (XPath)", "cancel": "annuleren", "cancelChangesFromNow": "Annuleer alle wijzigingen sinds de start van de bewerkingssessie {{timeago}} .", "cancelling": "Annuleren ...", @@ -77,7 +108,7 @@ "description": "beschrijving", "directory": "omslagweg", "directoryEntries": "inzendingen", - "drawRectangle": "Teken rechthoek", + "drawRectangle": "Draw extent", "error": "fout", "errors": "Fout (en )", "serviceDetachedToCurrentRecord": "Service ontkoppeld van het huidige item", diff --git a/web-ui/src/main/resources/catalog/locales/du-search.json b/web-ui/src/main/resources/catalog/locales/du-search.json index d55977e74eb..7eb91cfb76d 100644 --- a/web-ui/src/main/resources/catalog/locales/du-search.json +++ b/web-ui/src/main/resources/catalog/locales/du-search.json @@ -62,6 +62,7 @@ "defaultView": "Standaardweergave", "full": "Volledige weergave", "securityConstraints": "Beveiligingsrestricties", + "otherConstraints": "Other constraints", "resourceConstraints": "Bronrestricties", "maintenanceAndUpdateFrequencies": "Werk de frequesties bij", "legalConstraints": "Legale beperkingen", @@ -120,7 +121,7 @@ "twitter": "Twitter", "github": "Github", "viewMore": "Meer", - "listOfCategories": "Categoriën", + "listOfCategories": "Categorieën", "formats": "Formaten", "addLayers": "Lagen toevoegen", "serviceUrl": "http://...", @@ -155,7 +156,14 @@ "revisionDate": "Revisiedatum", "tempExtentBegin": "Periode", "updateFrequency": "Herzieningsfrequentie", + "quality": "Quality", "lineage": "Afkomst", + "identification": "Identification", + "metadata": "Metadata", + "mdLanguage": "Metadata language", + "mdContact": "Metadata contact", + "parentIdentifier": "Parent metadata identifier", + "distributor": "Distributor", "sourceDataset": "Bron dataset", "metadataInXML": "Download metadata", "language": "Taal", diff --git a/web-ui/src/main/resources/catalog/locales/es-admin.json b/web-ui/src/main/resources/catalog/locales/es-admin.json index 96109cf08e6..d69d9b64114 100644 --- a/web-ui/src/main/resources/catalog/locales/es-admin.json +++ b/web-ui/src/main/resources/catalog/locales/es-admin.json @@ -574,22 +574,10 @@ "os.arch": "Arquitectura del sistema", "os.name": "Nombre del sistema", "prefix": "Prefijo", - "processError": "Error de procesamiento.", - "processFinished": "Procesamiento completado.", "processRecommendedOnHostChange": "Actualizar entradas de metadato", "processRecommendedOnPrefixChange": "Actualizar entradas de metadato", "processRecommendedOnHostChange-help": "Después de cambiar el nombre de host del catálogo, es recomendable actualizar todos los enlaces que podrían estar definidos en las entradas del catálogo (por ejemplo miniaturas, documentos, XLinks). Hazc click aquí para reemplazar {{old}} por {{by}}", "processRecommendedOnPrefixChange-help": "Después de cambiar el prefijo del identificador, se recomienda actualizar todos los identificadores. HAz click aquí para configurar la actualización.", - "processReport-done": "Número de entradas procesadas", - "processReportChangedRecords": "Cambiados", - "processReportErrors": "Entradas con error", - "processReportFor": "Informe de proceso:", - "processReportNoProcessFound": "Entradas con procesamientos no definidos en este estándar", - "processReportNotChangedRecords": "Sin cambios", - "processReportNotOwner": "Entradas no editables", - "processReportNullRecords": "Entradas no encontradsa", - "processReportProcessedRecords": "Entradas procesadas", - "processReportTotalRecords": "Entradas a procesar", "properties": "Campo", "pushStyleInWorkspace": "Push style in the workspace", "q": "Búsqueda", @@ -605,7 +593,6 @@ "recordsInGroup": "entrada(s) encontradas en el grupo", "recordsIndexed": "entradas indexadas.", "recordsOrigin": "Origen de los metadatos", - "recordsProcessed": "entradas procesadas", "recordsState": "Estado de la Entrada", "recordsStatistics": "Estadísticas del Metadato", "recordsType": "Tipo de entradas del metadato", diff --git a/web-ui/src/main/resources/catalog/locales/es-core.json b/web-ui/src/main/resources/catalog/locales/es-core.json index d6354d623aa..caccdf300de 100644 --- a/web-ui/src/main/resources/catalog/locales/es-core.json +++ b/web-ui/src/main/resources/catalog/locales/es-core.json @@ -216,6 +216,20 @@ "userPreferences": "Preferencias del usuario", "username": "Nombre del usuario", "usernameHelp": "Nombre a usar en la autenticación", + "processError": "Processing error.", + "processFinished": "Processing done.", + "processReport-done": "Number of records proccessed", + "processReportChangedRecords": "Changed", + "processReportErrors": "Records with error", + "processReportFor": "Report for process:", + "processReportNoProcessFound": "Records with process not defined in its standard", + "processReportNotChangedRecords": "Not changed", + "processReportNotOwner": "Not editable records", + "processReportNullRecords": "Records not found", + "processReportProcessedRecords": "Records processed", + "processReportTotalRecords": "Records to process", + "recordsProcessed": "records processed", + "batchediting": "Batch editing", "west": "Oeste", "year": "Año", "zip": "ZIP", diff --git a/web-ui/src/main/resources/catalog/locales/es-editor.json b/web-ui/src/main/resources/catalog/locales/es-editor.json index a1f38b0cc74..8ff1e17d360 100644 --- a/web-ui/src/main/resources/catalog/locales/es-editor.json +++ b/web-ui/src/main/resources/catalog/locales/es-editor.json @@ -34,6 +34,37 @@ "chooseContactRole": "or choose role", "chooseEntry": "Search directory", "beforeUnloadEditor": "Puede que tengas cambios sin salvar desde la última vez que salvaste {{timeAgo}}", + "batchEditing": "Batch editing", + "fieldIsRemoved": "This field will be removed", + "removeField": "Remove this field", + "addXpath-help": "Updating records using XPath need careful definition of the changes. A change is defined by:", + "addXpathTitle": "an optional tile", + "addXpathXpath": "a mandatory XPath to point to the element(s) to update. XPath can not contains filter expression.", + "addXpathInsertMode": "a type of update", + "xpath": "XPath", + "xpathValue": "Text or XML value", + "gn_create": "Create the element", + "gn_add": "Add the element or value (in the first matching parent) or create it", + "gn_replace": "Replace the element or value (in the first matching parent)", + "gn_delete": "Remove all matching elements", + "addXpathValue": "a value which could be an XML snippet if the mode is not delete", + "chooseASet": "1. Choose a set of records", + "defineEdits": "2. Define edits", + "confirmAndSave": "3. Apply changes", + "changesToApply": "Changes to apply:", + "resetChanges": "Reset changes", + "createSetFromSearch": "Search and select records or", + "chooseAnExistingSet": "choose a predefined set", + "chooseASetOfRecordHelp": "Select one or more records before defining which elements to update. Only records that you can edit are proposed.", + "defineEditsHelp": "Depending on the type of records selected the list of fields that you can update could change. When editing a mandatory field like title, the field is updated. When editing a field which can contain multiple values, the new value is added.", + "recordsInSelection": "record(s) in selection.", + "displaySelectionOnly": "View selection only", + "aboutToUpdateTheFollowing": "The following records will be updated:", + "resetSearchToDisplayAll": "Click to display selected records. Use reset to display all.", + "availableSet": "Available set", + "noChangesToApply": "Define changes first in order to update selected records.", + "selectRecordsToEdit": "Select one or more records to edit.", + "advancedBatchEditMode": "Advanced mode (XPath)", "cancel": "Cancelar", "cancelChangesFromNow": "Cancelar todos los cambios desde el inicio de la sesión de edición {{timeAgo}}.", "cancelling": "Cancelando...", @@ -77,7 +108,7 @@ "description": "Descripción", "directory": "Ruta de la carpeta", "directoryEntries": "Entradas", - "drawRectangle": "Pintar triángulo", + "drawRectangle": "Draw extent", "error": "Error", "errors": "Error(es)", "serviceDetachedToCurrentRecord": "Servicio desacoplado de la entrada actual", diff --git a/web-ui/src/main/resources/catalog/locales/es-search.json b/web-ui/src/main/resources/catalog/locales/es-search.json index 80f4c70b4c5..314ff463aeb 100644 --- a/web-ui/src/main/resources/catalog/locales/es-search.json +++ b/web-ui/src/main/resources/catalog/locales/es-search.json @@ -62,6 +62,7 @@ "defaultView": "Vista por defecto", "full": "Vista completa", "securityConstraints": "Restricciones de seguridad", + "otherConstraints": "Other constraints", "resourceConstraints": "Restricciones de recursos", "maintenanceAndUpdateFrequencies": "Actualizar frecuencias", "legalConstraints": "Restricciones legales", @@ -155,7 +156,14 @@ "revisionDate": "Fecha de revisión", "tempExtentBegin": "Periodo", "updateFrequency": "Frecuencia de Actualización", + "quality": "Quality", "lineage": "Estirpe", + "identification": "Identification", + "metadata": "Metadata", + "mdLanguage": "Metadata language", + "mdContact": "Metadata contact", + "parentIdentifier": "Parent metadata identifier", + "distributor": "Distributor", "sourceDataset": "Conjunto de datos fuente", "metadataInXML": "Descargar metadato", "language": "Idioma", diff --git a/web-ui/src/main/resources/catalog/locales/fr-admin.json b/web-ui/src/main/resources/catalog/locales/fr-admin.json index 97c09235e06..1ae432f1717 100644 --- a/web-ui/src/main/resources/catalog/locales/fr-admin.json +++ b/web-ui/src/main/resources/catalog/locales/fr-admin.json @@ -574,22 +574,10 @@ "os.arch": "Architecture du système", "os.name": "Nom du système", "prefix": "Prefixe", - "processError": "Oops, il y a eu des erreurs lors du traitement.", - "processFinished": "Traitement terminé.", "processRecommendedOnHostChange": "Mettre à jour les fiches", "processRecommendedOnPrefixChange": "Mettre à jour les fiches", "processRecommendedOnHostChange-help": "Après modification de l'hôte, il est recommandé de mettre à jour les URLs contenues dans les fiches (eg. aperçus, documents téléchargés, XLinks). Cliquer ici pour remplacer {{old}} par {{by}}.", "processRecommendedOnPrefixChange-help": "Après modification de la configuration de l'identifiant, il est recommandé de mettre à jour les identifiants. Cliquer ici pour configurer la mise à jour.", - "processReport-done": "Nombre de fiches traitées", - "processReportChangedRecords": "Changed", - "processReportErrors": "Fiches avec des erreurs", - "processReportFor": "Rapport :", - "processReportNoProcessFound": "Fiches dans un standard ne disposant pas de ce traitement", - "processReportNotChangedRecords": "Not changed", - "processReportNotOwner": "Fiches non editables", - "processReportNullRecords": "Fiches non trouvées", - "processReportProcessedRecords": "Fiches traitées", - "processReportTotalRecords": "Fiches à traiter", "properties": "Champ", "pushStyleInWorkspace": "Publier le style dans l'espace de travail", "q": "Recherche", @@ -605,7 +593,6 @@ "recordsInGroup": "fiche(s) trouvées pour le groupe", "recordsIndexed": "enregistrements indexés.", "recordsOrigin": "Fiches par origine", - "recordsProcessed": "fiches traitées", "recordsState": "Fiches par états", "recordsStatistics": "Statistiques sur les fiches", "recordsType": "Type de fiches", @@ -874,8 +861,8 @@ "system/xlinkResolver/enable-help": "Quand la résolution des XLinks est activé, les URL des XLinks sont interrogées et le contenu inséré dans les fiches à la position demandée.", "system/xlinkResolver/localXlinkEnable": "Activer les XLinks locaux", "system/xlinkResolver/localXlinkEnable-help": "Local XLinks are using local:/// URL to make references to related sections instead of HTTP URL. Local XLinks are usually faster than HTTP XLinks.", - "system/xlinkResolver/ignore": "Elements to ignore by XLink resolution", - "system/xlinkResolver/ignore-help": "Comma separated list of elements to ignore by XLink resolution", + "system/xlinkResolver/ignore": "Éléments à ignorer lors de la résolution des XLinks", + "system/xlinkResolver/ignore-help": "Liste séparée par des virgules des éléments à ignorer. La liste par défaut est operatesOn,featureCatalogueCitation,Anchor,source.", "system/z3950": "Z39.50", "system/z3950/enable": "Activer Z39.50 Server", "system/z3950/enable-help": "S'il est mis en place, le composant serveur Z39.50 sera démarré lors du démarrage du catalogue. Ce composant utilise le protocole ISO23950.", diff --git a/web-ui/src/main/resources/catalog/locales/fr-core.json b/web-ui/src/main/resources/catalog/locales/fr-core.json index f4141e9e73e..2f7f7395266 100644 --- a/web-ui/src/main/resources/catalog/locales/fr-core.json +++ b/web-ui/src/main/resources/catalog/locales/fr-core.json @@ -216,6 +216,20 @@ "userPreferences": "Préférences utilisateur", "username": "Nom d'utilisateur", "usernameHelp": "Nom à utiliser pour l'identification.", + "processError": "Erreur lors du traitement.", + "processFinished": "Traitement terminé.", + "processReport-done": "Nombre de fiches traitées", + "processReportChangedRecords": "Modifiée", + "processReportErrors": "Fiches avec des erreurs", + "processReportFor": "Rapport de traitement :", + "processReportNoProcessFound": "Fiches pour lesquelles le standard ne dispose pas du processus demandé", + "processReportNotChangedRecords": "Non modifiée", + "processReportNotOwner": "Non modifiables", + "processReportNullRecords": "Non trouvées", + "processReportProcessedRecords": "Traitées", + "processReportTotalRecords": "Fiches à traiter", + "recordsProcessed": "fiches traitées", + "batchediting": "Édition en série", "west": "Ouest", "year": "Année", "zip": "Code postal", diff --git a/web-ui/src/main/resources/catalog/locales/fr-editor.json b/web-ui/src/main/resources/catalog/locales/fr-editor.json index 347ba23fab8..51a356dbc03 100644 --- a/web-ui/src/main/resources/catalog/locales/fr-editor.json +++ b/web-ui/src/main/resources/catalog/locales/fr-editor.json @@ -34,6 +34,37 @@ "chooseContactRole": "ou choisir un rôle", "chooseEntry": "Rechercher", "beforeUnloadEditor": "Vous pourriez avoir des modifications non sauvées depuis la dernière sauvegarde {{timeAgo}}.", + "batchEditing": "Édition en série", + "fieldIsRemoved": "Ce champ sera supprimé", + "removeField": "Supprimé ce champ", + "addXpath-help": "Mettre à jour une fiche via XPath demande une définition précise des modifications. Un changement est défini par :", + "addXpathTitle": "un titre optionel", + "addXpathXpath": "un XPath obligatoire pour identifier le ou les élements cibles.", + "addXpathInsertMode": "un type de mise à jour", + "xpath": "XPath", + "xpathValue": "Texte ou XML", + "gn_create": "Créer l'élément", + "gn_add": "Ajoute l'élément ou la valeur (dans le premier élément parent correspondant) ou crée l'élément", + "gn_replace": "Remplace l'élément ou la valeur (dans le premier élément parent correspondant)", + "gn_delete": "Supprime tous les éléments correspondants", + "addXpathValue": "une valeur qui peut être un fragment d'XML (si le mode n'est pas suppression)", + "chooseASet": "1. Choisir les fiches à modifier", + "defineEdits": "2. Définir les modifications", + "confirmAndSave": "3. Appliquer", + "changesToApply": "Modification à appliquer :", + "resetChanges": "Annuler les modifications", + "createSetFromSearch": "Rechercher et sélectionner les fiches ou", + "chooseAnExistingSet": "choisir un ensemble existant", + "chooseASetOfRecordHelp": "Choisir une ou plusieurs fiches avant de définir les modifications. Seules les fiches que vous pouvez éditer sont proposées.", + "defineEditsHelp": "En fonction du standard des fiches sélectionnées, la liste des champs est différente. Quand un champ obligatoire est modifié (eg. titre), le champ est mis à jour. Quand un champ peut contenir plusieurs occurences, un nouvel élément est ajouté.", + "recordsInSelection": "fiche(s) dans la sélection.", + "displaySelectionOnly": "Afficher uniquement la sélection", + "aboutToUpdateTheFollowing": "Les fiches suivantes vont être mise à jour :", + "resetSearchToDisplayAll": "Cliquer pour n'afficher que la sélection. Utiliser le bouton réinitialiser pour afficher tout.", + "availableSet": "Ensemble disponible", + "noChangesToApply": "Définir les modifications afin de mettre à jour les fiches sélectionnées. ", + "selectRecordsToEdit": "Select one or more records to edit.", + "advancedBatchEditMode": "Advanced mode (XPath)", "cancel": "Annuler", "cancelChangesFromNow": "Annuler les modifications faites depuis le début, {{timeAgo}}.", "cancelling": "Annulation ...", @@ -77,7 +108,7 @@ "description": "Description", "directory": "Répertoire", "directoryEntries": "Éléments", - "drawRectangle": "Dessiner une emprise", + "drawRectangle": "Draw extent", "error": "Erreur", "errors": "erreurs", "serviceDetachedToCurrentRecord": "Le service n'est plus associé à la fiche en cours d'édition.", diff --git a/web-ui/src/main/resources/catalog/locales/fr-search.json b/web-ui/src/main/resources/catalog/locales/fr-search.json index 311554778ce..f501f4ee610 100644 --- a/web-ui/src/main/resources/catalog/locales/fr-search.json +++ b/web-ui/src/main/resources/catalog/locales/fr-search.json @@ -62,6 +62,7 @@ "defaultView": "Vue par défaut", "full": "Vue complète", "securityConstraints": "Contraintes de sécurité", + "otherConstraints": "Autres contraintes", "resourceConstraints": "Contraintes pour la ressource", "maintenanceAndUpdateFrequencies": "Fréquences de mise à jour", "legalConstraints": "Contraintes légales", @@ -155,7 +156,14 @@ "revisionDate": "Date de révision", "tempExtentBegin": "Periode", "updateFrequency": "Fréquence de mise à jour", + "quality": "Qualité", "lineage": "Généalogie", + "identification": "Identification", + "metadata": "Métadonnée", + "mdLanguage": "Langue de la fiche", + "mdContact": "Contact pour la fiche", + "parentIdentifier": "Identifiant de la fiche parent", + "distributor": "Distributeur", "sourceDataset": "Données source", "metadataInXML": "Télécharger la fiche", "language": "Langue", diff --git a/web-ui/src/main/resources/catalog/locales/ge-admin.json b/web-ui/src/main/resources/catalog/locales/ge-admin.json index 318c2163477..76e3756bf4e 100644 --- a/web-ui/src/main/resources/catalog/locales/ge-admin.json +++ b/web-ui/src/main/resources/catalog/locales/ge-admin.json @@ -574,22 +574,10 @@ "os.arch": "System Architektur", "os.name": "Systemname", "prefix": "Prefix", - "processError": "Verarbeitungsfehler", - "processFinished": "Verarbeitung abgeschlossen.", "processRecommendedOnHostChange": "Metadatensätze aktualisieren", "processRecommendedOnPrefixChange": "Metadatensätze aktualisieren", "processRecommendedOnHostChange-help": "Sobald der Hostname des Katalogs geändert wurde, wird empfohlen alle Links, die im Katalog definiert sind, zu aktualisieren (z. Bsp. Vorschaubilder, Dokumente, XLinks). Klicken Sie hier, um {{old}} durch {{by}} zu ersetzen.", "processRecommendedOnPrefixChange-help": "After changing the identifier prefix, it's recommended to update all record identifiers. Click here to configure the update.", - "processReport-done": "Anzahl der bearbeiteten Datensätze", - "processReportChangedRecords": "Geändert", - "processReportErrors": "Datensätze mit Fehler", - "processReportFor": "Bericht für die Verarbeitung:", - "processReportNoProcessFound": "Datensätze mit Prozessen, die nicht in deren Standards beschrieben sind.", - "processReportNotChangedRecords": "Nicht verändert", - "processReportNotOwner": "Keine bearbeitbare Datensätze", - "processReportNullRecords": "Datensätze nicht gefunden", - "processReportProcessedRecords": "Datensätze verarbeitet.", - "processReportTotalRecords": "Datensätze für die Verarbeitung", "properties": "Feld", "pushStyleInWorkspace": "Push style in the workspace", "q": "Suchen", @@ -605,7 +593,6 @@ "recordsInGroup": "Datensatz(sätze) in Gruppen gefunden", "recordsIndexed": "Datensätze indexiert.", "recordsOrigin": "Metadatensatzherkunft", - "recordsProcessed": "Datensätze verarbeitet", "recordsState": "Status der Datensätze", "recordsStatistics": "Metadatenstatistik", "recordsType": "Art des Metadatensatzes", diff --git a/web-ui/src/main/resources/catalog/locales/ge-core.json b/web-ui/src/main/resources/catalog/locales/ge-core.json index dc122ad7e81..4c132402f1d 100644 --- a/web-ui/src/main/resources/catalog/locales/ge-core.json +++ b/web-ui/src/main/resources/catalog/locales/ge-core.json @@ -216,6 +216,20 @@ "userPreferences": "Vorlieben des Benutzers", "username": "Benutzername", "usernameHelp": "Name für die Anmeldung", + "processError": "Processing error.", + "processFinished": "Processing done.", + "processReport-done": "Number of records proccessed", + "processReportChangedRecords": "Changed", + "processReportErrors": "Records with error", + "processReportFor": "Report for process:", + "processReportNoProcessFound": "Records with process not defined in its standard", + "processReportNotChangedRecords": "Not changed", + "processReportNotOwner": "Not editable records", + "processReportNullRecords": "Records not found", + "processReportProcessedRecords": "Records processed", + "processReportTotalRecords": "Records to process", + "recordsProcessed": "records processed", + "batchediting": "Batch editing", "west": "Westen", "year": "Jahr", "zip": "ZIP", diff --git a/web-ui/src/main/resources/catalog/locales/ge-editor.json b/web-ui/src/main/resources/catalog/locales/ge-editor.json index 7951eec61a5..0adca25fd8d 100644 --- a/web-ui/src/main/resources/catalog/locales/ge-editor.json +++ b/web-ui/src/main/resources/catalog/locales/ge-editor.json @@ -34,6 +34,37 @@ "chooseContactRole": "oder wähle Rolle", "chooseEntry": "Verzeichnis durchsuchen", "beforeUnloadEditor": "Eventuell wurden Änderungen seit der letzten Speicherung nicht mehr abgespeichert {{timeAgo}}.", + "batchEditing": "Batch editing", + "fieldIsRemoved": "This field will be removed", + "removeField": "Remove this field", + "addXpath-help": "Updating records using XPath need careful definition of the changes. A change is defined by:", + "addXpathTitle": "an optional tile", + "addXpathXpath": "a mandatory XPath to point to the element(s) to update. XPath can not contains filter expression.", + "addXpathInsertMode": "a type of update", + "xpath": "XPath", + "xpathValue": "Text or XML value", + "gn_create": "Create the element", + "gn_add": "Add the element or value (in the first matching parent) or create it", + "gn_replace": "Replace the element or value (in the first matching parent)", + "gn_delete": "Remove all matching elements", + "addXpathValue": "a value which could be an XML snippet if the mode is not delete", + "chooseASet": "1. Choose a set of records", + "defineEdits": "2. Define edits", + "confirmAndSave": "3. Apply changes", + "changesToApply": "Changes to apply:", + "resetChanges": "Reset changes", + "createSetFromSearch": "Search and select records or", + "chooseAnExistingSet": "choose a predefined set", + "chooseASetOfRecordHelp": "Select one or more records before defining which elements to update. Only records that you can edit are proposed.", + "defineEditsHelp": "Depending on the type of records selected the list of fields that you can update could change. When editing a mandatory field like title, the field is updated. When editing a field which can contain multiple values, the new value is added.", + "recordsInSelection": "record(s) in selection.", + "displaySelectionOnly": "View selection only", + "aboutToUpdateTheFollowing": "The following records will be updated:", + "resetSearchToDisplayAll": "Click to display selected records. Use reset to display all.", + "availableSet": "Available set", + "noChangesToApply": "Define changes first in order to update selected records.", + "selectRecordsToEdit": "Select one or more records to edit.", + "advancedBatchEditMode": "Advanced mode (XPath)", "cancel": "abbrechen", "cancelChangesFromNow": "Alle Änderungen seit Beginn der Bearbeitung werden gelöscht {{timeAgo}}", "cancelling": "Abbrechen...", @@ -77,7 +108,7 @@ "description": "Beschreibung", "directory": "Dateipfad", "directoryEntries": "Einträge", - "drawRectangle": "Zeichnen Sie ein Rechteck", + "drawRectangle": "Draw extent", "error": "Fehler", "errors": "Fehler ()", "serviceDetachedToCurrentRecord": "Dienst von aktuellem Datensatz abgetrennt", diff --git a/web-ui/src/main/resources/catalog/locales/ge-search.json b/web-ui/src/main/resources/catalog/locales/ge-search.json index 7728c13c668..98022e5ae40 100644 --- a/web-ui/src/main/resources/catalog/locales/ge-search.json +++ b/web-ui/src/main/resources/catalog/locales/ge-search.json @@ -62,6 +62,7 @@ "defaultView": "Standardansicht", "full": "Komplettansicht", "securityConstraints": "Sicherheitseinschränkungen", + "otherConstraints": "Other constraints", "resourceConstraints": "Ressourceneinschränkungen", "maintenanceAndUpdateFrequencies": "Aktualisierungsintervall", "legalConstraints": "Rechtliche Zugangsbeschränkung", @@ -155,7 +156,14 @@ "revisionDate": "Datum der Überarbeitung", "tempExtentBegin": "Periode", "updateFrequency": "Überarbeitungsintervall", + "quality": "Quality", "lineage": "Herkunft", + "identification": "Identification", + "metadata": "Metadata", + "mdLanguage": "Metadata language", + "mdContact": "Metadata contact", + "parentIdentifier": "Parent metadata identifier", + "distributor": "Distributor", "sourceDataset": "Quelldaten", "metadataInXML": "Metadaten herunterladen", "language": "Sprache", diff --git a/web-ui/src/main/resources/catalog/locales/it-admin.json b/web-ui/src/main/resources/catalog/locales/it-admin.json index 960a05b99e3..fda8f0e533e 100644 --- a/web-ui/src/main/resources/catalog/locales/it-admin.json +++ b/web-ui/src/main/resources/catalog/locales/it-admin.json @@ -574,22 +574,10 @@ "os.arch": "System architecture", "os.name": "System name", "prefix": "Prefix", - "processError": "Processing error.", - "processFinished": "Processing done.", "processRecommendedOnHostChange": "Update metadata records", "processRecommendedOnPrefixChange": "Update metadata records", "processRecommendedOnHostChange-help": "After changing the catalog host name, it's recommended to update all links which may be defined in the catalog records (eg. thumbnails, uploaded documents, XLinks). Click here to replace {{old}} by {{by}}", "processRecommendedOnPrefixChange-help": "After changing the identifier prefix, it's recommended to update all record identifiers. Click here to configure the update.", - "processReport-done": "Number of records proccessed", - "processReportChangedRecords": "Changed", - "processReportErrors": "Records with error", - "processReportFor": "Report for process:", - "processReportNoProcessFound": "Records with process not defined in its standard", - "processReportNotChangedRecords": "Not changed", - "processReportNotOwner": "Not editable records", - "processReportNullRecords": "Records not found", - "processReportProcessedRecords": "Records processed", - "processReportTotalRecords": "Records to process", "properties": "Field", "pushStyleInWorkspace": "Push style in the workspace", "q": "Ricerca", @@ -605,7 +593,6 @@ "recordsInGroup": "record(s) found in group", "recordsIndexed": "records indexed.", "recordsOrigin": "Metadata records origin", - "recordsProcessed": "records processed", "recordsState": "Records state", "recordsStatistics": "Metadata statistics", "recordsType": "Type of metadata records", diff --git a/web-ui/src/main/resources/catalog/locales/it-core.json b/web-ui/src/main/resources/catalog/locales/it-core.json index c5a3a241600..36ebf052d6d 100644 --- a/web-ui/src/main/resources/catalog/locales/it-core.json +++ b/web-ui/src/main/resources/catalog/locales/it-core.json @@ -216,6 +216,20 @@ "userPreferences": "User preferences", "username": "User name", "usernameHelp": "Name to use when sign in", + "processError": "Processing error.", + "processFinished": "Processing done.", + "processReport-done": "Number of records proccessed", + "processReportChangedRecords": "Changed", + "processReportErrors": "Records with error", + "processReportFor": "Report for process:", + "processReportNoProcessFound": "Records with process not defined in its standard", + "processReportNotChangedRecords": "Not changed", + "processReportNotOwner": "Not editable records", + "processReportNullRecords": "Records not found", + "processReportProcessedRecords": "Records processed", + "processReportTotalRecords": "Records to process", + "recordsProcessed": "records processed", + "batchediting": "Batch editing", "west": "West", "year": "Year", "zip": "ZIP", diff --git a/web-ui/src/main/resources/catalog/locales/it-editor.json b/web-ui/src/main/resources/catalog/locales/it-editor.json index 69c27aed059..ef4615d1f7c 100644 --- a/web-ui/src/main/resources/catalog/locales/it-editor.json +++ b/web-ui/src/main/resources/catalog/locales/it-editor.json @@ -34,6 +34,37 @@ "chooseContactRole": "or choose role", "chooseEntry": "Search directory", "beforeUnloadEditor": "You may have unsaved changes since last save {{timeAgo}}.", + "batchEditing": "Batch editing", + "fieldIsRemoved": "This field will be removed", + "removeField": "Remove this field", + "addXpath-help": "Updating records using XPath need careful definition of the changes. A change is defined by:", + "addXpathTitle": "an optional tile", + "addXpathXpath": "a mandatory XPath to point to the element(s) to update. XPath can not contains filter expression.", + "addXpathInsertMode": "a type of update", + "xpath": "XPath", + "xpathValue": "Text or XML value", + "gn_create": "Create the element", + "gn_add": "Add the element or value (in the first matching parent) or create it", + "gn_replace": "Replace the element or value (in the first matching parent)", + "gn_delete": "Remove all matching elements", + "addXpathValue": "a value which could be an XML snippet if the mode is not delete", + "chooseASet": "1. Choose a set of records", + "defineEdits": "2. Define edits", + "confirmAndSave": "3. Apply changes", + "changesToApply": "Changes to apply:", + "resetChanges": "Reset changes", + "createSetFromSearch": "Search and select records or", + "chooseAnExistingSet": "choose a predefined set", + "chooseASetOfRecordHelp": "Select one or more records before defining which elements to update. Only records that you can edit are proposed.", + "defineEditsHelp": "Depending on the type of records selected the list of fields that you can update could change. When editing a mandatory field like title, the field is updated. When editing a field which can contain multiple values, the new value is added.", + "recordsInSelection": "record(s) in selection.", + "displaySelectionOnly": "View selection only", + "aboutToUpdateTheFollowing": "The following records will be updated:", + "resetSearchToDisplayAll": "Click to display selected records. Use reset to display all.", + "availableSet": "Available set", + "noChangesToApply": "Define changes first in order to update selected records.", + "selectRecordsToEdit": "Select one or more records to edit.", + "advancedBatchEditMode": "Advanced mode (XPath)", "cancel": "Cancel", "cancelChangesFromNow": "Cancel all changes since the start of the editing session {{timeAgo}}.", "cancelling": "Cancelling ...", @@ -77,7 +108,7 @@ "description": "Descrizione", "directory": "Folder path", "directoryEntries": "Entries", - "drawRectangle": "Draw rectangle", + "drawRectangle": "Draw extent", "error": "Error", "errors": "Error(s)", "serviceDetachedToCurrentRecord": "Service detached to current record", diff --git a/web-ui/src/main/resources/catalog/locales/it-search.json b/web-ui/src/main/resources/catalog/locales/it-search.json index 9bfea5b8da4..e4b74c7e9e4 100644 --- a/web-ui/src/main/resources/catalog/locales/it-search.json +++ b/web-ui/src/main/resources/catalog/locales/it-search.json @@ -62,6 +62,7 @@ "defaultView": "Default view", "full": "Full view", "securityConstraints": "Security constraints", + "otherConstraints": "Other constraints", "resourceConstraints": "Resource constraints", "maintenanceAndUpdateFrequencies": "Update frequencies", "legalConstraints": "Legal constraints", @@ -155,7 +156,14 @@ "revisionDate": "Revision date", "tempExtentBegin": "Period", "updateFrequency": "Frequenza di aggiornamento", + "quality": "Quality", "lineage": "Genealogia", + "identification": "Identification", + "metadata": "Metadata", + "mdLanguage": "Metadata language", + "mdContact": "Metadata contact", + "parentIdentifier": "Parent metadata identifier", + "distributor": "Distributor", "sourceDataset": "Dati di origine", "metadataInXML": "Scarica metadati", "language": "Parole chiave", diff --git a/web-ui/src/main/resources/catalog/locales/ko-admin.json b/web-ui/src/main/resources/catalog/locales/ko-admin.json index 54388640eb7..32c29c140a1 100644 --- a/web-ui/src/main/resources/catalog/locales/ko-admin.json +++ b/web-ui/src/main/resources/catalog/locales/ko-admin.json @@ -574,22 +574,10 @@ "os.arch": "시스템 아키텍처", "os.name": "시스템 명", "prefix": "접두사", - "processError": "처리 오류", - "processFinished": "처리 완료", "processRecommendedOnHostChange": "메타데이타 레코드 갱신", "processRecommendedOnPrefixChange": "메타데이타 레코드 갱신", "processRecommendedOnHostChange-help": "카탈로그 호스트 이름을 변경 한 후 카탈로그 레코드에 정의 될 수있는 모든 링크를 업데이트하는 데 권장 (eg. thumbnails, uploaded documents, XLinks). 여기를 클릭하여 교체 {{old}} by {{by}}", "processRecommendedOnPrefixChange-help": "식별자 접두사를 변경한 후, 모든 레코드의 식별자 업데이트를 권장합니다. 업데이트를 구성하려면 여기를 클릭하십시오.", - "processReport-done": "처리된 레코드 수", - "processReportChangedRecords": "변경됨", - "processReportErrors": "오류있는 레코드", - "processReportFor": "처리결과 보고", - "processReportNoProcessFound": "프로세스에 대한 레코드들은 표준에 정의되지 않음", - "processReportNotChangedRecords": "변경 안됨", - "processReportNotOwner": "수정할 수 없는 레코드", - "processReportNullRecords": "레코드 검색 안됨", - "processReportProcessedRecords": "레코드 처리됨", - "processReportTotalRecords": "레코드 처리", "properties": "필드", "pushStyleInWorkspace": "작업공간에 스타일 반영", "q": "검색", @@ -605,7 +593,6 @@ "recordsInGroup": "그룹내에 검색된 레코드(s)", "recordsIndexed": "레코드 색인됨", "recordsOrigin": "메타데이타 레코드 기원", - "recordsProcessed": "레코드 처리됨", "recordsState": "레코드 상태", "recordsStatistics": "메타데이타 상태", "recordsType": "메타데이타 레코드 종류", @@ -740,7 +727,7 @@ "system/feedback/mailServer/password": "비밀번호", "system/feedback/mailServer/port": "SMTP 포트", "system/feedback/mailServer/ssl": "SSL 사용", - "system/feedback/mailServer/tls": "Use TLS", + "system/feedback/mailServer/tls": "TLS 사용", "system/feedback/mailServer/username": "사용자 이름", "system/harvester": "수집기", "system/harvester/enableEditing": "수집된 레코드 편집이 허락됨", @@ -869,13 +856,13 @@ "system/threadedindexing/maxthreads": "인덱싱 스레드 개수", "system/userSelfRegistration": "사용자 자체 등록", "system/userSelfRegistration/enable": "자체 등록 활성화", - "system/xlinkResolver": "메타데이타 XLINK", + "system/xlinkResolver": "메타데이타 XLink ", "system/xlinkResolver/enable": "XLink 해상도 활성화", "system/xlinkResolver/enable-help": "설정하면 레코드 내의 메타데이터 조각의 XLink가 해결됩니다.", "system/xlinkResolver/localXlinkEnable": "로컬 XLink 활성화", "system/xlinkResolver/localXlinkEnable-help": "로컬 XLink 사용 local:/// URL을 HTTP URL을 대신하여 관련된 부분을 참조하여 만듭니다. 로컬 XLink는 HTTP XLink보다 일반적으로 더 빠릅니다.", - "system/xlinkResolver/ignore": "Elements to ignore by XLink resolution", - "system/xlinkResolver/ignore-help": "Comma separated list of elements to ignore by XLink resolution", + "system/xlinkResolver/ignore": "XLink 해상도에 의해 무시되는 엘리먼트", + "system/xlinkResolver/ignore-help": "콤마로 분리된 XLink 해상도에 의해 무시되는 엘리먼트 목록", "system/z3950": "Z39.50", "system/z3950/enable": "Z39.50서버 활성화", "system/z3950/enable-help": "설정하면 GeoNetwork가 시작되는 도중에 Z39.50서버 기능이 시작될 것입니다. 이 기능은 ISO23950 프로토콜을 사용합니다.", diff --git a/web-ui/src/main/resources/catalog/locales/ko-core.json b/web-ui/src/main/resources/catalog/locales/ko-core.json index 8f3c66ac483..1eb4b003480 100644 --- a/web-ui/src/main/resources/catalog/locales/ko-core.json +++ b/web-ui/src/main/resources/catalog/locales/ko-core.json @@ -131,7 +131,7 @@ "notifications": "알림", "orgName": "자원에 대한 연락처", "orgNames": "자원에 대한 연락처", - "orgNamesTree": "Contact for the resource", + "orgNamesTree": "자원에 대한 연락처", "topicCat": "토픽", "topicCats": "주제", "organisation": "조직", @@ -216,6 +216,20 @@ "userPreferences": "사용자 환경설정", "username": "사용자 이름", "usernameHelp": "로그인에 사용할 이름", + "processError": "처리 오류.", + "processFinished": "처리 완료.", + "processReport-done": "처리된 레코드 수", + "processReportChangedRecords": "변경됨", + "processReportErrors": "오류가 있는 레코드", + "processReportFor": "처리결과:", + "processReportNoProcessFound": "표준에 정의되지 않은 레코드", + "processReportNotChangedRecords": "변경 안됨", + "processReportNotOwner": "편집할 수 없는 레코드", + "processReportNullRecords": "검색 안된 레코드", + "processReportProcessedRecords": "처리된 레코드", + "processReportTotalRecords": "처리할 레코드", + "recordsProcessed": "처리된 레코드", + "batchediting": "일괄 편집", "west": "서", "year": "년", "zip": "ZIP", diff --git a/web-ui/src/main/resources/catalog/locales/ko-editor.json b/web-ui/src/main/resources/catalog/locales/ko-editor.json index 499755c2086..c02a914f149 100644 --- a/web-ui/src/main/resources/catalog/locales/ko-editor.json +++ b/web-ui/src/main/resources/catalog/locales/ko-editor.json @@ -31,20 +31,51 @@ "assignToCategory": "카테고리에 할당", "assignToGroup": "그룹에 할당", "associationType": "연결 유형", - "chooseContactRole": "or choose role", - "chooseEntry": "Search directory", + "chooseContactRole": "또는 역할 선택", + "chooseEntry": "디렉토리 검색", "beforeUnloadEditor": "마지막 저장 {{timeAgo}} 이후로 변경 내용을 저장하지 않았습니다.", + "batchEditing": "일괄 편집", + "fieldIsRemoved": "이 필드가 제거됩니다", + "removeField": "이 필드 제거", + "addXpath-help": "XPath를 이용하는 레코드 갱신은 변경에 대한 세심한 정의가 필요합니다. 변경은 다음에 의해 정의됩니다:", + "addXpathTitle": "선택사양 타일", + "addXpathXpath": "갱신할 요소를 지정하는 필수 XPath. XPath는 필터 표현식을 포함할 수 없습니다.", + "addXpathInsertMode": "갱신 유형", + "xpath": "XPath", + "xpathValue": "텍스트 또는 XML 값", + "gn_create": "요소 생성", + "gn_add": "요소나 값(첫번째 부모와 일치하는) 추가 또는 생성하기", + "gn_replace": "요소나 값(첫번째 부모와 일치하는) 대체하기", + "gn_delete": "일치하는 모든 요소 제거하기", + "addXpathValue": "만약 모드가 삭제되지 않는다면 XML 조각이 될 수 있는 값", + "chooseASet": "1. 레코드 집합 선택", + "defineEdits": "2. 편집 정의", + "confirmAndSave": "3. 변경내용 적용", + "changesToApply": "적용할 변경내용:", + "resetChanges": "변경내용 초기화", + "createSetFromSearch": "레코드를 선택 또는 검색하거나", + "chooseAnExistingSet": "미리 정의된 집합 선택", + "chooseASetOfRecordHelp": "Select one or more records before defining which elements to update. Only records that you can edit are proposed.", + "defineEditsHelp": "Depending on the type of records selected the list of fields that you can update could change. When editing a mandatory field like title, the field is updated. When editing a field which can contain multiple values, the new value is added.", + "recordsInSelection": "선택된 레코드(들).", + "displaySelectionOnly": "선택한 것만 보기", + "aboutToUpdateTheFollowing": "다음의 레코드가 갱신됩니다:", + "resetSearchToDisplayAll": "선택한 레코드를 보려면 클릭하십시오. 모든 레코드를 보려면 초기화를 사용하십시오.", + "availableSet": "사용가능한 집합", + "noChangesToApply": "선택한 레코드를 갱신하려면 먼저 변경내용을 정의하십시오.", + "selectRecordsToEdit": "편집할 하나 이상의 레코드를 선택하십시오.", + "advancedBatchEditMode": "고급 모드 (XPath)", "cancel": "취소", "cancelChangesFromNow": "편집 세션 시작 {{timeAgo}} 이후 모든 변경 내용을 취소합니다.", "cancelling": "취소중 ...", - "chooseZeroOrMoreLayer": "Optionally, choose one or more layers from the service to be added in the distribution:", - "chooseZeroOrMoreLayerFromService": "Choose the layer published in this service corresponding to the selected record:", + "chooseZeroOrMoreLayer": "선택적으로, 배포에 추가될 하나 이상의 레이어를 서비스에서 선택하십시오:", + "chooseZeroOrMoreLayerFromService": "이 서비스에서 게시된 선택된 레코드와 일치하는 레이어를 선택하십시오.", "serviceContainsManyUrl": "Choose one URL in the {{count}} provided by", "searchAservice": "카탈로그에서 서비스 선택", "searchAnApplication": "카탈로그에서 응용프로그램 선택", "check": "확인", - "value": "Value", - "unit": "Unit", + "value": "값", + "unit": "단위", "conceptBroader": "is more general than", "conceptNarrower": "is more specific than", "conceptRelated": "is related to", @@ -77,7 +108,7 @@ "description": "설명", "directory": "폴더 경로", "directoryEntries": "항목", - "drawRectangle": "영역 그리기", + "drawRectangle": "범위 그리기", "error": "오류", "errors": "오류(들)", "serviceDetachedToCurrentRecord": "현재 레코드에서 서비스 분리", @@ -140,7 +171,7 @@ "oneLanguage": "하나", "oneLanguage-help": "선택기를 사용하여 편집할 언어를 선택", "onlinesrc": "온라인 자원", - "onlineChooseDocType": "Link a", + "onlineChooseDocType": "연결", "onlineDiscover": "자원 탐색", "onlineDiscoverThumbnail": "전체 또는 부분 자원 미리보기", "onlineDiscoverThumbnail-help": "자원을 설명하는 이미지", diff --git a/web-ui/src/main/resources/catalog/locales/ko-search.json b/web-ui/src/main/resources/catalog/locales/ko-search.json index b997a88e145..a1142c28a63 100644 --- a/web-ui/src/main/resources/catalog/locales/ko-search.json +++ b/web-ui/src/main/resources/catalog/locales/ko-search.json @@ -17,10 +17,10 @@ "archiveexcluded": "아카이브 제외", "archiveonly": "아카이브만", "What": "무엇을 ?", - "downloadAllIn": "Download all", - "downloadInCurrentMapExtent": "... or only in current view", - "downloadFeature": "Download", - "opacity": "Opacity", + "downloadAllIn": "모두 다운로드", + "downloadInCurrentMapExtent": "... 또는 현재 뷰에서만", + "downloadFeature": "다운로드", + "opacity": "불투명도", "When": "언제 ?", "Where": "어디에서 ?", "recordType": "레코드 유형 ?", @@ -62,6 +62,7 @@ "defaultView": "기본 보기", "full": "전체 보기", "securityConstraints": "보안 제한", + "otherConstraints": "기타 제한", "resourceConstraints": "자원 제한", "maintenanceAndUpdateFrequencies": "갱신 주기", "legalConstraints": "법적 제한", @@ -130,7 +131,7 @@ "chooseAserviceHelp": "카탈로그에 등록된 모슨 서비스가 여기에 표시됩니다.", "orTypeAServiceUrl": " {{type}} 서비스 URL 입력", "addAllLayersToMap": "{{number}}개의 레이어 모두 지도에 추가", - "downloadsAndResources": "다운로드와 연결", + "downloadsAndResources": "다운로드와 링크", "sourceCatalog": "제공", "tempExtent": "시간적 범위", "more": "크게", @@ -155,7 +156,14 @@ "revisionDate": "개정일", "tempExtentBegin": "기간", "updateFrequency": "갱신 주기", + "quality": "품질", "lineage": "연혁", + "identification": "식별", + "metadata": "메타데이터", + "mdLanguage": "메타데이터 언어", + "mdContact": "메타데이터 연락처", + "parentIdentifier": "부모 메타데이터 식별자", + "distributor": "배포자", "sourceDataset": "원본 데이터셋", "metadataInXML": "메타데이터 다운로드", "language": "언어", @@ -274,12 +282,12 @@ "Legend": "범례", "isValid": "유효성검증 상태", "Attribution": "속성", - "layerDelete": "Remove layer", + "layerDelete": "레이어 제거", "layerMetadata": "메타데이터", - "layerVisible": "Visible", + "layerVisible": "보이기", "layerMoveDown": "아래로 이동", "layerMoveUp": "위로 이동", - "layerExtentZoom": "Zoom to layer", + "layerExtentZoom": "레이어 범위로 확대", "maxExtentZoom": "최대 범위로 확대", "layerInfo": "레이어 정보", "Locations": "위치", @@ -290,7 +298,7 @@ "KMLfileURL": "KML 파일 URL 설정", "refineSearch": "검색 수정", "backToList": "리스트로 돌아가기", - "privilegesBatchAlert": "The privileges will be updated for all editable records in the selection. The privilege form is empty and does not reflect the selected records current privileges! Privileges are reset and replaced by the new one.", + "privilegesBatchAlert": "모든 선택된 레코드에 권한이 없데이트 됩니다. 권한 양식이 비어있으며 선택된 레코드에 현재 권한을 반영하지 않습니다! 권한이 초기화되고 새로운 권한으로 대체됩니다.", "permalink": "퍼머링크", "zoomto": "확대", "recordNotFound": "{{uuid}} 식별자의 레코드가 없거나 공유되지 않았습니다.", From 85fac7982987141f01991a68306b0f8a9350f1df Mon Sep 17 00:00:00 2001 From: Patrick Valsecchi Date: Tue, 22 Mar 2016 11:03:25 +0100 Subject: [PATCH 05/17] Add info?type=groupsAll to get all the groups Need to be able to get all the groups, regardless of the logged in user. Conflicts: docs/manuals --- .../org/fao/geonet/services/main/Info.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/org/fao/geonet/services/main/Info.java b/core/src/main/java/org/fao/geonet/services/main/Info.java index 69cc1eaa618..7a82eaa0edf 100644 --- a/core/src/main/java/org/fao/geonet/services/main/Info.java +++ b/core/src/main/java/org/fao/geonet/services/main/Info.java @@ -103,6 +103,7 @@ public class Info implements Service { public static final String OPERATIONS = "operations"; public static final String GROUPS_INCLUDING_SYSTEM_GROUPS = "groupsIncludingSystemGroups"; public static final String GROUPS = "groups"; + public static final String GROUPS_ALL = "groupsAll"; public static final String CATEGORIES = "categories"; public static final String USER_GROUP_ONLY = "userGroupOnly"; public static final String HARVESTER = "harvester"; @@ -216,11 +217,15 @@ public Element exec(Element inParams, ServiceContext context) throws Exception } else if (type.equals(GROUPS)) { String profile = params.getChildText("profile"); - Element r = getGroups(context, Profile.findProfileIgnoreCase(profile), false); + Element r = getGroups(context, Profile.findProfileIgnoreCase(profile), false, false); result.addContent(r); } else if (type.equals(GROUPS_INCLUDING_SYSTEM_GROUPS)) { - Element r = getGroups(context, null, true); + Element r = getGroups(context, null, true, false); + result.addContent(r); + + } else if (type.equals(GROUPS_ALL)) { + Element r = getGroups(context, null, false, true); result.addContent(r); } else if (type.equals(OPERATIONS)) { @@ -389,16 +394,18 @@ private Element getSchemas(SchemaManager schemaMan) throws Exception { * @param context * @param profile * @param includingSystemGroups if true, also returns the system groups ('GUEST', 'intranet', 'all') + * @param all if true returns all the groups, even those the user doesn't belongs to * @return * @throws java.sql.SQLException */ - private Element getGroups(ServiceContext context, Profile profile, boolean includingSystemGroups) throws SQLException { + private Element getGroups(ServiceContext context, Profile profile, boolean includingSystemGroups, + boolean all) throws SQLException { final GroupRepository groupRepository = context.getBean(GroupRepository.class); final UserGroupRepository userGroupRepository = context.getBean(UserGroupRepository.class); final Sort sort = SortUtils.createSort(Group_.id); UserSession session = context.getUserSession(); - if (!session.isAuthenticated()) { + if (all || !session.isAuthenticated()) { return groupRepository.findAllAsXml(Specifications.not(GroupSpecs.isReserved()), sort); } @@ -433,9 +440,9 @@ private Element getGroups(ServiceContext context, Profile profile, boolean inclu // filter all groups so only your groups (+ maybe system groups) are retained result = Lib.element.pruneChildren(groups, ids); - } + } return result; - } + } private Element getSources(ServiceContext context, SettingManager sm) throws SQLException { Element element = new Element("results"); From bc72d38812e00f0938b748a59be2e17dadaffd8c Mon Sep 17 00:00:00 2001 From: Florent gravin Date: Fri, 25 Mar 2016 15:50:30 +0100 Subject: [PATCH 06/17] Optimise wps directive parameters --- .../components/viewer/wps/WpsDirective.js | 23 +++++++++++-------- .../components/viewer/wps/WpsService.js | 4 +++- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/web-ui/src/main/resources/catalog/components/viewer/wps/WpsDirective.js b/web-ui/src/main/resources/catalog/components/viewer/wps/WpsDirective.js index aefb20ef52e..573d77639b0 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/wps/WpsDirective.js +++ b/web-ui/src/main/resources/catalog/components/viewer/wps/WpsDirective.js @@ -111,10 +111,8 @@ return { restrict: 'AE', scope: { - uri: '=', - processId: '=', - defaults: '=', - map: '=' + map: '=', + wpsLink: '=' }, templateUrl: function(elem, attrs) { return attrs.template || @@ -124,7 +122,12 @@ link: function(scope, element, attrs) { var defaults; - if (scope.defaults) { + var processId = attrs['processId'] || scope.wpsLink.name; + var uri = attrs['uri'] || scope.wpsLink.url; + var defaults = scope.$eval(attrs['defaults']) || + scope.wpsLink.applicationProfile; + + if (defaults) { defaults = parseKvpParams(scope.defaults); } @@ -136,7 +139,7 @@ mimeType: '' }; - gnWpsService.describeProcess(scope.uri, scope.processId) + gnWpsService.describeProcess(uri, processId) .then( function(response) { scope.describeState = 'succeeded'; @@ -317,8 +320,8 @@ scope.executeState = 'finished'; if (response.status.processSucceeded) { - var layers = gnWpsService.extractWmsLayerFromResponse( - response, scope.map); + gnWpsService.extractWmsLayerFromResponse( + response, scope.map, scope.wpsLink.layer); } } } @@ -329,8 +332,8 @@ scope.running = true; scope.executeState = 'sended'; gnWpsService.execute( - scope.uri, - scope.processId, + uri, + processId, inputs, scope.responseDocument ).then( diff --git a/web-ui/src/main/resources/catalog/components/viewer/wps/WpsService.js b/web-ui/src/main/resources/catalog/components/viewer/wps/WpsService.js index 1680d50505b..e1486e86f30 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/wps/WpsService.js +++ b/web-ui/src/main/resources/catalog/components/viewer/wps/WpsService.js @@ -261,8 +261,9 @@ * * @param {object} response excecuteProcess response object. * @param {ol.Map} map + * @param {ol.layer.Base} parentLayer */ - this.extractWmsLayerFromResponse = function(response, map) { + this.extractWmsLayerFromResponse = function(response, map, parentLayer) { try { var ref = response.processOutputs.output[0].reference; @@ -271,6 +272,7 @@ then(function(layers) { layers.map(function(l) { l.set('fromWps', true); + l.set('wpsParent', parentLayer); map.addLayer(l); }); }); From 8594aba7f2e337a671c910d83753ab9110b250ae Mon Sep 17 00:00:00 2001 From: Florent gravin Date: Fri, 25 Mar 2016 16:28:11 +0100 Subject: [PATCH 07/17] viewer: Add 'zoom to extent' for WMTS layer manage WGS84BoundingBox from WMTS getCapabilities --- .../components/common/map/mapService.js | 4 +++- .../components/common/ows/OWSService.js | 21 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/web-ui/src/main/resources/catalog/components/common/map/mapService.js b/web-ui/src/main/resources/catalog/components/common/map/mapService.js index 7be360d0937..84d665951ff 100644 --- a/web-ui/src/main/resources/catalog/components/common/map/mapService.js +++ b/web-ui/src/main/resources/catalog/components/common/map/mapService.js @@ -1336,7 +1336,9 @@ label: layer.Title, source: source, url: url, - urlCap: urlCap + urlCap: urlCap, + cextent: gnOwsCapabilities.getLayerExtentFromGetCap(map, + getCapLayer) }); ngeoDecorateLayer(olLayer); olLayer.displayInLayerManager = true; diff --git a/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js b/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js index 318eb295df9..4150d277134 100644 --- a/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js +++ b/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js @@ -171,15 +171,20 @@ //var olExtent = [ext[1],ext[0],ext[3],ext[2]]; // TODO fix using layer.BoundingBox[0].extent // when sextant fix his capabilities - if (angular.isArray(layer.EX_GeographicBoundingBox)) { - extent = - ol.extent.containsExtent( - proj.getWorldExtent(), - layer.EX_GeographicBoundingBox) ? - ol.proj.transformExtent(layer.EX_GeographicBoundingBox, - 'EPSG:4326', proj) : - proj.getExtent(); + var bboxProp; + ['EX_GeographicBoundingBox', 'WGS84BoundingBox'].forEach( + function(prop) { + if(angular.isArray(layer[prop])) { + bboxProp = layer[prop]; + } + }); + + if (bboxProp) { + extent = ol.extent.containsExtent( proj.getWorldExtent(), + bboxProp) ? + ol.proj.transformExtent(bboxProp, 'EPSG:4326', proj) : + proj.getExtent(); } else if (angular.isArray(layer.BoundingBox)) { for (var i = 0; i < layer.BoundingBox.length; i++) { var bbox = layer.BoundingBox[i]; From 119290c580b4d473bac68ad137345ec1132d92fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Arias=20de=20Reyna?= Date: Mon, 28 Mar 2016 14:05:14 +0200 Subject: [PATCH 08/17] Updating docs module --- docs/manuals | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manuals b/docs/manuals index b54e64c744a..dc0af90cd59 160000 --- a/docs/manuals +++ b/docs/manuals @@ -1 +1 @@ -Subproject commit b54e64c744a6e6258ec5fe70fd349f733c000416 +Subproject commit dc0af90cd59ccf057e3b66b7a77fe94cee6c0964 From 37d9bace16ffd94920847382de1904f60c6a72f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Tue, 29 Mar 2016 15:28:44 +0200 Subject: [PATCH 09/17] Removed dir in data dir instead of WEB-INF/data/removed #1427. --- .../java/org/fao/geonet/constants/Geonet.java | 3 ++- .../kernel/GeonetworkDataDirectory.java | 20 +++++++++++++++++++ .../java/org/fao/geonet/lib/ResourceLib.java | 15 +------------- .../fao/geonet/services/config/GetInfo.java | 2 +- .../catalog/js/admin/DashboardController.js | 2 +- .../resources/catalog/locales/en-admin.json | 4 +--- .../setup/sql/data/data-db-default.sql | 1 - .../sql/migrate/v310/migrate-default.sql | 2 ++ 8 files changed, 28 insertions(+), 21 deletions(-) diff --git a/core/src/main/java/org/fao/geonet/constants/Geonet.java b/core/src/main/java/org/fao/geonet/constants/Geonet.java index f94a0727b0a..48b42587e6a 100644 --- a/core/src/main/java/org/fao/geonet/constants/Geonet.java +++ b/core/src/main/java/org/fao/geonet/constants/Geonet.java @@ -490,8 +490,9 @@ public static final class Config { public static final String SCHEMA_MAPPINGS = "schemaMappings"; public static final String LICENSE_DIR = "licenseDir"; public static final String DATA_DIR = "dataDir"; + public static final String BACKUP_DIR = "backupDir"; public static final String SCHEMAPLUGINS_DIR= "schemaPluginsDir"; - public static final String CODELIST_DIR = "codeListDir"; + public static final String CODELIST_DIR = "codeListDir"; public static final String DIR = "dir"; public static final String SUMMARY_CONFIG = "summaryConfig"; public static final String LUCENE_CONFIG = "luceneConfig"; diff --git a/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java b/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java index b9edf462e36..29063786a56 100644 --- a/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java +++ b/core/src/main/java/org/fao/geonet/kernel/GeonetworkDataDirectory.java @@ -74,6 +74,7 @@ public class GeonetworkDataDirectory { private Path thesauriDir; private Path schemaPluginsDir; private Path metadataDataDir; + private Path backupDir; private Path metadataRevisionDir; private Path resourcesDir; private Path htmlCacheDir; @@ -319,6 +320,9 @@ private Path setDataDirectory(JeevesServlet jeevesServlet, String webappName, htmlCacheDir = setDir(jeevesServlet, webappName, handlerConfig, htmlCacheDir, ".htmlcache" + KEY_SUFFIX, Geonet.Config.HTMLCACHE_DIR, handlerConfig.getValue(Geonet.Config.RESOURCES_DIR), "htmlcache" ); + backupDir = setDir(jeevesServlet, webappName, handlerConfig, backupDir, + ".backup" + KEY_SUFFIX, Geonet.Config.BACKUP_DIR, "data", "backup" + ); handlerConfig.setValue(Geonet.Config.SYSTEM_DATA_DIR, this.systemDataDir.toString()); @@ -651,6 +655,22 @@ public Path resolveWebResource(String resourcePath) { return this.webappDir.resolve(resourcePath); } + /** + * Get directory use to backup metadata when removed. + * @return + */ + public Path getBackupDir() { + return backupDir; + } + + /** + * Set directory to use to backup metadata when removed. + * @param backupDir + */ + public void setBackupDir(Path backupDir) { + this.backupDir = backupDir; + } + /** * Event is raised when GeonetworkDataDirectory has finished being initialized. */ diff --git a/core/src/main/java/org/fao/geonet/lib/ResourceLib.java b/core/src/main/java/org/fao/geonet/lib/ResourceLib.java index 8be3f3ea84e..f6910cd5c39 100644 --- a/core/src/main/java/org/fao/geonet/lib/ResourceLib.java +++ b/core/src/main/java/org/fao/geonet/lib/ResourceLib.java @@ -156,20 +156,7 @@ public void checkEditPrivilege(ServiceContext context, String id) public Path getRemovedDir(ServiceContext context) { GeonetContext gc = (GeonetContext) context .getHandlerContext(Geonet.CONTEXT_NAME); - - String remDirPath = gc.getBean(SettingManager.class).getValue( - "system/removedMetadata/dir"); - - Path remDir; - if (remDirPath == null) { - remDir = context.getAppPath().resolve("WEB-INF/data/removed").toAbsolutePath().normalize(); - } else { - remDir = IO.toPath(remDirPath); - } - if (!remDir.isAbsolute()) - remDir = context.getAppPath().resolve(remDir.toString()); - - return remDir; + return gc.getBean(GeonetworkDataDirectory.class).getBackupDir(); } /** diff --git a/services/src/main/java/org/fao/geonet/services/config/GetInfo.java b/services/src/main/java/org/fao/geonet/services/config/GetInfo.java index afd2895cf78..d88b8434588 100644 --- a/services/src/main/java/org/fao/geonet/services/config/GetInfo.java +++ b/services/src/main/java/org/fao/geonet/services/config/GetInfo.java @@ -111,7 +111,7 @@ private void loadCatalogueInfo(final GeonetContext gc) { String[] props = {Geonet.Config.DATA_DIR, Geonet.Config.CODELIST_DIR, Geonet.Config.CONFIG_DIR, Geonet.Config.SCHEMAPLUGINS_DIR, Geonet.Config.SUBVERSION_PATH, Geonet.Config.RESOURCES_DIR, - Geonet.Config.FORMATTER_PATH}; + Geonet.Config.FORMATTER_PATH, Geonet.Config.BACKUP_DIR}; for (String prop : props) { catProperties.put("data." + prop, sc.getValue(prop)); diff --git a/web-ui/src/main/resources/catalog/js/admin/DashboardController.js b/web-ui/src/main/resources/catalog/js/admin/DashboardController.js index 508b58f3c19..56c076c3170 100644 --- a/web-ui/src/main/resources/catalog/js/admin/DashboardController.js +++ b/web-ui/src/main/resources/catalog/js/admin/DashboardController.js @@ -79,7 +79,7 @@ $scope.info = {}; - $http.get($scope.url + 'xml.config.info@json').success(function(data) { + $http.get($scope.url + 'xml.config.info?_content_type=json').success(function(data) { $scope.info = data; }).error(function(data) { // TODO diff --git a/web-ui/src/main/resources/catalog/locales/en-admin.json b/web-ui/src/main/resources/catalog/locales/en-admin.json index bee3fd2b744..96b59a56996 100644 --- a/web-ui/src/main/resources/catalog/locales/en-admin.json +++ b/web-ui/src/main/resources/catalog/locales/en-admin.json @@ -290,6 +290,7 @@ "data.dataDir": "Data directory: ", "data.formatterPath": "Formatter directory: ", "data.resources": "Resources folder: ", + "data.backupDir": "Backup folder: ", "data.schemaPluginsDir": "Standard folder: ", "data.subversionPath": "Subversion repository: ", "databaseStatus": "Database status", @@ -813,9 +814,6 @@ "system/proxy/username": "Proxy username", "system/proxy/ignorehostlist": "Ignore host list", "system/proxy/ignorehostlist-help": "To bypass specific hosts enter a specific IP address or host name such as www.mydomain.com or an address range using wildcards, such as 192.168.2.*. Use | to separate the different host values.", - "system/removedMetadata": "Removed metadata", - "system/removedMetadata/dir": "Directory", - "system/removedMetadata/dir-help": "Directory used to store metadata (in MEF format) when they are deleted.", "system/requestedLanguage": "Search & language", "system/requestedLanguage/ignorechars": "Characters to ignore when analyzing text", "system/requestedLanguage/ignored": "Ignore requested language for search results.", diff --git a/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql b/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql index 6e77f294bdb..10ef551a36d 100644 --- a/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql +++ b/web/src/main/webapp/WEB-INF/classes/setup/sql/data/data-db-default.sql @@ -579,7 +579,6 @@ INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/feedback/mailServer/password', '', 0, 643, 'y'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/feedback/mailServer/ssl', 'false', 2, 641, 'y'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/feedback/mailServer/tls', 'false', 2, 644, 'y'); -INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/removedMetadata/dir', 'WEB-INF/data/removed', 0, 710, 'y'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/selectionmanager/maxrecords', '1000', 1, 910, 'y'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/csw/enable', 'true', 2, 1210, 'y'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/csw/contactId', NULL, 0, 1220, 'y'); diff --git a/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v310/migrate-default.sql b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v310/migrate-default.sql index 59f4d51768b..6c66b8fa594 100644 --- a/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v310/migrate-default.sql +++ b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v310/migrate-default.sql @@ -3,3 +3,5 @@ UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion'; INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/feedback/mailServer/tls', 'false', 2, 644, 'y'); INSERT INTO Settings (name, value, datatype, position, internal) VALUES ('system/xlinkResolver/ignore', 'operatesOn,featureCatalogueCitation,Anchor,source', 0, 2312, 'n'); + +DELETE FROM Settings WHERE name = 'system/removedMetadata/dir'; From ba7bd16a983758e792861330c996f0fe0dac9121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Tue, 29 Mar 2016 15:41:42 +0200 Subject: [PATCH 10/17] Update doc submodule. --- docs/manuals | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manuals b/docs/manuals index dc0af90cd59..269c890dfc0 160000 --- a/docs/manuals +++ b/docs/manuals @@ -1 +1 @@ -Subproject commit dc0af90cd59ccf057e3b66b7a77fe94cee6c0964 +Subproject commit 269c890dfc091487576101871656253c4ebdb16d From d48067c3d84bd46b5b7c20328806e7894060daa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Tue, 29 Mar 2016 17:52:53 +0200 Subject: [PATCH 11/17] Move API to api package instead of services and rename to follow API guideline. Add /records/{{uuid}} service (#1508). --- .../iso-19139-basins-in-africa.mef | Bin 229939 -> 229948 bytes .../sample-data/iso-19139-physiographic.mef | Bin 117424 -> 117432 bytes .../fao/geonet/{services => }/api/API.java | 2 +- .../api/DOMElementMessageConverter.java | 2 +- .../api/GlobalExceptionController.java | 13 +- .../{services => }/api/SwaggerConfig.java | 4 +- .../api/directory/CollectResults.java | 2 +- .../api/directory/DirectoryApi.java | 4 +- .../api/directory/DirectoryUtils.java | 2 +- .../ResourceAlreadyExistException.java | 2 +- .../exception/ResourceNotFoundException.java | 2 +- .../records}/BatchEditsApi.java | 22 +-- .../fao/geonet/api/records/MetadataApi.java | 149 ++++++++++++++++++ .../attachments/AttachmentsActionsApi.java} | 18 +-- .../records/attachments/AttachmentsApi.java} | 20 +-- .../records/attachments}/FilesystemStore.java | 14 +- .../attachments}/FilesystemStoreResource.java | 2 +- .../MetadataResourceDatabaseMigration.java | 4 +- .../attachments}/ResourceLoggerStore.java | 2 +- .../records/attachments}/Sort.java | 2 +- .../records/attachments}/SortConverter.java | 2 +- .../records/attachments}/Store.java | 2 +- .../records}/model/BatchEditParameter.java | 2 +- .../metadata => api/records}/model/jaxb.index | 0 .../api/schema/StandardApi.java | 8 +- .../api/selections/SelectionsApi.java | 4 +- .../api/tools/i18n/LanguageUtils.java | 2 +- .../api/tools/i18n/TranslationApi.java | 4 +- .../api/tools/mail/MailApi.java | 6 +- .../api/user/AccountCreationApi.java | 6 +- .../{services => }/api/user/PasswordApi.java | 6 +- .../api/user/PasswordUpdateParameter.java | 2 +- .../geonet/{services => }/api/user/jaxb.index | 0 .../DefaultResourceDownloadHandler.java | 2 +- .../resources/config-spring-geonetwork.xml | 12 +- .../api/directory/DirectoryApiTest.java | 2 +- .../attachments}/FilesystemStoreTest.java | 29 ++-- ...MetadataResourceDatabaseMigrationTest.java | 4 +- .../metadata/BatchEditsServiceTest.java | 9 +- .../{services => }/api/directory/contact1.xml | 0 .../{services => }/api/directory/record.xml | 0 .../attachments}/record-with-old-links.xml | 0 .../components/common/ows/OWSService.js | 4 +- .../edit/onlinesrc/OnlineSrcDirective.js | 4 +- .../filestore/FileStoreDirective.js | 4 +- .../components/filestore/FileStoreService.js | 4 +- .../metadatamanager/EditorService.js | 14 +- .../catalog/js/admin/DashboardController.js | 11 +- .../directives/partials/mdactionmenu.html | 2 +- .../views/default/templates/recordView.html | 2 +- .../WEB-INF/config-db/database_migration.xml | 2 +- .../main/webapp/WEB-INF/spring-servlet.xml | 2 +- 52 files changed, 272 insertions(+), 145 deletions(-) rename services/src/main/java/org/fao/geonet/{services => }/api/API.java (97%) rename services/src/main/java/org/fao/geonet/{services => }/api/DOMElementMessageConverter.java (98%) rename services/src/main/java/org/fao/geonet/{services => }/api/GlobalExceptionController.java (93%) rename services/src/main/java/org/fao/geonet/{services => }/api/SwaggerConfig.java (98%) rename services/src/main/java/org/fao/geonet/{services => }/api/directory/CollectResults.java (98%) rename services/src/main/java/org/fao/geonet/{services => }/api/directory/DirectoryApi.java (99%) rename services/src/main/java/org/fao/geonet/{services => }/api/directory/DirectoryUtils.java (99%) rename services/src/main/java/org/fao/geonet/{services => }/api/exception/ResourceAlreadyExistException.java (96%) rename services/src/main/java/org/fao/geonet/{services => }/api/exception/ResourceNotFoundException.java (96%) rename services/src/main/java/org/fao/geonet/{services/api/metadata => api/records}/BatchEditsApi.java (92%) create mode 100644 services/src/main/java/org/fao/geonet/api/records/MetadataApi.java rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources/ResourceActionsApi.java => api/records/attachments/AttachmentsActionsApi.java} (90%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources/ResourcesApi.java => api/records/attachments/AttachmentsApi.java} (96%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/FilesystemStore.java (97%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/FilesystemStoreResource.java (98%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/MetadataResourceDatabaseMigration.java (97%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/ResourceLoggerStore.java (99%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/Sort.java (95%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/SortConverter.java (96%) rename services/src/main/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/Store.java (98%) rename services/src/main/java/org/fao/geonet/{services/api/metadata => api/records}/model/BatchEditParameter.java (97%) rename services/src/main/java/org/fao/geonet/{services/api/metadata => api/records}/model/jaxb.index (100%) rename services/src/main/java/org/fao/geonet/{services => }/api/schema/StandardApi.java (96%) rename services/src/main/java/org/fao/geonet/{services => }/api/selections/SelectionsApi.java (98%) rename services/src/main/java/org/fao/geonet/{services => }/api/tools/i18n/LanguageUtils.java (97%) rename services/src/main/java/org/fao/geonet/{services => }/api/tools/i18n/TranslationApi.java (99%) rename services/src/main/java/org/fao/geonet/{services => }/api/tools/mail/MailApi.java (97%) rename services/src/main/java/org/fao/geonet/{services => }/api/user/AccountCreationApi.java (97%) rename services/src/main/java/org/fao/geonet/{services => }/api/user/PasswordApi.java (98%) rename services/src/main/java/org/fao/geonet/{services => }/api/user/PasswordUpdateParameter.java (97%) rename services/src/main/java/org/fao/geonet/{services => }/api/user/jaxb.index (100%) rename services/src/test/java/org/fao/geonet/{services => }/api/directory/DirectoryApiTest.java (99%) rename services/src/test/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/FilesystemStoreTest.java (89%) rename services/src/test/java/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/MetadataResourceDatabaseMigrationTest.java (97%) rename services/src/test/resources/org/fao/geonet/{services => }/api/directory/contact1.xml (100%) rename services/src/test/resources/org/fao/geonet/{services => }/api/directory/record.xml (100%) rename services/src/test/resources/org/fao/geonet/{services/api/metadata/resources => api/records/attachments}/record-with-old-links.xml (100%) diff --git a/schemas/iso19139/src/main/plugin/iso19139/sample-data/iso-19139-basins-in-africa.mef b/schemas/iso19139/src/main/plugin/iso19139/sample-data/iso-19139-basins-in-africa.mef index 7b77f9601b99b4e4839f118c860eaccd003b94bb..0edaf93b34660ae7e7b0b7f652a7e20f439e6a50 100644 GIT binary patch delta 1657 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 CFYp@x delta 3175 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 N$^knDRLB7U0095m5R3o- diff --git a/services/src/main/java/org/fao/geonet/services/api/API.java b/services/src/main/java/org/fao/geonet/api/API.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/API.java rename to services/src/main/java/org/fao/geonet/api/API.java index 3d8549cb5c8..23872407b17 100644 --- a/services/src/main/java/org/fao/geonet/services/api/API.java +++ b/services/src/main/java/org/fao/geonet/api/API.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api; +package org.fao.geonet.api; /** * Created by francois on 08/01/16. diff --git a/services/src/main/java/org/fao/geonet/services/api/DOMElementMessageConverter.java b/services/src/main/java/org/fao/geonet/api/DOMElementMessageConverter.java similarity index 98% rename from services/src/main/java/org/fao/geonet/services/api/DOMElementMessageConverter.java rename to services/src/main/java/org/fao/geonet/api/DOMElementMessageConverter.java index d0f39068934..eafd597ceb9 100644 --- a/services/src/main/java/org/fao/geonet/services/api/DOMElementMessageConverter.java +++ b/services/src/main/java/org/fao/geonet/api/DOMElementMessageConverter.java @@ -20,7 +20,7 @@ //=== Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, //=== Rome - Italy. email: geonetwork@osgeo.org //============================================================================== -package org.fao.geonet.services.api; +package org.fao.geonet.api; import org.fao.geonet.utils.TransformerFactoryFactory; import org.jdom.Element; diff --git a/services/src/main/java/org/fao/geonet/services/api/GlobalExceptionController.java b/services/src/main/java/org/fao/geonet/api/GlobalExceptionController.java similarity index 93% rename from services/src/main/java/org/fao/geonet/services/api/GlobalExceptionController.java rename to services/src/main/java/org/fao/geonet/api/GlobalExceptionController.java index ee08b6c340c..7e1dbfa4358 100644 --- a/services/src/main/java/org/fao/geonet/services/api/GlobalExceptionController.java +++ b/services/src/main/java/org/fao/geonet/api/GlobalExceptionController.java @@ -21,11 +21,11 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api; +package org.fao.geonet.api; import org.fao.geonet.exceptions.UserNotFoundEx; -import org.fao.geonet.services.api.exception.ResourceAlreadyExistException; -import org.fao.geonet.services.api.exception.ResourceNotFoundException; +import org.fao.geonet.api.exception.ResourceAlreadyExistException; +import org.fao.geonet.api.exception.ResourceNotFoundException; import org.springframework.http.HttpStatus; import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.UnsatisfiedServletRequestParameterException; @@ -52,7 +52,6 @@ public class GlobalExceptionController { SecurityException.class }) public Object unauthorizedHandler(final Exception exception) { - exception.printStackTrace(); return new LinkedHashMap() {{ put("code", "unauthorized"); put("message", exception.getClass().getSimpleName()); @@ -66,7 +65,6 @@ public Object unauthorizedHandler(final Exception exception) { MaxUploadSizeExceededException.class }) public Object maxFileExceededHandler(final Exception exception) { - exception.printStackTrace(); return new LinkedHashMap() {{ put("code", "max_file_exceeded"); put("message", exception.getClass().getSimpleName()); @@ -79,7 +77,6 @@ public Object maxFileExceededHandler(final Exception exception) { @ExceptionHandler({ FileNotFoundException.class}) public Object fileNotFoundHandler(final Exception exception) { - exception.printStackTrace(); return new LinkedHashMap() {{ put("code", "file_not_found"); put("message", exception.getClass().getSimpleName()); @@ -88,7 +85,7 @@ public Object fileNotFoundHandler(final Exception exception) { } @ResponseBody - @ResponseStatus(HttpStatus.PRECONDITION_FAILED) + @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({ UserNotFoundEx.class, ResourceNotFoundException.class}) @@ -101,7 +98,7 @@ public Object resourceNotFoundHandler(final Exception exception) { } @ResponseBody - @ResponseStatus(HttpStatus.PRECONDITION_FAILED) + @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({ ResourceAlreadyExistException.class}) public Object resourceAlreadyExistHandler(final Exception exception) { diff --git a/services/src/main/java/org/fao/geonet/services/api/SwaggerConfig.java b/services/src/main/java/org/fao/geonet/api/SwaggerConfig.java similarity index 98% rename from services/src/main/java/org/fao/geonet/services/api/SwaggerConfig.java rename to services/src/main/java/org/fao/geonet/api/SwaggerConfig.java index 1c6a3a41feb..175d78187a9 100644 --- a/services/src/main/java/org/fao/geonet/services/api/SwaggerConfig.java +++ b/services/src/main/java/org/fao/geonet/api/SwaggerConfig.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api; +package org.fao.geonet.api; import com.fasterxml.classmate.TypeResolver; import com.google.common.base.Predicate; @@ -63,7 +63,7 @@ @EnableWebMvc @Configuration @Service -@ComponentScan(basePackages = {"org.fao.geonet.services.api"}) +@ComponentScan(basePackages = {"org.fao.geonet.api"}) @EnableSwagger2 //Loads the spring beans required by the framework public class SwaggerConfig { @Autowired diff --git a/services/src/main/java/org/fao/geonet/services/api/directory/CollectResults.java b/services/src/main/java/org/fao/geonet/api/directory/CollectResults.java similarity index 98% rename from services/src/main/java/org/fao/geonet/services/api/directory/CollectResults.java rename to services/src/main/java/org/fao/geonet/api/directory/CollectResults.java index d2edcaa839a..01f75b67f80 100644 --- a/services/src/main/java/org/fao/geonet/services/api/directory/CollectResults.java +++ b/services/src/main/java/org/fao/geonet/api/directory/CollectResults.java @@ -20,7 +20,7 @@ //=== Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, //=== Rome - Italy. email: geonetwork@osgeo.org //============================================================================== -package org.fao.geonet.services.api.directory; +package org.fao.geonet.api.directory; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; diff --git a/services/src/main/java/org/fao/geonet/services/api/directory/DirectoryApi.java b/services/src/main/java/org/fao/geonet/api/directory/DirectoryApi.java similarity index 99% rename from services/src/main/java/org/fao/geonet/services/api/directory/DirectoryApi.java rename to services/src/main/java/org/fao/geonet/api/directory/DirectoryApi.java index ac212b8a772..2f10ccfe566 100644 --- a/services/src/main/java/org/fao/geonet/services/api/directory/DirectoryApi.java +++ b/services/src/main/java/org/fao/geonet/api/directory/DirectoryApi.java @@ -21,7 +21,7 @@ //=== Rome - Italy. email: geonetwork@osgeo.org //============================================================================== -package org.fao.geonet.services.api.directory; +package org.fao.geonet.api.directory; import com.google.common.collect.Sets; import io.swagger.annotations.Api; @@ -36,7 +36,7 @@ import org.fao.geonet.kernel.SelectionManager; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.repository.MetadataRepository; -import org.fao.geonet.services.api.API; +import org.fao.geonet.api.API; import org.fao.geonet.services.metadata.BatchOpsMetadataReindexer; import org.jdom.Element; import org.springframework.http.*; diff --git a/services/src/main/java/org/fao/geonet/services/api/directory/DirectoryUtils.java b/services/src/main/java/org/fao/geonet/api/directory/DirectoryUtils.java similarity index 99% rename from services/src/main/java/org/fao/geonet/services/api/directory/DirectoryUtils.java rename to services/src/main/java/org/fao/geonet/api/directory/DirectoryUtils.java index a41b5f3ffd1..f49a63ced99 100644 --- a/services/src/main/java/org/fao/geonet/services/api/directory/DirectoryUtils.java +++ b/services/src/main/java/org/fao/geonet/api/directory/DirectoryUtils.java @@ -1,4 +1,4 @@ -package org.fao.geonet.services.api.directory; +package org.fao.geonet.api.directory; import com.google.common.collect.Table; import jeeves.constants.Jeeves; diff --git a/services/src/main/java/org/fao/geonet/services/api/exception/ResourceAlreadyExistException.java b/services/src/main/java/org/fao/geonet/api/exception/ResourceAlreadyExistException.java similarity index 96% rename from services/src/main/java/org/fao/geonet/services/api/exception/ResourceAlreadyExistException.java rename to services/src/main/java/org/fao/geonet/api/exception/ResourceAlreadyExistException.java index b383b32ec71..b57097bf86e 100644 --- a/services/src/main/java/org/fao/geonet/services/api/exception/ResourceAlreadyExistException.java +++ b/services/src/main/java/org/fao/geonet/api/exception/ResourceAlreadyExistException.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.exception; +package org.fao.geonet.api.exception; public class ResourceAlreadyExistException extends Exception { public ResourceAlreadyExistException() { diff --git a/services/src/main/java/org/fao/geonet/services/api/exception/ResourceNotFoundException.java b/services/src/main/java/org/fao/geonet/api/exception/ResourceNotFoundException.java similarity index 96% rename from services/src/main/java/org/fao/geonet/services/api/exception/ResourceNotFoundException.java rename to services/src/main/java/org/fao/geonet/api/exception/ResourceNotFoundException.java index 351a13afe01..27553d0f233 100644 --- a/services/src/main/java/org/fao/geonet/services/api/exception/ResourceNotFoundException.java +++ b/services/src/main/java/org/fao/geonet/api/exception/ResourceNotFoundException.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.exception; +package org.fao.geonet.api.exception; public class ResourceNotFoundException extends Exception { public ResourceNotFoundException() { diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/BatchEditsApi.java b/services/src/main/java/org/fao/geonet/api/records/BatchEditsApi.java similarity index 92% rename from services/src/main/java/org/fao/geonet/services/api/metadata/BatchEditsApi.java rename to services/src/main/java/org/fao/geonet/api/records/BatchEditsApi.java index bd730946d67..8137f3dba66 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/BatchEditsApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/BatchEditsApi.java @@ -20,27 +20,23 @@ * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.metadata; +package org.fao.geonet.api.records; import com.google.common.collect.Sets; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; -import jeeves.server.UserSession; import jeeves.server.context.ServiceContext; import jeeves.services.ReadWriteController; -import org.apache.commons.lang.StringUtils; import org.fao.geonet.ApplicationContextHolder; +import org.fao.geonet.api.API; +import org.fao.geonet.api.records.model.BatchEditParameter; import org.fao.geonet.domain.Metadata; import org.fao.geonet.domain.Profile; import org.fao.geonet.kernel.*; import org.fao.geonet.kernel.schema.MetadataSchema; -import org.fao.geonet.kernel.schema.editorconfig.BatchEditing; -import org.fao.geonet.kernel.schema.editorconfig.Editor; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.repository.MetadataRepository; -import org.fao.geonet.services.api.API; -import org.fao.geonet.services.api.metadata.model.BatchEditParameter; import org.fao.geonet.services.metadata.XslProcessingReport; import org.jdom.Element; import org.springframework.beans.factory.annotation.Autowired; @@ -49,16 +45,12 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; -import java.nio.file.Path; -import java.util.*; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Set; @RequestMapping(value = { "/api/records/actions", diff --git a/services/src/main/java/org/fao/geonet/api/records/MetadataApi.java b/services/src/main/java/org/fao/geonet/api/records/MetadataApi.java new file mode 100644 index 00000000000..c28e6cc90f6 --- /dev/null +++ b/services/src/main/java/org/fao/geonet/api/records/MetadataApi.java @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2001-2016 Food and Agriculture Organization of the + * United Nations (FAO-UN), United Nations World Food Programme (WFP) + * and United Nations Environment Programme (UNEP) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, + * Rome - Italy. email: geonetwork@osgeo.org + */ + +package org.fao.geonet.api.records; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import jeeves.server.context.ServiceContext; +import jeeves.services.ReadWriteController; +import org.fao.geonet.api.exception.ResourceNotFoundException; +import org.fao.geonet.domain.Metadata; +import org.fao.geonet.domain.ReservedOperation; +import org.fao.geonet.exceptions.MetadataNotFoundEx; +import org.fao.geonet.kernel.DataManager; +import org.fao.geonet.kernel.SchemaManager; +import org.fao.geonet.lib.Lib; +import org.fao.geonet.repository.MetadataRepository; +import org.fao.geonet.api.API; +import org.jdom.Attribute; +import org.jdom.Element; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; + +@RequestMapping(value = { + "/api/records", + "/api/" + API.VERSION_0_1 + + "/records" +}) +@Api(value = "records", + tags = "records", + description = "Metadata record operations") +@Controller("records") +@ReadWriteController +public class MetadataApi implements ApplicationContextAware { + private ApplicationContext context; + + @Autowired + SchemaManager _schemaManager; + + + public synchronized void setApplicationContext(ApplicationContext context) { + this.context = context; + } + + + @ApiOperation(value = "Get a metadata record", + nickname = "get") + @RequestMapping(value = "/{metadataUuid}", + method = RequestMethod.GET, + produces = { + MediaType.APPLICATION_XML_VALUE + }) + public + @ResponseBody + Element serviceSpecificExec( + @ApiParam(value = "Record UUID.", + required = true) + @PathVariable + String metadataUuid, + @ApiParam(value = "Add XSD schema location based on standard configuration", + required = false) + @RequestParam(required = false, defaultValue = "true") + boolean addSchemaLocation, + @ApiParam(value = "Increase record popularity", + required = false) + @RequestParam(required = false, defaultValue = "true") + boolean increasePopularity, + @ApiParam(hidden = true) + HttpServletResponse response) + throws Exception { + ServiceContext context = ServiceContext.get(); + DataManager dataManager = context.getBean(DataManager.class); + MetadataRepository metadataRepository = context.getBean(MetadataRepository.class); + Metadata metadata = metadataRepository.findOneByUuid(metadataUuid); + if (metadata == null) { + // TODO: i18n + throw new ResourceNotFoundException(String.format( + "Metadata with UUID '%s' not found in this catalog.", + metadataUuid + )); + } + try { + Lib.resource.checkPrivilege(context, + metadata.getId() + "", + ReservedOperation.view); + } catch (Exception e) { + // TODO: i18n + // TODO: Report exception in JSON format + throw new SecurityException(String.format( + "Metadata with UUID '%s' not shared with you.", + metadataUuid + )); + } + + Element xml = metadata.getXmlData(false); + if (addSchemaLocation) { + Attribute schemaLocAtt = _schemaManager.getSchemaLocation( + metadata.getDataInfo().getSchemaId(), context); + + if (schemaLocAtt != null) { + if (xml.getAttribute( + schemaLocAtt.getName(), + schemaLocAtt.getNamespace()) == null) { + xml.setAttribute(schemaLocAtt); + // make sure namespace declaration for schemalocation is present - + // remove it first (does nothing if not there) then add it + xml.removeNamespaceDeclaration(schemaLocAtt.getNamespace()); + xml.addNamespaceDeclaration(schemaLocAtt.getNamespace()); + } + } + } + if (increasePopularity) { + dataManager.increasePopularity(context, metadata.getId() + ""); + } + + response.setHeader("Content-Disposition", String.format( + "inline; filename=\"%s.xml\"", + metadata.getUuid() + )); + return xml; + } +} \ No newline at end of file diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourceActionsApi.java b/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsActionsApi.java similarity index 90% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourceActionsApi.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsActionsApi.java index dbeb56df8fa..e39dfe9b46c 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourceActionsApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsActionsApi.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import io.swagger.annotations.*; import jeeves.server.context.ServiceContext; @@ -33,7 +33,7 @@ import org.fao.geonet.kernel.DataManager; import org.fao.geonet.kernel.thumbnail.ThumbnailMaker; import org.fao.geonet.lib.Lib; -import org.fao.geonet.services.api.API; +import org.fao.geonet.api.API; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Service; @@ -46,13 +46,13 @@ @EnableWebMvc @Controller @Service -@Api(value = "metadata/resources/actions", - tags= "metadata/resources/actions", - description = "Generate metadata resource from various sources") -public class ResourceActionsApi { - public ResourceActionsApi() { +@Api(value = "records", + tags= "records", + description = "Metadata record operations") +public class AttachmentsActionsApi { + public AttachmentsActionsApi() { } - public ResourceActionsApi(Store store) { + public AttachmentsActionsApi(Store store) { this.store = store; } @@ -87,7 +87,7 @@ public void init() { // @ApiResponse(code = 500, message = "Internal server error")} // ) @RequestMapping(value = "/api/" + API.VERSION_0_1 + - "/metadata/{metadataUuid}/resources/actions/save-thumbnail", + "/records/{metadataUuid}/attachments/actions/save-thumbnail", method = RequestMethod.PUT) @ResponseBody public MetadataResource saveThumbnail( diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourcesApi.java b/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsApi.java similarity index 96% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourcesApi.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsApi.java index 633d82fd051..bd4ba78d437 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourcesApi.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/AttachmentsApi.java @@ -23,14 +23,14 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import io.swagger.annotations.*; import org.fao.geonet.ApplicationContextHolder; import org.fao.geonet.domain.MetadataResource; import org.fao.geonet.domain.MetadataResourceVisibility; import org.fao.geonet.domain.MetadataResourceVisibilityConverter; -import org.fao.geonet.services.api.API; +import org.fao.geonet.api.API; import org.springframework.context.ApplicationContext; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -59,17 +59,17 @@ @EnableWebMvc @Service @RequestMapping(value = { - "/api/metadata/{metadataUuid}/resources", + "/api/records/{metadataUuid}/attachments", "/api/" + API.VERSION_0_1 + - "/metadata/{metadataUuid}/resources" + "/records/{metadataUuid}/attachments" }) -@Api(value = "metadata/resources", - tags= "metadata/resources", - description = "Metadata resource related operations") -public class ResourcesApi { - public ResourcesApi() { +@Api(value = "records", + tags= "records", + description = "Metadata record operations") +public class AttachmentsApi { + public AttachmentsApi() { } - public ResourcesApi(Store store) { + public AttachmentsApi(Store store) { this.store = store; } diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/FilesystemStore.java b/services/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/FilesystemStore.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java index 430e836c3cf..d21ad89425e 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/FilesystemStore.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import jeeves.server.context.ServiceContext; import org.apache.commons.io.FileUtils; @@ -36,8 +36,8 @@ import org.fao.geonet.kernel.GeonetworkDataDirectory; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.lib.Lib; -import org.fao.geonet.services.api.exception.ResourceAlreadyExistException; -import org.fao.geonet.services.api.exception.ResourceNotFoundException; +import org.fao.geonet.api.exception.ResourceAlreadyExistException; +import org.fao.geonet.api.exception.ResourceNotFoundException; import org.fao.geonet.utils.IO; import org.springframework.context.ApplicationContext; import org.springframework.web.multipart.MultipartFile; @@ -122,8 +122,8 @@ public List getResources(String metadataUuid, Files.newDirectoryStream(resourceTypeDir, filter)) { for (Path path : directoryStream) { MetadataResource resource = new FilesystemStoreResource( - metadataUuid + "/resources/" + path.getFileName(), - settingManager.getNodeURL() + "api/metadata/", + metadataUuid + "/attachments/" + path.getFileName(), + settingManager.getNodeURL() + "api/records/", visibility, Files.size(path)); resourceList.add(resource); @@ -197,8 +197,8 @@ private MetadataResource getResourceDescription(String metadataUuid, MetadataRes e.printStackTrace(); } return new FilesystemStoreResource( - metadataUuid + "/resources/" + filePath.getFileName(), - settingManager.getNodeURL() + "api/metadata/", + metadataUuid + "/attachments/" + filePath.getFileName(), + settingManager.getNodeURL() + "api/records/", visibility, fileSize); } diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/FilesystemStoreResource.java b/services/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStoreResource.java similarity index 98% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/FilesystemStoreResource.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStoreResource.java index 59df60fae0c..decff354eec 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/FilesystemStoreResource.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStoreResource.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import org.fao.geonet.domain.MetadataResourceVisibility; diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/MetadataResourceDatabaseMigration.java b/services/src/main/java/org/fao/geonet/api/records/attachments/MetadataResourceDatabaseMigration.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/MetadataResourceDatabaseMigration.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/MetadataResourceDatabaseMigration.java index 2b5e7532c67..80c7747bc75 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/MetadataResourceDatabaseMigration.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/MetadataResourceDatabaseMigration.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; @@ -135,7 +135,7 @@ public static boolean updateMetadataResourcesLink(@Nonnull Element xml, Matcher regexMatcher = pattern.matcher(url); element.setText( regexMatcher.replaceAll( - "$1/$2/api/metadata/" + uuid + "/resources/$4")); + "$1/$2/api/records/" + uuid + "/attachments/$4")); changed = true; } } else { diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourceLoggerStore.java b/services/src/main/java/org/fao/geonet/api/records/attachments/ResourceLoggerStore.java similarity index 99% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourceLoggerStore.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/ResourceLoggerStore.java index 657144dea71..96109b58b99 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/ResourceLoggerStore.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/ResourceLoggerStore.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import jeeves.server.context.ServiceContext; import org.fao.geonet.constants.Geonet; diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/Sort.java b/services/src/main/java/org/fao/geonet/api/records/attachments/Sort.java similarity index 95% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/Sort.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/Sort.java index 6ed656fbf25..35932b6a9c6 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/Sort.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/Sort.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; public enum Sort { type, name diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/SortConverter.java b/services/src/main/java/org/fao/geonet/api/records/attachments/SortConverter.java similarity index 96% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/SortConverter.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/SortConverter.java index 0a913510208..f3bd6d88770 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/SortConverter.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/SortConverter.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import java.beans.PropertyEditorSupport; diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/Store.java b/services/src/main/java/org/fao/geonet/api/records/attachments/Store.java similarity index 98% rename from services/src/main/java/org/fao/geonet/services/api/metadata/resources/Store.java rename to services/src/main/java/org/fao/geonet/api/records/attachments/Store.java index 234dcf13c55..7169993d00b 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/resources/Store.java +++ b/services/src/main/java/org/fao/geonet/api/records/attachments/Store.java @@ -23,7 +23,7 @@ * ============================================================================== */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import org.fao.geonet.domain.MetadataResource; import org.fao.geonet.domain.MetadataResourceVisibility; diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/model/BatchEditParameter.java b/services/src/main/java/org/fao/geonet/api/records/model/BatchEditParameter.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/metadata/model/BatchEditParameter.java rename to services/src/main/java/org/fao/geonet/api/records/model/BatchEditParameter.java index af530d379e1..7de7ef28cff 100644 --- a/services/src/main/java/org/fao/geonet/services/api/metadata/model/BatchEditParameter.java +++ b/services/src/main/java/org/fao/geonet/api/records/model/BatchEditParameter.java @@ -20,7 +20,7 @@ * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.metadata.model; +package org.fao.geonet.api.records.model; import org.apache.commons.lang.StringUtils; diff --git a/services/src/main/java/org/fao/geonet/services/api/metadata/model/jaxb.index b/services/src/main/java/org/fao/geonet/api/records/model/jaxb.index similarity index 100% rename from services/src/main/java/org/fao/geonet/services/api/metadata/model/jaxb.index rename to services/src/main/java/org/fao/geonet/api/records/model/jaxb.index diff --git a/services/src/main/java/org/fao/geonet/services/api/schema/StandardApi.java b/services/src/main/java/org/fao/geonet/api/schema/StandardApi.java similarity index 96% rename from services/src/main/java/org/fao/geonet/services/api/schema/StandardApi.java rename to services/src/main/java/org/fao/geonet/api/schema/StandardApi.java index 6f4de3a3eb9..644e43639b3 100644 --- a/services/src/main/java/org/fao/geonet/services/api/schema/StandardApi.java +++ b/services/src/main/java/org/fao/geonet/api/schema/StandardApi.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.schema; +package org.fao.geonet.api.schema; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -31,9 +31,9 @@ import org.fao.geonet.kernel.schema.MetadataSchema; import org.fao.geonet.kernel.schema.editorconfig.BatchEditing; import org.fao.geonet.kernel.schema.editorconfig.Editor; -import org.fao.geonet.services.api.API; -import org.fao.geonet.services.api.exception.ResourceNotFoundException; -import org.fao.geonet.services.api.tools.i18n.LanguageUtils; +import org.fao.geonet.api.API; +import org.fao.geonet.api.exception.ResourceNotFoundException; +import org.fao.geonet.api.tools.i18n.LanguageUtils; import org.fao.geonet.services.schema.Info; import org.jdom.Element; import org.springframework.beans.factory.annotation.Autowired; diff --git a/services/src/main/java/org/fao/geonet/services/api/selections/SelectionsApi.java b/services/src/main/java/org/fao/geonet/api/selections/SelectionsApi.java similarity index 98% rename from services/src/main/java/org/fao/geonet/services/api/selections/SelectionsApi.java rename to services/src/main/java/org/fao/geonet/api/selections/SelectionsApi.java index 7cbb9d32d41..109ed9b0cb8 100644 --- a/services/src/main/java/org/fao/geonet/services/api/selections/SelectionsApi.java +++ b/services/src/main/java/org/fao/geonet/api/selections/SelectionsApi.java @@ -20,14 +20,14 @@ * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2, * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.selections; +package org.fao.geonet.api.selections; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import jeeves.server.context.ServiceContext; import org.fao.geonet.kernel.SelectionManager; -import org.fao.geonet.services.api.API; +import org.fao.geonet.api.API; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; diff --git a/services/src/main/java/org/fao/geonet/services/api/tools/i18n/LanguageUtils.java b/services/src/main/java/org/fao/geonet/api/tools/i18n/LanguageUtils.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/tools/i18n/LanguageUtils.java rename to services/src/main/java/org/fao/geonet/api/tools/i18n/LanguageUtils.java index e826096ed9f..2969bfa6404 100644 --- a/services/src/main/java/org/fao/geonet/services/api/tools/i18n/LanguageUtils.java +++ b/services/src/main/java/org/fao/geonet/api/tools/i18n/LanguageUtils.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.tools.i18n; +package org.fao.geonet.api.tools.i18n; import java.util.*; diff --git a/services/src/main/java/org/fao/geonet/services/api/tools/i18n/TranslationApi.java b/services/src/main/java/org/fao/geonet/api/tools/i18n/TranslationApi.java similarity index 99% rename from services/src/main/java/org/fao/geonet/services/api/tools/i18n/TranslationApi.java rename to services/src/main/java/org/fao/geonet/api/tools/i18n/TranslationApi.java index 000eb4efc46..13641a04efa 100644 --- a/services/src/main/java/org/fao/geonet/services/api/tools/i18n/TranslationApi.java +++ b/services/src/main/java/org/fao/geonet/api/tools/i18n/TranslationApi.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.tools.i18n; +package org.fao.geonet.api.tools.i18n; //============================================================================== //=== Copyright (C) 2001-2015 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) @@ -51,7 +51,7 @@ import org.fao.geonet.domain.*; import org.fao.geonet.kernel.SchemaManager; import org.fao.geonet.repository.*; -import org.fao.geonet.services.api.API; +import org.fao.geonet.api.API; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; diff --git a/services/src/main/java/org/fao/geonet/services/api/tools/mail/MailApi.java b/services/src/main/java/org/fao/geonet/api/tools/mail/MailApi.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/tools/mail/MailApi.java rename to services/src/main/java/org/fao/geonet/api/tools/mail/MailApi.java index b5da6afa979..10fb6aa8cc2 100644 --- a/services/src/main/java/org/fao/geonet/services/api/tools/mail/MailApi.java +++ b/services/src/main/java/org/fao/geonet/api/tools/mail/MailApi.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.tools.mail; +package org.fao.geonet.api.tools.mail; //============================================================================== //=== Copyright (C) 2001-2015 Food and Agriculture Organization of the //=== United Nations (FAO-UN), United Nations World Food Programme (WFP) @@ -54,8 +54,8 @@ import org.fao.geonet.kernel.SchemaManager; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.repository.*; -import org.fao.geonet.services.api.API; -import org.fao.geonet.services.api.tools.i18n.LanguageUtils; +import org.fao.geonet.api.API; +import org.fao.geonet.api.tools.i18n.LanguageUtils; import org.fao.geonet.util.MailUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; diff --git a/services/src/main/java/org/fao/geonet/services/api/user/AccountCreationApi.java b/services/src/main/java/org/fao/geonet/api/user/AccountCreationApi.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/user/AccountCreationApi.java rename to services/src/main/java/org/fao/geonet/api/user/AccountCreationApi.java index 2947873b312..314803d7916 100644 --- a/services/src/main/java/org/fao/geonet/services/api/user/AccountCreationApi.java +++ b/services/src/main/java/org/fao/geonet/api/user/AccountCreationApi.java @@ -21,7 +21,7 @@ //=== Rome - Italy. email: geonetwork@osgeo.org //============================================================================== -package org.fao.geonet.services.api.user; +package org.fao.geonet.api.user; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -32,8 +32,8 @@ import org.fao.geonet.repository.GroupRepository; import org.fao.geonet.repository.UserGroupRepository; import org.fao.geonet.repository.UserRepository; -import org.fao.geonet.services.api.API; -import org.fao.geonet.services.api.tools.i18n.LanguageUtils; +import org.fao.geonet.api.API; +import org.fao.geonet.api.tools.i18n.LanguageUtils; import org.fao.geonet.util.MailUtil; import org.fao.geonet.util.PasswordUtil; import org.springframework.beans.factory.annotation.Autowired; diff --git a/services/src/main/java/org/fao/geonet/services/api/user/PasswordApi.java b/services/src/main/java/org/fao/geonet/api/user/PasswordApi.java similarity index 98% rename from services/src/main/java/org/fao/geonet/services/api/user/PasswordApi.java rename to services/src/main/java/org/fao/geonet/api/user/PasswordApi.java index 543cb6dc080..de44035c188 100644 --- a/services/src/main/java/org/fao/geonet/services/api/user/PasswordApi.java +++ b/services/src/main/java/org/fao/geonet/api/user/PasswordApi.java @@ -21,7 +21,7 @@ //=== Rome - Italy. email: geonetwork@osgeo.org //============================================================================== -package org.fao.geonet.services.api.user; +package org.fao.geonet.api.user; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -32,8 +32,8 @@ import org.fao.geonet.kernel.security.ldap.LDAPConstants; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.repository.UserRepository; -import org.fao.geonet.services.api.API; -import org.fao.geonet.services.api.tools.i18n.LanguageUtils; +import org.fao.geonet.api.API; +import org.fao.geonet.api.tools.i18n.LanguageUtils; import org.fao.geonet.util.MailUtil; import org.fao.geonet.util.PasswordUtil; import org.springframework.beans.factory.annotation.Autowired; diff --git a/services/src/main/java/org/fao/geonet/services/api/user/PasswordUpdateParameter.java b/services/src/main/java/org/fao/geonet/api/user/PasswordUpdateParameter.java similarity index 97% rename from services/src/main/java/org/fao/geonet/services/api/user/PasswordUpdateParameter.java rename to services/src/main/java/org/fao/geonet/api/user/PasswordUpdateParameter.java index da4addae622..6f1a1b0b103 100644 --- a/services/src/main/java/org/fao/geonet/services/api/user/PasswordUpdateParameter.java +++ b/services/src/main/java/org/fao/geonet/api/user/PasswordUpdateParameter.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.user; +package org.fao.geonet.api.user; /** * Created by francois on 09/02/16. diff --git a/services/src/main/java/org/fao/geonet/services/api/user/jaxb.index b/services/src/main/java/org/fao/geonet/api/user/jaxb.index similarity index 100% rename from services/src/main/java/org/fao/geonet/services/api/user/jaxb.index rename to services/src/main/java/org/fao/geonet/api/user/jaxb.index diff --git a/services/src/main/java/org/fao/geonet/services/resources/handlers/DefaultResourceDownloadHandler.java b/services/src/main/java/org/fao/geonet/services/resources/handlers/DefaultResourceDownloadHandler.java index 3fae7ffdba8..7beaa1eeae8 100644 --- a/services/src/main/java/org/fao/geonet/services/resources/handlers/DefaultResourceDownloadHandler.java +++ b/services/src/main/java/org/fao/geonet/services/resources/handlers/DefaultResourceDownloadHandler.java @@ -46,7 +46,7 @@ import java.nio.file.Path; import java.util.List; -import static org.fao.geonet.services.api.metadata.resources.ResourcesApi.getFileContentType; +import static org.fao.geonet.api.records.attachments.AttachmentsApi.getFileContentType; public class DefaultResourceDownloadHandler implements IResourceDownloadHandler { diff --git a/services/src/main/resources/config-spring-geonetwork.xml b/services/src/main/resources/config-spring-geonetwork.xml index 7df85092e0e..8276df09be0 100644 --- a/services/src/main/resources/config-spring-geonetwork.xml +++ b/services/src/main/resources/config-spring-geonetwork.xml @@ -32,7 +32,7 @@ - + @@ -61,19 +61,19 @@ - + + class="org.fao.geonet.api.records.attachments.FilesystemStore"/> + class="org.fao.geonet.api.records.attachments.ResourceLoggerStore"> + class="org.fao.geonet.api.metadata.resources.ResourcesApi"/>--> diff --git a/services/src/test/java/org/fao/geonet/services/api/directory/DirectoryApiTest.java b/services/src/test/java/org/fao/geonet/api/directory/DirectoryApiTest.java similarity index 99% rename from services/src/test/java/org/fao/geonet/services/api/directory/DirectoryApiTest.java rename to services/src/test/java/org/fao/geonet/api/directory/DirectoryApiTest.java index 11f2ab741aa..6813cfc317c 100644 --- a/services/src/test/java/org/fao/geonet/services/api/directory/DirectoryApiTest.java +++ b/services/src/test/java/org/fao/geonet/api/directory/DirectoryApiTest.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.directory; +package org.fao.geonet.api.directory; import jeeves.server.context.ServiceContext; import org.fao.geonet.constants.Geonet; diff --git a/services/src/test/java/org/fao/geonet/services/api/metadata/resources/FilesystemStoreTest.java b/services/src/test/java/org/fao/geonet/api/records/attachments/FilesystemStoreTest.java similarity index 89% rename from services/src/test/java/org/fao/geonet/services/api/metadata/resources/FilesystemStoreTest.java rename to services/src/test/java/org/fao/geonet/api/records/attachments/FilesystemStoreTest.java index 235ea998d1e..5edd17326cc 100644 --- a/services/src/test/java/org/fao/geonet/services/api/metadata/resources/FilesystemStoreTest.java +++ b/services/src/test/java/org/fao/geonet/api/records/attachments/FilesystemStoreTest.java @@ -21,38 +21,38 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.metadata.resources; import jeeves.server.context.ServiceContext; import org.fao.geonet.AbstractCoreIntegrationTest; +import org.fao.geonet.api.records.attachments.FilesystemStore; +import org.fao.geonet.api.records.attachments.FilesystemStoreResource; +import org.fao.geonet.api.records.attachments.MetadataResourceDatabaseMigrationTest; +import org.fao.geonet.api.records.attachments.Sort; import org.fao.geonet.domain.MetadataResource; import org.fao.geonet.domain.MetadataResourceVisibility; import org.fao.geonet.kernel.DataManager; import org.fao.geonet.kernel.GeonetworkDataDirectory; import org.fao.geonet.kernel.mef.MEFLibIntegrationTest; import org.fao.geonet.repository.MetadataRepository; -import org.fao.geonet.resources.Resources; import org.fao.geonet.services.AbstractServiceIntegrationTest; import org.junit.Test; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.FileSystemResource; import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; -import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * Created by francois on 19/01/16. @@ -68,8 +68,7 @@ public class FilesystemStoreTest extends AbstractServiceIntegrationTest { @Autowired private FilesystemStore _fileStore; private static String resources = - AbstractCoreIntegrationTest.getClassFile( - MetadataResourceDatabaseMigrationTest.class).getParent(); + AbstractCoreIntegrationTest.getClassFile(MetadataResourceDatabaseMigrationTest.class).getParent(); private String importMetadata(ServiceContext context) throws Exception { final MEFLibIntegrationTest.ImportMetadata importMetadata = @@ -114,13 +113,13 @@ public void testPutPatchAndDeleteResource() throws Exception { assertTrue("Resource is a FileSystemResource", resource instanceof FilesystemStoreResource); assertEquals("Resource id is correct", - metadataUuid + "/resources/" + filename, + metadataUuid + "/attachments/" + filename, resource.getId()); assertEquals("Resource type is correct", MetadataResourceVisibility.PUBLIC.toString(), resource.getType()); assertEquals("Resource URL is correct", - "http://localhost:8080/srv/api/metadata/" + metadataUuid + "/resources/" + filename, + "http://localhost:8080/srv/api/records/" + metadataUuid + "/attachments/" + filename, resource.getUrl()); @@ -182,13 +181,13 @@ public void testPutResourceFromURL() throws Exception { MetadataResource resource = resourcesList.get(0); assertEquals("Resource id is correct", - metadataUuid + "/resources/" + filename, + metadataUuid + "/attachments/" + filename, resource.getId()); assertEquals("Resource type is correct", MetadataResourceVisibility.PUBLIC.toString(), resource.getType()); assertEquals("Resource URL is correct", - "http://localhost:8080/srv/api/metadata/" + metadataUuid + "/resources/" + filename, + "http://localhost:8080/srv/api/records/" + metadataUuid + "/attachments/" + filename, resource.getUrl()); } @@ -209,13 +208,13 @@ public void testPutResourceFromURLWithURLParameters() throws Exception { MetadataResource resource = resourcesList.get(0); assertEquals("Resource id is correct", - metadataUuid + "/resources/" + filename, + metadataUuid + "/attachments/" + filename, resource.getId()); assertEquals("Resource type is correct", MetadataResourceVisibility.PUBLIC.toString(), resource.getType()); assertEquals("Resource URL is correct", - "http://localhost:8080/srv/api/metadata/" + metadataUuid + "/resources/" + filename, + "http://localhost:8080/srv/api/records/" + metadataUuid + "/attachments/" + filename, resource.getUrl()); } } \ No newline at end of file diff --git a/services/src/test/java/org/fao/geonet/services/api/metadata/resources/MetadataResourceDatabaseMigrationTest.java b/services/src/test/java/org/fao/geonet/api/records/attachments/MetadataResourceDatabaseMigrationTest.java similarity index 97% rename from services/src/test/java/org/fao/geonet/services/api/metadata/resources/MetadataResourceDatabaseMigrationTest.java rename to services/src/test/java/org/fao/geonet/api/records/attachments/MetadataResourceDatabaseMigrationTest.java index 6343eebaa30..10c5fc48c87 100644 --- a/services/src/test/java/org/fao/geonet/services/api/metadata/resources/MetadataResourceDatabaseMigrationTest.java +++ b/services/src/test/java/org/fao/geonet/api/records/attachments/MetadataResourceDatabaseMigrationTest.java @@ -21,7 +21,7 @@ * Rome - Italy. email: geonetwork@osgeo.org */ -package org.fao.geonet.services.api.metadata.resources; +package org.fao.geonet.api.records.attachments; import com.google.common.collect.Lists; import org.fao.geonet.AbstractCoreIntegrationTest; @@ -38,7 +38,7 @@ public class MetadataResourceDatabaseMigrationTest { public static final String XPATH = "*//*[contains(text(), '/resources.get?')]"; - public static final String XPATH_AFTER_UPDATE = "*//*[contains(text(), 'api/metadata')]"; + public static final String XPATH_AFTER_UPDATE = "*//*[contains(text(), 'api/records')]"; private static String resources = AbstractCoreIntegrationTest.getClassFile( MetadataResourceDatabaseMigrationTest.class).getParent(); diff --git a/services/src/test/java/org/fao/geonet/services/metadata/BatchEditsServiceTest.java b/services/src/test/java/org/fao/geonet/services/metadata/BatchEditsServiceTest.java index 6ba5a6f053c..1758215e644 100644 --- a/services/src/test/java/org/fao/geonet/services/metadata/BatchEditsServiceTest.java +++ b/services/src/test/java/org/fao/geonet/services/metadata/BatchEditsServiceTest.java @@ -23,23 +23,18 @@ package org.fao.geonet.services.metadata; import jeeves.server.context.ServiceContext; -import org.fao.geonet.AbstractCoreIntegrationTest; +import org.fao.geonet.api.records.BatchEditsApi; +import org.fao.geonet.api.records.model.BatchEditParameter; import org.fao.geonet.csw.common.util.Xml; import org.fao.geonet.domain.Metadata; import org.fao.geonet.kernel.mef.MEFLibIntegrationTest; import org.fao.geonet.repository.MetadataRepository; import org.fao.geonet.services.AbstractServiceIntegrationTest; -import org.fao.geonet.services.api.metadata.model.BatchEditParameter; -import org.fao.geonet.services.api.metadata.BatchEditsApi; import org.jdom.Element; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; diff --git a/services/src/test/resources/org/fao/geonet/services/api/directory/contact1.xml b/services/src/test/resources/org/fao/geonet/api/directory/contact1.xml similarity index 100% rename from services/src/test/resources/org/fao/geonet/services/api/directory/contact1.xml rename to services/src/test/resources/org/fao/geonet/api/directory/contact1.xml diff --git a/services/src/test/resources/org/fao/geonet/services/api/directory/record.xml b/services/src/test/resources/org/fao/geonet/api/directory/record.xml similarity index 100% rename from services/src/test/resources/org/fao/geonet/services/api/directory/record.xml rename to services/src/test/resources/org/fao/geonet/api/directory/record.xml diff --git a/services/src/test/resources/org/fao/geonet/services/api/metadata/resources/record-with-old-links.xml b/services/src/test/resources/org/fao/geonet/api/records/attachments/record-with-old-links.xml similarity index 100% rename from services/src/test/resources/org/fao/geonet/services/api/metadata/resources/record-with-old-links.xml rename to services/src/test/resources/org/fao/geonet/api/records/attachments/record-with-old-links.xml diff --git a/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js b/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js index 4150d277134..914dccf5e06 100644 --- a/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js +++ b/web-ui/src/main/resources/catalog/components/common/ows/OWSService.js @@ -175,13 +175,13 @@ var bboxProp; ['EX_GeographicBoundingBox', 'WGS84BoundingBox'].forEach( function(prop) { - if(angular.isArray(layer[prop])) { + if (angular.isArray(layer[prop])) { bboxProp = layer[prop]; } }); if (bboxProp) { - extent = ol.extent.containsExtent( proj.getWorldExtent(), + extent = ol.extent.containsExtent(proj.getWorldExtent(), bboxProp) ? ol.proj.transformExtent(bboxProp, 'EPSG:4326', proj) : proj.getExtent(); diff --git a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js index 403e3790dc1..61ca4ed0f87 100644 --- a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js +++ b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js @@ -781,9 +781,9 @@ }; scope.generateThumbnail = function() { - return $http.put('../api/0.1/metadata/' + + return $http.put('../api/0.1/records/' + scope.gnCurrentEdit.uuid + - '/resources/actions/save-thumbnail', null, { + '/attachments/actions/save-thumbnail', null, { params: { jsonConfig: angular.fromJson(scope.jsonSpec) } diff --git a/web-ui/src/main/resources/catalog/components/filestore/FileStoreDirective.js b/web-ui/src/main/resources/catalog/components/filestore/FileStoreDirective.js index e23cf4c4e56..7c1b56b121e 100644 --- a/web-ui/src/main/resources/catalog/components/filestore/FileStoreDirective.js +++ b/web-ui/src/main/resources/catalog/components/filestore/FileStoreDirective.js @@ -122,8 +122,8 @@ scope.queue = []; scope.filestoreUploadOptions = { autoUpload: scope.autoUpload, - url: '../api/0.1/metadata/' + scope.uuid + - '/resources?share=' + defaultStatus, + url: '../api/0.1/records/' + scope.uuid + + '/attachments?share=' + defaultStatus, dropZone: $('#' + scope.id), singleUpload: false, // TODO: acceptFileTypes: /(\.|\/)(xml|skos|rdf)$/i, diff --git a/web-ui/src/main/resources/catalog/components/filestore/FileStoreService.js b/web-ui/src/main/resources/catalog/components/filestore/FileStoreService.js index e0011dd7f16..35f51306368 100644 --- a/web-ui/src/main/resources/catalog/components/filestore/FileStoreService.js +++ b/web-ui/src/main/resources/catalog/components/filestore/FileStoreService.js @@ -31,8 +31,8 @@ function($http) { return { get: function(metadataUuid, filter) { - return $http.get('../api/0.1/metadata/' + - metadataUuid + '/resources', { + return $http.get('../api/0.1/records/' + + metadataUuid + '/attachments', { params: { filter: filter } diff --git a/web-ui/src/main/resources/catalog/components/metadatamanager/EditorService.js b/web-ui/src/main/resources/catalog/components/metadatamanager/EditorService.js index 1d4b6afd685..3a0e9c875cc 100644 --- a/web-ui/src/main/resources/catalog/components/metadatamanager/EditorService.js +++ b/web-ui/src/main/resources/catalog/components/metadatamanager/EditorService.js @@ -513,19 +513,13 @@ location.href = 'catalog.edit?#/metadata/' + md['geonet:info'].id; }, - getRecord: function(id) { + getRecord: function(uuid) { var defer = $q.defer(); - // TODO : replace to use new services - var url = gnUrlUtils.append('xml.metadata.get', - gnUrlUtils.toKeyValue({ - id: id - }) - ); - $http.get(url). - success(function(data, status) { + $http.get('../api/records/' + uuid). + success(function(data) { defer.resolve(data); }). - error(function(data, status) { + error(function(data) { // TODO handle error // defer.reject(error); }); diff --git a/web-ui/src/main/resources/catalog/js/admin/DashboardController.js b/web-ui/src/main/resources/catalog/js/admin/DashboardController.js index 56c076c3170..1248c731c89 100644 --- a/web-ui/src/main/resources/catalog/js/admin/DashboardController.js +++ b/web-ui/src/main/resources/catalog/js/admin/DashboardController.js @@ -79,11 +79,12 @@ $scope.info = {}; - $http.get($scope.url + 'xml.config.info?_content_type=json').success(function(data) { - $scope.info = data; - }).error(function(data) { - // TODO - }); + $http.get($scope.url + 'xml.config.info?_content_type=json'). + success(function(data) { + $scope.info = data; + }).error(function(data) { + // TODO + }); }]); diff --git a/web-ui/src/main/resources/catalog/views/default/directives/partials/mdactionmenu.html b/web-ui/src/main/resources/catalog/views/default/directives/partials/mdactionmenu.html index 0b74a80f8cc..bd6cad955f8 100644 --- a/web-ui/src/main/resources/catalog/views/default/directives/partials/mdactionmenu.html +++ b/web-ui/src/main/resources/catalog/views/default/directives/partials/mdactionmenu.html @@ -89,7 +89,7 @@   exportPDF -
  •   exportXML diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView.html index f739a7c0d3b..39e1cf35312 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/recordView.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView.html @@ -352,7 +352,7 @@

    technicalInformation

    metadataInformation

    + data-ng-href="../api/records/{{mdView.current.record.getUuid()}}"> metadataInXML diff --git a/web/src/main/webapp/WEB-INF/config-db/database_migration.xml b/web/src/main/webapp/WEB-INF/config-db/database_migration.xml index 2734912241c..c10cb393bb5 100644 --- a/web/src/main/webapp/WEB-INF/config-db/database_migration.xml +++ b/web/src/main/webapp/WEB-INF/config-db/database_migration.xml @@ -157,7 +157,7 @@ - java:org.fao.geonet.services.api.metadata.resources.MetadataResourceDatabaseMigration + java:org.fao.geonet.api.records.attachments.MetadataResourceDatabaseMigration WEB-INF/classes/setup/sql/migrate/v310/migrate- diff --git a/web/src/main/webapp/WEB-INF/spring-servlet.xml b/web/src/main/webapp/WEB-INF/spring-servlet.xml index 3a1938e22c2..f3506368b35 100644 --- a/web/src/main/webapp/WEB-INF/spring-servlet.xml +++ b/web/src/main/webapp/WEB-INF/spring-servlet.xml @@ -86,7 +86,7 @@ - + \ No newline at end of file From d7d817a336b1f1864333e78ae55abcd795264893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Tue, 29 Mar 2016 19:09:32 +0200 Subject: [PATCH 12/17] French alert when adding wms #1465. --- .../viewer/wmsimport/WmsImportDirective.js | 96 ++++++++++--------- .../resources/catalog/locales/en-search.json | 4 + 2 files changed, 53 insertions(+), 47 deletions(-) diff --git a/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js b/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js index 2689c2b7766..1b42601127c 100644 --- a/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js +++ b/web-ui/src/main/resources/catalog/components/viewer/wmsimport/WmsImportDirective.js @@ -172,59 +172,59 @@ map: '=gnKmlImportMap' }, controllerAs: 'kmlCtrl', - controller: ['$scope', '$http', function($scope, $http) { + controller: ['$scope', '$http', '$translate', + function($scope, $http, $translate) { - /** + /** * Create new vector Kml file from url and add it to * the Map. * * @param {string} url remote url of the kml file * @param {ol.map} map */ - this.addKml = function(url, map) { + this.addKml = function(url, map) { - if (url == '') { - $scope.validUrl = true; - return; - } + if (url == '') { + $scope.validUrl = true; + return; + } - var proxyUrl = '../../proxy?url=' + encodeURIComponent(url); - $http.get(proxyUrl).then(function(response) { - var kmlSource = new ol.source.Vector(); - kmlSource.addFeatures( - new ol.format.KML().readFeatures( - response.data, { - featureProjection: $scope.map.getView().getProjection(), - dataProjection: 'EPSG:4326' - })); - var vector = new ol.layer.Vector({ - source: kmlSource, - getinfo: true, - label: 'Fichier externe : ' + url.split('/').pop() - }); - $scope.addToMap(vector, map); - $scope.url = ''; - $scope.validUrl = true; + var proxyUrl = '../../proxy?url=' + encodeURIComponent(url); + $http.get(proxyUrl).then(function(response) { + var kmlSource = new ol.source.Vector(); + kmlSource.addFeatures( + new ol.format.KML().readFeatures( + response.data, { + featureProjection: $scope.map.getView().getProjection(), + dataProjection: 'EPSG:4326' + })); + var vector = new ol.layer.Vector({ + source: kmlSource, + getinfo: true, + label: $translate('kmlFile', {layer: url.split('/').pop()}) + }); + $scope.addToMap(vector, map); + $scope.url = ''; + $scope.validUrl = true; - }, function() { - $scope.validUrl = false; - }); - }; + }, function() { + $scope.validUrl = false; + }); + }; - $scope.addToMap = function(layer, map) { - ngeoDecorateLayer(layer); - layer.displayInLayerManager = true; - map.getLayers().push(layer); - map.getView().fit(layer.getSource().getExtent(), - map.getSize()); + $scope.addToMap = function(layer, map) { + ngeoDecorateLayer(layer); + layer.displayInLayerManager = true; + map.getLayers().push(layer); + map.getView().fit(layer.getSource().getExtent(), + map.getSize()); - gnAlertService.addAlert({ - msg: 'Une couche ajoutée : ' + - layer.get('label') + '', - type: 'success' - }); - }; - }], + gnAlertService.addAlert({ + msg: $translate('layerAdded', {layer: layer.get('label')}), + type: 'success' + }); + }; + }], link: function(scope, element, attrs) { /** Used for ngClass of the input */ @@ -242,7 +242,7 @@ var onError = function(msg) { gnAlertService.addAlert({ - msg: 'Import impossible', + msg: $translate('mapImportFailure'), type: 'danger' }); }; @@ -263,7 +263,7 @@ var layer = new ol.layer.Vector({ source: vectorSource, getinfo: true, - label: 'Fichier local : ' + event.file.name + label: $translate('localLayerFile', {layer: event.file.name}) }); scope.addToMap(layer, scope.map); scope.$apply(); @@ -313,7 +313,7 @@ }); var vector = new ol.layer.Vector({ - label: 'Fichier local : ' + entry.filename, + label: $translate('localLayerFile', {layer: entry.filename}), getinfo: true, source: source }); @@ -381,8 +381,9 @@ */ module.directive('gnCapTreeElt', [ '$compile', + '$translate', 'gnAlertService', - function($compile, gnAlertService) { + function($compile, $translate, gnAlertService) { return { restrict: 'E', require: '^gnWmsImport', @@ -400,8 +401,9 @@ var select = function() { controller.addLayer(scope.member); gnAlertService.addAlert({ - msg: 'Une couche ajoutée : ' + - (scope.member.Title || scope.member.title) + '', + msg: $translate('layerAdded', {layer: + (scope.member.Title || scope.member.title) + }), type: 'success' }); }; diff --git a/web-ui/src/main/resources/catalog/locales/en-search.json b/web-ui/src/main/resources/catalog/locales/en-search.json index 8f1e1cbcbe0..5a8053bdb71 100644 --- a/web-ui/src/main/resources/catalog/locales/en-search.json +++ b/web-ui/src/main/resources/catalog/locales/en-search.json @@ -36,6 +36,7 @@ "uploadContext": "Load a map", "resetContext": "Load default map", "kmlContext": "KML format", + "kmlFile": "{{layer}} (KML)", "wmsLinkDetails": "This dataset is published in the view service (WMS) available at {{url}} with layer name {{layer}}.", "wfsLinkDetails": "This dataset is published in the download service (WFS) available at {{url}} with layer name {{layer}}.", "wcsLinkDetails": "This dataset is published in the download service (WCS) available at {{url}} with layer name {{layer}}.", @@ -80,7 +81,10 @@ "layer": "layer", "nolayer": "No layer", "layers": "layers", + "layerAdded": "Layer '{{layer}}' added.", + "localLayerFile": "{{layer}} (local file)", "mostPopular": "Most popular", + "mapImportFailure": "Failed to import layer", "recentChanges": "Recent changes", "homeTitle": "Search for geodata and geoservices", "download": "Download", From 6fd847e2cc70c255475e6a8b8ef3eeb81d87b07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Wed, 30 Mar 2016 14:05:22 +0200 Subject: [PATCH 13/17] Editor / Link service to dataset / Load service layers when popup open (to not to make user thinks the list will change when another dataset is choosen. Add current selection title next to the list of layers to make the user understand that the selected layers in the service layers list should match the selected dataset. --- .../edit/onlinesrc/OnlineSrcDirective.js | 264 +++++++++--------- .../partials/linkServiceToDataset.html | 46 +-- 2 files changed, 162 insertions(+), 148 deletions(-) diff --git a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js index 61ca4ed0f87..87d7443d640 100644 --- a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js +++ b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/OnlineSrcDirective.js @@ -133,29 +133,30 @@ }]) /** - * @ngdoc directive - * @name gn_onlinesrc.directive:gnAddOnlinesrc - * @restrict A - * @requires gnOnlinesrc - * @requires gnOwsCapabilities - * @requires gnEditor - * @requires gnCurrentEdit - * - * @description - * The `gnAddOnlinesrc` directive provides a form to add a new online resource - * to the currend metadata. Depending on the protocol : - *
      - *
    • DOWNLOAD : we upload a data from the disk.
    • - *
    • OGC:WMS : we call a capabilities on the given url, - * then the user can add - * several resources (layers) at the same time.
    • - *
    • Others : we just fill the form and call a batch processing.
    • - *
    - * - * On submit, the metadata is saved, the thumbnail is added, then the form - * and online resource list are refreshed. - */ - .directive('gnAddOnlinesrc', [ + * @ngdoc directive + * @name gn_onlinesrc.directive:gnAddOnlinesrc + * @restrict A + * @requires gnOnlinesrc + * @requires gnOwsCapabilities + * @requires gnEditor + * @requires gnCurrentEdit + * + * @description + * The `gnAddOnlinesrc` directive provides a form to add a + * new online resource + * to the currend metadata. Depending on the protocol : + *
      + *
    • DOWNLOAD : we upload a data from the disk.
    • + *
    • OGC:WMS : we call a capabilities on the given url, + * then the user can add + * several resources (layers) at the same time.
    • + *
    • Others : we just fill the form and call a batch processing.
    • + *
    + * + * On submit, the metadata is saved, the thumbnail is added, then the form + * and online resource list are refreshed. + */ + .directive('gnAddOnlinesrc', [ 'gnOnlinesrc', 'gnOwsCapabilities', 'gnWfsService', @@ -169,8 +170,8 @@ '$timeout', '$http', function(gnOnlinesrc, gnOwsCapabilities, gnWfsService, - gnEditor, gnCurrentEdit, gnMap, gnGlobalSettings, Metadata, - $rootScope, $translate, $timeout, $http) { + gnEditor, gnCurrentEdit, gnMap, gnGlobalSettings, Metadata, + $rootScope, $translate, $timeout, $http) { return { restrict: 'A', templateUrl: '../../catalog/components/edit/onlinesrc/' + @@ -967,7 +968,7 @@ if (scope.OGCProtocol == 'WMS') { return gnOwsCapabilities.getWMSCapabilities( scope.params.url) - .then(function(capabilities) { + .then(function(capabilities) { scope.layers = []; scope.isUrlOk = true; angular.forEach(capabilities.layers, function(l) { @@ -981,7 +982,7 @@ } else if (scope.OGCProtocol == 'WFS') { return gnWfsService.getCapabilities( scope.params.url) - .then(function(capabilities) { + .then(function(capabilities) { scope.layers = []; scope.isUrlOk = true; angular.forEach( @@ -1130,27 +1131,27 @@ }]) /** - * @ngdoc directive - * @name gn_onlinesrc.directive:gnLinkServiceToDataset - * @restrict A - * @requires gnOnlinesrc - * @requires gnOwsCapabilities - * @requires Metadata - * @requires gnCurrentEdit - * - * @description - * The `gnLinkServiceToDataset` directive provides a - * form to either add a service - * to a metadata of type dataset, or to add a dataset to a - * metadata of service. - * The process will update both of the metadatas, the current - * one and the one it - * is linked to. - * - * On submit, the metadata is saved, the thumbnail is added, then the form - * and online resource list are refreshed. - */ - .directive('gnLinkServiceToDataset', [ + * @ngdoc directive + * @name gn_onlinesrc.directive:gnLinkServiceToDataset + * @restrict A + * @requires gnOnlinesrc + * @requires gnOwsCapabilities + * @requires Metadata + * @requires gnCurrentEdit + * + * @description + * The `gnLinkServiceToDataset` directive provides a + * form to either add a service + * to a metadata of type dataset, or to add a dataset to a + * metadata of service. + * The process will update both of the metadatas, the current + * one and the one it + * is linked to. + * + * On submit, the metadata is saved, the thumbnail is added, then the form + * and online resource list are refreshed. + */ + .directive('gnLinkServiceToDataset', [ 'gnOnlinesrc', 'Metadata', 'gnOwsCapabilities', @@ -1159,7 +1160,7 @@ '$translate', 'gnGlobalSettings', function(gnOnlinesrc, Metadata, gnOwsCapabilities, - gnCurrentEdit, $rootScope, $translate, gnGlobalSettings) { + gnCurrentEdit, $rootScope, $translate, gnGlobalSettings) { return { restrict: 'A', scope: {}, @@ -1190,12 +1191,35 @@ }; scope.$broadcast('resetSearch', searchParams); scope.layers = []; + // Load service layers on load + if (scope.mode !== 'service') { + // TODO: Check the appropriate WMS service + // or list URLs if many + // TODO: If service URL is added, user need to reload + // editor to get URL or current record. + var links = []; + links = links.concat( + gnCurrentEdit.metadata.getLinksByType('OGC:WMS')); + links = links.concat( + gnCurrentEdit.metadata.getLinksByType('wms')); + if (angular.isArray(links) && links.length == 1) { + var serviceUrl = links[0].url; + scope.loadCurrentLink(serviceUrl); + scope.srcParams.url = serviceUrl; + scope.srcParams.protocol = links[0].protocol || ''; + scope.srcParams.uuidSrv = gnCurrentEdit.uuid; + } else { + scope.alertMsg = + $translate('linkToServiceWithoutURLError'); + } + } }); // This object is used to share value between this // directive and the SearchFormController scope that // is contained by the directive scope.stateObj = {}; + scope.currentMdTitle = null; /** * loadCurrentLink @@ -1207,7 +1231,7 @@ scope.loadCurrentLink = function(url) { scope.alertMsg = null; return gnOwsCapabilities.getWMSCapabilities(url) - .then(function(capabilities) { + .then(function(capabilities) { scope.layers = []; scope.srcParams.selectedLayers = []; scope.layers.push(capabilities.Layer[0]); @@ -1226,13 +1250,15 @@ * layers grid). */ scope.$watchCollection('stateObj.selectRecords', function() { + scope.currentMdTitle = null; if (!angular.isUndefined(scope.stateObj.selectRecords) && scope.stateObj.selectRecords.length > 0) { var md = new Metadata(scope.stateObj.selectRecords[0]); - var links = []; - scope.layers = []; - scope.srcParams.selectedLayers = []; + scope.currentMdTitle = md.title || md.defaultTitle; if (scope.mode == 'service') { + var links = []; + scope.layers = []; + scope.srcParams.selectedLayers = []; // TODO: WFS ? links = links.concat(md.getLinksByType('OGC:WMS')); links = links.concat(md.getLinksByType('wms')); @@ -1247,27 +1273,8 @@ scope.alertMsg = $translate('linkToServiceWithoutURLError'); } - } - else { - // TODO: Check the appropriate WMS service - // or list URLs if many - // TODO: If service URL is added, user need to reload - // editor to get URL or current record. - links = links.concat( - gnCurrentEdit.metadata.getLinksByType('OGC:WMS')); - links = links.concat( - gnCurrentEdit.metadata.getLinksByType('wms')); - if (angular.isArray(links) && links.length == 1) { - var serviceUrl = links[0].url; - scope.loadCurrentLink(serviceUrl); - scope.srcParams.url = serviceUrl; - scope.srcParams.protocol = links[0].protocol || ''; - scope.srcParams.uuidDS = md.getUuid(); - scope.srcParams.uuidSrv = gnCurrentEdit.uuid; - } else { - scope.alertMsg = - $translate('linkToServiceWithoutURLError'); - } + } else { + scope.srcParams.uuidDS = md.getUuid(); } } }); @@ -1294,27 +1301,27 @@ }]) /** - * @ngdoc directive - * @name gn_onlinesrc.directive:gnLinkToMetadata - * @restrict A - * @requires gnOnlinesrc - * @requires $translate - * - * @description - * The `gnLinkServiceToDataset` directive provides - * a form to link one metadata to - * another as : - *
      - *
    • parent
    • - *
    • feature catalog
    • - *
    • source dataset
    • - *
    - * The directive contains a search form allowing one local selection. - * - * On submit, the metadata is saved, the link is added, - * then the form and online resource list are refreshed. - */ - .directive('gnLinkToMetadata', [ + * @ngdoc directive + * @name gn_onlinesrc.directive:gnLinkToMetadata + * @restrict A + * @requires gnOnlinesrc + * @requires $translate + * + * @description + * The `gnLinkServiceToDataset` directive provides + * a form to link one metadata to + * another as : + *
      + *
    • parent
    • + *
    • feature catalog
    • + *
    • source dataset
    • + *
    + * The directive contains a search form allowing one local selection. + * + * On submit, the metadata is saved, the link is added, + * then the form and online resource list are refreshed. + */ + .directive('gnLinkToMetadata', [ 'gnOnlinesrc', '$translate', 'gnGlobalSettings', function(gnOnlinesrc, $translate, gnGlobalSettings) { return { @@ -1378,22 +1385,23 @@ }]) /** - * @ngdoc directive - * @name gn_onlinesrc.directive:gnLinkToSibling - * @restrict A - * @requires gnOnlinesrc - * - * @description - * The `gnLinkToSibling` directive provides a form to link siblings to the - * current metdata. The user need to specify Association type and - * Initiative type - * to be able to add a metadata to his selection. The process alow a multiple - * selection. - * - * On submit, the metadata is saved, the resource is associated, then the form - * and online resource list are refreshed. - */ - .directive('gnLinkToSibling', ['gnOnlinesrc', 'gnGlobalSettings', + * @ngdoc directive + * @name gn_onlinesrc.directive:gnLinkToSibling + * @restrict A + * @requires gnOnlinesrc + * + * @description + * The `gnLinkToSibling` directive provides a form to link siblings to the + * current metadata. The user need to specify Association type and + * Initiative type + * to be able to add a metadata to his selection. The process allow + * a multiple selection. + * + * On submit, the metadata is saved, the resource is associated, + * then the form + * and online resource list are refreshed. + */ + .directive('gnLinkToSibling', ['gnOnlinesrc', 'gnGlobalSettings', function(gnOnlinesrc, gnGlobalSettings) { return { restrict: 'A', @@ -1444,23 +1452,23 @@ */ scope.addToSelection = function(md, associationType, initiativeType) { - if (associationType) { - var idx = findObj(md); - if (idx < 0) { - scope.selection.push({ - md: md, - associationType: associationType, - initiativeType: initiativeType || '' - }); - } - else { - angular.extend(scope.selection[idx], { - associationType: associationType, - initiativeType: initiativeType || '' - }); - } - } - }; + if (associationType) { + var idx = findObj(md); + if (idx < 0) { + scope.selection.push({ + md: md, + associationType: associationType, + initiativeType: initiativeType || '' + }); + } + else { + angular.extend(scope.selection[idx], { + associationType: associationType, + initiativeType: initiativeType || '' + }); + } + } + }; /** * Remove a record from the selection diff --git a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkServiceToDataset.html b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkServiceToDataset.html index 5ba98f1453c..6f237ee04f6 100644 --- a/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkServiceToDataset.html +++ b/web-ui/src/main/resources/catalog/components/edit/onlinesrc/partials/linkServiceToDataset.html @@ -1,44 +1,50 @@
    + data-ng-search-form="">
    - + class="fa fa-search" /> +
    + data-gn-search-form-results-mode="simple" + data-gn-search-form-results-selection-mode="local simple" + data-search-results="searchResults" + data-select-records="stateObj.selectRecords" + data-pagination-info="paginationInfo">

    {{alertMsg}}

    -

    chooseZeroOrMoreLayerFromService

    -

    chooseZeroOrMoreLayer

    +

    + chooseZeroOrMoreLayerFromService + {{currentMdTitle}} +

    +

    + chooseZeroOrMoreLayer + {{currentMdTitle}} +

    + data-gn-selection-mode="multiple" + data-layers="layers" + data-selection="srcParams.selectedLayers">