Data Catalogue Publishing widget: filter the VREs for the working gateway

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/widgets/ckan-metadata-publisher-widget@179794 82a268e6-3cf1-43bd-a215-b396298e98cf
migrate-to-catalogue-util-library_#19764
Francesco Mangiacrapa 5 years ago
parent 5182d0af63
commit f53c8d0c3b

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry including="**/*.java" kind="src" output="target/classes" path="src/main/java">
<classpathentry including="**/*.java" kind="src" output="target/ckan-metadata-publisher-widget-1.6.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
@ -18,7 +18,7 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<classpathentry excluding="**" kind="src" output="target/ckan-metadata-publisher-widget-1.6.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
@ -34,5 +34,5 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="output" path="target/ckan-metadata-publisher-widget-1.6.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

@ -2,7 +2,11 @@
<Changeset
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-6-0"
date="${buildDate}">
<Change>[Feature #11331] Field repeatability: support for catalogue widget
<Change>[Feature #11331] Field repeatability: support for catalogue
widget
</Change>
<Change>[Task #12480] Data Catalogue Publishing widget: filter the VREs for the working gateway
widget
</Change>
</Changeset>
<Changeset
@ -15,13 +19,15 @@
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-4-1"
date="2018-11-20">
<Change>[Bug #12914] The form to add/choice the resources to
publishing remains frozen</Change>
publishing remains frozen
</Change>
</Changeset>
<Changeset
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-4-0"
date="2018-09-28">
<Change>[Incident #12563] Error when trying to publish the content of
a workspace folder into the catalogue</Change>
a workspace folder into the catalogue
</Change>
</Changeset>
<Changeset
component="org.gcube.portlets-widgets.ckan-metadata-publisher-widget.1-3-3"

@ -27,7 +27,7 @@
<properties>
<!-- Convenience property to set the GWT version -->
<gwtVersion>2.7.0</gwtVersion>
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<!-- <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory> -->
<distroDirectory>distro</distroDirectory>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

@ -8,6 +8,7 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.metadata.Metada
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.Label;
import com.github.gwtbootstrap.client.ui.constants.LabelType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@ -95,8 +96,10 @@ public class MetaDataField extends Composite {
//The field is repeatable
if(field.getMaxOccurs()>1) {
repeatabilityLabel.setVisible(true);
repeatabilityLabel.setType(LabelType.INFO);
addFieldButton.setTitle("Add another "+field.getFieldName());
removeFieldButton.setTitle("Remove latest "+field.getFieldName());
// String maxTxt = field.getMaxOccurs()==Integer.MAX_VALUE?"":"(max occurs declared are "+field.getMaxOccurs()+" times)";
repeatabilityLabel.setText("Repeat "+field.getFieldName());
}
}

@ -3,8 +3,8 @@
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
<ui:style>
.important {
font-weight: bold;
.margin-left-max-occurrs {
padding-left: 28px;
}
</ui:style>
<g:HTMLPanel>
@ -12,8 +12,8 @@
ui:field="panelMetaDataFieldsSkeleton" width="100%">
</g:VerticalPanel>
<b:ControlGroup>
<b:Controls>
<b:Label ui:field="repeatabilityLabel" visible="false">Repeatability</b:Label>
<b:Controls addStyleNames="{style.margin-left-max-occurrs}">
<b:Label ui:field="repeatabilityLabel" visible="false">Repeatable field</b:Label>
<b:Button icon="MINUS_SIGN" title="Remove Latest Field"
ui:field="removeFieldButton" visible="false"></b:Button>
<b:Button icon="PLUS_SIGN" title="Add Another Field"

@ -108,7 +108,9 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
logger.info("List of organizations was into session " + orgsName);
}
else{
CatalogueRoleManager.getHighestRole(scope, username, GenericUtils.getGroupFromScope(scope).getGroupName(), this, orgsName);
String gatewayURL = GenericUtils.getCurrentClientUrl(getThreadLocalRequest());
logger.info("The Gateway URL is: "+gatewayURL);
CatalogueRoleManager.getHighestRole(scope, username, GenericUtils.getGroupFromScope(scope).getGroupName(), this, orgsName, gatewayURL);
httpSession.setAttribute(keyPerScope, orgsName);
logger.info("Organizations name for user " + username + " has been saved into session " + orgsName);
}
@ -621,7 +623,9 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
// we build up also a list that keeps track of the scopes (orgs) in which the user has role ADMIN/EDITOR
List<OrganizationBean> orgsInWhichAtLeastEditorRole = new ArrayList<OrganizationBean>();
role = CatalogueRoleManager.getHighestRole(scopePerCurrentUrl, username, groupName, this, orgsInWhichAtLeastEditorRole);
String gatewayURL = GenericUtils.getCurrentClientUrl(getThreadLocalRequest());
logger.info("The Gateway URL is: "+gatewayURL);
role = CatalogueRoleManager.getHighestRole(scopePerCurrentUrl, username, groupName, this, orgsInWhichAtLeastEditorRole, gatewayURL);
// if he is an admin/editor preload:
// 1) organizations in which he can publish (the widget will find these info in session)

@ -1,6 +1,7 @@
package org.gcube.portlets.widgets.ckandatapublisherwidget.server.utils;
import java.util.List;
import java.util.Set;
import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogue;
import org.gcube.datacatalogue.ckanutillibrary.shared.RolesCkanGroupOrOrg;
@ -39,7 +40,7 @@ public class CatalogueRoleManager {
* @param orgsInWhichAtLeastEditorRole
* @return the highest among the roles
*/
public static RolesCkanGroupOrOrg getHighestRole(String currentScope, String username, String groupName, CKANPublisherServicesImpl gcubeCkanDataCatalogServiceImpl, List<OrganizationBean> orgsInWhichAtLeastEditorRole){
public static RolesCkanGroupOrOrg getHighestRole(String currentScope, String username, String groupName, CKANPublisherServicesImpl gcubeCkanDataCatalogServiceImpl, List<OrganizationBean> orgsInWhichAtLeastEditorRole, String gatewayHostname){
// base role as default value
RolesCkanGroupOrOrg toReturn = RolesCkanGroupOrOrg.MEMBER;
@ -59,7 +60,14 @@ public class CatalogueRoleManager {
logger.debug("Group id is " + currentGroupId + " and scope is " + currentScope);
// retrieve the flat list of organizations for the current user
List<GCubeGroup> groups = groupManager.listGroupsByUser(userid);
//List<GCubeGroup> groups = groupManager.listGroupsByUser(userid);
// retrieve the list of organizations for the current user filtered for gateway
Set<GCubeGroup> groups = groupManager.listGroupsByUserAndSite(userid, gatewayHostname);
for (GCubeGroup gCubeGroup : groups) {
logger.info("Found group filter per "+gatewayHostname+": "+gCubeGroup.toString());
}
// root (so check into the root, the VOs and the VRES)
if(groupManager.isRootVO(currentGroupId)){

Loading…
Cancel
Save