ref #10586: Enable SDMX export operation for DataSet only for the tables already shared with the whole VRE

https://support.d4science.org/issues/10586

Added share



git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-gwt-service@160454 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2017-12-13 16:47:28 +00:00
parent 4ee0743fac
commit 4067beae1b
4 changed files with 61 additions and 5 deletions

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/tabular-data-gwt-service-2.18.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<classpathentry kind="src" output="target/tabular-data-gwt-service-2.19.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/tabular-data-gwt-service-2.18.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<classpathentry excluding="**" kind="src" output="target/tabular-data-gwt-service-2.19.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
@ -33,5 +33,5 @@
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/tabular-data-gwt-service-2.18.0-SNAPSHOT/WEB-INF/classes"/>
<classpathentry kind="output" path="target/tabular-data-gwt-service-2.19.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

View File

@ -1,7 +1,13 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-user.tabular-data-gwt-service.2-19-0"
date="2017-12-13">
<Change>Enable SDMX export operation for DataSet only for the tables
already shared with the whole VRE [ticket #10586]</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.tabular-data-gwt-service.2-18-0"
date="2017-07-01">
<Change>Added excel parameter for Template export [ticket #8781]</Change>
<Change>Added excel parameter for Template export [ticket #8781]
</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.tabular-data-gwt-service.2-17-0"
date="2017-06-12">

View File

@ -14,7 +14,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>tabular-data-gwt-service</artifactId>
<version>2.18.0-SNAPSHOT</version>
<version>2.19.0-SNAPSHOT</version>
<name>tabular-data-gwt-service</name>
<description>tabular-data-gwt-service allows communication between the GUI and services</description>

View File

@ -4435,6 +4435,8 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements TDGWTServi
director.setOperationExecutionBuilder(opExC);
break;
case DATASET:
shareDatasetWithVRE(httpRequest, serviceCredentials, service, exportSession);
OpExecution4SDMXDatasetExport opExD = new OpExecution4SDMXDatasetExport(httpRequest, serviceCredentials,
service, exportSession);
director.setOperationExecutionBuilder(opExD);
@ -4474,6 +4476,54 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements TDGWTServi
}
private void shareDatasetWithVRE(HttpServletRequest httpRequest, ServiceCredentials serviceCredentials,
TabularDataService service, SDMXExportSession exportSession) throws TDGWTServiceException {
try {
TabularResourceId tabularResourceId = new TabularResourceId(
Long.valueOf(exportSession.getTabResource().getTrId().getId()));
TabularResource tr = service.getTabularResource(tabularResourceId);
ArrayList<Contacts> contacts = retrieveShareInfo(tr);
boolean shared = false;
for (Contacts contact : contacts) {
if (contact.isGroup() && (contact.getId().compareTo(serviceCredentials.getScope()) == 0
|| contact.getLogin().compareTo(serviceCredentials.getScope()) == 0)) {
shared = true;
}
}
if (!shared) {
Contacts vreContact = new Contacts(serviceCredentials.getScope(), serviceCredentials.getScope(), true);
contacts.add(vreContact);
List<SharingEntity> users = new ArrayList<>();
for (Contacts cont : contacts) {
SharingEntity sharingEntity;
if (cont.isGroup()) {
sharingEntity = SharingEntity.group(cont.getLogin());
} else {
sharingEntity = SharingEntity.user(cont.getLogin());
}
users.add(sharingEntity);
}
SharingEntity[] usersArray = users.toArray(new SharingEntity[0]);
logger.debug("Share with Users: " + users);
service.share(tabularResourceId, usersArray);
}
} catch (TDGWTServiceException e) {
throw e;
} catch (SecurityException e) {
e.printStackTrace();
ResourceBundle messages = getResourceBundle(httpRequest);
throw new TDGWTServiceException(messages.getString(TDGWTServiceMessagesConstants.securityExceptionRights));
} catch (Throwable e) {
e.printStackTrace();
throw new TDGWTServiceException("Error sharing tabular resource with VRE on service!");
}
}
@Override
public String startSDMXTemplateExport(SDMXTemplateExportSession sdmxTemplateExportSession)
throws TDGWTServiceException {