implemented as a multi-module with single version
This commit is contained in:
commit
5fc9085516
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="cms-plugin-framework/src/main/java"/>
|
||||
<classpathentry kind="src" path="default-lc-managers/src/main/java"/>
|
||||
<classpathentry kind="src" path="default-lc-managers/src/test/java"/>
|
||||
<classpathentry kind="src" path="geoportal-common/src/main/java"/>
|
||||
<classpathentry kind="src" path="geoportal-common/src/test/java"/>
|
||||
<classpathentry kind="src" path="geoportal-service/src/main/java"/>
|
||||
<classpathentry kind="src" path="geoportal-service/src/test/java"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||
<attributes>
|
||||
<attribute name="owner.project.facets" value="java"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1 @@
|
|||
/target/
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>geoportal-cms-suite</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,2 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
|
@ -0,0 +1,7 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
<wb-module deploy-name="geoportal-cms-suite">
|
||||
<wb-resource deploy-path="/" source-path="/cms-plugin-framework/src/main/java"/>
|
||||
<wb-resource deploy-path="/" source-path="/default-lc-managers/src/main/java"/>
|
||||
<wb-resource deploy-path="/" source-path="/default-lc-managers/src/test/java"/>
|
||||
<wb-resource deploy-path="/" source-path="/geoportal-common/src/main/java"/>
|
||||
<wb-resource deploy-path="/" source-path="/geoportal-common/src/test/java"/>
|
||||
<wb-resource deploy-path="/" source-path="/geoportal-service/src/main/java"/>
|
||||
<wb-resource deploy-path="/" source-path="/geoportal-service/src/test/java"/>
|
||||
</wb-module>
|
||||
</project-modules>
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<faceted-project>
|
||||
<installed facet="java" version="1.8"/>
|
||||
<installed facet="jst.utility" version="1.0"/>
|
||||
</faceted-project>
|
|
@ -0,0 +1,46 @@
|
|||
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
# Changelog for org.gcube.application.gcs.geoportal-cms-suite
|
||||
|
||||
## [v2.0.0-SNAPSHOT]
|
||||
|
||||
- Refactored as `geoportal-cms-suite` [#28423]
|
||||
|
||||
## [v1.0.6]
|
||||
|
||||
- Integrated an EventManager centrally [#26321]
|
||||
- sdi-plugins: add the logic to apply a regex to the value that must be added to index [#26322]
|
||||
- notifications-plugins: integrated [#26453]
|
||||
- catalogue-binding-plugins: integrated [#26454]
|
||||
- Moved to `gcube-smartgears-bom 2.5.1{-SNAPSHOT}` [#28026]
|
||||
|
||||
## [v1.0.5]
|
||||
|
||||
- Added maven profiles `geoportal-release-profile` and `geoportal-snapshot-profile` [#25570]
|
||||
- Moved to maven-parent.v1.2.0 [#25570]
|
||||
|
||||
## [v1.0.4] - 2023-01-10
|
||||
|
||||
- Updated plugin framework
|
||||
|
||||
## [v1.0.3] - 2022-12-07
|
||||
|
||||
- Updated plugin framework
|
||||
- Introduced module default-lc-managers
|
||||
|
||||
## [v1.0.2] - 2021-02-24
|
||||
|
||||
-Introduced module sdi-plugins
|
||||
-Introduced module notifications-plugins
|
||||
-Introduced module dataminer-plugins
|
||||
-Introduced module images-plugins
|
||||
-Introduced module ckan-plugin
|
||||
|
||||
## [v1.0.1] - 2021-12-07
|
||||
|
||||
- Introduced cms-plugin-framework
|
||||
- Introduced concessioni use case
|
||||
- Fixed internal group ids
|
||||
|
||||
## [v1.0.0] - 2021-2-11
|
||||
- First release
|
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
|
@ -0,0 +1,941 @@
|
|||
{
|
||||
"_id": "profiledConcessioni",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Indagini svolte in regime di concessione",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "ufficio_mic_competente",
|
||||
"path": "$._theDocument.ufficioMic",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "funzionario_responsabile",
|
||||
"path": "$._theDocument.funzionarioResponsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_individuazione",
|
||||
"path": "$._theDocument.modalitaIndividuazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contesto_indagine",
|
||||
"path": "$._theDocument.contestoIndagine",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "stato_attuale",
|
||||
"path": "$._theDocument.statoAttuale",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accessibilita",
|
||||
"path": "$._theDocument.accessibilita",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia_macrofase",
|
||||
"path": "$._theDocument.cronologiaMacrofase",
|
||||
"type": "TEXT",
|
||||
"apply_regex": {
|
||||
"type": "replaceAll",
|
||||
"regex": "(\\s)?\\([\\s\\S]*",
|
||||
"replacement": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "specifiche_cronologia",
|
||||
"path": "$._theDocument.specificheCronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_max",
|
||||
"path": "$._theDocument.quotaMax",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_min",
|
||||
"path": "$._theDocument.quotaMin",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "Catalogue-Binding-Plugin",
|
||||
"_type": "EventListener",
|
||||
"_configuration": {
|
||||
"subscribeEvents": [
|
||||
{
|
||||
"event": "LIFECYCLE_STEP_PERFORMED",
|
||||
"when": [
|
||||
{
|
||||
"target_phase": [
|
||||
"Published"
|
||||
],
|
||||
"last_invoked_step": "APPROVE-SUBMITTED"
|
||||
},
|
||||
{
|
||||
"target_phase": [
|
||||
"DRAFT"
|
||||
],
|
||||
"last_invoked_step": "UNPUBLISH"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"event": "PROJECT_DELETED"
|
||||
}
|
||||
],
|
||||
"freemarker_template_host": "https://code-repo.d4science.org",
|
||||
"freemarker_template_path": "gCubeSystem/gcube-cms-suite/raw/branch/event_manager/D4S_UCDs/DEV/devVRE/catalogue/binding/freemarker_templates/d4gna_to_catalogue.ftl",
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "Notifications-Plugin",
|
||||
"_type": "EventListener",
|
||||
"_configuration": {
|
||||
"subscribeNotifications": [
|
||||
{
|
||||
"event": "LIFECYCLE_STEP_PERFORMED",
|
||||
"notificationFor": [
|
||||
{
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
],
|
||||
"when": [
|
||||
{
|
||||
"target_phase": [
|
||||
"Pending Approval"
|
||||
],
|
||||
"last_invoked_step": "SUBMIT-FOR-REVIEW",
|
||||
"notify": [
|
||||
{
|
||||
"type": "USER_NOTIFICATION",
|
||||
"send": true,
|
||||
"placeholder_title": "TITLE_REVIEW_REQUIRED",
|
||||
"placeholder_msg": "MSG_REVIEW_REQUIRED"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"target_phase": [
|
||||
"DRAFT"
|
||||
],
|
||||
"last_invoked_step": "REJECT-DRAFT",
|
||||
"notify": [
|
||||
{
|
||||
"type": "USER_NOTIFICATION",
|
||||
"send": true,
|
||||
"placeholder_title": "TITLE_ITEM_REJECTED",
|
||||
"placeholder_msg": "MSG_ITEM_REJECTED"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"roles": [
|
||||
"Item_Creator"
|
||||
],
|
||||
"when": [
|
||||
{
|
||||
"target_phase": [
|
||||
"DRAFT"
|
||||
],
|
||||
"last_invoked_step": "REJECT-DRAFT",
|
||||
"notify": [
|
||||
{
|
||||
"type": "USER_NOTIFICATION",
|
||||
"send": true,
|
||||
"placeholder_title": "TITLE_ITEM_REJECTED_REVIEW_REQUIRED",
|
||||
"placeholder_msg": "MSG_ITEM_REJECTED_REVIEW_REQUIRED"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"roles": [
|
||||
"Any"
|
||||
],
|
||||
"when": [
|
||||
{
|
||||
"target_phase": [
|
||||
"Published"
|
||||
],
|
||||
"last_invoked_step": "APPROVE-SUBMITTED",
|
||||
"notify": [
|
||||
{
|
||||
"type": "VRE_POST",
|
||||
"send": true,
|
||||
"placeholder_msg": "MSG_ITEM_PUBLISHED",
|
||||
"export_as_pdf": {
|
||||
"export": false,
|
||||
"placeholder_msg": "MSG_GO_TO_PDF"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"enabled": true,
|
||||
"link_to_notifications_messages": "https://code-repo.d4science.org/gCubeSystem/gcube-cms-suite/raw/branch/event_manager/D4S_UCDs/DEV/devVRE/notifications/Notifications_Messages_ita.properties"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_overlay_layers",
|
||||
"_type": "GROUPED_OVERLAY_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_overlay_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Layers automatically added to the Map",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wms_url": "https://geoserver-1.cloud-dev.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:regioni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Province",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wms_url": "https://geoserver-1.cloud-dev.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:province&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Comuni",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wms_url": "https://geoserver-1.cloud-dev.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:comuni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_cross_filtering_layers",
|
||||
"_type": "GROUPED_CROSS_FILTERING_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_cross_filtering_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Spatial filtering for the selected layer",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"description": "Le Regioni Italiane",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wfs_url": "https://geoserver-1.cloud-dev.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:regioni&maxFeatures=50&outputFormat=application%2Fjson&propertyName=COD_REG,DEN_REG&sortby=DEN_REG",
|
||||
"table_show_field": "DEN_REG",
|
||||
"table_key_field": "COD_REG",
|
||||
"table_parent_key_field": "",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Province",
|
||||
"description": "Le Province Italiane",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wfs_url": "https://geoserver-1.cloud-dev.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:province&maxFeatures=150&outputFormat=application%2Fjson&propertyName=COD_PROV,DEN_PROV,COD_REG&sortby=DEN_PROV",
|
||||
"table_show_field": "DEN_PROV",
|
||||
"table_key_field": "COD_PROV",
|
||||
"table_parent_key_field": "COD_REG",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Comuni",
|
||||
"description": "I Comuni Italiani",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wfs_url": "https://geoserver-1.cloud-dev.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:comuni&maxFeatures=9000&outputFormat=application%2Fjson&propertyName=PRO_COM,COMUNE,COD_PROV&sortby=COMUNE",
|
||||
"table_show_field": "COMUNE",
|
||||
"table_key_field": "PRO_COM",
|
||||
"table_parent_key_field": "COD_PROV",
|
||||
"table_geometry_name": "the_geom"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions": [
|
||||
{
|
||||
"_id": "precedes",
|
||||
"_label": "Precede",
|
||||
"_reverseRelationId": "follows"
|
||||
},
|
||||
{
|
||||
"_id": "follows",
|
||||
"_label": "Segue",
|
||||
"_reverseRelationId": "precedes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,669 @@
|
|||
{
|
||||
"_id": "concessioni-estere",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Missioni archeologiche italiane all'estero",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni estere [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "fabio.sinibaldi"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{"_policy": {"_read": "any","_write": "any"},
|
||||
"_roles": ["Data-Manager"]},
|
||||
{"_policy": {"_read": "own","_write": "own"},
|
||||
"_roles": ["Data-Editor"]},
|
||||
{"_policy": {"_read": "any","_write": "none"},
|
||||
"_roles": ["Member"],
|
||||
"_enforcer": {"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"}},
|
||||
{"_policy": {"_read": "none","_write": "none"},
|
||||
"_roles": []}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "autore",
|
||||
"path": "$._theDocument.authors",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare",
|
||||
"path": "$._theDocument.titolari",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_licenza",
|
||||
"path": "$._theDocument.titolareLicenza",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Author/s",
|
||||
"paths": [
|
||||
"_theDocument.authors"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions" : [
|
||||
{"_id": "precedes", "_label" : "Precede",
|
||||
"_reverseRelationId" : "follows"},
|
||||
{"_id": "follows", "_label" : "Segue",
|
||||
"_reverseRelationId" : "precedes"}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,511 @@
|
|||
{
|
||||
"_id": "esquilino",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Esquilino",
|
||||
"_schema": {
|
||||
"fonteInformazione": {
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"documentazioneScientifica": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datiAltimetrici": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"planimetria": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "UCD for Equilino",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "fabio.sinibaldi"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "DEFAULT-SINGLE-STEP",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "PUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "datiAltimetrici",
|
||||
"documentPath": "datiAltimetrici.fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "planimetria",
|
||||
"documentPath": "planimetria.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..planimetria.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "definizione",
|
||||
"path": "$._theDocument.definizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.descrizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia",
|
||||
"path": "$._theDocument.cronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "codice_partizione_archeologica",
|
||||
"path": "$._theDocument.codice_partizione_archeologica",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_acquisizione",
|
||||
"path": "$._theDocument.modalita_acquisizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_dati",
|
||||
"path": "$._theDocument.titolare_dati",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "copyright",
|
||||
"path": "$._theDocument.copyright",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Descrittivi",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Dati Descrittivi"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Fonte_Informazione",
|
||||
"sectionName": "fonteInformazione",
|
||||
"sectionTitle": "Fonte dell'informazione",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.fonteInformazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Documentazione_Scientifica",
|
||||
"sectionName": "documentazioneScientifica",
|
||||
"sectionTitle": "Documentazione scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Documentazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.documentazioneScientifica._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Immagine",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 10,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Altimetrici",
|
||||
"sectionName": "datiAltimetrici",
|
||||
"sectionTitle": "Dati Altimetrici",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.datiAltimetrici._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Planimetria",
|
||||
"sectionName": "planimetria",
|
||||
"sectionTitle": "Planimetria",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.planimetria._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "publish",
|
||||
"title": "Publish the Project",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Publish the Project",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,333 @@
|
|||
{
|
||||
"_id": "test_basemodel",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Test_BaseModel",
|
||||
"_schema": {
|
||||
"planimetria": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "UCD for BaseModel Test",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
]
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "DEFAULT-SINGLE-STEP",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "PUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "planimetria",
|
||||
"documentPath": "planimetria.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..planimetria.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "titolo",
|
||||
"path": "$._theDocument.titolo",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.descrizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia",
|
||||
"path": "$._theDocument.cronologia",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {
|
||||
},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Test_Dati_Descrittivi",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Dati Descrittivi"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Test_Planimetria",
|
||||
"sectionName": "planimetria",
|
||||
"sectionTitle": "Planimetria",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.planimetria._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.titolo",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Titolo",
|
||||
"paths": [
|
||||
"_theDocument.titolo"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Denominazione/Descrizione",
|
||||
"paths": [
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.titolo",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Title",
|
||||
"paths": [
|
||||
"_theDocument.titolo"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "publish",
|
||||
"title": "Publish the Project",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Publish the Project",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,356 @@
|
|||
<#assign jsonProj=doc>
|
||||
<#assign theDocument=jsonProj._theDocument>
|
||||
|
||||
<#assign resources=[]>
|
||||
<#assign groups=[]>
|
||||
<#assign tags=[]>
|
||||
<#assign extras=[]>
|
||||
|
||||
<#function sanitizeString(value)>
|
||||
<#if value??>
|
||||
<#-- Removing new lines and slashes -->
|
||||
<#return value?replace('\n','')?replace('\"','')?trim>
|
||||
</#if>
|
||||
<#return "">
|
||||
</#function>
|
||||
|
||||
<#function onlyAlphanumericString(value)>
|
||||
<#if value??>
|
||||
<#-- Removing new lines, slashes and not alphanumeric characters except for '-','_','.' -->
|
||||
<#return value?replace('\n','')?replace('\"','')?replace("[^\\w^.^-^_]+", " ", "r")?trim>
|
||||
</#if>
|
||||
<#return "">
|
||||
</#function>
|
||||
|
||||
<#-- Macro to assign Tags -->
|
||||
<#macro assignTag in_tags>
|
||||
<#if in_tags??>
|
||||
<#if in_tags?is_sequence>
|
||||
<#list in_tags as my_tag>
|
||||
<#assign tags = tags + [onlyAlphanumericString(my_tag)] />
|
||||
</#list>
|
||||
<#else>
|
||||
<#assign tags = tags + [onlyAlphanumericString(in_tags)] />
|
||||
</#if>
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#-- Macro to assign a Resource -->
|
||||
<#macro assignResource name url description format>
|
||||
<#if description??>
|
||||
<#else>
|
||||
<#assign description = ""/>
|
||||
</#if>
|
||||
<#if url??>
|
||||
<#assign resource = {"name": name, "url": url, "description": sanitizeString(description), "format": format}>
|
||||
<#assign resources = resources + [resource]/>
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#-- Macro to assign Groups -->
|
||||
<#macro assignGroup in_groups>
|
||||
<#if in_groups??>
|
||||
<#if in_groups?is_sequence>
|
||||
<#list in_groups as my_group>
|
||||
<#assign groups = groups + [my_group] />
|
||||
</#list>
|
||||
<#else>
|
||||
<#assign groups = groups + [in_groups] />
|
||||
</#if>
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#-- Macro to assign Extras field -->
|
||||
<#macro assignExtraField key value asObject>
|
||||
<#if key??>
|
||||
<#assign checkedValue = value/>
|
||||
<#if key != "spatial">
|
||||
<#assign checkedValue = sanitizeString(value)/>
|
||||
</#if>
|
||||
<#assign extra = {"key": sanitizeString(key), "value": checkedValue, "asObject": asObject}>
|
||||
<#assign extras = extras + [extra]/>
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#-- Macro to build the tags as [{},{},..{}] -->
|
||||
<#macro buildTags the_tags>
|
||||
<#if the_tags??>
|
||||
"tags": [
|
||||
<#list the_tags as tag>
|
||||
{
|
||||
"name": "${tag}"
|
||||
}
|
||||
<#if tag?is_last==false>,</#if>
|
||||
</#list>
|
||||
],
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#-- Macro to build the groups as [{},{},..{}] -->
|
||||
<#macro buildGroups the_groups>
|
||||
<#if the_groups??>
|
||||
"groups": [
|
||||
<#list the_groups as the_group>
|
||||
{
|
||||
"name": "${the_group}"
|
||||
}
|
||||
<#if the_group?is_last==false>,</#if>
|
||||
</#list>
|
||||
],
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#-- Macro to build the resources as [{},{},..{}] -->
|
||||
<#macro buildResources the_resources>
|
||||
<#if the_resources??>
|
||||
"resources": [
|
||||
<#list the_resources as resource>
|
||||
{
|
||||
"name": "${resource.name}",
|
||||
"url": "${resource.url}",
|
||||
"description": "${resource.description}",
|
||||
"format": "${resource.format}"
|
||||
}
|
||||
<#if resource?is_last==false>,</#if>
|
||||
</#list>
|
||||
],
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#-- Macro to build the extras as [{},{},..{}] -->
|
||||
<#macro buildExtrasFields the_extras>
|
||||
<#if the_extras??>
|
||||
"extras": [
|
||||
<#list the_extras as extra>
|
||||
<#if extra.asObject?? && extra.asObject>
|
||||
{
|
||||
"key": "${extra.key}",
|
||||
"value": ${extra.value}
|
||||
}
|
||||
<#else>
|
||||
{
|
||||
"key": "${extra.key}",
|
||||
"value": "${extra.value}"
|
||||
}
|
||||
</#if>
|
||||
<#if extra?is_last==false>,</#if>
|
||||
</#list>
|
||||
]
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
|
||||
|
||||
<#--
|
||||
############################################################
|
||||
#
|
||||
#
|
||||
# Starting document mapping to Catalogue
|
||||
#
|
||||
#
|
||||
############################################################
|
||||
-->
|
||||
<#compress>
|
||||
{
|
||||
"name": "${jsonProj._id}",
|
||||
"title": "${sanitizeString(theDocument.nome)}",
|
||||
"license_id": "CC-BY-SA-4.0",
|
||||
"private": false,
|
||||
<#assign sanitizedNotes = sanitizeString(theDocument.introduzione) />
|
||||
"notes": "${sanitizedNotes}",
|
||||
|
||||
<#--
|
||||
######################
|
||||
|
||||
RESOURCES
|
||||
|
||||
######################
|
||||
-->
|
||||
|
||||
<#-- Mapping "Relazione Scavo" as resource -->
|
||||
<#if theDocument.relazioneScavo?? && theDocument.relazioneScavo.fileset?? && theDocument.relazioneScavo.fileset._payloads??>
|
||||
<#assign payloads = theDocument.relazioneScavo.fileset._payloads>
|
||||
<#if payloads?size!=0>
|
||||
<#-- Getting the first payload -->
|
||||
<#assign payload = payloads[0]>
|
||||
<@assignResource name=payload._name url=payload._link description=theDocument.relazioneScavo.titolo format=payload._mimetype></@assignResource>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#-- Mapping "Immagine Rappresentative" as resource -->
|
||||
<#if theDocument.immaginiRappresentative??>
|
||||
<#if theDocument.immaginiRappresentative?is_sequence && theDocument.immaginiRappresentative?size gt 0>
|
||||
<#list theDocument.immaginiRappresentative as the_image>
|
||||
<#if the_image.fileset?? && the_image.fileset._payloads??>
|
||||
<#assign payloads = the_image.fileset._payloads>
|
||||
<#if payloads?size!=0>
|
||||
<#-- Getting the first payload -->
|
||||
<#assign payload = payloads[0]>
|
||||
<@assignResource name=payload._name url=payload._link description=the_image.didascalia format=payload._mimetype></@assignResource>
|
||||
</#if>
|
||||
</#if>
|
||||
</#list>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#-- Building Resources -->
|
||||
<@buildResources the_resources=resources></@buildResources>
|
||||
|
||||
|
||||
<#--
|
||||
######################
|
||||
|
||||
TAGS
|
||||
|
||||
######################
|
||||
-->
|
||||
|
||||
<#-- Mapping "paroleChiaveLibere" as tag -->
|
||||
<#if theDocument.paroleChiaveLibere??>
|
||||
<@assignTag in_tags=theDocument.paroleChiaveLibere></@assignTag>
|
||||
</#if>
|
||||
|
||||
<#-- Building tags -->
|
||||
<@buildTags the_tags=tags></@buildTags>
|
||||
|
||||
|
||||
<#--
|
||||
######################
|
||||
|
||||
GROUPS
|
||||
|
||||
######################
|
||||
-->
|
||||
|
||||
<#-- Mapping the year of the "dataInizioProgetto" as group -->
|
||||
<#assign dateString = theDocument.dataInizioProgetto?trim>
|
||||
<#assign dataInizioYear = dateString?split("-")[0]>
|
||||
<#-- <@assignGroup in_groups=dataInizioYear></@assignGroup> -->
|
||||
<#-- Building groups -->
|
||||
<@buildGroups the_groups=groups></@buildGroups>
|
||||
|
||||
|
||||
<#--
|
||||
######################
|
||||
|
||||
EXTRAS
|
||||
|
||||
######################
|
||||
-->
|
||||
|
||||
<#-- Mapping extras fields -->
|
||||
|
||||
<#-- profiled-concessioni -->
|
||||
<#if theDocument.doi??>
|
||||
<@assignExtraField key="DOI" value=theDocument.doi asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.contributore??>
|
||||
<@assignExtraField key="Contributore" value=theDocument.contributore asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.responsabile??>
|
||||
<@assignExtraField key="Responsabile dei contenuti" value=theDocument.responsabile asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.editore??>
|
||||
<@assignExtraField key="Ente responsabile del progetto" value=theDocument.editore asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#-- profiled-concessioni -->
|
||||
<#if theDocument.ufficioMic??>
|
||||
<@assignExtraField key="Ufficio MiC competente per territorio" value=theDocument.ufficioMic asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#-- concessioni-estere -->
|
||||
<#if theDocument.ufficioCompetente??>
|
||||
<@assignExtraField key="Ufficio estero competente per territorio" value=theDocument.ufficioCompetente asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.funzionarioResponsabile??>
|
||||
<@assignExtraField key="Funzionario Responsabile" value=theDocument.funzionarioResponsabile asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.fontiFinanziamento??>
|
||||
<#if theDocument.fontiFinanziamento?is_sequence>
|
||||
<#list theDocument.fontiFinanziamento as my_extra>
|
||||
<@assignExtraField key="Fonte del finanziamento" value=my_extra asObject=false></@assignExtraField>
|
||||
</#list>
|
||||
<#else>
|
||||
<@assignExtraField key="Fonte del finanziamento" value=theDocument.fontiFinanziamento asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.risorseCorrelate??>
|
||||
<#if theDocument.risorseCorrelate?is_sequence>
|
||||
<#list theDocument.risorseCorrelate as my_extra>
|
||||
<@assignExtraField key="Risorse Correlate" value=my_extra asObject=false></@assignExtraField>
|
||||
</#list>
|
||||
<#else>
|
||||
<@assignExtraField key="Risorse Correlate" value=theDocument.risorseCorrelate asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.dataInizioProgetto??>
|
||||
<@assignExtraField key="Data inizio Campagna" value=theDocument.dataInizioProgetto?trim asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.dataFineProgetto??>
|
||||
<@assignExtraField key="Data fine Campagna" value=theDocument.dataFineProgetto?trim asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.modalitaIndividuazione??>
|
||||
<#if theDocument.modalitaIndividuazione?is_sequence>
|
||||
<#list theDocument.modalitaIndividuazione as my_extra>
|
||||
<@assignExtraField key="Modalità di individuazione" value=my_extra asObject=false></@assignExtraField>
|
||||
</#list>
|
||||
<#else>
|
||||
<@assignExtraField key="Modalità di individuazione" value=theDocument.modalitaIndividuazione asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.contestoIndagine??>
|
||||
<#if theDocument.contestoIndagine?is_sequence>
|
||||
<#list theDocument.contestoIndagine as my_extra>
|
||||
<@assignExtraField key="Contesto Indagine" value=my_extra asObject=false></@assignExtraField>
|
||||
</#list>
|
||||
<#else>
|
||||
<@assignExtraField key="Contesto Indagine" value=theDocument.contestoIndagine asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.statoAttuale??>
|
||||
<@assignExtraField key="Stato attuale" value=theDocument.statoAttuale asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.accessibilita??>
|
||||
<@assignExtraField key="Accessibilità" value=theDocument.accessibilita asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
|
||||
<#if theDocument.cronologiaMacrofase??>
|
||||
<#if theDocument.cronologiaMacrofase?is_sequence>
|
||||
<#list theDocument.cronologiaMacrofase as my_extra>
|
||||
<@assignExtraField key="Cronologia Macrofase" value=my_extra asObject=false></@assignExtraField>
|
||||
</#list>
|
||||
<#else>
|
||||
<@assignExtraField key="Cronologia Macrofase" value=theDocument.cronologiaMacrofase asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#-- spatial field -->
|
||||
<#if jsonProj._identificationReferences?? && jsonProj._identificationReferences?size!=0 && jsonProj._identificationReferences[0].geoJSON??>
|
||||
<#assign geoJSON = jsonProj._identificationReferences[0].geoJSON>
|
||||
<#-- if coordinates exists, managing it as a Point -->
|
||||
<#if geoJSON.coordinates?? && geoJSON.coordinates?is_sequence && geoJSON.coordinates?size gt 2>
|
||||
<#assign point_Coordinates = [geoJSON.coordinates[0], geoJSON.coordinates[1]]>
|
||||
<#assign spatialField = '{\\"type\\": \\"${geoJSON.type}\\", \\"coordinates\\": [${point_Coordinates?join(", ")}]}'>
|
||||
<@assignExtraField key="spatial" value=spatialField asObject=false></@assignExtraField>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#-- Adding extra field "Anno" to add it as group -->
|
||||
<@assignExtraField key="Anno" value=dataInizioYear asObject=false></@assignExtraField>
|
||||
|
||||
<@buildExtrasFields the_extras=extras></@buildExtrasFields>
|
||||
}
|
||||
</#compress>
|
|
@ -0,0 +1,23 @@
|
|||
# REVIEW ACTION
|
||||
TITLE_REVIEW_REQUIRED=Review required for ${project_name}
|
||||
MSG_REVIEW_REQUIRED=@${user_caller} submitted the project ${project_name}. You are kindly requested to review it and decide either to APPROVE or REJECT it. See the Project at ${private_data_entry_link}
|
||||
# REJECTED ACTION
|
||||
TITLE_ITEM_REJECTED=Rejected ${project_name}
|
||||
MSG_ITEM_REJECTED=The project ${project_name} (id: ${project_id}) has just been rejected by @${user_caller}. See the Project at ${private_data_entry_link}
|
||||
# REJECTED ACTION
|
||||
TITLE_ITEM_REJECTED_REVIEW_REQUIRED=Rejected ${project_name}
|
||||
MSG_ITEM_REJECTED_REVIEW_REQUIRED=The project ${project_name} has just been rejected. You are kindly requested to review it. See the Project at ${private_data_entry_link}
|
||||
# PUBLISHED ACTION
|
||||
TITLE_ITEM_PUBLISHED=Published ${project_name}
|
||||
MSG_ITEM_PUBLISHED=The project ${project_name} created by @${item_creator} has just been published. See the Project at ${public_data_viewer_link}
|
||||
# CREATED ACTION
|
||||
TITLE_ITEM_CREATED=Created ${project_name}
|
||||
MSG_ITEM_CREATED=The project ${project_name} has just been created. See the Project at ${private_data_entry_link}
|
||||
# DELETED ACTION
|
||||
TITLE_ITEM_DELETED=Deleted ${project_name}
|
||||
MSG_ITEM_DELETED=The project ${project_name} has just been deleted
|
||||
# UPDATED ACTION
|
||||
TITLE_ITEM_UPDATED=Updated ${project_name}
|
||||
MSG_ITEM_UPDATED=The project ${project_name} (id: ${project_id}) has just been updated. See the Project at ${private_data_entry_link}
|
||||
# GO TO PDF ACTION
|
||||
MSG_GO_TO_PDF=Go to PDF report at ${project_as_pdf_link}
|
|
@ -0,0 +1,23 @@
|
|||
# REVIEW ACTION
|
||||
TITLE_REVIEW_REQUIRED=Richiesta di revisione per ${project_name}
|
||||
MSG_REVIEW_REQUIRED=@${user_caller} ha sottomesso il progetto ${project_name}. Si prega di esaminarlo e decidere se APPROVARLO o RIFIUTARLO. Vedi il progetto ${private_data_entry_link}
|
||||
# REJECTED ACTION
|
||||
TITLE_ITEM_REJECTED=Rigettato ${project_name}
|
||||
MSG_ITEM_REJECTED=Il progetto ${project_name} (id: ${project_id}) è stato rigettato da @${user_caller}. Vedi il progetto ${private_data_entry_link}
|
||||
# REJECTED ACTION
|
||||
TITLE_ITEM_REJECTED_REVIEW_REQUIRED=Rigettato ${project_name}
|
||||
MSG_ITEM_REJECTED_REVIEW_REQUIRED=Il progetto ${project_name} è stato rigettato. Si prega di rivederlo. Vedi il progetto ${private_data_entry_link}
|
||||
# PUBLISHED ACTION
|
||||
TITLE_ITEM_PUBLISHED=Pubblicato ${project_name}
|
||||
MSG_ITEM_PUBLISHED=Il progetto ${project_name} creato da @${item_creator} è stato pubblicato. Vedi il progetto ${public_data_viewer_link}
|
||||
# CREATED ACTION
|
||||
TITLE_ITEM_CREATED=Creato ${project_name}
|
||||
MSG_ITEM_CREATED=Il progetto ${project_name} è stato creato. Vedi il progetto ${private_data_entry_link}
|
||||
# DELETED ACTION
|
||||
TITLE_ITEM_DELETED=Cancellato ${project_name}
|
||||
MSG_ITEM_DELETED=Il progetto ${project_name} è stato cancellato
|
||||
# UPDATED ACTION
|
||||
TITLE_ITEM_UPDATED=Aggiornato ${project_name}
|
||||
MSG_ITEM_UPDATED=Il progetto ${project_name} (id: ${project_id}) è stato aggiornato. Vedi il progetto ${private_data_entry_link}
|
||||
# GO TO PDF ACTION
|
||||
MSG_GO_TO_PDF=Vai al report PDF ${project_as_pdf_link}
|
|
@ -0,0 +1,459 @@
|
|||
{
|
||||
"_id": "esquilino",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Esquilino",
|
||||
"_schema": {
|
||||
"fonteInformazione" :{
|
||||
"_children": [
|
||||
{"filesetIta": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"documentazioneScientifica" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"datiAltimetrici" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"planimetria" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "UCD for Equilino",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "fabio.sinibaldi"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{"_policy": {"_read": "any","_write": "any"},
|
||||
"_roles": ["Data-Manager"]},
|
||||
{"_policy": {"_read": "own","_write": "own"},
|
||||
"_roles": ["Data-Editor"]},
|
||||
{"_policy": {"_read": "any","_write": "none"},
|
||||
"_roles": ["Member"],
|
||||
"_enforcer": {"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"PUBLISHED\"}}"}},
|
||||
{"_policy": {"_read": "none","_write": "none"},
|
||||
"_roles": []}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "DEFAULT-SINGLE-STEP",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "PUBLISH",
|
||||
"roles": ["Data-Manager","Data-Editor"]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "datiAltimetrici",
|
||||
"documentPath": "datiAltimetrici[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "planimetria",
|
||||
"documentPath": "planimetria.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..planimetria.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "definizione",
|
||||
"path": "$._theDocument.definizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.descrizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia",
|
||||
"path": "$._theDocument.cronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "codice_partizione_archeologica",
|
||||
"path": "$._theDocument.codice_partizione_archeologica",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_acquisizione",
|
||||
"path": "$._theDocument.modalita_acquisizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_dati",
|
||||
"path": "$._theDocument.titolare_dati",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "copyright",
|
||||
"path": "$._theDocument.copyright",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Descrittivi",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Dati Descrittivi"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Fonte_Informazione",
|
||||
"sectionName": "fonteInformazione",
|
||||
"sectionTitle": "Fonte dell'informazione",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.fonteInformazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Documentazione_Scientifica",
|
||||
"sectionName": "documentazioneScientifica",
|
||||
"sectionTitle": "Documentazione scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Documentazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.documentazioneScientifica._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Immagine",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 10,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Altimetrici",
|
||||
"sectionName": "datiAltimetrici",
|
||||
"sectionTitle": "Dati Altimetrici",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.datiAltimetrici._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Planimetria",
|
||||
"sectionName": "planimetria",
|
||||
"sectionTitle": "Planimetria",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.planimetria._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": ["PUBLISH"],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "publish",
|
||||
"title": "Publish the Project",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Publish the Project",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,815 @@
|
|||
{
|
||||
"_id": "profiledConcessioni",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Indagini svolte in regime di concessione",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "ufficio_mic_competente",
|
||||
"path": "$._theDocument.ufficioMic",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "funzionario_responsabile",
|
||||
"path": "$._theDocument.funzionarioResponsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_individuazione",
|
||||
"path": "$._theDocument.modalitaIndividuazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contesto_indagine",
|
||||
"path": "$._theDocument.contestoIndagine",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "stato_attuale",
|
||||
"path": "$._theDocument.statoAttuale",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accessibilita",
|
||||
"path": "$._theDocument.accessibilita",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia_macrofase",
|
||||
"path": "$._theDocument.cronologiaMacrofase",
|
||||
"type": "TEXT",
|
||||
"apply_regex": {
|
||||
"type": "replaceAll",
|
||||
"regex": "(\\s)?\\([\\s\\S]*",
|
||||
"replacement": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "specifiche_cronologia",
|
||||
"path": "$._theDocument.specificheCronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_max",
|
||||
"path": "$._theDocument.quotaMax",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_min",
|
||||
"path": "$._theDocument.quotaMin",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_overlay_layers",
|
||||
"_type": "GROUPED_OVERLAY_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_overlay_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Layers automatically added to the Map",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wms_url": "https://geoserver-t.pre.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:regioni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Province",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wms_url": "https://geoserver-t.pre.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:province&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Comuni",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wms_url": "https://geoserver-t.pre.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:comuni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_cross_filtering_layers",
|
||||
"_type": "GROUPED_CROSS_FILTERING_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_cross_filtering_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Spatial filtering for the selected layer",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"description": "Le Regioni Italiane",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wfs_url": "https://geoserver-t.pre.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:regioni&maxFeatures=50&outputFormat=application%2Fjson&propertyName=COD_REG,DEN_REG&sortby=DEN_REG",
|
||||
"table_show_field": "DEN_REG",
|
||||
"table_key_field": "COD_REG",
|
||||
"table_parent_key_field": "",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Province",
|
||||
"description": "Le Province Italiane",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wfs_url": "https://geoserver-t.pre.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:province&maxFeatures=150&outputFormat=application%2Fjson&propertyName=COD_PROV,DEN_PROV,COD_REG&sortby=DEN_PROV",
|
||||
"table_show_field": "DEN_PROV",
|
||||
"table_key_field": "COD_PROV",
|
||||
"table_parent_key_field": "COD_REG",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Comuni",
|
||||
"description": "I Comuni Italiani",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wfs_url": "https://geoserver-t.pre.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:comuni&maxFeatures=9000&outputFormat=application%2Fjson&propertyName=PRO_COM,COMUNE,COD_PROV&sortby=COMUNE",
|
||||
"table_show_field": "COMUNE",
|
||||
"table_key_field": "PRO_COM",
|
||||
"table_parent_key_field": "COD_PROV",
|
||||
"table_geometry_name": "the_geom"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions": [
|
||||
{
|
||||
"_id": "precedes",
|
||||
"_label": "Precede",
|
||||
"_reverseRelationId": "follows"
|
||||
},
|
||||
{
|
||||
"_id": "follows",
|
||||
"_label": "Segue",
|
||||
"_reverseRelationId": "precedes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,735 @@
|
|||
{
|
||||
"_id": "concessioni-estere",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Missioni archeologiche italiane all'estero",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni estere [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "fabio.sinibaldi"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "ufficio_competente",
|
||||
"path": "$._theDocument.ufficioCompetente",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "funzionario_responsabile",
|
||||
"path": "$._theDocument.funzionarioResponsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_individuazione",
|
||||
"path": "$._theDocument.modalitaIndividuazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contesto_indagine",
|
||||
"path": "$._theDocument.contestoIndagine",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "stato_attuale",
|
||||
"path": "$._theDocument.statoAttuale",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accessibilita",
|
||||
"path": "$._theDocument.accessibilita",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia_macrofase",
|
||||
"path": "$._theDocument.cronologiaMacrofase",
|
||||
"type": "TEXT",
|
||||
"apply_regex": {
|
||||
"type": "replaceAll",
|
||||
"regex": "(\\s)?\\([\\s\\S]*",
|
||||
"replacement": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "specifiche_cronologia",
|
||||
"path": "$._theDocument.specificheCronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_max",
|
||||
"path": "$._theDocument.quotaMax",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_min",
|
||||
"path": "$._theDocument.quotaMin",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto_estero",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto per l'Estero"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions": [
|
||||
{
|
||||
"_id": "precedes",
|
||||
"_label": "Precede",
|
||||
"_reverseRelationId": "follows"
|
||||
},
|
||||
{
|
||||
"_id": "follows",
|
||||
"_label": "Segue",
|
||||
"_reverseRelationId": "precedes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,539 @@
|
|||
{
|
||||
"_id": "esquilino",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Esquilino",
|
||||
"_schema": {
|
||||
"fonteInformazione": {
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"documentazioneScientifica": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datiAltimetrici": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"planimetria": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "UCD for Equilino",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "fabio.sinibaldi"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "DEFAULT-SINGLE-STEP",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "PUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "datiAltimetrici",
|
||||
"documentPath": "datiAltimetrici.fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "planimetria",
|
||||
"documentPath": "planimetria.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..planimetria.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "definizione",
|
||||
"path": "$._theDocument.definizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.descrizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia",
|
||||
"path": "$._theDocument.cronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "codice_partizione_archeologica",
|
||||
"path": "$._theDocument.codice_partizione_archeologica",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_acquisizione",
|
||||
"path": "$._theDocument.modalita_acquisizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_dati",
|
||||
"path": "$._theDocument.titolare_dati",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "copyright",
|
||||
"path": "$._theDocument.copyright",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Descrittivi",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Dati Descrittivi"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Fonte_Informazione",
|
||||
"sectionName": "fonteInformazione",
|
||||
"sectionTitle": "Fonte dell'informazione",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.fonteInformazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Documentazione_Scientifica",
|
||||
"sectionName": "documentazioneScientifica",
|
||||
"sectionTitle": "Documentazione scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Documentazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.documentazioneScientifica._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Immagine",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 10,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Altimetrici",
|
||||
"sectionName": "datiAltimetrici",
|
||||
"sectionTitle": "Dati Altimetrici",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.datiAltimetrici._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Planimetria",
|
||||
"sectionName": "planimetria",
|
||||
"sectionTitle": "Planimetria",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.planimetria._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Publish the Project",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"PUBLISHED"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,459 @@
|
|||
{
|
||||
"_id": "esquilino",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Esquilino",
|
||||
"_schema": {
|
||||
"fonteInformazione" :{
|
||||
"_children": [
|
||||
{"filesetIta": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"documentazioneScientifica" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"datiAltimetrici" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
},
|
||||
"planimetria" :{
|
||||
"_children": [
|
||||
{"fileset": {"_type": "RegisteredFileSet"}}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "UCD for Equilino",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "fabio.sinibaldi"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{"_policy": {"_read": "any","_write": "any"},
|
||||
"_roles": ["Data-Manager"]},
|
||||
{"_policy": {"_read": "own","_write": "own"},
|
||||
"_roles": ["Data-Editor"]},
|
||||
{"_policy": {"_read": "any","_write": "none"},
|
||||
"_roles": ["Member"],
|
||||
"_enforcer": {"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"}},
|
||||
{"_policy": {"_read": "none","_write": "none"},
|
||||
"_roles": []}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "DEFAULT-SINGLE-STEP",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "PUBLISH",
|
||||
"roles": ["Data-Manager","Data-Editor"]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "datiAltimetrici",
|
||||
"documentPath": "datiAltimetrici.fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "planimetria",
|
||||
"documentPath": "planimetria.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..planimetria.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "definizione",
|
||||
"path": "$._theDocument.definizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.descrizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia",
|
||||
"path": "$._theDocument.cronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "codice_partizione_archeologica",
|
||||
"path": "$._theDocument.codice_partizione_archeologica",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_acquisizione",
|
||||
"path": "$._theDocument.modalita_acquisizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_dati",
|
||||
"path": "$._theDocument.titolare_dati",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "copyright",
|
||||
"path": "$._theDocument.copyright",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Descrittivi",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Dati Descrittivi"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Fonte_Informazione",
|
||||
"sectionName": "fonteInformazione",
|
||||
"sectionTitle": "Fonte dell'informazione",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.fonteInformazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Documentazione_Scientifica",
|
||||
"sectionName": "documentazioneScientifica",
|
||||
"sectionTitle": "Documentazione scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Documentazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.documentazioneScientifica._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Immagine",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 10,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Altimetrici",
|
||||
"sectionName": "datiAltimetrici",
|
||||
"sectionTitle": "Dati Altimetrici",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.datiAltimetrici._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Planimetria",
|
||||
"sectionName": "planimetria",
|
||||
"sectionTitle": "Planimetria",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.planimetria._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": ["PUBLISH"],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "publish",
|
||||
"title": "Publish the Project",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Publish the Project",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,539 @@
|
|||
{
|
||||
"_id": "esquilino",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Esquilino",
|
||||
"_schema": {
|
||||
"fonteInformazione": {
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"documentazioneScientifica": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"datiAltimetrici": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"planimetria": {
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "UCD for Equilino",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "fabio.sinibaldi"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"PUBLISHED\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "DEFAULT-SINGLE-STEP",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "PUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "datiAltimetrici",
|
||||
"documentPath": "datiAltimetrici[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "planimetria",
|
||||
"documentPath": "planimetria.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..planimetria.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "definizione",
|
||||
"path": "$._theDocument.definizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.descrizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia",
|
||||
"path": "$._theDocument.cronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "codice_partizione_archeologica",
|
||||
"path": "$._theDocument.codice_partizione_archeologica",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_acquisizione",
|
||||
"path": "$._theDocument.modalita_acquisizione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_dati",
|
||||
"path": "$._theDocument.titolare_dati",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "copyright",
|
||||
"path": "$._theDocument.copyright",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Descrittivi",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Dati Descrittivi"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Fonte_Informazione",
|
||||
"sectionName": "fonteInformazione",
|
||||
"sectionTitle": "Fonte dell'informazione",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.fonteInformazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Documentazione_Scientifica",
|
||||
"sectionName": "documentazioneScientifica",
|
||||
"sectionTitle": "Documentazione scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Documentazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.documentazioneScientifica._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Immagine",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 10,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Dati_Altimetrici",
|
||||
"sectionName": "datiAltimetrici",
|
||||
"sectionTitle": "Dati Altimetrici",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.datiAltimetrici._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoportalMetadata",
|
||||
"gcubeName": "Esquilino_Planimetria",
|
||||
"sectionName": "planimetria",
|
||||
"sectionTitle": "Planimetria",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.planimetria._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.definizione",
|
||||
"_theDocument.denominazione",
|
||||
"_theDocument.descrizione",
|
||||
"_theDocument.cronologia",
|
||||
"_theDocument.codice_partizione_archeologica",
|
||||
"_theDocument.modalita_acquisizione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati",
|
||||
"_theDocument.soggetto",
|
||||
"_theDocument.copyright"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Definition",
|
||||
"paths": [
|
||||
"_theDocument.definizione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.denominazione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Code",
|
||||
"paths": [
|
||||
"_theDocument.codice_partizione_archeologica"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolare_dati"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Chronology",
|
||||
"paths": [
|
||||
"_theDocument.cronologia"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"PUBLISH"
|
||||
],
|
||||
"description": "Publish the Project",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"PUBLISHED"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,815 @@
|
|||
{
|
||||
"_id": "profiledConcessioni",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Indagini svolte in regime di concessione",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "ufficio_mic_competente",
|
||||
"path": "$._theDocument.ufficioMic",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "funzionario_responsabile",
|
||||
"path": "$._theDocument.funzionarioResponsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_individuazione",
|
||||
"path": "$._theDocument.modalitaIndividuazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contesto_indagine",
|
||||
"path": "$._theDocument.contestoIndagine",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "stato_attuale",
|
||||
"path": "$._theDocument.statoAttuale",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accessibilita",
|
||||
"path": "$._theDocument.accessibilita",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia_macrofase",
|
||||
"path": "$._theDocument.cronologiaMacrofase",
|
||||
"type": "TEXT",
|
||||
"apply_regex": {
|
||||
"type": "replaceAll",
|
||||
"regex": "(\\s)?\\([\\s\\S]*",
|
||||
"replacement": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "specifiche_cronologia",
|
||||
"path": "$._theDocument.specificheCronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_max",
|
||||
"path": "$._theDocument.quotaMax",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_min",
|
||||
"path": "$._theDocument.quotaMin",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_overlay_layers",
|
||||
"_type": "GROUPED_OVERLAY_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_overlay_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Layers automatically added to the Map",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wms_url": "https://geoserver-geona.cloud.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:regioni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Province",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wms_url": "https://geoserver-geona.cloud.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:province&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Comuni",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wms_url": "https://geoserver-geona.cloud.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:comuni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_cross_filtering_layers",
|
||||
"_type": "GROUPED_CROSS_FILTERING_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_cross_filtering_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Spatial filtering for the selected layer",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"description": "Le Regioni Italiane",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wfs_url": "https://geoserver-geona.cloud.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:regioni&maxFeatures=50&outputFormat=application%2Fjson&propertyName=COD_REG,DEN_REG&sortby=DEN_REG",
|
||||
"table_show_field": "DEN_REG",
|
||||
"table_key_field": "COD_REG",
|
||||
"table_parent_key_field": "",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Province",
|
||||
"description": "Le Province Italiane",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wfs_url": "https://geoserver-geona.cloud.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:province&maxFeatures=150&outputFormat=application%2Fjson&propertyName=COD_PROV,DEN_PROV,COD_REG&sortby=DEN_PROV",
|
||||
"table_show_field": "DEN_PROV",
|
||||
"table_key_field": "COD_PROV",
|
||||
"table_parent_key_field": "COD_REG",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Comuni",
|
||||
"description": "I Comuni Italiani",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wfs_url": "https://geoserver-geona.cloud.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:comuni&maxFeatures=9000&outputFormat=application%2Fjson&propertyName=PRO_COM,COMUNE,COD_PROV&sortby=COMUNE",
|
||||
"table_show_field": "COMUNE",
|
||||
"table_key_field": "PRO_COM",
|
||||
"table_parent_key_field": "COD_PROV",
|
||||
"table_geometry_name": "the_geom"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions": [
|
||||
{
|
||||
"_id": "precedes",
|
||||
"_label": "Precede",
|
||||
"_reverseRelationId": "follows"
|
||||
},
|
||||
{
|
||||
"_id": "follows",
|
||||
"_label": "Segue",
|
||||
"_reverseRelationId": "precedes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,702 @@
|
|||
{
|
||||
"_id": "profiledConcessioni",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Indagini svolte in regime di concessione",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "autore",
|
||||
"path": "$._theDocument.authors",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare",
|
||||
"path": "$._theDocument.titolari",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_licenza",
|
||||
"path": "$._theDocument.titolareLicenza",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Author/s",
|
||||
"paths": [
|
||||
"_theDocument.authors"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions": [
|
||||
{
|
||||
"_id": "precedes",
|
||||
"_label": "Precede",
|
||||
"_reverseRelationId": "follows"
|
||||
},
|
||||
{
|
||||
"_id": "follows",
|
||||
"_label": "Segue",
|
||||
"_reverseRelationId": "precedes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,735 @@
|
|||
{
|
||||
"_id": "concessioni-estere",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Missioni archeologiche italiane all'estero",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni estere [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "ufficio_competente",
|
||||
"path": "$._theDocument.ufficioCompetente",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "funzionario_responsabile",
|
||||
"path": "$._theDocument.funzionarioResponsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "modalita_individuazione",
|
||||
"path": "$._theDocument.modalitaIndividuazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contesto_indagine",
|
||||
"path": "$._theDocument.contestoIndagine",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "denominazione",
|
||||
"path": "$._theDocument.denominazione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "stato_attuale",
|
||||
"path": "$._theDocument.statoAttuale",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accessibilita",
|
||||
"path": "$._theDocument.accessibilita",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "cronologia_macrofase",
|
||||
"path": "$._theDocument.cronologiaMacrofase",
|
||||
"type": "TEXT",
|
||||
"apply_regex": {
|
||||
"type": "replaceAll",
|
||||
"regex": "(\\s)?\\([\\s\\S]*",
|
||||
"replacement": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "specifiche_cronologia",
|
||||
"path": "$._theDocument.specificheCronologia",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_max",
|
||||
"path": "$._theDocument.quotaMax",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "quota_min",
|
||||
"path": "$._theDocument.quotaMin",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto_estero",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto Estero"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.contestoIndagine",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.editore"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.cronologiaMacrofase",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions": [
|
||||
{
|
||||
"_id": "precedes",
|
||||
"_label": "Precede",
|
||||
"_reverseRelationId": "follows"
|
||||
},
|
||||
{
|
||||
"_id": "follows",
|
||||
"_label": "Segue",
|
||||
"_reverseRelationId": "precedes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,782 @@
|
|||
{
|
||||
"_id": "profiledConcessioni",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Indagini svolte in regime di concessione",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "any"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "own",
|
||||
"_write": "own"
|
||||
},
|
||||
"_roles": [
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "any",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": [
|
||||
"Member"
|
||||
],
|
||||
"_enforcer": {
|
||||
"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_policy": {
|
||||
"_read": "none",
|
||||
"_write": "none"
|
||||
},
|
||||
"_roles": []
|
||||
}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "autore",
|
||||
"path": "$._theDocument.authors",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare",
|
||||
"path": "$._theDocument.titolari",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_licenza",
|
||||
"path": "$._theDocument.titolareLicenza",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Author/s",
|
||||
"paths": [
|
||||
"_theDocument.authors"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_overlay_layers",
|
||||
"_type": "GROUPED_OVERLAY_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_overlay_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Layers automatically added to the Map",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wms_url": "https://geona-proto.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:regioni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Province",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wms_url": "https://geona-proto.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:province&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
},
|
||||
{
|
||||
"title": "Comuni",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wms_url": "https://geona-proto.d4science.org/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=limiti_amministrativi:comuni&styles=&bbox=6.626621368537682,35.49285260122859,18.520381599098922,47.09178374646218&width=768&height=748&srs=EPSG:4326&format=application%2Fopenlayers",
|
||||
"display": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.grouped_cross_filtering_layers",
|
||||
"_type": "GROUPED_CROSS_FILTERING_LAYERS",
|
||||
"_configuration": {
|
||||
"grouped_cross_filtering_layers": [
|
||||
{
|
||||
"name": "Limiti Amministrativi Italiani 2023 (fonte ISTAT)",
|
||||
"description": "Spatial filtering for the selected layer",
|
||||
"layers": [
|
||||
{
|
||||
"title": "Regioni",
|
||||
"description": "Le Regioni Italiane",
|
||||
"name": "limiti_amministrativi:regioni",
|
||||
"wfs_url": "https://geona-proto.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:regioni&maxFeatures=50&outputFormat=application%2Fjson&propertyName=COD_REG,DEN_REG&sortby=DEN_REG",
|
||||
"table_show_field": "DEN_REG",
|
||||
"table_key_field": "COD_REG",
|
||||
"table_parent_key_field": "",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Province",
|
||||
"description": "Le Province Italiane",
|
||||
"name": "limiti_amministrativi:province",
|
||||
"wfs_url": "https://geona-proto.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:province&maxFeatures=150&outputFormat=application%2Fjson&propertyName=COD_PROV,DEN_PROV,COD_REG&sortby=DEN_PROV",
|
||||
"table_show_field": "DEN_PROV",
|
||||
"table_key_field": "COD_PROV",
|
||||
"table_parent_key_field": "COD_REG",
|
||||
"table_geometry_name": "the_geom",
|
||||
"related_to": [
|
||||
{
|
||||
"title": "Comuni",
|
||||
"description": "I Comuni Italiani",
|
||||
"name": "limiti_amministrativi:comuni",
|
||||
"wfs_url": "https://geona-proto.d4science.org/geoserver/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=limiti_amministrativi:comuni&maxFeatures=9000&outputFormat=application%2Fjson&propertyName=PRO_COM,COMUNE,COD_PROV&sortby=COMUNE",
|
||||
"table_show_field": "COMUNE",
|
||||
"table_key_field": "PRO_COM",
|
||||
"table_parent_key_field": "COD_PROV",
|
||||
"table_geometry_name": "the_geom"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions": [
|
||||
{
|
||||
"_id": "precedes",
|
||||
"_label": "Precede",
|
||||
"_reverseRelationId": "follows"
|
||||
},
|
||||
{
|
||||
"_id": "follows",
|
||||
"_label": "Segue",
|
||||
"_reverseRelationId": "precedes"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,669 @@
|
|||
{
|
||||
"_id": "concessioni-estere",
|
||||
"_version": "1.0.0",
|
||||
"_name": "Missioni archeologiche italiane all'estero",
|
||||
"_schema": {
|
||||
"abstractRelazione": {
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"filesetIta": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"filesetEng": {
|
||||
"_type": "RegisteredFileSet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"relazioneScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"immaginiRappresentative": {
|
||||
"_max": 4,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"posizionamentoScavo": {
|
||||
"_max": 1,
|
||||
"_min": 1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"pianteFineScavo": {
|
||||
"_max": -1,
|
||||
"_children": [
|
||||
{
|
||||
"fileset": {
|
||||
"_type": "RegisteredFileSet",
|
||||
"_min": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": {
|
||||
"_min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"_description": "Embedded profile for concessioni estere [mibac] management",
|
||||
"_creationInfo": {
|
||||
"_user": {
|
||||
"_username": "francesco.mangiacrapa"
|
||||
}
|
||||
},
|
||||
"_dataAccessPolicies": [
|
||||
{"_policy": {"_read": "any","_write": "any"},
|
||||
"_roles": ["Data-Manager"]},
|
||||
{"_policy": {"_read": "own","_write": "own"},
|
||||
"_roles": ["Data-Editor"]},
|
||||
{"_policy": {"_read": "any","_write": "none"},
|
||||
"_roles": ["Member"],
|
||||
"_enforcer": {"_filter": "{\"_lifecycleInformation._phase\" : {\"$eq\" : \"Published\"}}"}},
|
||||
{"_policy": {"_read": "none","_write": "none"},
|
||||
"_roles": []}
|
||||
],
|
||||
"_handlers": [
|
||||
{
|
||||
"_id": "GNA-CONCESSIONI-LC",
|
||||
"_type": "LifecycleManagement",
|
||||
"_configuration": {
|
||||
"step_access": [
|
||||
{
|
||||
"STEP": "SUBMIT-FOR-REVIEW",
|
||||
"roles": []
|
||||
},
|
||||
{
|
||||
"STEP": "REJECT-DRAFT",
|
||||
"roles": [
|
||||
"Data-Manager",
|
||||
"Data-Editor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "APPROVE-SUBMITTED",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
},
|
||||
{
|
||||
"STEP": "UNPUBLISH",
|
||||
"roles": [
|
||||
"Data-Manager"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Default-Materializer",
|
||||
"_type": "Materializer",
|
||||
"_configuration": {
|
||||
"registeredFileSetPaths": [
|
||||
{
|
||||
"schemaField": "pianteFineScavo",
|
||||
"documentPath": "pianteFineScavo[*].fileset"
|
||||
},
|
||||
{
|
||||
"schemaField": "posizionamentoScavo",
|
||||
"documentPath": "posizionamentoScavo.fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "SDI-Indexer-Plugin",
|
||||
"_type": "Indexer",
|
||||
"_configuration": {
|
||||
"bboxEvaluation": [
|
||||
"$..posizionamentoScavo.._bbox"
|
||||
],
|
||||
"explicitFieldMapping": [
|
||||
{
|
||||
"name": "nome",
|
||||
"path": "$._theDocument.nome",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_inizio_progetto",
|
||||
"path": "$._theDocument.dataInizioProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "descrizione",
|
||||
"path": "$._theDocument.introduzione",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contenuto",
|
||||
"path": "$._theDocument.descrizioneContenuto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "autore",
|
||||
"path": "$._theDocument.authors",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "contributore",
|
||||
"path": "$._theDocument.contributore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare",
|
||||
"path": "$._theDocument.titolari",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "responsabile",
|
||||
"path": "$._theDocument.responsabile",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "editore",
|
||||
"path": "$._theDocument.editore",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "finanziamento",
|
||||
"path": "$._theDocument.fontiFinanziamento",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "soggetto",
|
||||
"path": "$._theDocument.soggetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "risorse",
|
||||
"path": "$._theDocument.risorseCorrelate",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_fine_progetto",
|
||||
"path": "$._theDocument.dataFineProgetto",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "data_archiviazione",
|
||||
"path": "$._info._lastEditInfo._instant",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "versione",
|
||||
"path": "$._version",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "licenza",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "titolare_licenza",
|
||||
"path": "$._theDocument.titolareLicenza",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "accesso",
|
||||
"path": "$._info._access._license",
|
||||
"type": "TEXT"
|
||||
},
|
||||
{
|
||||
"name": "parole_chiave",
|
||||
"path": "$._theDocument.paroleChiaveLibere",
|
||||
"type": "TEXT"
|
||||
}
|
||||
],
|
||||
"jslt": {},
|
||||
"additionalLayers": [
|
||||
{
|
||||
"source": {
|
||||
"url": "..."
|
||||
},
|
||||
"toSetTitle": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-entry-app",
|
||||
"_type": "DATA_ENTRY_GUI",
|
||||
"_configuration": {
|
||||
"gcubeProfiles": [
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Informazioni_di_progetto",
|
||||
"sectionName": "$.",
|
||||
"sectionTitle": "Informazioni di Progetto"
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Abstract_Relazione_di_Scavo",
|
||||
"sectionName": "abstractRelazione",
|
||||
"sectionTitle": "Abstract della Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||
"fieldName": "filesetIta"
|
||||
},
|
||||
{
|
||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||
"fieldName": "filesetEng"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Relazione_di_Scavo",
|
||||
"sectionName": "relazioneScavo",
|
||||
"sectionTitle": "Relazione Scientifica",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Relazione scientifica (in PDF)",
|
||||
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Immagine_Rappresentativa_di_Scavo",
|
||||
"sectionName": "immaginiRappresentative",
|
||||
"sectionTitle": "Immagini Rappresentative",
|
||||
"minOccurs": 1,
|
||||
"maxOccurs": 4,
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "Immagine",
|
||||
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Posizionamento_dell_area_di_indagine",
|
||||
"sectionName": "posizionamentoScavo",
|
||||
"sectionTitle": "Posizionamento dell'Area di Indagine",
|
||||
"parentName": "$.",
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"gcubeSecondaryType": "GeoNaMetadata",
|
||||
"gcubeName": "Pianta_di_fine_Scavo",
|
||||
"sectionName": "pianteFineScavo",
|
||||
"sectionTitle": "Piante di Fine Indagine",
|
||||
"parentName": "$.",
|
||||
"minOccurs": 0,
|
||||
"maxOccurs": 0,
|
||||
"filePaths": [
|
||||
{
|
||||
"gcubeProfileFieldName": "File",
|
||||
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||
"fieldName": "fileset"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"saveStep": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-data-list",
|
||||
"_type": "DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Author/s",
|
||||
"paths": [
|
||||
"_theDocument.authors"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (yyyy-mm-dd)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Creator",
|
||||
"paths": [
|
||||
"_info._creationInfo._user._username"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Updated",
|
||||
"paths": [
|
||||
"_info._lastEditInfo._instant"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": false,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Phase",
|
||||
"paths": [
|
||||
"_lifecycleInformation._phase"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Status",
|
||||
"paths": [
|
||||
"_lifecycleInformation._lastOperationStatus"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-basic-data-list",
|
||||
"_type": "BASIC_DATA_LIST_GUI",
|
||||
"_configuration": {
|
||||
"itemFields": [
|
||||
{
|
||||
"label": "Any Field",
|
||||
"paths": [
|
||||
"_theDocument.nome",
|
||||
"_theDocument.introduzione",
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile",
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Name",
|
||||
"paths": [
|
||||
"_theDocument.nome"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": true,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Introduction",
|
||||
"paths": [
|
||||
"_theDocument.introduzione"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": false,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Project Start (YEAR)",
|
||||
"paths": [
|
||||
"_theDocument.dataInizioProgetto"
|
||||
],
|
||||
"operator": "$and",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": false
|
||||
},
|
||||
{
|
||||
"label": "Director/Staff",
|
||||
"paths": [
|
||||
"_theDocument.authors",
|
||||
"_theDocument.contributore",
|
||||
"_theDocument.titolari",
|
||||
"_theDocument.editore",
|
||||
"_theDocument.responsabile"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
},
|
||||
{
|
||||
"label": "Keywords",
|
||||
"paths": [
|
||||
"_theDocument.paroleChiaveLibere",
|
||||
"_theDocument.paroleChiaveICCD"
|
||||
],
|
||||
"operator": "$or",
|
||||
"searchable": true,
|
||||
"sortable": false,
|
||||
"asResult": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-timeline-json-template",
|
||||
"_type": "TIMELINE_JSON_TEMPLATE",
|
||||
"_configuration": {
|
||||
"tjt_document": {
|
||||
"content": "$.nome",
|
||||
"title": "$.nome",
|
||||
"start": "$.dataInizioProgetto",
|
||||
"end": "$.dataFineProgetto"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "org.gcube.portlets.user.geoportal-workflow-action-list",
|
||||
"_type": "WORKFLOW_ACTION_LIST_GUI",
|
||||
"_configuration": {
|
||||
"actionsDefinition": [
|
||||
{
|
||||
"id": "post_creation_action",
|
||||
"title": "Post Creation Action",
|
||||
"call_STEPS": [],
|
||||
"description": "Action fired after the Project creation",
|
||||
"display_on_phase": []
|
||||
},
|
||||
{
|
||||
"id": "submit_for_review",
|
||||
"title": "Submit for Review",
|
||||
"call_STEPS": [
|
||||
"SUBMIT-FOR-REVIEW"
|
||||
],
|
||||
"description": "Submit the Project (for review)",
|
||||
"display_on_phase": [
|
||||
"DRAFT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reject",
|
||||
"title": "Reject",
|
||||
"call_STEPS": [
|
||||
"REJECT-DRAFT"
|
||||
],
|
||||
"description": "Reject the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "approve",
|
||||
"title": "Approve",
|
||||
"call_STEPS": [
|
||||
"APPROVE-SUBMITTED"
|
||||
],
|
||||
"description": "Approve the Project",
|
||||
"display_on_phase": [
|
||||
"Pending Approval"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "unpublish",
|
||||
"title": "UnPublish",
|
||||
"call_STEPS": [
|
||||
"UNPUBLISH"
|
||||
],
|
||||
"description": "UnPublish the Project",
|
||||
"display_on_phase": [
|
||||
"Published"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_relationshipDefinitions" : [
|
||||
{"_id": "precedes", "_label" : "Precede",
|
||||
"_reverseRelationId" : "follows"},
|
||||
{"_id": "follows", "_label" : "Segue",
|
||||
"_reverseRelationId" : "precedes"}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
# Acknowledgments
|
||||
|
||||
The projects leading to this software have received funding from a series of European Union programmes including:
|
||||
|
||||
- the Sixth Framework Programme for Research and Technological Development
|
||||
- [DILIGENT](https://cordis.europa.eu/project/id/004260) (grant no. 004260).
|
||||
- the Seventh Framework Programme for research, technological development and demonstration
|
||||
- [D4Science](https://cordis.europa.eu/project/id/212488) (grant no. 212488);
|
||||
- [D4Science-II](https://cordis.europa.eu/project/id/239019) (grant no.239019);
|
||||
- [ENVRI](https://cordis.europa.eu/project/id/283465) (grant no. 283465);
|
||||
- [iMarine](https://cordis.europa.eu/project/id/283644) (grant no. 283644);
|
||||
- [EUBrazilOpenBio](https://cordis.europa.eu/project/id/288754) (grant no. 288754).
|
||||
- the H2020 research and innovation programme
|
||||
- [SoBigData](https://cordis.europa.eu/project/id/654024) (grant no. 654024);
|
||||
- [PARTHENOS](https://cordis.europa.eu/project/id/654119) (grant no. 654119);
|
||||
- [EGI-Engage](https://cordis.europa.eu/project/id/654142) (grant no. 654142);
|
||||
- [ENVRI PLUS](https://cordis.europa.eu/project/id/654182) (grant no. 654182);
|
||||
- [BlueBRIDGE](https://cordis.europa.eu/project/id/675680) (grant no. 675680);
|
||||
- [PerformFISH](https://cordis.europa.eu/project/id/727610) (grant no. 727610);
|
||||
- [AGINFRA PLUS](https://cordis.europa.eu/project/id/731001) (grant no. 731001);
|
||||
- [DESIRA](https://cordis.europa.eu/project/id/818194) (grant no. 818194);
|
||||
- [ARIADNEplus](https://cordis.europa.eu/project/id/823914) (grant no. 823914);
|
||||
- [RISIS 2](https://cordis.europa.eu/project/id/824091) (grant no. 824091);
|
||||
- [EOSC-Pillar](https://cordis.europa.eu/project/id/857650) (grant no. 857650);
|
||||
- [Blue Cloud](https://cordis.europa.eu/project/id/862409) (grant no. 862409);
|
||||
- [SoBigData-PlusPlus](https://cordis.europa.eu/project/id/871042) (grant no. 871042);
|
|
@ -0,0 +1,312 @@
|
|||
# European Union Public Licence V. 1.1
|
||||
|
||||
|
||||
EUPL © the European Community 2007
|
||||
|
||||
|
||||
This European Union Public Licence (the “EUPL”) applies to the Work or Software
|
||||
(as defined below) which is provided under the terms of this Licence. Any use of
|
||||
the Work, other than as authorised under this Licence is prohibited (to the
|
||||
extent such use is covered by a right of the copyright holder of the Work).
|
||||
|
||||
The Original Work is provided under the terms of this Licence when the Licensor
|
||||
(as defined below) has placed the following notice immediately following the
|
||||
copyright notice for the Original Work:
|
||||
|
||||
Licensed under the EUPL V.1.1
|
||||
|
||||
or has expressed by any other mean his willingness to license under the EUPL.
|
||||
|
||||
|
||||
|
||||
## 1. Definitions
|
||||
|
||||
In this Licence, the following terms have the following meaning:
|
||||
|
||||
- The Licence: this Licence.
|
||||
|
||||
- The Original Work or the Software: the software distributed and/or
|
||||
communicated by the Licensor under this Licence, available as Source Code and
|
||||
also as Executable Code as the case may be.
|
||||
|
||||
- Derivative Works: the works or software that could be created by the Licensee,
|
||||
based upon the Original Work or modifications thereof. This Licence does not
|
||||
define the extent of modification or dependence on the Original Work required
|
||||
in order to classify a work as a Derivative Work; this extent is determined by
|
||||
copyright law applicable in the country mentioned in Article 15.
|
||||
|
||||
- The Work: the Original Work and/or its Derivative Works.
|
||||
|
||||
- The Source Code: the human-readable form of the Work which is the most
|
||||
convenient for people to study and modify.
|
||||
|
||||
- The Executable Code: any code which has generally been compiled and which is
|
||||
meant to be interpreted by a computer as a program.
|
||||
|
||||
- The Licensor: the natural or legal person that distributes and/or communicates
|
||||
the Work under the Licence.
|
||||
|
||||
- Contributor(s): any natural or legal person who modifies the Work under the
|
||||
Licence, or otherwise contributes to the creation of a Derivative Work.
|
||||
|
||||
- The Licensee or “You”: any natural or legal person who makes any usage of the
|
||||
Software under the terms of the Licence.
|
||||
|
||||
- Distribution and/or Communication: any act of selling, giving, lending,
|
||||
renting, distributing, communicating, transmitting, or otherwise making
|
||||
available, on-line or off-line, copies of the Work or providing access to its
|
||||
essential functionalities at the disposal of any other natural or legal
|
||||
person.
|
||||
|
||||
|
||||
|
||||
## 2. Scope of the rights granted by the Licence
|
||||
|
||||
The Licensor hereby grants You a world-wide, royalty-free, non-exclusive,
|
||||
sub-licensable licence to do the following, for the duration of copyright vested
|
||||
in the Original Work:
|
||||
|
||||
- use the Work in any circumstance and for all usage, reproduce the Work, modify
|
||||
- the Original Work, and make Derivative Works based upon the Work, communicate
|
||||
- to the public, including the right to make available or display the Work or
|
||||
- copies thereof to the public and perform publicly, as the case may be, the
|
||||
- Work, distribute the Work or copies thereof, lend and rent the Work or copies
|
||||
- thereof, sub-license rights in the Work or copies thereof.
|
||||
|
||||
Those rights can be exercised on any media, supports and formats, whether now
|
||||
known or later invented, as far as the applicable law permits so.
|
||||
|
||||
In the countries where moral rights apply, the Licensor waives his right to
|
||||
exercise his moral right to the extent allowed by law in order to make effective
|
||||
the licence of the economic rights here above listed.
|
||||
|
||||
The Licensor grants to the Licensee royalty-free, non exclusive usage rights to
|
||||
any patents held by the Licensor, to the extent necessary to make use of the
|
||||
rights granted on the Work under this Licence.
|
||||
|
||||
|
||||
|
||||
## 3. Communication of the Source Code
|
||||
|
||||
The Licensor may provide the Work either in its Source Code form, or as
|
||||
Executable Code. If the Work is provided as Executable Code, the Licensor
|
||||
provides in addition a machine-readable copy of the Source Code of the Work
|
||||
along with each copy of the Work that the Licensor distributes or indicates, in
|
||||
a notice following the copyright notice attached to the Work, a repository where
|
||||
the Source Code is easily and freely accessible for as long as the Licensor
|
||||
continues to distribute and/or communicate the Work.
|
||||
|
||||
|
||||
|
||||
## 4. Limitations on copyright
|
||||
|
||||
Nothing in this Licence is intended to deprive the Licensee of the benefits from
|
||||
any exception or limitation to the exclusive rights of the rights owners in the
|
||||
Original Work or Software, of the exhaustion of those rights or of other
|
||||
applicable limitations thereto.
|
||||
|
||||
|
||||
|
||||
## 5. Obligations of the Licensee
|
||||
|
||||
The grant of the rights mentioned above is subject to some restrictions and
|
||||
obligations imposed on the Licensee. Those obligations are the following:
|
||||
|
||||
Attribution right: the Licensee shall keep intact all copyright, patent or
|
||||
trademarks notices and all notices that refer to the Licence and to the
|
||||
disclaimer of warranties. The Licensee must include a copy of such notices and a
|
||||
copy of the Licence with every copy of the Work he/she distributes and/or
|
||||
communicates. The Licensee must cause any Derivative Work to carry prominent
|
||||
notices stating that the Work has been modified and the date of modification.
|
||||
|
||||
Copyleft clause: If the Licensee distributes and/or communicates copies of the
|
||||
Original Works or Derivative Works based upon the Original Work, this
|
||||
Distribution and/or Communication will be done under the terms of this Licence
|
||||
or of a later version of this Licence unless the Original Work is expressly
|
||||
distributed only under this version of the Licence. The Licensee (becoming
|
||||
Licensor) cannot offer or impose any additional terms or conditions on the Work
|
||||
or Derivative Work that alter or restrict the terms of the Licence.
|
||||
|
||||
Compatibility clause: If the Licensee Distributes and/or Communicates Derivative
|
||||
Works or copies thereof based upon both the Original Work and another work
|
||||
licensed under a Compatible Licence, this Distribution and/or Communication can
|
||||
be done under the terms of this Compatible Licence. For the sake of this clause,
|
||||
“Compatible Licence” refers to the licences listed in the appendix attached to
|
||||
this Licence. Should the Licensee’s obligations under the Compatible Licence
|
||||
conflict with his/her obligations under this Licence, the obligations of the
|
||||
Compatible Licence shall prevail.
|
||||
|
||||
Provision of Source Code: When distributing and/or communicating copies of the
|
||||
Work, the Licensee will provide a machine-readable copy of the Source Code or
|
||||
indicate a repository where this Source will be easily and freely available for
|
||||
as long as the Licensee continues to distribute and/or communicate the Work.
|
||||
|
||||
Legal Protection: This Licence does not grant permission to use the trade names,
|
||||
trademarks, service marks, or names of the Licensor, except as required for
|
||||
reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the copyright notice.
|
||||
|
||||
|
||||
|
||||
## 6. Chain of Authorship
|
||||
|
||||
The original Licensor warrants that the copyright in the Original Work granted
|
||||
hereunder is owned by him/her or licensed to him/her and that he/she has the
|
||||
power and authority to grant the Licence.
|
||||
|
||||
Each Contributor warrants that the copyright in the modifications he/she brings
|
||||
to the Work are owned by him/her or licensed to him/her and that he/she has the
|
||||
power and authority to grant the Licence.
|
||||
|
||||
Each time You accept the Licence, the original Licensor and subsequent
|
||||
Contributors grant You a licence to their contributions to the Work, under the
|
||||
terms of this Licence.
|
||||
|
||||
|
||||
|
||||
## 7. Disclaimer of Warranty
|
||||
|
||||
The Work is a work in progress, which is continuously improved by numerous
|
||||
contributors. It is not a finished work and may therefore contain defects or
|
||||
“bugs” inherent to this type of software development.
|
||||
|
||||
For the above reason, the Work is provided under the Licence on an “as is” basis
|
||||
and without warranties of any kind concerning the Work, including without
|
||||
limitation merchantability, fitness for a particular purpose, absence of defects
|
||||
or errors, accuracy, non-infringement of intellectual property rights other than
|
||||
copyright as stated in Article 6 of this Licence.
|
||||
|
||||
This disclaimer of warranty is an essential part of the Licence and a condition
|
||||
for the grant of any rights to the Work.
|
||||
|
||||
|
||||
|
||||
## 8. Disclaimer of Liability
|
||||
|
||||
Except in the cases of wilful misconduct or damages directly caused to natural
|
||||
persons, the Licensor will in no event be liable for any direct or indirect,
|
||||
material or moral, damages of any kind, arising out of the Licence or of the use
|
||||
of the Work, including without limitation, damages for loss of goodwill, work
|
||||
stoppage, computer failure or malfunction, loss of data or any commercial
|
||||
damage, even if the Licensor has been advised of the possibility of such
|
||||
damage. However, the Licensor will be liable under statutory product liability
|
||||
laws as far such laws apply to the Work.
|
||||
|
||||
|
||||
|
||||
## 9. Additional agreements
|
||||
|
||||
While distributing the Original Work or Derivative Works, You may choose to
|
||||
conclude an additional agreement to offer, and charge a fee for, acceptance of
|
||||
support, warranty, indemnity, or other liability obligations and/or services
|
||||
consistent with this Licence. However, in accepting such obligations, You may
|
||||
act only on your own behalf and on your sole responsibility, not on behalf of
|
||||
the original Licensor or any other Contributor, and only if You agree to
|
||||
indemnify, defend, and hold each Contributor harmless for any liability incurred
|
||||
by, or claims asserted against such Contributor by the fact You have accepted
|
||||
any such warranty or additional liability.
|
||||
|
||||
|
||||
|
||||
## 10. Acceptance of the Licence
|
||||
|
||||
The provisions of this Licence can be accepted by clicking on an icon “I agree”
|
||||
placed under the bottom of a window displaying the text of this Licence or by
|
||||
affirming consent in any other similar way, in accordance with the rules of
|
||||
applicable law. Clicking on that icon indicates your clear and irrevocable
|
||||
acceptance of this Licence and all of its terms and conditions.
|
||||
|
||||
Similarly, you irrevocably accept this Licence and all of its terms and
|
||||
conditions by exercising any rights granted to You by Article 2 of this Licence,
|
||||
such as the use of the Work, the creation by You of a Derivative Work or the
|
||||
Distribution and/or Communication by You of the Work or copies thereof.
|
||||
|
||||
|
||||
|
||||
## 11. Information to the public
|
||||
|
||||
In case of any Distribution and/or Communication of the Work by means of
|
||||
electronic communication by You (for example, by offering to download the Work
|
||||
from a remote location) the distribution channel or media (for example, a
|
||||
website) must at least provide to the public the information requested by the
|
||||
applicable law regarding the Licensor, the Licence and the way it may be
|
||||
accessible, concluded, stored and reproduced by the Licensee.
|
||||
|
||||
|
||||
|
||||
## 12. Termination of the Licence
|
||||
|
||||
The Licence and the rights granted hereunder will terminate automatically upon
|
||||
any breach by the Licensee of the terms of the Licence.
|
||||
|
||||
Such a termination will not terminate the licences of any person who has
|
||||
received the Work from the Licensee under the Licence, provided such persons
|
||||
remain in full compliance with the Licence.
|
||||
|
||||
|
||||
|
||||
## 13. Miscellaneous
|
||||
|
||||
Without prejudice of Article 9 above, the Licence represents the complete
|
||||
agreement between the Parties as to the Work licensed hereunder.
|
||||
|
||||
If any provision of the Licence is invalid or unenforceable under applicable
|
||||
law, this will not affect the validity or enforceability of the Licence as a
|
||||
whole. Such provision will be construed and/or reformed so as necessary to make
|
||||
it valid and enforceable.
|
||||
|
||||
The European Commission may publish other linguistic versions and/or new
|
||||
versions of this Licence, so far this is required and reasonable, without
|
||||
reducing the scope of the rights granted by the Licence. New versions of the
|
||||
Licence will be published with a unique version number.
|
||||
|
||||
All linguistic versions of this Licence, approved by the European Commission,
|
||||
have identical value. Parties can take advantage of the linguistic version of
|
||||
their choice.
|
||||
|
||||
|
||||
|
||||
## 14. Jurisdiction
|
||||
|
||||
Any litigation resulting from the interpretation of this License, arising
|
||||
between the European Commission, as a Licensor, and any Licensee, will be
|
||||
subject to the jurisdiction of the Court of Justice of the European Communities,
|
||||
as laid down in article 238 of the Treaty establishing the European Community.
|
||||
|
||||
Any litigation arising between Parties, other than the European Commission, and
|
||||
resulting from the interpretation of this License, will be subject to the
|
||||
exclusive jurisdiction of the competent court where the Licensor resides or
|
||||
conducts its primary business.
|
||||
|
||||
|
||||
|
||||
## 15. Applicable Law
|
||||
|
||||
This Licence shall be governed by the law of the European Union country where
|
||||
the Licensor resides or has his registered office.
|
||||
|
||||
This licence shall be governed by the Belgian law if:
|
||||
|
||||
- a litigation arises between the European Commission, as a Licensor, and any
|
||||
- Licensee; the Licensor, other than the European Commission, has no residence
|
||||
- or registered office inside a European Union country.
|
||||
|
||||
|
||||
|
||||
## Appendix
|
||||
|
||||
|
||||
|
||||
“Compatible Licences” according to article 5 EUPL are:
|
||||
|
||||
|
||||
- GNU General Public License (GNU GPL) v. 2
|
||||
|
||||
- Open Software License (OSL) v. 2.1, v. 3.0
|
||||
|
||||
- Common Public License v. 1.0
|
||||
|
||||
- Eclipse Public License v. 1.0
|
||||
|
||||
- Cecill v. 2.0
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
Geoportal CMS Suite
|
||||
--------------------------------------------------
|
||||
|
||||
Geoportal CMS Suite is a distributed full stack application for publication management in a gCube Hybrid e-infrastructure. Check wiki [here](https://sublime-and-sphinx-guide.readthedocs.io)
|
||||
|
||||
[<img src="https://gcube.wiki.gcube-system.org/images_gcube/e/e4/Geo_Portale%281%29.png">](https://geoportal.cloud.d4science.org/geoportal-service/docs/index.html)
|
||||
|
||||
|
||||
Rationale :
|
||||
|
||||
Publication involves lots of common features as well as custom behaviour and formats. The service implements the basic common logic, delegating to installed plugin both custom and configurable functions ranging from validation, data manifestation, indexing and lifecycle management.
|
||||
**Lifecycle management** is itself an extension allowing for both common and complex ad-hoc workflows.
|
||||
**High modularity of plugins** allows for the composition of ad hoc use cases with maximized re-usability.
|
||||
|
||||
The suite comes with a set of pre-built plugins and GUIs that communities can easily extend and / or reuse.
|
||||
|
||||
## Built with
|
||||
* [gCube SmartGears](https://gcube.wiki.gcube-system.org/gcube/SmartGears) - The gCube SmartGears framework
|
||||
* [OpenJDK](https://openjdk.java.net/) - The JDK used
|
||||
* [JAX-RS](https://github.com/eclipse-ee4j/jaxrs-api) - Java™ API for RESTful Web Services
|
||||
* [Jersey](https://jersey.github.io/) - JAX-RS runtime
|
||||
* [Maven](https://maven.apache.org/) - Dependency Management
|
||||
* [Enunciate](http://enunciate.webcohesion.com/) - API Documentation
|
||||
|
||||
## Archived project
|
||||
|
||||
This project has been refactored from [gcube-cms-suite](https://code-repo.d4science.org/gCubeSystem/gcube-cms-suite)
|
||||
|
||||
## General Architecture
|
||||
[<img src="https://gcube.wiki.gcube-system.org/images_gcube/c/ce/Geoportal_General_Architecture.jpg">](https://geoportal.cloud.d4science.org/geoportal-service/docs/architecture.html)
|
||||
|
||||
## Lifecycle Managements
|
||||
|
||||
Document Lifecycle Managements in action:
|
||||
|
||||
##### Single Step (no moderation)
|
||||
<img src="https://gcube.wiki.gcube-system.org/images_gcube/8/8c/SingleStep_LC.png" style="max-width:600px;" alt="Default Single Step lifecycle">
|
||||
|
||||
##### 3 Phases (content moderation)
|
||||
|
||||
<img src="https://gcube.wiki.gcube-system.org/images_gcube/d/d8/Default3Phases_LC.png" style="max-width:750px;" alt="Default 3 Phases lifecycle">
|
||||
|
||||
## Plugins
|
||||
|
||||
Plugins in action:
|
||||
|
||||
* [Lifecycle Manager](/gCubeSystem/gcube-cms-suite/src/branch/master/default-lc-managers)
|
||||
* [Spatial Data Infrastructure "SDI"](/gCubeSystem/gcube-cms-suite/src/branch/master/sdi-plugins)
|
||||
* [Notifications](/gCubeSystem/gcube-cms-suite/src/branch/master/notifications-plugins)
|
||||
* [Catalogue Binding](/gCubeSystem/gcube-cms-suite/src/branch/event_manager/catalogue-binding-plugin)
|
||||
|
||||
## Use Case
|
||||
##### The D4GNA
|
||||
|
||||
["Dataset per il Geoportale Nazionale per l'Archeologia"](https://gna.d4science.org)
|
||||
|
||||
Component diagram:
|
||||
|
||||
<img src="https://gcube.wiki.gcube-system.org/images_gcube/2/2e/Geoportal-Service_Workflow_and_Interactions_with_Engines.png" style="max-width:800px;" alt="D4GNA context: engines involved">
|
||||
|
||||
## Documentation
|
||||
* [Dedicated Wiki](https://geoportal.d4science.org/geoportal-service/docs/index.html#) - powered by [Sphynx](https://www.sphinx-doc.org/en/master/)
|
||||
* [Service Interactive API](https://geoportal.d4science.org/geoportal-service/api-docs/index.html) - powered by [Enunciate](http://enunciate.webcohesion.com/)
|
||||
* [Gcube System Wiki](https://gcube.wiki.gcube-system.org/gcube/GeoPortal).
|
||||
* [Guide Notebooks](use-cases) - powered by [Jupyter](https://jupyter.org/)
|
||||
|
||||
## Change log
|
||||
|
||||
See [CHANGELOG.md](CHANGELOG.md).
|
||||
|
||||
## Authors
|
||||
|
||||
* **Fabio Sinibaldi** as "Architect", "Developer" ([ORCID](https://orcid.org/0000-0003-1013-6203)) Computer Scientist at ISTI-CNR
|
||||
|
||||
* **Francesco Mangiacrapa** as "Architect", "Developer" and "Maintainer" ([ORCID](https://orcid.org/0000-0002-6528-664X)) Computer Scientist at [ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience)
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the EUPL V.1.1 License - see the [LICENSE.md](LICENSE.md) file for details.
|
||||
|
||||
## About the gCube Framework
|
||||
This software is part of the [gCubeFramework](https://www.gcube-system.org/ "gCubeFramework"): an
|
||||
open-source software toolkit used for building and operating Hybrid Data
|
||||
Infrastructures enabling the dynamic deployment of Virtual Research Environments
|
||||
by favouring the realisation of reuse oriented policies.
|
||||
|
||||
The projects leading to this software have received funding from a series of European Union programmes including:
|
||||
|
||||
- the Sixth Framework Programme for Research and Technological Development
|
||||
- DILIGENT (grant no. 004260).
|
||||
- the Seventh Framework Programme for research, technological development and demonstration
|
||||
- D4Science (grant no. 212488);
|
||||
- D4Science-II (grant no.239019);
|
||||
- ENVRI (grant no. 283465);
|
||||
- iMarine(grant no. 283644);
|
||||
- EUBrazilOpenBio (grant no. 288754).
|
||||
- the H2020 research and innovation programme
|
||||
- SoBigData (grant no. 654024);
|
||||
- PARTHENOS (grant no. 654119);
|
||||
- EGIEngage (grant no. 654142);
|
||||
- ENVRIplus (grant no. 654182);
|
||||
- BlueBRIDGE (grant no. 675680);
|
||||
- PerformFish (grant no. 727610);
|
||||
- AGINFRAplus (grant no. 731001);
|
||||
- DESIRA (grant no. 818194);
|
||||
- ARIADNEplus (grant no. 823914);
|
||||
- RISIS2 (grant no. 824091);
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
|
@ -0,0 +1,2 @@
|
|||
/target/
|
||||
/.settings/
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>cms-plugin-framework</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
|
||||
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,34 @@
|
|||
# Changelog for org.gcube.application.cms-plugin-framework
|
||||
|
||||
## [v2.0.0-SNAPSHOT]
|
||||
|
||||
- Refactored as `geoportal-cms-suite` [#28423]
|
||||
|
||||
## [v1.0.6] - 2024-10-01
|
||||
|
||||
- Included the file size to reduce/optimize the time to upload files to the storage hub [#28150]
|
||||
- Checked if the user is `null` in the `UserUtils` class [#28301]
|
||||
|
||||
## [v1.0.5] - 2024-07-03
|
||||
|
||||
- Implemented Event Broker [#26321]
|
||||
- Added Geoportal Service Account management
|
||||
|
||||
## [v1.0.4] - 2023-09-06
|
||||
|
||||
- Using parent range version [#25572]
|
||||
|
||||
## [v1.0.3] - 2023-01-10
|
||||
- UserUtils in framework
|
||||
|
||||
## [v1.0.2] 2022-01-17
|
||||
- Fixes #2435
|
||||
- Introduced module default-lc-managers
|
||||
|
||||
## [v1.0.1] 2022-01-17
|
||||
- Serialization Features
|
||||
|
||||
## [v1.0.0] 2021-09-20
|
||||
- First release
|
||||
|
||||
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
@ -0,0 +1,26 @@
|
|||
# Acknowledgments
|
||||
|
||||
The projects leading to this software have received funding from a series of European Union programmes including:
|
||||
|
||||
- the Sixth Framework Programme for Research and Technological Development
|
||||
- [DILIGENT](https://cordis.europa.eu/project/id/004260) (grant no. 004260).
|
||||
- the Seventh Framework Programme for research, technological development and demonstration
|
||||
- [D4Science](https://cordis.europa.eu/project/id/212488) (grant no. 212488);
|
||||
- [D4Science-II](https://cordis.europa.eu/project/id/239019) (grant no.239019);
|
||||
- [ENVRI](https://cordis.europa.eu/project/id/283465) (grant no. 283465);
|
||||
- [iMarine](https://cordis.europa.eu/project/id/283644) (grant no. 283644);
|
||||
- [EUBrazilOpenBio](https://cordis.europa.eu/project/id/288754) (grant no. 288754).
|
||||
- the H2020 research and innovation programme
|
||||
- [SoBigData](https://cordis.europa.eu/project/id/654024) (grant no. 654024);
|
||||
- [PARTHENOS](https://cordis.europa.eu/project/id/654119) (grant no. 654119);
|
||||
- [EGI-Engage](https://cordis.europa.eu/project/id/654142) (grant no. 654142);
|
||||
- [ENVRI PLUS](https://cordis.europa.eu/project/id/654182) (grant no. 654182);
|
||||
- [BlueBRIDGE](https://cordis.europa.eu/project/id/675680) (grant no. 675680);
|
||||
- [PerformFISH](https://cordis.europa.eu/project/id/727610) (grant no. 727610);
|
||||
- [AGINFRA PLUS](https://cordis.europa.eu/project/id/731001) (grant no. 731001);
|
||||
- [DESIRA](https://cordis.europa.eu/project/id/818194) (grant no. 818194);
|
||||
- [ARIADNEplus](https://cordis.europa.eu/project/id/823914) (grant no. 823914);
|
||||
- [RISIS 2](https://cordis.europa.eu/project/id/824091) (grant no. 824091);
|
||||
- [EOSC-Pillar](https://cordis.europa.eu/project/id/857650) (grant no. 857650);
|
||||
- [Blue Cloud](https://cordis.europa.eu/project/id/862409) (grant no. 862409);
|
||||
- [SoBigData-PlusPlus](https://cordis.europa.eu/project/id/871042) (grant no. 871042);
|
|
@ -0,0 +1,312 @@
|
|||
# European Union Public Licence V. 1.1
|
||||
|
||||
|
||||
EUPL © the European Community 2007
|
||||
|
||||
|
||||
This European Union Public Licence (the “EUPL”) applies to the Work or Software
|
||||
(as defined below) which is provided under the terms of this Licence. Any use of
|
||||
the Work, other than as authorised under this Licence is prohibited (to the
|
||||
extent such use is covered by a right of the copyright holder of the Work).
|
||||
|
||||
The Original Work is provided under the terms of this Licence when the Licensor
|
||||
(as defined below) has placed the following notice immediately following the
|
||||
copyright notice for the Original Work:
|
||||
|
||||
Licensed under the EUPL V.1.1
|
||||
|
||||
or has expressed by any other mean his willingness to license under the EUPL.
|
||||
|
||||
|
||||
|
||||
## 1. Definitions
|
||||
|
||||
In this Licence, the following terms have the following meaning:
|
||||
|
||||
- The Licence: this Licence.
|
||||
|
||||
- The Original Work or the Software: the software distributed and/or
|
||||
communicated by the Licensor under this Licence, available as Source Code and
|
||||
also as Executable Code as the case may be.
|
||||
|
||||
- Derivative Works: the works or software that could be created by the Licensee,
|
||||
based upon the Original Work or modifications thereof. This Licence does not
|
||||
define the extent of modification or dependence on the Original Work required
|
||||
in order to classify a work as a Derivative Work; this extent is determined by
|
||||
copyright law applicable in the country mentioned in Article 15.
|
||||
|
||||
- The Work: the Original Work and/or its Derivative Works.
|
||||
|
||||
- The Source Code: the human-readable form of the Work which is the most
|
||||
convenient for people to study and modify.
|
||||
|
||||
- The Executable Code: any code which has generally been compiled and which is
|
||||
meant to be interpreted by a computer as a program.
|
||||
|
||||
- The Licensor: the natural or legal person that distributes and/or communicates
|
||||
the Work under the Licence.
|
||||
|
||||
- Contributor(s): any natural or legal person who modifies the Work under the
|
||||
Licence, or otherwise contributes to the creation of a Derivative Work.
|
||||
|
||||
- The Licensee or “You”: any natural or legal person who makes any usage of the
|
||||
Software under the terms of the Licence.
|
||||
|
||||
- Distribution and/or Communication: any act of selling, giving, lending,
|
||||
renting, distributing, communicating, transmitting, or otherwise making
|
||||
available, on-line or off-line, copies of the Work or providing access to its
|
||||
essential functionalities at the disposal of any other natural or legal
|
||||
person.
|
||||
|
||||
|
||||
|
||||
## 2. Scope of the rights granted by the Licence
|
||||
|
||||
The Licensor hereby grants You a world-wide, royalty-free, non-exclusive,
|
||||
sub-licensable licence to do the following, for the duration of copyright vested
|
||||
in the Original Work:
|
||||
|
||||
- use the Work in any circumstance and for all usage, reproduce the Work, modify
|
||||
- the Original Work, and make Derivative Works based upon the Work, communicate
|
||||
- to the public, including the right to make available or display the Work or
|
||||
- copies thereof to the public and perform publicly, as the case may be, the
|
||||
- Work, distribute the Work or copies thereof, lend and rent the Work or copies
|
||||
- thereof, sub-license rights in the Work or copies thereof.
|
||||
|
||||
Those rights can be exercised on any media, supports and formats, whether now
|
||||
known or later invented, as far as the applicable law permits so.
|
||||
|
||||
In the countries where moral rights apply, the Licensor waives his right to
|
||||
exercise his moral right to the extent allowed by law in order to make effective
|
||||
the licence of the economic rights here above listed.
|
||||
|
||||
The Licensor grants to the Licensee royalty-free, non exclusive usage rights to
|
||||
any patents held by the Licensor, to the extent necessary to make use of the
|
||||
rights granted on the Work under this Licence.
|
||||
|
||||
|
||||
|
||||
## 3. Communication of the Source Code
|
||||
|
||||
The Licensor may provide the Work either in its Source Code form, or as
|
||||
Executable Code. If the Work is provided as Executable Code, the Licensor
|
||||
provides in addition a machine-readable copy of the Source Code of the Work
|
||||
along with each copy of the Work that the Licensor distributes or indicates, in
|
||||
a notice following the copyright notice attached to the Work, a repository where
|
||||
the Source Code is easily and freely accessible for as long as the Licensor
|
||||
continues to distribute and/or communicate the Work.
|
||||
|
||||
|
||||
|
||||
## 4. Limitations on copyright
|
||||
|
||||
Nothing in this Licence is intended to deprive the Licensee of the benefits from
|
||||
any exception or limitation to the exclusive rights of the rights owners in the
|
||||
Original Work or Software, of the exhaustion of those rights or of other
|
||||
applicable limitations thereto.
|
||||
|
||||
|
||||
|
||||
## 5. Obligations of the Licensee
|
||||
|
||||
The grant of the rights mentioned above is subject to some restrictions and
|
||||
obligations imposed on the Licensee. Those obligations are the following:
|
||||
|
||||
Attribution right: the Licensee shall keep intact all copyright, patent or
|
||||
trademarks notices and all notices that refer to the Licence and to the
|
||||
disclaimer of warranties. The Licensee must include a copy of such notices and a
|
||||
copy of the Licence with every copy of the Work he/she distributes and/or
|
||||
communicates. The Licensee must cause any Derivative Work to carry prominent
|
||||
notices stating that the Work has been modified and the date of modification.
|
||||
|
||||
Copyleft clause: If the Licensee distributes and/or communicates copies of the
|
||||
Original Works or Derivative Works based upon the Original Work, this
|
||||
Distribution and/or Communication will be done under the terms of this Licence
|
||||
or of a later version of this Licence unless the Original Work is expressly
|
||||
distributed only under this version of the Licence. The Licensee (becoming
|
||||
Licensor) cannot offer or impose any additional terms or conditions on the Work
|
||||
or Derivative Work that alter or restrict the terms of the Licence.
|
||||
|
||||
Compatibility clause: If the Licensee Distributes and/or Communicates Derivative
|
||||
Works or copies thereof based upon both the Original Work and another work
|
||||
licensed under a Compatible Licence, this Distribution and/or Communication can
|
||||
be done under the terms of this Compatible Licence. For the sake of this clause,
|
||||
“Compatible Licence” refers to the licences listed in the appendix attached to
|
||||
this Licence. Should the Licensee’s obligations under the Compatible Licence
|
||||
conflict with his/her obligations under this Licence, the obligations of the
|
||||
Compatible Licence shall prevail.
|
||||
|
||||
Provision of Source Code: When distributing and/or communicating copies of the
|
||||
Work, the Licensee will provide a machine-readable copy of the Source Code or
|
||||
indicate a repository where this Source will be easily and freely available for
|
||||
as long as the Licensee continues to distribute and/or communicate the Work.
|
||||
|
||||
Legal Protection: This Licence does not grant permission to use the trade names,
|
||||
trademarks, service marks, or names of the Licensor, except as required for
|
||||
reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the copyright notice.
|
||||
|
||||
|
||||
|
||||
## 6. Chain of Authorship
|
||||
|
||||
The original Licensor warrants that the copyright in the Original Work granted
|
||||
hereunder is owned by him/her or licensed to him/her and that he/she has the
|
||||
power and authority to grant the Licence.
|
||||
|
||||
Each Contributor warrants that the copyright in the modifications he/she brings
|
||||
to the Work are owned by him/her or licensed to him/her and that he/she has the
|
||||
power and authority to grant the Licence.
|
||||
|
||||
Each time You accept the Licence, the original Licensor and subsequent
|
||||
Contributors grant You a licence to their contributions to the Work, under the
|
||||
terms of this Licence.
|
||||
|
||||
|
||||
|
||||
## 7. Disclaimer of Warranty
|
||||
|
||||
The Work is a work in progress, which is continuously improved by numerous
|
||||
contributors. It is not a finished work and may therefore contain defects or
|
||||
“bugs” inherent to this type of software development.
|
||||
|
||||
For the above reason, the Work is provided under the Licence on an “as is” basis
|
||||
and without warranties of any kind concerning the Work, including without
|
||||
limitation merchantability, fitness for a particular purpose, absence of defects
|
||||
or errors, accuracy, non-infringement of intellectual property rights other than
|
||||
copyright as stated in Article 6 of this Licence.
|
||||
|
||||
This disclaimer of warranty is an essential part of the Licence and a condition
|
||||
for the grant of any rights to the Work.
|
||||
|
||||
|
||||
|
||||
## 8. Disclaimer of Liability
|
||||
|
||||
Except in the cases of wilful misconduct or damages directly caused to natural
|
||||
persons, the Licensor will in no event be liable for any direct or indirect,
|
||||
material or moral, damages of any kind, arising out of the Licence or of the use
|
||||
of the Work, including without limitation, damages for loss of goodwill, work
|
||||
stoppage, computer failure or malfunction, loss of data or any commercial
|
||||
damage, even if the Licensor has been advised of the possibility of such
|
||||
damage. However, the Licensor will be liable under statutory product liability
|
||||
laws as far such laws apply to the Work.
|
||||
|
||||
|
||||
|
||||
## 9. Additional agreements
|
||||
|
||||
While distributing the Original Work or Derivative Works, You may choose to
|
||||
conclude an additional agreement to offer, and charge a fee for, acceptance of
|
||||
support, warranty, indemnity, or other liability obligations and/or services
|
||||
consistent with this Licence. However, in accepting such obligations, You may
|
||||
act only on your own behalf and on your sole responsibility, not on behalf of
|
||||
the original Licensor or any other Contributor, and only if You agree to
|
||||
indemnify, defend, and hold each Contributor harmless for any liability incurred
|
||||
by, or claims asserted against such Contributor by the fact You have accepted
|
||||
any such warranty or additional liability.
|
||||
|
||||
|
||||
|
||||
## 10. Acceptance of the Licence
|
||||
|
||||
The provisions of this Licence can be accepted by clicking on an icon “I agree”
|
||||
placed under the bottom of a window displaying the text of this Licence or by
|
||||
affirming consent in any other similar way, in accordance with the rules of
|
||||
applicable law. Clicking on that icon indicates your clear and irrevocable
|
||||
acceptance of this Licence and all of its terms and conditions.
|
||||
|
||||
Similarly, you irrevocably accept this Licence and all of its terms and
|
||||
conditions by exercising any rights granted to You by Article 2 of this Licence,
|
||||
such as the use of the Work, the creation by You of a Derivative Work or the
|
||||
Distribution and/or Communication by You of the Work or copies thereof.
|
||||
|
||||
|
||||
|
||||
## 11. Information to the public
|
||||
|
||||
In case of any Distribution and/or Communication of the Work by means of
|
||||
electronic communication by You (for example, by offering to download the Work
|
||||
from a remote location) the distribution channel or media (for example, a
|
||||
website) must at least provide to the public the information requested by the
|
||||
applicable law regarding the Licensor, the Licence and the way it may be
|
||||
accessible, concluded, stored and reproduced by the Licensee.
|
||||
|
||||
|
||||
|
||||
## 12. Termination of the Licence
|
||||
|
||||
The Licence and the rights granted hereunder will terminate automatically upon
|
||||
any breach by the Licensee of the terms of the Licence.
|
||||
|
||||
Such a termination will not terminate the licences of any person who has
|
||||
received the Work from the Licensee under the Licence, provided such persons
|
||||
remain in full compliance with the Licence.
|
||||
|
||||
|
||||
|
||||
## 13. Miscellaneous
|
||||
|
||||
Without prejudice of Article 9 above, the Licence represents the complete
|
||||
agreement between the Parties as to the Work licensed hereunder.
|
||||
|
||||
If any provision of the Licence is invalid or unenforceable under applicable
|
||||
law, this will not affect the validity or enforceability of the Licence as a
|
||||
whole. Such provision will be construed and/or reformed so as necessary to make
|
||||
it valid and enforceable.
|
||||
|
||||
The European Commission may publish other linguistic versions and/or new
|
||||
versions of this Licence, so far this is required and reasonable, without
|
||||
reducing the scope of the rights granted by the Licence. New versions of the
|
||||
Licence will be published with a unique version number.
|
||||
|
||||
All linguistic versions of this Licence, approved by the European Commission,
|
||||
have identical value. Parties can take advantage of the linguistic version of
|
||||
their choice.
|
||||
|
||||
|
||||
|
||||
## 14. Jurisdiction
|
||||
|
||||
Any litigation resulting from the interpretation of this License, arising
|
||||
between the European Commission, as a Licensor, and any Licensee, will be
|
||||
subject to the jurisdiction of the Court of Justice of the European Communities,
|
||||
as laid down in article 238 of the Treaty establishing the European Community.
|
||||
|
||||
Any litigation arising between Parties, other than the European Commission, and
|
||||
resulting from the interpretation of this License, will be subject to the
|
||||
exclusive jurisdiction of the competent court where the Licensor resides or
|
||||
conducts its primary business.
|
||||
|
||||
|
||||
|
||||
## 15. Applicable Law
|
||||
|
||||
This Licence shall be governed by the law of the European Union country where
|
||||
the Licensor resides or has his registered office.
|
||||
|
||||
This licence shall be governed by the Belgian law if:
|
||||
|
||||
- a litigation arises between the European Commission, as a Licensor, and any
|
||||
- Licensee; the Licensor, other than the European Commission, has no residence
|
||||
- or registered office inside a European Union country.
|
||||
|
||||
|
||||
|
||||
## Appendix
|
||||
|
||||
|
||||
|
||||
“Compatible Licences” according to article 5 EUPL are:
|
||||
|
||||
|
||||
- GNU General Public License (GNU GPL) v. 2
|
||||
|
||||
- Open Software License (OSL) v. 2.1, v. 3.0
|
||||
|
||||
- Common Public License v. 1.0
|
||||
|
||||
- Eclipse Public License v. 1.0
|
||||
|
||||
- Cecill v. 2.0
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
CMS - Plugin Framework
|
||||
--------------------------------------------------
|
||||
|
||||
This module contains the definition of interfaces that server plugins are expected to implement.
|
||||
Basic and abstract implementations are provided in different module default-lc-manager.
|
||||
|
||||
Basic providers (e.g. WSProvider, ISProvider) used both in test and by the service are implemented here for simplicity.
|
||||
|
||||
Morover, this module provides an `EventManager` to notify the events {`PROJECT_CREATED`, `PROJECT_UPDATED`, `PROJECT_DELETED` `LIFECYCLE_STEP_PERFORMED`}
|
||||
to the plugins that subscribe to them.
|
||||
|
||||
## Built with
|
||||
* [gCube SDI] (https://gcube.wiki.gcube-system.org/gcube/) - The gCube SDI
|
||||
* [gCube SmartGears] (https://gcube.wiki.gcube-system.org/gcube/SmartGears) - The gCube SmartGears framework
|
||||
* [OpenJDK](https://openjdk.java.net/) - The JDK used
|
||||
* [JAX-RS](https://github.com/eclipse-ee4j/jaxrs-api) - Java™ API for RESTful Web Services
|
||||
* [Jersey](https://jersey.github.io/) - JAX-RS runtime
|
||||
* [Maven](https://maven.apache.org/) - Dependency Management
|
||||
|
||||
## Documentation
|
||||
[gCube CMS Suite](../) parent module containing references, documentation, guides ad utilities.
|
||||
|
||||
|
||||
## Change log
|
||||
|
||||
See [CHANGELOG.md](CHANGELOG.md).
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the EUPL V.1.1 License - see the [LICENSE.md](LICENSE.md) file for details.
|
||||
|
||||
## About the gCube Framework
|
||||
This software is part of the [gCubeFramework](https://www.gcube-system.org/ "gCubeFramework"): an
|
||||
open-source software toolkit used for building and operating Hybrid Data
|
||||
Infrastructures enabling the dynamic deployment of Virtual Research Environments
|
||||
by favouring the realisation of reuse oriented policies.
|
||||
|
||||
The projects leading to this software have received funding from a series of European Union programmes including:
|
||||
|
||||
- the Sixth Framework Programme for Research and Technological Development
|
||||
- DILIGENT (grant no. 004260).
|
||||
- the Seventh Framework Programme for research, technological development and demonstration
|
||||
- D4Science (grant no. 212488);
|
||||
- D4Science-II (grant no.239019);
|
||||
- ENVRI (grant no. 283465);
|
||||
- iMarine(grant no. 283644);
|
||||
- EUBrazilOpenBio (grant no. 288754).
|
||||
- the H2020 research and innovation programme
|
||||
- SoBigData (grant no. 654024);
|
||||
- PARTHENOS (grant no. 654119);
|
||||
- EGIEngage (grant no. 654142);
|
||||
- ENVRIplus (grant no. 654182);
|
||||
- BlueBRIDGE (grant no. 675680);
|
||||
- PerformFish (grant no. 727610);
|
||||
- AGINFRAplus (grant no. 731001);
|
||||
- DESIRA (grant no. 818194);
|
||||
- ARIADNEplus (grant no. 823914);
|
||||
- RISIS2 (grant no. 824091);
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.gcube.application.gcs</groupId>
|
||||
<artifactId>geoportal-cms-suite</artifactId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>cms-plugin-framework</artifactId>
|
||||
<name>geportal CMS - Plugin Framework</name>
|
||||
|
||||
<properties>
|
||||
<gitBaseUrl>https://code-repo.d4science.org/gCubeSystem</gitBaseUrl>
|
||||
<sis.version>1.0</sis.version>
|
||||
</properties>
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:${gitBaseUrl}/gcube-cms-suite</connection>
|
||||
<developerConnection>scm:git:${gitBaseUrl}/gcube-cms-suite</developerConnection>
|
||||
<url>${gitBaseUrl}/gcube-cms-suite</url>
|
||||
</scm>
|
||||
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
<!-- TO REMOVE WHEN LEGACY SUPPORT IS REMOVED -->
|
||||
<!-- DEPRECATED LEGACY LOGIC SUPPORT -->
|
||||
|
||||
<!-- POSTGRES DRIVERS -->
|
||||
<dependency>
|
||||
<groupId>net.postgis</groupId>
|
||||
<artifactId>postgis-jdbc</artifactId>
|
||||
<version>2.5.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- SDI -->
|
||||
<dependency>
|
||||
<groupId>org.gcube.spatial.data</groupId>
|
||||
<artifactId>gis-interface</artifactId>
|
||||
<version>[2.4.6,3.0.0-SNAPSHOT)</version>
|
||||
</dependency>
|
||||
|
||||
<!-- DT -->
|
||||
<dependency>
|
||||
<groupId>org.gcube.data.transfer</groupId>
|
||||
<artifactId>data-transfer-library</artifactId>
|
||||
<version>[1.2.1,2.0.0-SNAPSHOT)</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>authorization-utils</artifactId>
|
||||
<version>${authorization-utils-range}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.gcube.application.gcs</groupId>
|
||||
<artifactId>geoportal-common</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Storage HUB -->
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>storagehub-client-library</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/de.grundid.opendatalab/geojson-jackson -->
|
||||
<dependency>
|
||||
<groupId>de.grundid.opendatalab</groupId>
|
||||
<artifactId>geojson-jackson</artifactId>
|
||||
<version>1.14</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Common - basic -->
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.reflections</groupId>
|
||||
<artifactId>reflections</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
<!-- <version>2.3.0</version> -->
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,3 @@
|
|||
Manifest-Version: 1.0
|
||||
Class-Path:
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package org.gcube.application.cms.caches;
|
||||
|
||||
import org.gcube.application.cms.implementations.utils.UserUtils;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
/**
|
||||
* TTL Map Context -> T
|
||||
*
|
||||
*/
|
||||
public abstract class AbstractScopedMap<T> extends TimedMap<String,T> implements Engine<T>{
|
||||
|
||||
public AbstractScopedMap(@NonNull String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public T getObject() throws ConfigurationException {
|
||||
UserUtils.AuthenticatedUser user = UserUtils.getCurrent();
|
||||
String context = user.getContext();
|
||||
log.debug(" {} : Accessing object under context {} ",name,context);
|
||||
return get(context);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void init() {}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
log.warn(name + ": shutting down");
|
||||
scopeMap.forEach((String s,TTLObject<T> o)->{
|
||||
try{if(o!=null&&o.getTheObject()!=null)
|
||||
dispose(o.getTheObject());
|
||||
}catch(Throwable t) {
|
||||
log.warn(name +": unable to dispose ",t);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package org.gcube.application.cms.caches;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
public interface Cache<K,V>{
|
||||
|
||||
public V get(K key) throws ConfigurationException;
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.gcube.application.cms.caches;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
|
||||
public interface Engine <T> {
|
||||
|
||||
public void init();
|
||||
public void shutdown();
|
||||
|
||||
public T getObject() throws ConfigurationException;
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package org.gcube.application.cms.caches;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
public interface ObjectManager<T>{
|
||||
|
||||
public T insert(T object) throws ConfigurationException;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package org.gcube.application.cms.caches;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class TTLObject<T> {
|
||||
|
||||
private LocalDateTime creationTime;
|
||||
private T theObject;
|
||||
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package org.gcube.application.cms.caches;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.TemporalAmount;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public abstract class TimedMap <K,V> implements Cache<K,V> {
|
||||
|
||||
protected ConcurrentHashMap<K, TTLObject<V>> scopeMap=new ConcurrentHashMap<K,TTLObject<V>>();
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
protected TemporalAmount TTL=null;
|
||||
|
||||
@NonNull
|
||||
protected String name;
|
||||
|
||||
@Override
|
||||
public V get(K key) throws ConfigurationException {
|
||||
log.trace(name+" : obtaining object by "+key);
|
||||
|
||||
TTLObject<V> found=scopeMap.get(key);
|
||||
|
||||
if(found== null){
|
||||
log.debug(name+" : init object for key "+key);
|
||||
TTLObject<V> toPut=new TTLObject<V>(LocalDateTime.now(),retrieveObject(key));
|
||||
scopeMap.put(key, toPut);
|
||||
return toPut.getTheObject();
|
||||
}
|
||||
|
||||
if(getTTL()!=null) {
|
||||
if(found.getCreationTime().plus(getTTL()).isBefore(LocalDateTime.now())) {
|
||||
log.debug(name+" : elapsed TTL, disposing..");
|
||||
dispose(found.getTheObject());
|
||||
TTLObject<V> newer=new TTLObject<V>(LocalDateTime.now(),retrieveObject(key));
|
||||
scopeMap.put(key, newer);
|
||||
found=scopeMap.get(key);
|
||||
}
|
||||
}else {log.trace(name+" : TTL is null, never disposing..");}
|
||||
log.trace(name+"Returning {} ",found);
|
||||
return found.getTheObject();
|
||||
}
|
||||
|
||||
protected abstract V retrieveObject(K key) throws ConfigurationException;
|
||||
protected void dispose(V toDispose){};
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package org.gcube.application.cms.implementations;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.cms.caches.Engine;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
import org.gcube.application.geoportal.common.model.rest.DatabaseConnection;
|
||||
import org.gcube.application.geoportal.common.utils.ISUtils;
|
||||
import org.gcube.common.resources.gcore.GenericResource;
|
||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||
|
||||
public class DefaultISProvider implements ISInterface, Engine<ISInterface> {
|
||||
|
||||
|
||||
@Override
|
||||
public DatabaseConnection queryForDatabase(String category, String platform, String flagName, String flagValue) throws ConfigurationException {
|
||||
return ISUtils.performQueryForDB(category, platform, flagName, flagValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ServiceEndpoint.AccessPoint> performGetAP(String category, String platform, String flagName, String flagValue) {
|
||||
return ISUtils.performGetAP(category, platform, flagName, flagValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String decryptString(String toDecrypt) {
|
||||
return ISUtils.decryptString(toDecrypt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String encryptString(String toEncrypt) {
|
||||
return ISUtils.encryptString(toEncrypt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GenericResource> getGenericResource(String secondaryType,String name) {
|
||||
return ISUtils.getGenericResources(secondaryType,name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GenericResource createUpdateGR(GenericResource resource) {
|
||||
return ISUtils.writeGR(resource);
|
||||
}
|
||||
|
||||
// ** ENGINE
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ISInterface getObject() throws ConfigurationException {
|
||||
return this;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package org.gcube.application.cms.implementations;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
import org.gcube.application.geoportal.common.model.rest.DatabaseConnection;
|
||||
import org.gcube.common.resources.gcore.GenericResource;
|
||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||
|
||||
public interface ISInterface {
|
||||
|
||||
public DatabaseConnection queryForDatabase(String category, String platform,String flagName, String flagValue) throws ConfigurationException;
|
||||
public List<ServiceEndpoint.AccessPoint> performGetAP(String category, String platform, String flagName, String flagValue);
|
||||
public String decryptString(String toDecrypt);
|
||||
public String encryptString(String toEncrypt);
|
||||
|
||||
public List<GenericResource> getGenericResource(String secondaryType,String name);
|
||||
|
||||
|
||||
public GenericResource createUpdateGR(GenericResource res);
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
package org.gcube.application.cms.implementations;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.gcube.application.cms.caches.Engine;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
||||
|
||||
import lombok.Synchronized;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class ImplementationProvider {
|
||||
|
||||
private static ImplementationProvider instance=null;
|
||||
|
||||
@Synchronized
|
||||
public static ImplementationProvider get() {
|
||||
if(instance==null) {
|
||||
instance=new ImplementationProvider();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
public <T> T getProvidedObjectByClass(Class<T> clazz) throws ConfigurationException {
|
||||
return (T) implementationsRegistry.get(clazz).getObject();
|
||||
}
|
||||
|
||||
public <T> Engine<T> getEngineByManagedClass(Class<T> clazz) throws ConfigurationException {
|
||||
return implementationsRegistry.get(clazz);
|
||||
}
|
||||
|
||||
private ConcurrentHashMap<Class,Engine> implementationsRegistry=new ConcurrentHashMap<>();
|
||||
|
||||
public <T> void setEngine(Engine<T> engine, Class<T> clazz){
|
||||
implementationsRegistry.put(clazz,engine);
|
||||
}
|
||||
|
||||
private ImplementationProvider(){
|
||||
//Defaults
|
||||
setEngine(new DefaultISProvider(),ISInterface.class);
|
||||
setEngine(new StorageHubProvider(), StorageHubClient.class);
|
||||
}
|
||||
public Map<Class,String> getManagerList(){
|
||||
HashMap<Class,String> toReturn=new HashMap<>();
|
||||
implementationsRegistry.forEach(
|
||||
(aClass, engine) -> {toReturn.put(engine.getClass(),aClass.getCanonicalName());}
|
||||
);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
private boolean isInit=false;
|
||||
|
||||
@Synchronized
|
||||
public void initEngines(){
|
||||
if(!isInit) {
|
||||
log.info("INITIALIZING ENGINES. Size : {} ", implementationsRegistry.size());
|
||||
HashSet<Class> failed = new HashSet<>();
|
||||
implementationsRegistry.forEach((aClass, engine) -> {
|
||||
log.info("Init : {} -> {}", engine.getClass().toGenericString(), aClass.getCanonicalName());
|
||||
try {
|
||||
engine.init();
|
||||
} catch (Throwable t) {
|
||||
failed.add(engine.getClass());
|
||||
log.error("Unable to start engine {} ", engine.getClass(), t);
|
||||
}
|
||||
});
|
||||
if (failed.isEmpty())
|
||||
log.info("INIT OK");
|
||||
else {
|
||||
log.warn("!!!!! Following Engines FAILED INIT :");
|
||||
failed.forEach(aClass -> log.warn(String.valueOf(aClass)));
|
||||
}
|
||||
isInit = true;
|
||||
}else log.info("Received Init request but Engines already started");
|
||||
}
|
||||
|
||||
public void shutdownEngines(){
|
||||
log.info("SHUTTING DOWN ENGINES. Size : {} ",implementationsRegistry.size());
|
||||
HashSet<Class> failed= new HashSet<>();
|
||||
implementationsRegistry.forEach((aClass, engine) -> {
|
||||
log.info("ShotDown : {} -> {}",engine.getClass().toGenericString(),aClass.getCanonicalName());
|
||||
try{
|
||||
engine.shutdown();
|
||||
}catch (Throwable t){
|
||||
failed.add(engine.getClass());
|
||||
log.error("Unable to shutdown engine {} ",engine.getClass(),t);
|
||||
}
|
||||
});
|
||||
if(failed.isEmpty())
|
||||
log.info("SHUTDOWN OK");
|
||||
else {
|
||||
log.warn("!!!!! Following Engines FAILED SHUTDOWN :");
|
||||
failed.forEach(aClass->log.warn(String.valueOf(aClass)));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.implementations;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bson.Document;
|
||||
import org.gcube.application.cms.implementations.faults.InvalidUserRoleException;
|
||||
import org.gcube.application.cms.implementations.faults.ProjectNotFoundException;
|
||||
import org.gcube.application.cms.implementations.faults.RegistrationException;
|
||||
import org.gcube.application.cms.implementations.faults.UnauthorizedAccess;
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
import org.gcube.application.geoportal.common.model.document.relationships.RelationshipNavigationObject;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||
|
||||
public interface ProjectAccess {
|
||||
|
||||
|
||||
public Project getById(String ucid,String id) throws RegistrationException, ConfigurationException, InvalidUserRoleException, ProjectNotFoundException, UnauthorizedAccess;
|
||||
|
||||
public Iterable<Document> query(String ucid, QueryRequest query) throws RegistrationException, ConfigurationException, InvalidUserRoleException;
|
||||
|
||||
public List<RelationshipNavigationObject> getRelations(String ucid, String id, String relation,Boolean deep) throws InvalidUserRoleException, RegistrationException, ProjectNotFoundException, ConfigurationException, UnauthorizedAccess;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package org.gcube.application.cms.implementations;
|
||||
|
||||
import org.gcube.application.cms.caches.Engine;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
||||
|
||||
public class StorageHubProvider implements Engine<StorageHubClient> {
|
||||
|
||||
|
||||
@Override
|
||||
public StorageHubClient getObject() throws ConfigurationException {
|
||||
return new StorageHubClient();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {}
|
||||
@Override
|
||||
public void shutdown() { }
|
||||
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
package org.gcube.application.cms.implementations;
|
||||
|
||||
public interface WSInterface {
|
||||
}
|
|
@ -0,0 +1,187 @@
|
|||
package org.gcube.application.cms.implementations;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.configuration.Archive;
|
||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
import org.gcube.application.geoportal.common.utils.Files;
|
||||
import org.gcube.common.storagehub.client.dsl.FileContainer;
|
||||
import org.gcube.common.storagehub.client.dsl.FolderContainer;
|
||||
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
||||
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.Synchronized;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class WorkspaceManager {
|
||||
|
||||
private static final String APP_FOLDER = ".GNA_RECORDS";
|
||||
|
||||
private StorageHubClient sgClient = null;
|
||||
@Getter
|
||||
private FolderContainer appBase = null;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
public static class FolderOptions {
|
||||
@NonNull
|
||||
private String folderName;
|
||||
private String folderDescription;
|
||||
private FolderContainer parent;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
public static class FileOptions {
|
||||
@NonNull
|
||||
private String fileName;
|
||||
@NonNull
|
||||
private InputStream is;
|
||||
|
||||
private String fileDescription;
|
||||
private FolderContainer parent;
|
||||
// Added by Francesco, see #28150
|
||||
private Long size;
|
||||
}
|
||||
|
||||
public Archive getConfiguration() {
|
||||
Archive toReturn = new Archive("W-STORAGE");
|
||||
toReturn.put("folder_id", appBase.getId());
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
public WorkspaceManager() throws ConfigurationException, StorageHubException {
|
||||
sgClient = ImplementationProvider.get().getProvidedObjectByClass(StorageHubClient.class);
|
||||
appBase = getApplicationBaseFolder(sgClient);
|
||||
}
|
||||
|
||||
public FolderContainer createFolder(FolderOptions opts) throws StorageHubException {
|
||||
if (opts.getParent() == null)
|
||||
opts.setParent(appBase);
|
||||
return createFolderRoutine(opts);
|
||||
}
|
||||
|
||||
public FileContainer getFileById(String id) throws StorageHubException {
|
||||
return sgClient.open(id).asFile();
|
||||
}
|
||||
|
||||
public FolderContainer getFolderById(String id) throws StorageHubException {
|
||||
return sgClient.open(id).asFolder();
|
||||
}
|
||||
|
||||
public void removeFolderById(String id) throws StorageHubException {
|
||||
sgClient.open(id).asFolder().delete();
|
||||
}
|
||||
|
||||
public FolderContainer getSubFolder(FolderContainer parentFolder, String path) throws StorageHubException {
|
||||
return getSubFolder(parentFolder, path, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sub folder. Creates it if missing
|
||||
*
|
||||
* @param parentFolder
|
||||
* @param path
|
||||
* @return
|
||||
* @throws StorageHubException
|
||||
*/
|
||||
public FolderContainer getSubFolder(FolderContainer parentFolder, String path, String description)
|
||||
throws StorageHubException {
|
||||
try {
|
||||
return parentFolder.openByRelativePath(path).asFolder();
|
||||
} catch (StorageHubException e) {
|
||||
log.debug("Missing subPath " + path);
|
||||
FolderContainer targetParent = parentFolder;
|
||||
String targetName = path;
|
||||
if (path.contains("/")) {
|
||||
String parent = path.substring(0, path.lastIndexOf("/"));
|
||||
log.debug("Checking intermediate " + parent);
|
||||
targetParent = getSubFolder(parentFolder, parent);
|
||||
targetName = path.substring(path.lastIndexOf("/") + 1);
|
||||
}
|
||||
FolderOptions opts = new FolderOptions(targetName, description, targetParent);
|
||||
log.debug("Creating FOLDER {}", opts);
|
||||
return createFolder(opts);
|
||||
}
|
||||
}
|
||||
|
||||
// public WorkspaceContent storeToWS(FileOptions opts) throws FileNotFoundException, StorageHubException {
|
||||
// FileContainer item=createFileRoutine(opts);
|
||||
// item=sgClient.open(item.getId()).asFile();
|
||||
//
|
||||
// WorkspaceContent content=new WorkspaceContent();
|
||||
// content.setLink(item.getPublicLink().toString());
|
||||
// content.setMimetype(item.get().getContent().getMimeType());
|
||||
// content.setStorageID(item.getId());
|
||||
// content.setName(item.get().getName());
|
||||
// return content;
|
||||
//
|
||||
// }
|
||||
|
||||
public RegisteredFile registerFile(FileOptions opts) throws StorageHubException {
|
||||
FileContainer item = createFileRoutine(opts);
|
||||
item = sgClient.open(item.getId()).asFile();
|
||||
|
||||
RegisteredFile file = new RegisteredFile();
|
||||
|
||||
file.setLink(item.getPublicLink().toString());
|
||||
file.setMimetype(item.get().getContent().getMimeType());
|
||||
file.setStorageID(item.getId());
|
||||
file.setName(item.get().getName());
|
||||
return file;
|
||||
|
||||
}
|
||||
|
||||
// public void deleteFromWS(WorkspaceContent toDelete) throws StorageHubException {
|
||||
// sgClient.open(toDelete.getStorageID()).asFile().forceDelete();
|
||||
// }
|
||||
|
||||
public void deleteItem(String itemId) throws StorageHubException {
|
||||
sgClient.open(itemId).asItem().forceDelete();
|
||||
}
|
||||
|
||||
// STATIC SYNCH METHODS
|
||||
|
||||
@Synchronized
|
||||
public static FolderContainer getApplicationBaseFolder(StorageHubClient sgClient) throws StorageHubException {
|
||||
FolderContainer vre = sgClient.openVREFolder();
|
||||
try {
|
||||
return vre.openByRelativePath(APP_FOLDER).asFolder();
|
||||
} catch (StorageHubException e) {
|
||||
log.debug("APP Folder missing. Initializing..");
|
||||
FolderContainer toReturn = vre.newFolder(APP_FOLDER, "Base folder for GNA records");
|
||||
toReturn.setHidden();
|
||||
return toReturn;
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private static FolderContainer createFolderRoutine(FolderOptions opts) throws StorageHubException {
|
||||
opts.setFolderName(Files.fixFilename(opts.getFolderName()));
|
||||
return opts.getParent().newFolder(opts.getFolderName(), opts.getFolderDescription());
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private static FileContainer createFileRoutine(FileOptions opts) throws StorageHubException {
|
||||
// Updated by Francesco, see #28150
|
||||
log.info("Uploading file name: {}, in the parent folder id: {}, filesize is: " + opts.getSize(),
|
||||
opts.getFileName(), opts.getParent().getId());
|
||||
opts.setFileName(Files.fixFilename(opts.getFileName()));
|
||||
if (opts.getSize() == null)
|
||||
return opts.getParent().uploadFile(opts.getIs(), opts.getFileName(), opts.getFileDescription());
|
||||
else
|
||||
return opts.getParent().uploadFile(opts.getIs(), opts.getFileName(), opts.getFileDescription(),
|
||||
opts.getSize());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class DataParsingException extends Exception {
|
||||
|
||||
public DataParsingException() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public DataParsingException(String message) {
|
||||
super(message);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public DataParsingException(Throwable cause) {
|
||||
super(cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public DataParsingException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public DataParsingException(String message, Throwable cause, boolean enableSuppression,
|
||||
boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class DeletionException extends Exception {
|
||||
|
||||
public DeletionException() {
|
||||
}
|
||||
|
||||
public DeletionException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public DeletionException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public DeletionException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public DeletionException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class InvalidLockException extends Exception{
|
||||
public InvalidLockException() {
|
||||
}
|
||||
|
||||
public InvalidLockException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InvalidLockException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InvalidLockException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public InvalidLockException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class InvalidStateException extends Exception {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 8926481061304048080L;
|
||||
|
||||
public InvalidStateException() {
|
||||
super();
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidStateException(String message, Throwable cause, boolean enableSuppression,
|
||||
boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidStateException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidStateException(String message) {
|
||||
super(message);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public InvalidStateException(Throwable cause) {
|
||||
super(cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class InvalidUserRoleException extends Exception {
|
||||
|
||||
public InvalidUserRoleException() {
|
||||
}
|
||||
|
||||
public InvalidUserRoleException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InvalidUserRoleException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InvalidUserRoleException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public InvalidUserRoleException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class ProjectLockedException extends Exception{
|
||||
public ProjectLockedException() {
|
||||
}
|
||||
|
||||
public ProjectLockedException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ProjectLockedException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public ProjectLockedException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public ProjectLockedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class ProjectNotFoundException extends Exception {
|
||||
public ProjectNotFoundException() {
|
||||
}
|
||||
|
||||
public ProjectNotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ProjectNotFoundException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public ProjectNotFoundException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public ProjectNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class RegistrationException extends Exception {
|
||||
|
||||
public RegistrationException() {
|
||||
}
|
||||
|
||||
public RegistrationException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public RegistrationException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public RegistrationException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public RegistrationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.implementations.faults;
|
||||
|
||||
public class UnauthorizedAccess extends Exception {
|
||||
|
||||
public UnauthorizedAccess() {
|
||||
}
|
||||
|
||||
public UnauthorizedAccess(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public UnauthorizedAccess(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public UnauthorizedAccess(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public UnauthorizedAccess(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
package org.gcube.application.cms.implementations.utils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.document.accounting.AccountingInfo;
|
||||
import org.gcube.application.geoportal.common.model.document.accounting.Context;
|
||||
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
||||
import org.gcube.common.authorization.library.provider.AccessTokenProvider;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.authorization.utils.manager.SecretManager;
|
||||
import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class UserUtils {
|
||||
|
||||
public static List<String> DEFAULT_ROLES = new ArrayList<>();
|
||||
|
||||
public static AuthenticatedUser getCurrent() throws SecurityException {
|
||||
log.debug("Loading caller info..");
|
||||
|
||||
SecretManager cm = SecretManagerProvider.instance.get();
|
||||
String context = cm.getContext();
|
||||
if (context == null)
|
||||
throw new SecurityException("Cannot determine context");
|
||||
Set<String> roles = new HashSet<>();
|
||||
org.gcube.common.authorization.utils.user.User user = cm.getUser();
|
||||
|
||||
if (user == null) {
|
||||
log.warn("No user found in the session work, context is {}", context);
|
||||
} else {
|
||||
log.info("Identified caller {} in context {}", user.getUsername(), context);
|
||||
roles.addAll(user.getRoles());
|
||||
}
|
||||
AuthenticatedUser toReturn = new AuthenticatedUser(user, roles, AccessTokenProvider.instance.get(),
|
||||
SecurityTokenProvider.instance.get(), context);
|
||||
|
||||
log.info("Current User is {} ", toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public static class AuthenticatedUser {
|
||||
|
||||
private org.gcube.common.authorization.utils.user.User user;
|
||||
|
||||
private Set<String> roles;
|
||||
|
||||
private String uma_token;
|
||||
|
||||
private String gcube_token;
|
||||
|
||||
private String context;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("User [user=");
|
||||
builder.append(user);
|
||||
builder.append(", uma_token=");
|
||||
builder.append(uma_token == null ? uma_token : "***");
|
||||
|
||||
builder.append(", gcube_token=");
|
||||
builder.append(gcube_token == null ? gcube_token : "***");
|
||||
|
||||
builder.append(", roles=");
|
||||
builder.append(roles);
|
||||
|
||||
builder.append(", context=");
|
||||
builder.append(context);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
public AccountingInfo asInfo() {
|
||||
AccountingInfo info = new AccountingInfo();
|
||||
User user = new User();
|
||||
try {
|
||||
user.setUsername(this.getUser().getUsername());
|
||||
user.setRoles(roles);
|
||||
} catch (Exception e) {
|
||||
log.warn("Unable to determine user id, using FAKE", e);
|
||||
user.setUsername("FAKE");
|
||||
user.setRoles(new HashSet<>());
|
||||
user.getRoles().addAll(DEFAULT_ROLES);
|
||||
}
|
||||
|
||||
info.setUser(user);
|
||||
info.setInstant(LocalDateTime.now());
|
||||
Context c = new Context();
|
||||
c.setId(this.context);
|
||||
c.setName(context.contains("/") ? context.substring(context.lastIndexOf("/")) : context);
|
||||
info.setContext(c);
|
||||
return info;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import org.gcube.application.cms.plugins.events.ItemObserved;
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
|
||||
public interface EventListenerPluginInterface extends InitializablePlugin {
|
||||
|
||||
public void doAction(ItemObserved<Project> itemObserved);
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.reports.IndexDocumentReport;
|
||||
import org.gcube.application.cms.plugins.requests.BaseRequest;
|
||||
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
||||
import org.gcube.application.geoportal.common.model.configuration.Index;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
public interface IndexerPluginInterface extends InitializablePlugin{
|
||||
|
||||
public IndexDocumentReport index(IndexDocumentRequest request) throws InvalidPluginRequestException;
|
||||
public IndexDocumentReport deindex(IndexDocumentRequest request) throws InvalidPluginRequestException;
|
||||
|
||||
public Index getIndex(BaseRequest request) throws ConfigurationException;
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.InitializationException;
|
||||
import org.gcube.application.cms.plugins.faults.ShutDownException;
|
||||
import org.gcube.application.cms.plugins.reports.InitializationReport;
|
||||
|
||||
public interface InitializablePlugin extends Plugin{
|
||||
/**
|
||||
* To be called once per context
|
||||
* @return
|
||||
* @throws InitializationException
|
||||
*/
|
||||
|
||||
public InitializationReport initInContext()throws InitializationException;
|
||||
|
||||
/**
|
||||
* To be called for static initialization
|
||||
* @return
|
||||
* @throws InitializationException
|
||||
*/
|
||||
public InitializationReport init()throws InitializationException;
|
||||
|
||||
/**
|
||||
* To be called at application shutdown
|
||||
* @throws ShutDownException
|
||||
*/
|
||||
public void shutdown() throws ShutDownException;
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.EventException;
|
||||
import org.gcube.application.cms.plugins.faults.InsufficientPrivileges;
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.faults.InvalidProfileException;
|
||||
import org.gcube.application.cms.plugins.faults.StepException;
|
||||
import org.gcube.application.cms.plugins.reports.EventExecutionReport;
|
||||
import org.gcube.application.cms.plugins.reports.StepExecutionReport;
|
||||
import org.gcube.application.cms.plugins.requests.BaseRequest;
|
||||
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
||||
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
|
||||
public interface LifecycleManager extends InitializablePlugin{
|
||||
|
||||
// Lifecycle operations
|
||||
|
||||
public StepExecutionReport performStep(StepExecutionRequest request) throws StepException, InvalidPluginRequestException, InvalidProfileException, ConfigurationException, InsufficientPrivileges;
|
||||
|
||||
public Configuration getCurrentConfiguration(BaseRequest request) throws ConfigurationException;
|
||||
|
||||
public EventExecutionReport onEvent(EventExecutionRequest request) throws EventException, InvalidPluginRequestException;
|
||||
|
||||
public void setPluginManager(PluginManagerInterface manager);
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.faults.MaterializationException;
|
||||
import org.gcube.application.cms.plugins.reports.MaterializationReport;
|
||||
import org.gcube.application.cms.plugins.requests.MaterializationRequest;
|
||||
|
||||
public interface MaterializationPlugin extends InitializablePlugin{
|
||||
|
||||
public MaterializationReport materialize(MaterializationRequest request) throws MaterializationException, InvalidPluginRequestException;
|
||||
|
||||
public MaterializationReport dematerialize(MaterializationRequest request) throws MaterializationException, InvalidPluginRequestException;
|
||||
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.plugins.PluginDescriptor;
|
||||
|
||||
public interface Plugin {
|
||||
|
||||
public PluginDescriptor getDescriptor();
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
public interface PluginManagerInterface {
|
||||
|
||||
public Plugin getById(String pluginID) throws ConfigurationException;
|
||||
public Map<String,Plugin> getByType(String type) throws ConfigurationException;
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package org.gcube.application.cms.plugins;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.reflections.Reflections;
|
||||
import org.reflections.util.ConfigurationBuilder;
|
||||
import org.reflections.util.FilterBuilder;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class PluginsReflections {
|
||||
|
||||
/** Loads Plugin implementation classes. It should only be accessed once by Plugin Manager
|
||||
* Plugins shouldn't access this class unless for testing purposes.
|
||||
* @return
|
||||
*/
|
||||
public static Map<String,Plugin> load(){
|
||||
Map<String,Plugin> toReturn=new HashMap<>();
|
||||
log.warn("WARNING!! LOADING PLUGIN CLASSES : THIS SHOULD HAPPEN ONLY ONCE");
|
||||
Reflections reflections = new Reflections(
|
||||
new ConfigurationBuilder()
|
||||
.forPackage("org.gcube.application.cms")
|
||||
.filterInputsBy(new FilterBuilder().includePackage("org.gcube.application.cms")));
|
||||
|
||||
reflections.getSubTypesOf(Plugin.class).iterator().forEachRemaining(pluginClass->{
|
||||
log.debug("Evaluating class {}",pluginClass);
|
||||
if(!pluginClass.isInterface() && !Modifier.isAbstract(pluginClass.getModifiers())){
|
||||
try {
|
||||
log.debug("Found implementation {} ",pluginClass);
|
||||
Plugin plugin = pluginClass.newInstance();
|
||||
log.debug("Loading {} description : {}", plugin, plugin.getDescriptor());
|
||||
|
||||
toReturn.put(plugin.getDescriptor().getId(), plugin);
|
||||
|
||||
|
||||
}catch (Throwable t){
|
||||
log.warn("Unable to instantiate Plugin "+pluginClass,t);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
return toReturn;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package org.gcube.application.cms.plugins.events;
|
||||
|
||||
public interface EventListener<T extends ItemObservable> {
|
||||
|
||||
public void updated(T observerd);
|
||||
|
||||
}
|
|
@ -0,0 +1,132 @@
|
|||
package org.gcube.application.cms.plugins.events;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
|
||||
/**
|
||||
* The Class EventManager.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Dec 11, 2023
|
||||
*/
|
||||
public class EventManager implements EventManagerInterface<ItemObserved<Project>> {
|
||||
|
||||
private HashMap<Event, List<EventListener<ItemObserved<Project>>>> listeners = new HashMap<Event, List<EventListener<ItemObserved<Project>>>>();
|
||||
|
||||
/**
|
||||
* The Class Event.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Nov 29, 2023
|
||||
*/
|
||||
public static enum Event {
|
||||
|
||||
PROJECT_CREATED("PROJECT_CREATED"),
|
||||
PROJECT_UPDATED("PROJECT_UPDATED"),
|
||||
PROJECT_DELETED("PROJECT_DELETED"),
|
||||
LIFECYCLE_STEP_PERFORMED("LIFECYCLE_STEP_PERFORMED");
|
||||
|
||||
String name;
|
||||
|
||||
/**
|
||||
* Instantiates a new event.
|
||||
*
|
||||
* @param name the name
|
||||
*/
|
||||
Event(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name.
|
||||
*
|
||||
* @return the name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// private instance, so that it can be
|
||||
// accessed by only by getInstance() method
|
||||
private static EventManager instance;
|
||||
|
||||
/**
|
||||
* Instantiates a new event manager.
|
||||
*/
|
||||
private EventManager() {
|
||||
// private constructor
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the single instance of EventManager.
|
||||
*
|
||||
* @return single instance of EventManager
|
||||
*/
|
||||
public static EventManager getInstance() {
|
||||
if (instance == null) {
|
||||
// synchronized block to remove overhead
|
||||
synchronized (EventManager.class) {
|
||||
if (instance == null) {
|
||||
// if instance is null, initialize
|
||||
instance = new EventManager();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subscribe.
|
||||
*
|
||||
* @param eventType the event type
|
||||
* @param listener the listener
|
||||
*/
|
||||
public void subscribe(Event eventType, EventListener<ItemObserved<Project>> listener) {
|
||||
List<EventListener<ItemObserved<Project>>> list = listeners.get(eventType);
|
||||
if (list == null)
|
||||
list = new ArrayList<EventListener<ItemObserved<Project>>>();
|
||||
|
||||
list.add(listener);
|
||||
listeners.put(eventType, list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsubscribe.
|
||||
*
|
||||
* @param eventType the event type
|
||||
* @param listener the listener
|
||||
*/
|
||||
public void unsubscribe(Event eventType, EventListener<ItemObserved<Project>> listener) {
|
||||
List<EventListener<ItemObserved<Project>>> list = listeners.get(eventType);
|
||||
if (list == null)
|
||||
return;
|
||||
|
||||
list.remove(listener);
|
||||
listeners.put(eventType, list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify.
|
||||
*
|
||||
* @param eventType the event type
|
||||
* @param item the item
|
||||
*/
|
||||
public void notify(Event eventType, ItemObserved<Project> item) {
|
||||
for (EventManager.Event event : listeners.keySet()) {
|
||||
if (event.equals(eventType)) {
|
||||
for (EventListener<ItemObserved<Project>> eventListner : listeners.get(eventType)) {
|
||||
eventListner.updated(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package org.gcube.application.cms.plugins.events;
|
||||
|
||||
import org.gcube.application.cms.plugins.events.EventManager.Event;
|
||||
|
||||
public interface EventManagerInterface<T extends ItemObservable> {
|
||||
|
||||
public void subscribe(Event eventType, EventListener<T> listener);
|
||||
|
||||
public void unsubscribe(Event eventType, EventListener<T> listener);
|
||||
|
||||
public void notify(Event eventType, T item);
|
||||
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package org.gcube.application.cms.plugins.events;
|
||||
|
||||
public interface ItemObservable {
|
||||
|
||||
public String getProjectId();
|
||||
|
||||
public String getUCD_Id();
|
||||
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
package org.gcube.application.cms.plugins.events;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bson.Document;
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
import org.gcube.application.geoportal.common.model.document.accounting.Context;
|
||||
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Slf4j
|
||||
public class ItemObserved<T extends Project> implements ItemObservable {
|
||||
|
||||
private User userCaller;
|
||||
private Context context;
|
||||
private UseCaseDescriptor useCaseDescriptor;
|
||||
private T project;
|
||||
private EventManager.Event event;
|
||||
private Document optional;
|
||||
|
||||
public static enum OPTIONAL_FIELD {
|
||||
message, preview_url
|
||||
}
|
||||
|
||||
public String getProjectId() {
|
||||
log.debug("Called getProjectId");
|
||||
if (project == null)
|
||||
return null;
|
||||
return project.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUCD_Id() {
|
||||
log.debug("Called getUCD_Id");
|
||||
if (useCaseDescriptor == null)
|
||||
return null;
|
||||
return useCaseDescriptor.getId();
|
||||
}
|
||||
|
||||
public LinkedHashMap<String, Object> getDocumentEntries(int limit) {
|
||||
|
||||
LinkedHashMap<String, Object> documentAsMap = new LinkedHashMap<>();
|
||||
|
||||
try {
|
||||
|
||||
Iterator<Entry<String, Object>> entrySetsIt = project.getTheDocument().entrySet().iterator();
|
||||
int i = 0;
|
||||
while (entrySetsIt.hasNext()) {
|
||||
if (i + 1 > limit)
|
||||
break;
|
||||
|
||||
Entry<String, Object> entry = entrySetsIt.next();
|
||||
documentAsMap.put(entry.getKey(), entry.getValue() != null ? entry.getValue().toString() : null);
|
||||
i++;
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
return documentAsMap;
|
||||
}
|
||||
|
||||
public void setOptional(OPTIONAL_FIELD optionalField, String value) {
|
||||
this.optional = new Document();
|
||||
if (optional == null)
|
||||
this.optional = new Document();
|
||||
|
||||
this.optional.put(optionalField.name(), value);
|
||||
}
|
||||
|
||||
public String getOptionalValue(OPTIONAL_FIELD optionalField) {
|
||||
if (this.optional != null) {
|
||||
return this.optional.getString(optionalField.name());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("ItemObserved [userCaller=");
|
||||
builder.append(userCaller);
|
||||
builder.append(", context=");
|
||||
builder.append(context);
|
||||
builder.append(", useCaseDescriptor id=");
|
||||
builder.append(useCaseDescriptor != null ? useCaseDescriptor.getId() : null);
|
||||
builder.append(", project id=");
|
||||
builder.append(project != null ? project.getId() : null);
|
||||
builder.append(", event=");
|
||||
builder.append(event);
|
||||
builder.append(", optional=");
|
||||
builder.append(optional);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class EventException extends PluginExecutionException{
|
||||
|
||||
public EventException() {
|
||||
}
|
||||
|
||||
public EventException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public EventException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public EventException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public EventException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class IndexingException extends PluginExecutionException{
|
||||
public IndexingException() {
|
||||
}
|
||||
|
||||
public IndexingException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public IndexingException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public IndexingException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public IndexingException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class InitializationException extends PluginExecutionException{
|
||||
|
||||
public InitializationException() {
|
||||
}
|
||||
|
||||
public InitializationException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InitializationException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InitializationException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public InitializationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class InsufficientPrivileges extends Exception {
|
||||
public InsufficientPrivileges() {
|
||||
}
|
||||
|
||||
public InsufficientPrivileges(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InsufficientPrivileges(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InsufficientPrivileges(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public InsufficientPrivileges(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class InvalidPluginRequestException extends PluginExecutionException {
|
||||
public InvalidPluginRequestException() {
|
||||
}
|
||||
|
||||
public InvalidPluginRequestException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InvalidPluginRequestException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InvalidPluginRequestException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public InvalidPluginRequestException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class InvalidProfileException extends Exception {
|
||||
public InvalidProfileException() {
|
||||
}
|
||||
|
||||
public InvalidProfileException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public InvalidProfileException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public InvalidProfileException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public InvalidProfileException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class MaterializationException extends PluginExecutionException {
|
||||
|
||||
public MaterializationException() {
|
||||
}
|
||||
|
||||
public MaterializationException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public MaterializationException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public MaterializationException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public MaterializationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class PluginExecutionException extends Exception{
|
||||
public PluginExecutionException() {
|
||||
}
|
||||
|
||||
public PluginExecutionException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public PluginExecutionException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public PluginExecutionException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public PluginExecutionException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class ShutDownException extends Exception {
|
||||
|
||||
public ShutDownException() {
|
||||
}
|
||||
|
||||
public ShutDownException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ShutDownException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public ShutDownException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public ShutDownException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class StepException extends PluginExecutionException {
|
||||
|
||||
public StepException() {
|
||||
}
|
||||
|
||||
public StepException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public StepException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public StepException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public StepException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class UnrecognizedEventException extends EventException{
|
||||
public UnrecognizedEventException() {
|
||||
}
|
||||
|
||||
public UnrecognizedEventException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public UnrecognizedEventException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public UnrecognizedEventException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public UnrecognizedEventException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.gcube.application.cms.plugins.faults;
|
||||
|
||||
public class UnrecognizedStepException extends StepException{
|
||||
public UnrecognizedStepException() {
|
||||
}
|
||||
|
||||
public UnrecognizedStepException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public UnrecognizedStepException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public UnrecognizedStepException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public UnrecognizedStepException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,843 @@
|
|||
package org.gcube.application.cms.plugins.model;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Deque;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Generic implementation of version comparison.
|
||||
* </p>
|
||||
*
|
||||
* Features:
|
||||
* <ul>
|
||||
* <li>mixing of '<code>-</code>' (hyphen) and '<code>.</code>' (dot) separators,</li>
|
||||
* <li>transition between characters and digits also constitutes a separator:
|
||||
* <code>1.0alpha1 => [1, 0, alpha, 1]</code></li>
|
||||
* <li>unlimited number of version components,</li>
|
||||
* <li>version components in the text can be digits or strings,</li>
|
||||
* <li>strings are checked for well-known qualifiers and the qualifier ordering is used for version ordering.
|
||||
* Well-known qualifiers (case insensitive) are:<ul>
|
||||
* <li><code>alpha</code> or <code>a</code></li>
|
||||
* <li><code>beta</code> or <code>b</code></li>
|
||||
* <li><code>milestone</code> or <code>m</code></li>
|
||||
* <li><code>rc</code> or <code>cr</code></li>
|
||||
* <li><code>snapshot</code></li>
|
||||
* <li><code>(the empty string)</code> or <code>ga</code> or <code>final</code></li>
|
||||
* <li><code>sp</code></li>
|
||||
* </ul>
|
||||
* Unknown qualifiers are considered after known qualifiers, with lexical order (always case insensitive),
|
||||
* </li>
|
||||
* <li>a hyphen usually precedes a qualifier, and is always less important than something preceded with a dot.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @see <a href="https://cwiki.apache.org/confluence/display/MAVENOLD/Versioning">"Versioning" on Maven Wiki</a>
|
||||
* @author <a href="mailto:kenney@apache.org">Kenney Westerhof</a>
|
||||
* @author <a href="mailto:hboutemy@apache.org">Hervé Boutemy</a>
|
||||
*/
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
public class ComparableVersion
|
||||
implements Comparable<ComparableVersion>
|
||||
{
|
||||
private static final int MAX_INTITEM_LENGTH = 9;
|
||||
|
||||
private static final int MAX_LONGITEM_LENGTH = 18;
|
||||
|
||||
private String value;
|
||||
|
||||
private String canonical;
|
||||
|
||||
private ListItem items;
|
||||
|
||||
private interface Item
|
||||
{
|
||||
int INT_ITEM = 3;
|
||||
int LONG_ITEM = 4;
|
||||
int BIGINTEGER_ITEM = 0;
|
||||
int STRING_ITEM = 1;
|
||||
int LIST_ITEM = 2;
|
||||
|
||||
int compareTo( Item item );
|
||||
|
||||
int getType();
|
||||
|
||||
boolean isNull();
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a numeric item in the version item list that can be represented with an int.
|
||||
*/
|
||||
private static class IntItem
|
||||
implements Item
|
||||
{
|
||||
private final int value;
|
||||
|
||||
public static final IntItem ZERO = new IntItem();
|
||||
|
||||
private IntItem()
|
||||
{
|
||||
this.value = 0;
|
||||
}
|
||||
|
||||
IntItem( String str )
|
||||
{
|
||||
this.value = Integer.parseInt( str );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType()
|
||||
{
|
||||
return INT_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNull()
|
||||
{
|
||||
return value == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo( Item item )
|
||||
{
|
||||
if ( item == null )
|
||||
{
|
||||
return ( value == 0 ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
|
||||
}
|
||||
|
||||
switch ( item.getType() )
|
||||
{
|
||||
case INT_ITEM:
|
||||
int itemValue = ( (IntItem) item ).value;
|
||||
return Integer.compare( value, itemValue );
|
||||
case LONG_ITEM:
|
||||
case BIGINTEGER_ITEM:
|
||||
return -1;
|
||||
|
||||
case STRING_ITEM:
|
||||
return 1; // 1.1 > 1-sp
|
||||
|
||||
case LIST_ITEM:
|
||||
return 1; // 1.1 > 1-1
|
||||
|
||||
default:
|
||||
throw new IllegalStateException( "invalid item: " + item.getClass() );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if ( this == o )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( o == null || getClass() != o.getClass() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IntItem intItem = (IntItem) o;
|
||||
|
||||
return value == intItem.value;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return Integer.toString( value );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a numeric item in the version item list that can be represented with a long.
|
||||
*/
|
||||
private static class LongItem
|
||||
implements Item
|
||||
{
|
||||
private final long value;
|
||||
|
||||
LongItem( String str )
|
||||
{
|
||||
this.value = Long.parseLong( str );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType()
|
||||
{
|
||||
return LONG_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNull()
|
||||
{
|
||||
return value == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo( Item item )
|
||||
{
|
||||
if ( item == null )
|
||||
{
|
||||
return ( value == 0 ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
|
||||
}
|
||||
|
||||
switch ( item.getType() )
|
||||
{
|
||||
case INT_ITEM:
|
||||
return 1;
|
||||
case LONG_ITEM:
|
||||
long itemValue = ( (LongItem) item ).value;
|
||||
return Long.compare( value, itemValue );
|
||||
case BIGINTEGER_ITEM:
|
||||
return -1;
|
||||
|
||||
case STRING_ITEM:
|
||||
return 1; // 1.1 > 1-sp
|
||||
|
||||
case LIST_ITEM:
|
||||
return 1; // 1.1 > 1-1
|
||||
|
||||
default:
|
||||
throw new IllegalStateException( "invalid item: " + item.getClass() );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if ( this == o )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( o == null || getClass() != o.getClass() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LongItem longItem = (LongItem) o;
|
||||
|
||||
return value == longItem.value;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return (int) ( value ^ ( value >>> 32 ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return Long.toString( value );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a numeric item in the version item list.
|
||||
*/
|
||||
private static class BigIntegerItem
|
||||
implements Item
|
||||
{
|
||||
private final BigInteger value;
|
||||
|
||||
BigIntegerItem( String str )
|
||||
{
|
||||
this.value = new BigInteger( str );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType()
|
||||
{
|
||||
return BIGINTEGER_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNull()
|
||||
{
|
||||
return BigInteger.ZERO.equals( value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo( Item item )
|
||||
{
|
||||
if ( item == null )
|
||||
{
|
||||
return BigInteger.ZERO.equals( value ) ? 0 : 1; // 1.0 == 1, 1.1 > 1
|
||||
}
|
||||
|
||||
switch ( item.getType() )
|
||||
{
|
||||
case INT_ITEM:
|
||||
case LONG_ITEM:
|
||||
return 1;
|
||||
|
||||
case BIGINTEGER_ITEM:
|
||||
return value.compareTo( ( (BigIntegerItem) item ).value );
|
||||
|
||||
case STRING_ITEM:
|
||||
return 1; // 1.1 > 1-sp
|
||||
|
||||
case LIST_ITEM:
|
||||
return 1; // 1.1 > 1-1
|
||||
|
||||
default:
|
||||
throw new IllegalStateException( "invalid item: " + item.getClass() );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if ( this == o )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( o == null || getClass() != o.getClass() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
BigIntegerItem that = (BigIntegerItem) o;
|
||||
|
||||
return value.equals( that.value );
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return value.hashCode();
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return value.toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a string in the version item list, usually a qualifier.
|
||||
*/
|
||||
private static class StringItem
|
||||
implements Item
|
||||
{
|
||||
private static final List<String> QUALIFIERS =
|
||||
Arrays.asList( "alpha", "beta", "milestone", "rc", "snapshot", "", "sp" );
|
||||
|
||||
private static final Properties ALIASES = new Properties();
|
||||
static
|
||||
{
|
||||
ALIASES.put( "ga", "" );
|
||||
ALIASES.put( "final", "" );
|
||||
ALIASES.put( "release", "" );
|
||||
ALIASES.put( "cr", "rc" );
|
||||
}
|
||||
|
||||
/**
|
||||
* A comparable value for the empty-string qualifier. This one is used to determine if a given qualifier makes
|
||||
* the version older than one without a qualifier, or more recent.
|
||||
*/
|
||||
private static final String RELEASE_VERSION_INDEX = String.valueOf( QUALIFIERS.indexOf( "" ) );
|
||||
|
||||
private final String value;
|
||||
|
||||
StringItem( String value, boolean followedByDigit )
|
||||
{
|
||||
if ( followedByDigit && value.length() == 1 )
|
||||
{
|
||||
// a1 = alpha-1, b1 = beta-1, m1 = milestone-1
|
||||
switch ( value.charAt( 0 ) )
|
||||
{
|
||||
case 'a':
|
||||
value = "alpha";
|
||||
break;
|
||||
case 'b':
|
||||
value = "beta";
|
||||
break;
|
||||
case 'm':
|
||||
value = "milestone";
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
this.value = ALIASES.getProperty( value , value );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType()
|
||||
{
|
||||
return STRING_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNull()
|
||||
{
|
||||
return ( comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX ) == 0 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a comparable value for a qualifier.
|
||||
*
|
||||
* This method takes into account the ordering of known qualifiers then unknown qualifiers with lexical
|
||||
* ordering.
|
||||
*
|
||||
* just returning an Integer with the index here is faster, but requires a lot of if/then/else to check for -1
|
||||
* or QUALIFIERS.size and then resort to lexical ordering. Most comparisons are decided by the first character,
|
||||
* so this is still fast. If more characters are needed then it requires a lexical sort anyway.
|
||||
*
|
||||
* @param qualifier
|
||||
* @return an equivalent value that can be used with lexical comparison
|
||||
*/
|
||||
public static String comparableQualifier( String qualifier )
|
||||
{
|
||||
int i = QUALIFIERS.indexOf( qualifier );
|
||||
|
||||
return i == -1 ? ( QUALIFIERS.size() + "-" + qualifier ) : String.valueOf( i );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo( Item item )
|
||||
{
|
||||
if ( item == null )
|
||||
{
|
||||
// 1-rc < 1, 1-ga > 1
|
||||
return comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX );
|
||||
}
|
||||
switch ( item.getType() )
|
||||
{
|
||||
case INT_ITEM:
|
||||
case LONG_ITEM:
|
||||
case BIGINTEGER_ITEM:
|
||||
return -1; // 1.any < 1.1 ?
|
||||
|
||||
case STRING_ITEM:
|
||||
return comparableQualifier( value ).compareTo( comparableQualifier( ( (StringItem) item ).value ) );
|
||||
|
||||
case LIST_ITEM:
|
||||
return -1; // 1.any < 1-1
|
||||
|
||||
default:
|
||||
throw new IllegalStateException( "invalid item: " + item.getClass() );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if ( this == o )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( o == null || getClass() != o.getClass() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
StringItem that = (StringItem) o;
|
||||
|
||||
return value.equals( that.value );
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return value.hashCode();
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a version list item. This class is used both for the global item list and for sub-lists (which start
|
||||
* with '-(number)' in the version specification).
|
||||
*/
|
||||
private static class ListItem
|
||||
extends ArrayList<Item>
|
||||
implements Item
|
||||
{
|
||||
@Override
|
||||
public int getType()
|
||||
{
|
||||
return LIST_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNull()
|
||||
{
|
||||
return ( size() == 0 );
|
||||
}
|
||||
|
||||
void normalize()
|
||||
{
|
||||
for ( int i = size() - 1; i >= 0; i-- )
|
||||
{
|
||||
Item lastItem = get( i );
|
||||
|
||||
if ( lastItem.isNull() )
|
||||
{
|
||||
// remove null trailing items: 0, "", empty list
|
||||
remove( i );
|
||||
}
|
||||
else if ( !( lastItem instanceof ListItem ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo( Item item )
|
||||
{
|
||||
if ( item == null )
|
||||
{
|
||||
if ( size() == 0 )
|
||||
{
|
||||
return 0; // 1-0 = 1- (normalize) = 1
|
||||
}
|
||||
// Compare the entire list of items with null - not just the first one, MNG-6964
|
||||
for ( Item i : this )
|
||||
{
|
||||
int result = i.compareTo( null );
|
||||
if ( result != 0 )
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
switch ( item.getType() )
|
||||
{
|
||||
case INT_ITEM:
|
||||
case LONG_ITEM:
|
||||
case BIGINTEGER_ITEM:
|
||||
return -1; // 1-1 < 1.0.x
|
||||
|
||||
case STRING_ITEM:
|
||||
return 1; // 1-1 > 1-sp
|
||||
|
||||
case LIST_ITEM:
|
||||
Iterator<Item> left = iterator();
|
||||
Iterator<Item> right = ( (ListItem) item ).iterator();
|
||||
|
||||
while ( left.hasNext() || right.hasNext() )
|
||||
{
|
||||
Item l = left.hasNext() ? left.next() : null;
|
||||
Item r = right.hasNext() ? right.next() : null;
|
||||
|
||||
// if this is shorter, then invert the compare and mul with -1
|
||||
int result = l == null ? ( r == null ? 0 : -1 * r.compareTo( l ) ) : l.compareTo( r );
|
||||
|
||||
if ( result != 0 )
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
default:
|
||||
throw new IllegalStateException( "invalid item: " + item.getClass() );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
for ( Item item : this )
|
||||
{
|
||||
if ( buffer.length() > 0 )
|
||||
{
|
||||
buffer.append( ( item instanceof ListItem ) ? '-' : '.' );
|
||||
}
|
||||
buffer.append( item );
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the contents in the same format that is used when you call toString() on a List.
|
||||
*/
|
||||
private String toListString()
|
||||
{
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append( "[" );
|
||||
for ( Item item : this )
|
||||
{
|
||||
if ( buffer.length() > 1 )
|
||||
{
|
||||
buffer.append( ", " );
|
||||
}
|
||||
if ( item instanceof ListItem )
|
||||
{
|
||||
buffer.append( ( (ListItem ) item ).toListString() );
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer.append( item );
|
||||
}
|
||||
}
|
||||
buffer.append( "]" );
|
||||
return buffer.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public ComparableVersion( String version )
|
||||
{
|
||||
parseVersion( version );
|
||||
}
|
||||
|
||||
@SuppressWarnings( "checkstyle:innerassignment" )
|
||||
public final void parseVersion( String version )
|
||||
{
|
||||
this.value = version;
|
||||
|
||||
items = new ListItem();
|
||||
|
||||
version = version.toLowerCase( Locale.ENGLISH );
|
||||
|
||||
ListItem list = items;
|
||||
|
||||
Deque<Item> stack = new ArrayDeque<>();
|
||||
stack.push( list );
|
||||
|
||||
boolean isDigit = false;
|
||||
|
||||
int startIndex = 0;
|
||||
|
||||
for ( int i = 0; i < version.length(); i++ )
|
||||
{
|
||||
char c = version.charAt( i );
|
||||
|
||||
if ( c == '.' )
|
||||
{
|
||||
if ( i == startIndex )
|
||||
{
|
||||
list.add( IntItem.ZERO );
|
||||
}
|
||||
else
|
||||
{
|
||||
list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
|
||||
}
|
||||
startIndex = i + 1;
|
||||
}
|
||||
else if ( c == '-' )
|
||||
{
|
||||
if ( i == startIndex )
|
||||
{
|
||||
list.add( IntItem.ZERO );
|
||||
}
|
||||
else
|
||||
{
|
||||
list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
|
||||
}
|
||||
startIndex = i + 1;
|
||||
|
||||
list.add( list = new ListItem() );
|
||||
stack.push( list );
|
||||
}
|
||||
else if ( Character.isDigit( c ) )
|
||||
{
|
||||
if ( !isDigit && i > startIndex )
|
||||
{
|
||||
list.add( new StringItem( version.substring( startIndex, i ), true ) );
|
||||
startIndex = i;
|
||||
|
||||
list.add( list = new ListItem() );
|
||||
stack.push( list );
|
||||
}
|
||||
|
||||
isDigit = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isDigit && i > startIndex )
|
||||
{
|
||||
list.add( parseItem( true, version.substring( startIndex, i ) ) );
|
||||
startIndex = i;
|
||||
|
||||
list.add( list = new ListItem() );
|
||||
stack.push( list );
|
||||
}
|
||||
|
||||
isDigit = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( version.length() > startIndex )
|
||||
{
|
||||
list.add( parseItem( isDigit, version.substring( startIndex ) ) );
|
||||
}
|
||||
|
||||
while ( !stack.isEmpty() )
|
||||
{
|
||||
list = (ListItem) stack.pop();
|
||||
list.normalize();
|
||||
}
|
||||
}
|
||||
|
||||
private static Item parseItem( boolean isDigit, String buf )
|
||||
{
|
||||
if ( isDigit )
|
||||
{
|
||||
buf = stripLeadingZeroes( buf );
|
||||
if ( buf.length() <= MAX_INTITEM_LENGTH )
|
||||
{
|
||||
// lower than 2^31
|
||||
return new IntItem( buf );
|
||||
}
|
||||
else if ( buf.length() <= MAX_LONGITEM_LENGTH )
|
||||
{
|
||||
// lower than 2^63
|
||||
return new LongItem( buf );
|
||||
}
|
||||
return new BigIntegerItem( buf );
|
||||
}
|
||||
return new StringItem( buf, false );
|
||||
}
|
||||
|
||||
private static String stripLeadingZeroes( String buf )
|
||||
{
|
||||
if ( buf == null || buf.isEmpty() )
|
||||
{
|
||||
return "0";
|
||||
}
|
||||
for ( int i = 0; i < buf.length(); ++i )
|
||||
{
|
||||
char c = buf.charAt( i );
|
||||
if ( c != '0' )
|
||||
{
|
||||
return buf.substring( i );
|
||||
}
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo( ComparableVersion o )
|
||||
{
|
||||
return items.compareTo( o.items );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
public String getCanonical()
|
||||
{
|
||||
if ( canonical == null )
|
||||
{
|
||||
canonical = items.toString();
|
||||
}
|
||||
return canonical;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
return ( o instanceof ComparableVersion ) && items.equals( ( (ComparableVersion) o ).items );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return items.hashCode();
|
||||
}
|
||||
|
||||
// CHECKSTYLE_OFF: LineLength
|
||||
/**
|
||||
* Main to test version parsing and comparison.
|
||||
* <p>
|
||||
* To check how "1.2.7" compares to "1.2-SNAPSHOT", for example, you can issue
|
||||
* <pre>java -jar ${maven.repo.local}/org/apache/maven/maven-artifact/${maven.version}/maven-artifact-${maven.version}.jar "1.2.7" "1.2-SNAPSHOT"</pre>
|
||||
* command to command line. Result of given command will be something like this:
|
||||
* <pre>
|
||||
* Display parameters as parsed by Maven (in canonical form) and comparison result:
|
||||
* 1. 1.2.7 == 1.2.7
|
||||
* 1.2.7 > 1.2-SNAPSHOT
|
||||
* 2. 1.2-SNAPSHOT == 1.2-snapshot
|
||||
* </pre>
|
||||
*
|
||||
* @param args the version strings to parse and compare. You can pass arbitrary number of version strings and always
|
||||
* two adjacent will be compared
|
||||
*/
|
||||
// CHECKSTYLE_ON: LineLength
|
||||
public static void main( String... args )
|
||||
{
|
||||
System.out.println( "Display parameters as parsed by Maven (in canonical form and as a list of tokens) and"
|
||||
+ " comparison result:" );
|
||||
if ( args.length == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ComparableVersion prev = null;
|
||||
int i = 1;
|
||||
for ( String version : args )
|
||||
{
|
||||
ComparableVersion c = new ComparableVersion( version );
|
||||
|
||||
if ( prev != null )
|
||||
{
|
||||
int compare = prev.compareTo( c );
|
||||
System.out.println( " " + prev.toString() + ' '
|
||||
+ ( ( compare == 0 ) ? "==" : ( ( compare < 0 ) ? "<" : ">" ) ) + ' ' + version );
|
||||
}
|
||||
|
||||
System.out.println( ( i++ ) + ". " + version + " -> " + c.getCanonical()
|
||||
+ "; tokens: " + c.items.toListString() );
|
||||
|
||||
prev = c;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
package org.gcube.application.cms.plugins.reports;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bson.Document;
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
||||
import org.gcube.application.cms.plugins.requests.BaseExecutionRequest;
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
import org.gcube.application.geoportal.common.model.document.identification.IdentificationReference;
|
||||
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NonNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
||||
@Data
|
||||
|
||||
@Slf4j
|
||||
public class DocumentHandlingReport<T extends BaseExecutionRequest> extends Report{
|
||||
|
||||
@NonNull
|
||||
T theRequest;
|
||||
Document resultingDocument;
|
||||
LifecycleInformation toSetLifecycleInformation;
|
||||
|
||||
protected List<IdentificationReference> toSetIdentificationReferences=null;
|
||||
|
||||
public DocumentHandlingReport<T> addIdentificationReference(IdentificationReference toAdd){
|
||||
if(toSetIdentificationReferences == null) toSetIdentificationReferences = new ArrayList<>();
|
||||
toSetIdentificationReferences.add(toAdd);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public DocumentHandlingReport(@NonNull T theRequest) throws InvalidPluginRequestException {
|
||||
theRequest.validate();
|
||||
this.theRequest = theRequest;
|
||||
this.setStatus(Status.OK);
|
||||
toSetLifecycleInformation=theRequest.getDocument().getLifecycleInformation();
|
||||
resultingDocument = theRequest.getDocument().getTheDocument();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validate() throws PluginExecutionException {
|
||||
super.validate();
|
||||
if (resultingDocument==null) {
|
||||
log.warn("NULL resulting document in report {} ", this);
|
||||
throw new PluginExecutionException("Invalid report : Resulting document cannot be null");
|
||||
}
|
||||
if(toSetLifecycleInformation == null) {
|
||||
log.warn("NULL lifecycleinformation in report {} ",this);
|
||||
throw new PluginExecutionException("Invalid report : Lifecycle information cannot be null");
|
||||
}
|
||||
}
|
||||
|
||||
public Project prepareResult() throws JsonProcessingException, PluginExecutionException {
|
||||
log.trace("Preparing document ID {} from report ... ",theRequest.getDocument().getId());
|
||||
this.validate();
|
||||
|
||||
Project toReturn = theRequest.getDocument();
|
||||
toReturn.setTheDocument(resultingDocument);
|
||||
toReturn.setLifecycleInformation(toSetLifecycleInformation);
|
||||
|
||||
// Force Report status into info
|
||||
log.trace("Report status is {} ",getStatus());
|
||||
LifecycleInformation info = toReturn.getLifecycleInformation();
|
||||
switch (getStatus()){
|
||||
case ERROR: {
|
||||
info.setLastOperationStatus(LifecycleInformation.Status.ERROR);
|
||||
this.getMessages().forEach(s -> info.addErrorMessage(s));
|
||||
break;
|
||||
}
|
||||
case WARNING:{
|
||||
info.setLastOperationStatus(LifecycleInformation.Status.WARNING);
|
||||
this.getMessages().forEach(s -> info.addWarningMessage(s));
|
||||
break;
|
||||
}
|
||||
case OK: {
|
||||
if(info.getLastOperationStatus()==null)
|
||||
info.setLastOperationStatus(LifecycleInformation.Status.OK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(toSetIdentificationReferences!=null)
|
||||
toReturn.setIdentificationReferences(toSetIdentificationReferences);
|
||||
return toReturn;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package org.gcube.application.cms.plugins.reports;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
||||
|
||||
import lombok.ToString;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@ToString(callSuper = true)
|
||||
@Slf4j
|
||||
public class EventExecutionReport extends DocumentHandlingReport<EventExecutionRequest>{
|
||||
|
||||
public EventExecutionReport(EventExecutionRequest req) throws InvalidPluginRequestException {
|
||||
super(req);
|
||||
try{
|
||||
if(theRequest.getDocument().getLifecycleInformation()!=null)
|
||||
this.setToSetLifecycleInformation(theRequest.getDocument().getLifecycleInformation().cleanState());
|
||||
else theRequest.getDocument().setLifecycleInformation(new LifecycleInformation().cleanState());
|
||||
}catch(Throwable t){
|
||||
log.warn("Cannot to clean state for lifecycle information {} in {} : {}",
|
||||
theRequest.getDocument().getLifecycleInformation(),
|
||||
theRequest.getDocument().getProfileID(),
|
||||
theRequest.getDocument().getId(),
|
||||
t);
|
||||
}
|
||||
this.getToSetLifecycleInformation().setLastOperationStatus(LifecycleInformation.Status.OK);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setToSetLifecycleInformation(LifecycleInformation toSetLifecycleInformation) {
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package org.gcube.application.cms.plugins.reports;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class IndexDocumentReport extends DocumentHandlingReport<IndexDocumentRequest> {
|
||||
|
||||
// protected List<IdentificationReference> toSetIndexReferences=new ArrayList<>();
|
||||
|
||||
|
||||
public IndexDocumentReport(@NonNull IndexDocumentRequest theRequest) throws InvalidPluginRequestException {
|
||||
super(theRequest);
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public Project prepareResult() throws JsonProcessingException, PluginExecutionException {
|
||||
// Project toReturn= super.prepareResult();
|
||||
// if(toSetSpatialReference != null) toReturn.setSpatialReference(toSetSpatialReference);
|
||||
// if(toSetTemporalReference != null) toReturn.setTemporalReference(toSetTemporalReference);
|
||||
// return toReturn;
|
||||
// }
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.gcube.application.cms.plugins.reports;
|
||||
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public class InitializationReport extends Report{
|
||||
|
||||
public InitializationReport(Status status, String... messages) {
|
||||
super(status, messages);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package org.gcube.application.cms.plugins.reports;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.requests.MaterializationRequest;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
|
||||
public class MaterializationReport extends DocumentHandlingReport<MaterializationRequest>{
|
||||
|
||||
public MaterializationReport(@NonNull MaterializationRequest theRequest) throws InvalidPluginRequestException {
|
||||
super(theRequest);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package org.gcube.application.cms.plugins.reports;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class Report {
|
||||
|
||||
public static enum Status {
|
||||
ERROR,WARNING,OK
|
||||
}
|
||||
|
||||
private Status status;
|
||||
private List<String> messages;
|
||||
|
||||
public Report(Status status,String ... messages) {
|
||||
this.status = status;
|
||||
this.messages=new ArrayList<>();
|
||||
for (String s : messages)
|
||||
this.messages.add(s);
|
||||
}
|
||||
|
||||
public Report putMessage(String msg){
|
||||
if(messages==null)messages=new ArrayList<>();
|
||||
messages.add(msg);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void validate()throws PluginExecutionException {
|
||||
if(status == null) throw new PluginExecutionException("Status is null");
|
||||
if(!status.equals(Status.OK))
|
||||
if(messages==null || messages.isEmpty()) throw new PluginExecutionException("Messages are mandatory for status != OK ");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package org.gcube.application.cms.plugins.reports;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
||||
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
public class StepExecutionReport extends DocumentHandlingReport<StepExecutionRequest>{
|
||||
|
||||
public StepExecutionReport(@NonNull StepExecutionRequest theRequest) throws InvalidPluginRequestException {
|
||||
|
||||
super(theRequest);
|
||||
this.getToSetLifecycleInformation().cleanState();
|
||||
this.getToSetLifecycleInformation().setLastInvokedStep(theRequest.getStep());
|
||||
}
|
||||
|
||||
List<EventExecutionRequest> toTriggerEvents;
|
||||
|
||||
List<StepExecutionRequest> cascadeSteps;
|
||||
|
||||
|
||||
|
||||
|
||||
public StepExecutionReport addToTriggerEvent(EventExecutionRequest req){
|
||||
if(toTriggerEvents==null) toTriggerEvents = new ArrayList<>();
|
||||
toTriggerEvents.add(req);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public StepExecutionReport addCascadeStep(StepExecutionRequest req){
|
||||
if(cascadeSteps == null ) cascadeSteps = new ArrayList<>();
|
||||
cascadeSteps.add(req);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Project prepareResult() throws JsonProcessingException, PluginExecutionException {
|
||||
Project toReturn= super.prepareResult();
|
||||
|
||||
return toReturn;
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue