diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 0190c48..5dbcbf7 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -5,6 +5,9 @@
+
+ uses
+
diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanMetadataPublisher.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanMetadataPublisher.java
index 5ad60b0..2af2234 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanMetadataPublisher.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanMetadataPublisher.java
@@ -23,7 +23,7 @@ public class CKanMetadataPublisher implements EntryPoint {
private void startExample() {
String idFolderWorkspace = "d3a37eb9-1589-4c95-a9d0-c473a02d4f0f";
- String owner = "costantino_perciante";
+ String owner = "costantino.perciante";
RootPanel.get("ckan-metadata-publisher-div").add(new CreateDatasetForm(owner));
}
diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java
index 2b76eda..494ea65 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java
@@ -738,6 +738,10 @@ public class CreateDatasetForm extends Composite{
if(checkSelectedMetaDataProfile()){
errorMessage = "You must select a metadata profile different frome none";
}
+
+ if(organizationsListbox.getSelectedItemText() == null){
+ errorMessage = "You must select an organization in which you want to publish";
+ }
return errorMessage;
}
diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java
index f8d6e20..5413380 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java
@@ -178,7 +178,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
* Retrieve the list of metadata beans
* @return
*/
- public List getMetadataProfilesList() {
+ private List getMetadataProfilesList() {
List beans = new ArrayList();
@@ -277,12 +277,11 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
bean.setAuthorEmail(userOwner.getEmail());
bean.setMaintainer(userOwner.getFullname());
bean.setMaintainerEmail(userOwner.getEmail());
- bean.setOrganizationList(getUserOrganizationsList(owner));
+ bean.setOrganizationList(getUserOrganizationsList(fromOwnerToCKanOwner(owner)));
// if the request comes from the workspace
if(folderId != null && !folderId.isEmpty()){
-
Workspace ws = HomeLibrary
.getHomeManagerFactory()
.getHomeManager()
@@ -330,7 +329,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
bean.setAuthorEmail("costantino.perciante@isti.cnr.it");
bean.setMaintainer("Costantino Perciante");
bean.setMaintainerEmail("costantino.perciante@isti.cnr.it");
- bean.setOrganizationList(getUserOrganizationsList(owner));
+ bean.setOrganizationList(getUserOrganizationsList(fromOwnerToCKanOwner(owner)));
bean.setOwnerIdentifier(owner);
if(folderId != null && !folderId.isEmpty()){
@@ -402,11 +401,11 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
// retrieve ckan's catalog url
String ckanPortalUrl = getCatalogueUrl();
- // retrieve the owner identifier
+ // retrieve the owner identifier (i.e. costantino.perciante)
String owner = toCreate.getOwnerIdentifier();
// retrieve the api key for this user
- String apiKey = getCKANApikeyFromUser(owner);
+ String apiKey = getCKANApikeyFromUser(fromOwnerToCKanOwner(owner));
logger.info("Trying to create the dataset described by this bean " + toCreate + " into CKAN catalog at url " + ckanPortalUrl);
@@ -499,7 +498,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
newResource.setUrl(item.getPublicLink(false));
newResource.setName(item.getName());
newResource.setMimetype(item.getMimeType());
-
+ newResource.setOwner(fromOwnerToCKanOwner(owner));
resources.add(newResource);
}
@@ -521,7 +520,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
// add source and id to the incoming bean
toCreate.setId(res.getId());
toCreate.setSource(getCatalogueUrl() + "/dataset/" + res.getName());
-
+
// set visibility
setVisibility(toCreate, orgOwner.getId());
@@ -542,7 +541,16 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
return toCreate;
}
-
+
+ /**
+ * Ckan username has _ instead of . (that is, costantino_perciante)
+ * @param owner
+ * @return
+ */
+ private String fromOwnerToCKanOwner(String owner){
+ return owner.replaceAll("\\.", "_");
+ }
+
/**
* Set the dataset visibility.
* @param created
@@ -550,14 +558,16 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
* @throws Exception
*/
private void setVisibility(DatasetMetadataBean created, String orgOwnerId) throws Exception{
-
+
logger.debug("Setting visibility of the dataset");
// set its visibility (true means public, false means private)
boolean mustbePrivate = !created.getVisibility();
String currentScope = getCurrentScope();
+
CKanUtilsFactory.getInstance().
- getCkanUtilsForScope(currentScope).setDatasetPrivate(mustbePrivate, orgOwnerId, created.getId(), created.getOwnerIdentifier());
-
+ getCkanUtilsForScope(currentScope).
+ setDatasetPrivate(mustbePrivate, orgOwnerId, created.getId(), fromOwnerToCKanOwner(created.getOwnerIdentifier()));
+
}
/**
@@ -608,7 +618,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
String ckanPortalUrl = getCatalogueUrl();
// retrieve the api key for this user
- String apiKey = getCKANApikeyFromUser(owner);
+ String apiKey = getCKANApikeyFromUser(fromOwnerToCKanOwner(owner));
CkanResource resource = new CkanResource(ckanPortalUrl, datasetId);
resource.setName(resourceBean.getName());
@@ -620,7 +630,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
resource.setDescription(htmlRend.toString());
resource.setUrl(resourceBean.getUrl());
- resource.setOwner(owner);
+ resource.setOwner(fromOwnerToCKanOwner(owner));
// Checked client
CheckedCkanClient client = new CheckedCkanClient(ckanPortalUrl, apiKey);
@@ -657,7 +667,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
String ckanPortalUrl = getCatalogueUrl();
// retrieve the api key for this user
- String apiKey = getCKANApikeyFromUser(owner);
+ String apiKey = getCKANApikeyFromUser(fromOwnerToCKanOwner(owner));
// Checked client
CheckedCkanClient client = new CheckedCkanClient(ckanPortalUrl, apiKey);