From 755191ad50b8778bb2b283fb340614863c2c9f8c Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Tue, 25 Apr 2017 16:11:13 +0000 Subject: [PATCH] added code to retrieve the tag or group value from a field if it has to be used that way as well git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/widgets/ckan-metadata-publisher-widget@147133 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/ui/form/CreateDatasetForm.java | 47 +++++++++++-------- .../ui/metadata/MetaDataFieldSkeleton.java | 34 +++++++++++++- .../server/CKANPublisherServicesImpl.java | 5 +- .../shared/metadata/FieldAsTag.java | 4 -- 4 files changed, 64 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java index fe3ca69..7d235d6 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java @@ -2,10 +2,12 @@ package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherService; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanPublisherServiceAsync; @@ -858,9 +860,7 @@ public class CreateDatasetForm extends Composite{ String errorMessage = areProfileDataValid(); if(errorMessage != null){ - alertOnCreate("Please check the inserted values and the mandatory fields [" + errorMessage +"]", AlertType.ERROR, true); - } else{ @@ -874,6 +874,7 @@ public class CreateDatasetForm extends Composite{ String maintainer = maintainerTextbox.getValue().trim(); String maintainerEmail = maintainerEmailTextbox.getValue().trim(); String chosenOrganizationTitle = organizationsListbox.getSelectedItemText(); + Set tags = new HashSet(tagsPanel.getTags()); //we need to retrieve the organization's name from this title List orgs = receivedBean.getOrganizationList(); @@ -897,22 +898,6 @@ public class CreateDatasetForm extends Composite{ } } - // fill the bean - receivedBean.setAuthorFullName(author); - receivedBean.setAuthorEmail(authorEmail); - receivedBean.setDescription(description); - receivedBean.setLicense(selectedLicense); - receivedBean.setMaintainer(maintainer); - receivedBean.setMaintainerEmail(maintainerEmail); - receivedBean.setVersion(version); - receivedBean.setVisibile(visibility.equals("Public")); - receivedBean.setTitle(title); - receivedBean.setTags(tagsPanel.getTags()); - receivedBean.setSelectedOrganization(chosenOrganization); - receivedBean.setGroups(groups); - if(resourcesTwinPanel != null) - receivedBean.setResourceRoot(resourcesTwinPanel.getResourcesToPublish()); - Map> customFieldsMap = new HashMap>(); // prepare custom fields @@ -929,8 +914,17 @@ public class CreateDatasetForm extends Composite{ valuesForThisField = new ArrayList(); valuesForThisField.add(value); - customFieldsMap.put(key, valuesForThisField); + + // get also tag/group if it is the case for this field + String tag = field.getTagFromThisField(); + if(tag != null) + tags.add(tag); + + String groupTitle = field.getGroupTitleFromThisGroup(); + if(groupTitle != null) + groups.add(new OrganizationBean(groupTitle, groupTitle, false)); + } } @@ -954,6 +948,21 @@ public class CreateDatasetForm extends Composite{ } + // fill the bean + receivedBean.setAuthorFullName(author); + receivedBean.setAuthorEmail(authorEmail); + receivedBean.setDescription(description); + receivedBean.setLicense(selectedLicense); + receivedBean.setMaintainer(maintainer); + receivedBean.setMaintainerEmail(maintainerEmail); + receivedBean.setVersion(version); + receivedBean.setVisibile(visibility.equals("Public")); + receivedBean.setTitle(title); + receivedBean.setTags(new ArrayList(tags)); + receivedBean.setSelectedOrganization(chosenOrganization); + receivedBean.setGroups(groups); + if(resourcesTwinPanel != null) + receivedBean.setResourceRoot(resourcesTwinPanel.getResourcesToPublish()); receivedBean.setCustomFields(customFieldsMap); // alert diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/metadata/MetaDataFieldSkeleton.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/metadata/MetaDataFieldSkeleton.java index be73c00..b3d3688 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/metadata/MetaDataFieldSkeleton.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/metadata/MetaDataFieldSkeleton.java @@ -7,7 +7,10 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.CloseCre import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.CloseCreationFormEventHandler; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.timeandreanges.DataTimeBox; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.utils.GcubeDialogExtended; +import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.metadata.FieldAsGroup; +import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.metadata.FieldAsTag; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.metadata.MetadataFieldWrapper; +import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.metadata.TaggingGroupingValue; import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.CheckBox; @@ -92,7 +95,7 @@ public class MetaDataFieldSkeleton extends Composite{ private static final String UPPER_RANGE_NOT_SPECIFIED = "Not specified"; // time range separator public static final String RANGE_SEPARATOR = ","; - private static final String TOOLTIP_MULTISELECTION = "Hold down the Control (CTRL) or Command button to select multiple options"; + private static final String TOOLTIP_MULTISELECTION = "Hold down the Control (CTRL) or Command (CMD) button to select multiple options"; public MetaDataFieldSkeleton(final MetadataFieldWrapper field, HandlerManager eventBus) throws Exception{ initWidget(uiBinder.createAndBindUi(this)); @@ -595,6 +598,8 @@ public class MetaDataFieldSkeleton extends Composite{ */ public String getFieldName(){ + if(field.getFieldNameFromCategory() != null) + return field.getFieldNameFromCategory(); return field.getFieldName(); } @@ -695,4 +700,31 @@ public class MetaDataFieldSkeleton extends Composite{ } } + /** + * Given the name and the value of this field, return a tag if it is the case. + * @return a tag as string + */ + public String getTagFromThisField(){ + + FieldAsTag asTag = field.getAsTag(); + if(asTag != null){ + return TaggingGroupingValue.getComposedValue(field.getFieldName(), getFieldCurrentValue(), asTag.getSeparator(), asTag.getTaggingValue()); + } + + return null; + } + + /** + * Given the name and the value of this field, return a group title if it is the case. + * @return a tag as string + */ + public String getGroupTitleFromThisGroup(){ + + FieldAsGroup asGroup = field.getAsGroup(); + if(asGroup != null){ + return TaggingGroupingValue.getComposedValue(field.getFieldName(), getFieldCurrentValue(), " ", asGroup.getGroupingValue()); + } + return null; + } + } \ No newline at end of file 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 0328910..142ddcd 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 @@ -64,6 +64,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C private static final Log logger = LogFactoryUtil.getLog(CKANPublisherServicesImpl.class); private static final String ITEM_URL_FIELD = "Item URL"; private static final String SYS_TYPE = "system:type"; + private static final String TAGS_VOCABULARY_KEY = "TAGS_VOCABULARY"; // map private ConcurrentHashMap mapOrganizationScope = new ConcurrentHashMap(); @@ -261,7 +262,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C private List discoverTagsVocabulary(String context) { logger.debug("Looking for vocabulary of tags in this context " + context); - String keyPerVocabulary = UtilMethods.concatenateSessionKeyScope("TAGS_VOCABULARY", context); // TODO REMOVE + String keyPerVocabulary = UtilMethods.concatenateSessionKeyScope(TAGS_VOCABULARY_KEY, context); List vocabulary = (List) getThreadLocalRequest().getSession().getAttribute(keyPerVocabulary); if(vocabulary == null){ @@ -283,7 +284,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C public DatasetBean createCKanDataset(DatasetBean toCreate) throws Exception{ try{ - logger.debug("Request for creating a dataset with these information " + toCreate); + logger.info("Request for creating a dataset with these information " + toCreate); String userName = GenericUtils.getCurrentUser(getThreadLocalRequest()).getUsername(); String title = toCreate.getTitle(); String organizationNameOrId = toCreate.getSelectedOrganization(); diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/shared/metadata/FieldAsTag.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/shared/metadata/FieldAsTag.java index 3584f61..4f84359 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/shared/metadata/FieldAsTag.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/shared/metadata/FieldAsTag.java @@ -51,10 +51,6 @@ public class FieldAsTag implements Serializable{ this.taggingValue = taggingValue; } - public static long getSerialversionuid() { - return serialVersionUID; - } - @Override public String toString() { return "FieldAsTag [create=" + create + ", separator=" + separator