git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-publishing/gCat-Feeder-Suite@178635 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
a4182fc2e4
commit
65b21c680b
|
@ -10,4 +10,8 @@ public interface CataloguePlugin {
|
||||||
|
|
||||||
public CatalogueController instantiateController(CatalogueInstanceDescriptor desc) throws ControllerInstantiationFault;
|
public CatalogueController instantiateController(CatalogueInstanceDescriptor desc) throws ControllerInstantiationFault;
|
||||||
|
|
||||||
|
|
||||||
|
public void init() throws Exception;
|
||||||
|
|
||||||
|
public void initInScope() throws Exception;
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -21,4 +21,9 @@ public interface CollectorPlugin<E extends CustomData>{
|
||||||
public DataCollector<E> getCollector();
|
public DataCollector<E> getCollector();
|
||||||
|
|
||||||
public ControllerConfiguration getPublisherControllerConfiguration(String catalogueType)throws CatalogueNotSupportedException;;
|
public ControllerConfiguration getPublisherControllerConfiguration(String catalogueType)throws CatalogueNotSupportedException;;
|
||||||
|
|
||||||
|
|
||||||
|
public void init() throws Exception;
|
||||||
|
|
||||||
|
public void initInScope() throws Exception;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,4 +13,7 @@ public class ControllerConfiguration {
|
||||||
return onClash;
|
return onClash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOnClash(PublishingPolicy onClash) {
|
||||||
|
this.onClash = onClash;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,14 @@ public class GCatController implements CatalogueController{
|
||||||
|
|
||||||
if(isCustomToken())
|
if(isCustomToken())
|
||||||
resetToken();
|
resetToken();
|
||||||
|
|
||||||
|
|
||||||
|
// setting default configuration
|
||||||
|
config=new ControllerConfiguration();
|
||||||
|
config.setOnClash(PublishingPolicy.UPDATE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}catch(ControllerInstantiationFault e) {
|
}catch(ControllerInstantiationFault e) {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,14 +64,20 @@ public class Interactions {
|
||||||
@Test
|
@Test
|
||||||
public void duplicates() {
|
public void duplicates() {
|
||||||
try {
|
try {
|
||||||
publish(getController(),"full.json");
|
publish(getController(),"full.json");
|
||||||
publish(getController(),"full.json");
|
publish(getController(),"full.json");
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
Assert.fail(e.getMessage());
|
Assert.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test(expected=WrongObjectFormatException.class)
|
||||||
|
public void empties() throws CatalogueInteractionException, WrongObjectFormatException, PublicationException, ControllerInstantiationFault {
|
||||||
|
publish(getController(),"empties.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test(expected=PublicationException.class)
|
@Test(expected=PublicationException.class)
|
||||||
public void missingProfile() throws CatalogueInteractionException, WrongObjectFormatException, PublicationException, ControllerInstantiationFault {
|
public void missingProfile() throws CatalogueInteractionException, WrongObjectFormatException, PublicationException, ControllerInstantiationFault {
|
||||||
publish(getController(),"missingProfile.json");
|
publish(getController(),"missingProfile.json");
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"profile" : null,
|
||||||
|
"item" : null,
|
||||||
|
"resources" : [
|
||||||
|
null,
|
||||||
|
null]
|
||||||
|
}
|
|
@ -0,0 +1,151 @@
|
||||||
|
{
|
||||||
|
"profile": "<metadataformat type=\"My Profile\">\r\n <metadatafield categoryref=\"category1\">\r\n <fieldName>Field 1<\/fieldName>\r\n <mandatory>false<\/mandatory>\r\n <dataType>String<\/dataType>\r\n <defaultValue \/>\r\n <note>Write something here<\/note>\r\n <validator \/>\r\n <tagging create=\"true\" separator=\"-\">onFieldName<\/tagging>\r\n <\/metadatafield>\r\n <metadatafield categoryref=\"category1\">\r\n <fieldName>Field 2<\/fieldName>\r\n <mandatory>false<\/mandatory>\r\n <dataType>Boolean<\/dataType>\r\n <defaultValue>true<\/defaultValue>\r\n <note>Set true or false to the checkbox<\/note>\r\n <validator \/>\r\n <\/metadatafield>\r\n <metadatafield categoryref=\"category2\">\r\n <fieldName>Field 3<\/fieldName>\r\n <mandatory>true<\/mandatory>\r\n <dataType>String<\/dataType>\r\n <defaultValue>A<\/defaultValue>\r\n <note>A listbox of values<\/note>\r\n <vocabulary isMultiSelection=\"true\">\r\n <vocabularyField>A3<\/vocabularyField>\r\n <vocabularyField>B3<\/vocabularyField>\r\n <vocabularyField>C3<\/vocabularyField>\r\n <vocabularyField>D3<\/vocabularyField>\r\n <vocabularyField>E3<\/vocabularyField>\r\n <vocabularyField>F3<\/vocabularyField>\r\n <\/vocabulary>\r\n <validator \/>\r\n <tagging create=\"true\" separator=\"-\">onValue<\/tagging>\r\n <\/metadatafield>\r\n <metadatafield categoryref=\"category2\">\r\n <fieldName>Field 4<\/fieldName>\r\n <mandatory>true<\/mandatory>\r\n <dataType>Number<\/dataType>\r\n <defaultValue>4<\/defaultValue>\r\n <validator \/>\r\n <\/metadatafield>\r\n<\/metadataformat>",
|
||||||
|
"item": {
|
||||||
|
"license_title": "Creative Commons Attribution Share-Alike 4.0",
|
||||||
|
"maintainer": null,
|
||||||
|
"searchable": "true",
|
||||||
|
"relationships_as_object": [],
|
||||||
|
"private": true,
|
||||||
|
"maintainer_email": null,
|
||||||
|
"num_tags": 2,
|
||||||
|
"metadata_created": "2019-03-19T15:03:28.482434",
|
||||||
|
"metadata_modified": "2019-03-19T15:03:30.676258",
|
||||||
|
"author": "luca_frosini",
|
||||||
|
"author_email": "luca.frosini@gcube.ckan.org",
|
||||||
|
"state": "active",
|
||||||
|
"version": null,
|
||||||
|
"creator_user_id": "287b2eec-4cd7-4e50-817f-e6dce19995c7",
|
||||||
|
"type": "dataset",
|
||||||
|
"tags": [
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "Other",
|
||||||
|
"id": "8ca635e2-4f72-48ed-8460-6734e9070a00",
|
||||||
|
"name": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "REST",
|
||||||
|
"id": "3d481290-b3cd-466f-8142-51608c616e60",
|
||||||
|
"name": "REST"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [],
|
||||||
|
"license_id": "CC-BY-SA-4.0",
|
||||||
|
"extras": [
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Input Parameter",
|
||||||
|
"value": "standard desviation of Temperatures( sdTemp): 2.9 °c( Double)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Output Parameter",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Hazard",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Population",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Product",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Item URL",
|
||||||
|
"value": "http://data.d4science.org/ctlg/AGINFRAplusDev/my_first_restful_transaction_model"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Author",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Creator",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model ID",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Language",
|
||||||
|
"value": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Population",
|
||||||
|
"value": "Italian"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ReadMe",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Reference Description",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Related Identifier",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system:type",
|
||||||
|
"value": "My Profile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model"},
|
||||||
|
{"cache_last_updated":null,
|
||||||
|
"cache_url":null,
|
||||||
|
"mimetype_inner":null,
|
||||||
|
"hash":"",
|
||||||
|
"description":"",
|
||||||
|
"format":"",
|
||||||
|
"url":"https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==","created":"2019-03-19T14:33:45.724709","state":"active","last_modified":null,"mimetype":"application/pdf","url_type":null,"position":0,"revision_id":"ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size":null,
|
||||||
|
"datastore_active":false,
|
||||||
|
"resource_type":null,
|
||||||
|
"name":"RESTful Transaction Model"},
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model2"
|
||||||
|
},null]
|
||||||
|
}
|
|
@ -0,0 +1,123 @@
|
||||||
|
{
|
||||||
|
"profile": null,
|
||||||
|
"item": {
|
||||||
|
"license_title": "Creative Commons Attribution Share-Alike 4.0",
|
||||||
|
"maintainer": null,
|
||||||
|
"searchable": "true",
|
||||||
|
"relationships_as_object": [],
|
||||||
|
"private": true,
|
||||||
|
"maintainer_email": null,
|
||||||
|
"num_tags": 2,
|
||||||
|
"metadata_created": "2019-03-19T15:03:28.482434",
|
||||||
|
"metadata_modified": "2019-03-19T15:03:30.676258",
|
||||||
|
"author": "luca_frosini",
|
||||||
|
"author_email": "luca.frosini@gcube.ckan.org",
|
||||||
|
"state": "active",
|
||||||
|
"version": null,
|
||||||
|
"creator_user_id": "287b2eec-4cd7-4e50-817f-e6dce19995c7",
|
||||||
|
"type": "dataset",
|
||||||
|
"tags": [
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "Other",
|
||||||
|
"id": "8ca635e2-4f72-48ed-8460-6734e9070a00",
|
||||||
|
"name": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "REST",
|
||||||
|
"id": "3d481290-b3cd-466f-8142-51608c616e60",
|
||||||
|
"name": "REST"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [],
|
||||||
|
"license_id": "CC-BY-SA-4.0",
|
||||||
|
"extras": [
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Input Parameter",
|
||||||
|
"value": "standard desviation of Temperatures( sdTemp): 2.9 °c( Double)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Output Parameter",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Hazard",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Population",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Product",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Item URL",
|
||||||
|
"value": "http://data.d4science.org/ctlg/AGINFRAplusDev/my_first_restful_transaction_model"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Author",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Creator",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model ID",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Language",
|
||||||
|
"value": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Population",
|
||||||
|
"value": "Italian"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ReadMe",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Reference Description",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Related Identifier",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system:type",
|
||||||
|
"value": "SomeFakeProfile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model"
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"profile" : null,
|
||||||
|
"item" : null,
|
||||||
|
"resources" : [
|
||||||
|
null,
|
||||||
|
null]
|
||||||
|
}
|
|
@ -0,0 +1,151 @@
|
||||||
|
{
|
||||||
|
"profile": "<metadataformat type=\"My Profile\">\r\n <metadatafield categoryref=\"category1\">\r\n <fieldName>Field 1<\/fieldName>\r\n <mandatory>false<\/mandatory>\r\n <dataType>String<\/dataType>\r\n <defaultValue \/>\r\n <note>Write something here<\/note>\r\n <validator \/>\r\n <tagging create=\"true\" separator=\"-\">onFieldName<\/tagging>\r\n <\/metadatafield>\r\n <metadatafield categoryref=\"category1\">\r\n <fieldName>Field 2<\/fieldName>\r\n <mandatory>false<\/mandatory>\r\n <dataType>Boolean<\/dataType>\r\n <defaultValue>true<\/defaultValue>\r\n <note>Set true or false to the checkbox<\/note>\r\n <validator \/>\r\n <\/metadatafield>\r\n <metadatafield categoryref=\"category2\">\r\n <fieldName>Field 3<\/fieldName>\r\n <mandatory>true<\/mandatory>\r\n <dataType>String<\/dataType>\r\n <defaultValue>A<\/defaultValue>\r\n <note>A listbox of values<\/note>\r\n <vocabulary isMultiSelection=\"true\">\r\n <vocabularyField>A3<\/vocabularyField>\r\n <vocabularyField>B3<\/vocabularyField>\r\n <vocabularyField>C3<\/vocabularyField>\r\n <vocabularyField>D3<\/vocabularyField>\r\n <vocabularyField>E3<\/vocabularyField>\r\n <vocabularyField>F3<\/vocabularyField>\r\n <\/vocabulary>\r\n <validator \/>\r\n <tagging create=\"true\" separator=\"-\">onValue<\/tagging>\r\n <\/metadatafield>\r\n <metadatafield categoryref=\"category2\">\r\n <fieldName>Field 4<\/fieldName>\r\n <mandatory>true<\/mandatory>\r\n <dataType>Number<\/dataType>\r\n <defaultValue>4<\/defaultValue>\r\n <validator \/>\r\n <\/metadatafield>\r\n<\/metadataformat>",
|
||||||
|
"item": {
|
||||||
|
"license_title": "Creative Commons Attribution Share-Alike 4.0",
|
||||||
|
"maintainer": null,
|
||||||
|
"searchable": "true",
|
||||||
|
"relationships_as_object": [],
|
||||||
|
"private": true,
|
||||||
|
"maintainer_email": null,
|
||||||
|
"num_tags": 2,
|
||||||
|
"metadata_created": "2019-03-19T15:03:28.482434",
|
||||||
|
"metadata_modified": "2019-03-19T15:03:30.676258",
|
||||||
|
"author": "luca_frosini",
|
||||||
|
"author_email": "luca.frosini@gcube.ckan.org",
|
||||||
|
"state": "active",
|
||||||
|
"version": null,
|
||||||
|
"creator_user_id": "287b2eec-4cd7-4e50-817f-e6dce19995c7",
|
||||||
|
"type": "dataset",
|
||||||
|
"tags": [
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "Other",
|
||||||
|
"id": "8ca635e2-4f72-48ed-8460-6734e9070a00",
|
||||||
|
"name": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "REST",
|
||||||
|
"id": "3d481290-b3cd-466f-8142-51608c616e60",
|
||||||
|
"name": "REST"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [],
|
||||||
|
"license_id": "CC-BY-SA-4.0",
|
||||||
|
"extras": [
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Input Parameter",
|
||||||
|
"value": "standard desviation of Temperatures( sdTemp): 2.9 °c( Double)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Output Parameter",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Hazard",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Population",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Product",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Item URL",
|
||||||
|
"value": "http://data.d4science.org/ctlg/AGINFRAplusDev/my_first_restful_transaction_model"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Author",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Creator",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model ID",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Language",
|
||||||
|
"value": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Population",
|
||||||
|
"value": "Italian"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ReadMe",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Reference Description",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Related Identifier",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system:type",
|
||||||
|
"value": "My Profile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model"},
|
||||||
|
{"cache_last_updated":null,
|
||||||
|
"cache_url":null,
|
||||||
|
"mimetype_inner":null,
|
||||||
|
"hash":"",
|
||||||
|
"description":"",
|
||||||
|
"format":"",
|
||||||
|
"url":"https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==","created":"2019-03-19T14:33:45.724709","state":"active","last_modified":null,"mimetype":"application/pdf","url_type":null,"position":0,"revision_id":"ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size":null,
|
||||||
|
"datastore_active":false,
|
||||||
|
"resource_type":null,
|
||||||
|
"name":"RESTful Transaction Model"},
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model2"
|
||||||
|
},null]
|
||||||
|
}
|
|
@ -0,0 +1,123 @@
|
||||||
|
{
|
||||||
|
"profile": null,
|
||||||
|
"item": {
|
||||||
|
"license_title": "Creative Commons Attribution Share-Alike 4.0",
|
||||||
|
"maintainer": null,
|
||||||
|
"searchable": "true",
|
||||||
|
"relationships_as_object": [],
|
||||||
|
"private": true,
|
||||||
|
"maintainer_email": null,
|
||||||
|
"num_tags": 2,
|
||||||
|
"metadata_created": "2019-03-19T15:03:28.482434",
|
||||||
|
"metadata_modified": "2019-03-19T15:03:30.676258",
|
||||||
|
"author": "luca_frosini",
|
||||||
|
"author_email": "luca.frosini@gcube.ckan.org",
|
||||||
|
"state": "active",
|
||||||
|
"version": null,
|
||||||
|
"creator_user_id": "287b2eec-4cd7-4e50-817f-e6dce19995c7",
|
||||||
|
"type": "dataset",
|
||||||
|
"tags": [
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "Other",
|
||||||
|
"id": "8ca635e2-4f72-48ed-8460-6734e9070a00",
|
||||||
|
"name": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vocabulary_id": null,
|
||||||
|
"state": "active",
|
||||||
|
"display_name": "REST",
|
||||||
|
"id": "3d481290-b3cd-466f-8142-51608c616e60",
|
||||||
|
"name": "REST"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"groups": [],
|
||||||
|
"license_id": "CC-BY-SA-4.0",
|
||||||
|
"extras": [
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Input Parameter",
|
||||||
|
"value": "standard desviation of Temperatures( sdTemp): 2.9 °c( Double)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_parameters:Output Parameter",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Hazard",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Population",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "FSKX_model_scope:Product",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Item URL",
|
||||||
|
"value": "http://data.d4science.org/ctlg/AGINFRAplusDev/my_first_restful_transaction_model"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Author",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Creator",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model ID",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Model Language",
|
||||||
|
"value": "Other"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Population",
|
||||||
|
"value": "Italian"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ReadMe",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Reference Description",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "Related Identifier",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system:type",
|
||||||
|
"value": "SomeFakeProfile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model"
|
||||||
|
},
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"cache_last_updated": null,
|
||||||
|
"cache_url": null,
|
||||||
|
"mimetype_inner": null,
|
||||||
|
"hash": "",
|
||||||
|
"description": "",
|
||||||
|
"format": "",
|
||||||
|
"url": "https://data.d4science.org/shub/E_MHpyWDlKS2hPRGhKNk9ackxMY25pMDhZWEs1Z2dCTWEyNkNzbTdyMjZveDlON1RTWW9xa1FvVnprT3liSmRncA==",
|
||||||
|
"created": "2019-03-19T14:33:45.724709",
|
||||||
|
"state": "active",
|
||||||
|
"last_modified": null,
|
||||||
|
"mimetype": "application/pdf",
|
||||||
|
"url_type": null,
|
||||||
|
"position": 0,
|
||||||
|
"revision_id": "ad5fbd19-fe67-4141-ad44-cf41d90b95fb",
|
||||||
|
"size": null,
|
||||||
|
"datastore_active": false,
|
||||||
|
"resource_type": null,
|
||||||
|
"name": "RESTful Transaction Model"
|
||||||
|
}
|
Binary file not shown.
|
@ -12,4 +12,11 @@ public class ServiceConstants {
|
||||||
public static final String EXECUTION_ID_PARAMETER="executionId";
|
public static final String EXECUTION_ID_PARAMETER="executionId";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static interface Capabilities{
|
||||||
|
public static final String PATH="capabilities";
|
||||||
|
|
||||||
|
public static final String COLLECTORS_PATH="collectors";
|
||||||
|
|
||||||
|
public static final String CATALOGUES_PATH="catalogues";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,4 +14,6 @@ public interface CatalogueControllersManager {
|
||||||
|
|
||||||
public void init() throws InternalError;
|
public void init() throws InternalError;
|
||||||
|
|
||||||
|
|
||||||
|
public void initInScope() throws InternalError;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,4 +12,7 @@ public interface CollectorsManager {
|
||||||
public CollectorPlugin<?> getPluginById(String collectorId) throws CollectorNotFound;
|
public CollectorPlugin<?> getPluginById(String collectorId) throws CollectorNotFound;
|
||||||
|
|
||||||
public void init() throws InternalError;
|
public void init() throws InternalError;
|
||||||
|
|
||||||
|
|
||||||
|
public void initInScope() throws InternalError;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
package org.gcube.data.publishing.gCatFeeder.service.engine.impl;
|
||||||
|
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.ServiceLoader;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.catalogues.CataloguePlugin;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.engine.CatalogueControllersManager;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.CataloguePluginNotFound;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.InternalError;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.utils.ContextUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
public class CatalogueControllersManagerImpl implements CatalogueControllersManager {
|
||||||
|
|
||||||
|
private static final Logger log= LoggerFactory.getLogger(CatalogueControllersManagerImpl.class);
|
||||||
|
|
||||||
|
|
||||||
|
private ServiceLoader<CataloguePlugin> cataloguePluginsLoader = null;
|
||||||
|
|
||||||
|
private ConcurrentHashMap<String,CataloguePlugin> availablePlugins=null;
|
||||||
|
|
||||||
|
|
||||||
|
public CatalogueControllersManagerImpl() {
|
||||||
|
//load plugins
|
||||||
|
log.debug("Loading catalogue plugins...");
|
||||||
|
cataloguePluginsLoader=ServiceLoader.load(CataloguePlugin.class);
|
||||||
|
for(CataloguePlugin plugin:cataloguePluginsLoader) {
|
||||||
|
log.debug("Loading {} ",plugin.getClass());
|
||||||
|
log.debug("Descriptor {} ",plugin.getDescriptor());
|
||||||
|
availablePlugins.put(plugin.getDescriptor().getId(), plugin);
|
||||||
|
}
|
||||||
|
log.trace("Loaded {} catalogue plugins ",availablePlugins.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<String> getAvailableControllers() {
|
||||||
|
return availablePlugins.keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CataloguePlugin getPluginById(String pluginId) throws CataloguePluginNotFound {
|
||||||
|
if(availablePlugins.containsKey(pluginId)) return availablePlugins.get(pluginId);
|
||||||
|
else throw new CataloguePluginNotFound("Catalogue plugin "+pluginId+" not available.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() throws InternalError {
|
||||||
|
log.trace("Static initialization...");
|
||||||
|
for(Entry<String,CataloguePlugin> entry:availablePlugins.entrySet()) {
|
||||||
|
log.debug("Static initialization for : {} ",entry.getKey());
|
||||||
|
try {
|
||||||
|
entry.getValue().init();
|
||||||
|
}catch(Throwable t) {
|
||||||
|
log.error("Unexpected exception while initializing {} ",entry.getKey(),t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initInScope() throws InternalError {
|
||||||
|
log.trace("Initialization under scope {} ",ContextUtils.getCurrentScope());
|
||||||
|
for(Entry<String,CataloguePlugin> entry:availablePlugins.entrySet()) {
|
||||||
|
log.debug("Scope initialization for : {} ",entry.getKey());
|
||||||
|
try {
|
||||||
|
entry.getValue().initInScope();
|
||||||
|
}catch(Throwable t) {
|
||||||
|
log.error("Unexpected exception while initializing {} ",entry.getKey(),t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
package org.gcube.data.publishing.gCatFeeder.service.engine.impl;
|
||||||
|
|
||||||
|
import java.util.ServiceLoader;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.catalogues.CataloguePlugin;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.engine.CollectorsManager;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.CataloguePluginNotFound;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.CollectorNotFound;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.InternalError;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.utils.ContextUtils;
|
||||||
|
import org.gcube.data.publishing.gCatfeeder.collectors.CollectorPlugin;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
public class CollectorsManagerImpl implements CollectorsManager {
|
||||||
|
|
||||||
|
|
||||||
|
private static final Logger log= LoggerFactory.getLogger(CollectorsManagerImpl.class);
|
||||||
|
|
||||||
|
|
||||||
|
private ServiceLoader<CollectorPlugin> collectorPluginsLoader = null;
|
||||||
|
|
||||||
|
private ConcurrentHashMap<String,CollectorPlugin> availablePlugins=null;
|
||||||
|
|
||||||
|
|
||||||
|
public CollectorsManagerImpl() {
|
||||||
|
//load plugins
|
||||||
|
log.debug("Loading collector plugins...");
|
||||||
|
collectorPluginsLoader=ServiceLoader.load(CollectorPlugin.class);
|
||||||
|
for(CollectorPlugin plugin:collectorPluginsLoader) {
|
||||||
|
log.debug("Loading {} ",plugin.getClass());
|
||||||
|
log.debug("Descriptor {} ",plugin.getDescriptor());
|
||||||
|
availablePlugins.put(plugin.getDescriptor().getName(), plugin);
|
||||||
|
}
|
||||||
|
log.trace("Loaded {} collector plugins ",availablePlugins.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<String> getAvailableCollectors() {
|
||||||
|
return availablePlugins.keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CollectorPlugin<?> getPluginById(String collectorId) throws CollectorNotFound {
|
||||||
|
if(availablePlugins.containsKey(collectorId)) return availablePlugins.get(collectorId);
|
||||||
|
else throw new CollectorNotFound("Collector plugin "+collectorId+" not available.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() throws InternalError {
|
||||||
|
log.trace("Static initialization...");
|
||||||
|
for(Entry<String,CollectorPlugin> entry:availablePlugins.entrySet()) {
|
||||||
|
log.debug("Static initialization for : {} ",entry.getKey());
|
||||||
|
try {
|
||||||
|
entry.getValue().init();
|
||||||
|
}catch(Throwable t) {
|
||||||
|
log.error("Unexpected exception while initializing {} ",entry.getKey(),t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initInScope() throws InternalError {
|
||||||
|
log.trace("Initialization under scope {} ",ContextUtils.getCurrentScope());
|
||||||
|
for(Entry<String,CollectorPlugin> entry:availablePlugins.entrySet()) {
|
||||||
|
log.debug("Scope initialization for : {} ",entry.getKey());
|
||||||
|
try {
|
||||||
|
entry.getValue().initInScope();
|
||||||
|
}catch(Throwable t) {
|
||||||
|
log.error("Unexpected exception while initializing {} ",entry.getKey(),t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package org.gcube.data.publishing.gCatFeeder.service.engine.impl;
|
package org.gcube.data.publishing.gCatFeeder.service.engine.impl;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -11,7 +10,9 @@ import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
import org.gcube.data.publishing.gCatFeeder.catalogues.CatalogueController;
|
import org.gcube.data.publishing.gCatFeeder.catalogues.CatalogueController;
|
||||||
import org.gcube.data.publishing.gCatFeeder.catalogues.CataloguePlugin;
|
import org.gcube.data.publishing.gCatFeeder.catalogues.CataloguePlugin;
|
||||||
import org.gcube.data.publishing.gCatFeeder.catalogues.model.PublishReport;
|
import org.gcube.data.publishing.gCatFeeder.catalogues.model.PublishReport;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.CatalogueInteractionException;
|
||||||
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.ControllerInstantiationFault;
|
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.ControllerInstantiationFault;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.PublicationException;
|
||||||
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.WrongObjectFormatException;
|
import org.gcube.data.publishing.gCatFeeder.catalogues.model.faults.WrongObjectFormatException;
|
||||||
import org.gcube.data.publishing.gCatFeeder.model.CatalogueFormatData;
|
import org.gcube.data.publishing.gCatFeeder.model.CatalogueFormatData;
|
||||||
import org.gcube.data.publishing.gCatFeeder.model.CatalogueInstanceDescriptor;
|
import org.gcube.data.publishing.gCatFeeder.model.CatalogueInstanceDescriptor;
|
||||||
|
@ -184,6 +185,10 @@ public class ExecutionTask implements Runnable {
|
||||||
PublishReport itemReport=controller.publishItem(item);
|
PublishReport itemReport=controller.publishItem(item);
|
||||||
}catch(WrongObjectFormatException e) {
|
}catch(WrongObjectFormatException e) {
|
||||||
catalogueReport.getPublishedRecords().add(new PublishReport(false,"Wrong format : "+e.getMessage()));
|
catalogueReport.getPublishedRecords().add(new PublishReport(false,"Wrong format : "+e.getMessage()));
|
||||||
|
} catch (CatalogueInteractionException e) {
|
||||||
|
catalogueReport.getPublishedRecords().add(new PublishReport(false,"Error while communicating with catalogue : "+e.getMessage()));
|
||||||
|
} catch (PublicationException e) {
|
||||||
|
catalogueReport.getPublishedRecords().add(new PublishReport(false,"Publication error : "+e.getMessage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package org.gcube.data.publishing.gCatFeeder.service.model;
|
||||||
|
|
||||||
|
public class CapabilitiesBean {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package org.gcube.data.publishing.gCatFeeder.service.rest;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.WebApplicationException;
|
||||||
|
import javax.ws.rs.core.GenericEntity;
|
||||||
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.catalogues.model.CataloguePluginDescriptor;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.GCatFeederManager;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.ServiceConstants;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.engine.CatalogueControllersManager;
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.engine.CollectorsManager;
|
||||||
|
import org.gcube.data.publishing.gCatfeeder.collectors.model.PluginDescriptor;
|
||||||
|
import org.gcube.smartgears.annotations.ManagedBy;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ManagedBy(GCatFeederManager.class)
|
||||||
|
@Path(ServiceConstants.Executions.PATH)
|
||||||
|
public class Capabilities {
|
||||||
|
|
||||||
|
private static final Logger log= LoggerFactory.getLogger(Capabilities.class);
|
||||||
|
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private CatalogueControllersManager catalogues;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private CollectorsManager collectors;
|
||||||
|
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Path(ServiceConstants.Capabilities.COLLECTORS_PATH)
|
||||||
|
public Response getCollectorCapabilities() {
|
||||||
|
try {
|
||||||
|
ArrayList<PluginDescriptor> toReturn=new ArrayList<>();
|
||||||
|
for(String s:collectors.getAvailableCollectors()) {
|
||||||
|
toReturn.add(collectors.getPluginById(s).getDescriptor());
|
||||||
|
}
|
||||||
|
GenericEntity<Collection<PluginDescriptor>> entity=new GenericEntity<Collection<PluginDescriptor>>(toReturn) {};
|
||||||
|
return Response.ok(entity).build();
|
||||||
|
}catch(Throwable t) {
|
||||||
|
log.warn("Unexpected Exception ",t);
|
||||||
|
throw new WebApplicationException("Unexpected Exception.", t,Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Path(ServiceConstants.Capabilities.CATALOGUES_PATH)
|
||||||
|
public Response getCataloguesCapabilities() {
|
||||||
|
try {
|
||||||
|
ArrayList<CataloguePluginDescriptor> toReturn=new ArrayList<>();
|
||||||
|
for(String s:catalogues.getAvailableControllers()) {
|
||||||
|
toReturn.add(catalogues.getPluginById(s).getDescriptor());
|
||||||
|
}
|
||||||
|
GenericEntity<Collection<CataloguePluginDescriptor>> entity=new GenericEntity<Collection<CataloguePluginDescriptor>>(toReturn) {};
|
||||||
|
return Response.ok(entity).build();
|
||||||
|
}catch(Throwable t) {
|
||||||
|
log.warn("Unexpected Exception ",t);
|
||||||
|
throw new WebApplicationException("Unexpected Exception.", t,Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,6 +13,7 @@ import javax.ws.rs.core.GenericEntity;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
|
import org.gcube.data.publishing.gCatFeeder.service.GCatFeederManager;
|
||||||
import org.gcube.data.publishing.gCatFeeder.service.ServiceConstants;
|
import org.gcube.data.publishing.gCatFeeder.service.ServiceConstants;
|
||||||
import org.gcube.data.publishing.gCatFeeder.service.engine.FeederEngine;
|
import org.gcube.data.publishing.gCatFeeder.service.engine.FeederEngine;
|
||||||
import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionDescriptor;
|
import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionDescriptor;
|
||||||
|
@ -21,9 +22,11 @@ import org.gcube.data.publishing.gCatFeeder.service.model.ExecutionRequest;
|
||||||
import org.gcube.data.publishing.gCatFeeder.service.model.fault.ElementNotFound;
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.ElementNotFound;
|
||||||
import org.gcube.data.publishing.gCatFeeder.service.model.fault.InvalidRequest;
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.InvalidRequest;
|
||||||
import org.gcube.data.publishing.gCatFeeder.service.model.fault.PersistenceError;
|
import org.gcube.data.publishing.gCatFeeder.service.model.fault.PersistenceError;
|
||||||
|
import org.gcube.smartgears.annotations.ManagedBy;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ManagedBy(GCatFeederManager.class)
|
||||||
@Path(ServiceConstants.Executions.PATH)
|
@Path(ServiceConstants.Executions.PATH)
|
||||||
public class Executions {
|
public class Executions {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue