diff --git a/.classpath b/.classpath
index 20a0e51..ae7be10 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -34,5 +34,5 @@
-
+
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 8d83340..d53adc9 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,17 +1,14 @@
-
+
-
+
uses
-
- uses
-
-
+
uses
diff --git a/distro/changelog.xml b/distro/changelog.xml
index e8b8e26..cc0f229 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -1,4 +1,9 @@
+
+ Task #13106: Provide public links for versioned files
+
+
Task #12604: Migrate Move operation to StorageHub
diff --git a/pom.xml b/pom.xml
index 49311c7..d9263b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
org.gcube.portlets.user
workspace
war
- 6.20.0-SNAPSHOT
+ 6.21.0-SNAPSHOT
gCube Workspace Portlet
gCube Workspace Portlet is a web-gui to manage the gCube workspace a collaborative area where users can exchange and organize information objects (workspace items) according to their specific needs.
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java
index 746b0c2..9e01872 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppController.java
@@ -237,7 +237,6 @@ public class AppController implements SubscriberInterface {
@Override
public void onFileVersioning(FileVersioningEvent fileVersioningEvent) {
- ConstantsExplorer.log("quiqui");
performVersioningOperation(fileVersioningEvent);
}
});
@@ -334,7 +333,7 @@ public class AppController implements SubscriberInterface {
public void onGetPublicLink(GetPublicLinkEvent getPublicLinkEvent) {
// TODO Auto-generated method stub
if(getPublicLinkEvent.getSourceFile()!=null){
- AppControllerExplorer.getEventBus().fireEvent(new GetPublicLinkEvent(getPublicLinkEvent.getSourceFile()));
+ AppControllerExplorer.getEventBus().fireEvent(new GetPublicLinkEvent(getPublicLinkEvent.getSourceFile(), getPublicLinkEvent.getVersion()));
}
}
});
@@ -2047,10 +2046,10 @@ public class AppController implements SubscriberInterface {
private void performVersioningOperation(final FileVersioningEvent fileVersioningEvent){
FileModel currentVersion = fileVersioningEvent.getCurrentVersion();
- List olderVersions = fileVersioningEvent.getOlderVersion();
+ List selectedVersions = fileVersioningEvent.getSelectedVersions();
GWT.log("current version: "+currentVersion);
- GWT.log("olderVersions: "+olderVersions);
+ GWT.log("selected versions: "+selectedVersions);
//INVOKING FROM TOOLBAR??
if(currentVersion==null) {
currentVersion = getGridSelectedItem();
@@ -2079,7 +2078,7 @@ public class AppController implements SubscriberInterface {
break;
}
case DOWNLOAD:{
- for (FileVersionModel fileVersionModel : olderVersions) {
+ for (FileVersionModel fileVersionModel : selectedVersions) {
//I'm passing the versionName as versionID
AppControllerExplorer.getEventBus().fireEvent(new FileDownloadEvent(currentVersion.getIdentifier(), currentVersion.getName(), DownloadType.DOWNLOAD, false, fileVersionModel.getName()));
}
@@ -2090,8 +2089,8 @@ public class AppController implements SubscriberInterface {
case DELETE_PERMANENTLY: {
fileVersioningEvent.getWinVersioning().mask("performing operation...");
- List olderVsIds = new ArrayList(olderVersions.size());
- for (FileVersionModel fileVersionModel : olderVersions) {
+ List olderVsIds = new ArrayList(selectedVersions.size());
+ for (FileVersionModel fileVersionModel : selectedVersions) {
olderVsIds.add(fileVersionModel.getIdentifier());
}
@@ -2138,8 +2137,8 @@ public class AppController implements SubscriberInterface {
case DELETE_ALL_OLDER_VERSIONS: {
fileVersioningEvent.getWinVersioning().mask("performing operation...");
- List olderVsIds = new ArrayList(olderVersions.size());
- for (FileVersionModel fileVersionModel : olderVersions) {
+ List olderVsIds = new ArrayList(fileVersioningEvent.getOlderVersions().size());
+ for (FileVersionModel fileVersionModel : fileVersioningEvent.getOlderVersions()) {
olderVsIds.add(fileVersionModel.getIdentifier());
}
@@ -2162,33 +2161,15 @@ public class AppController implements SubscriberInterface {
});
break;
}
-// case RESTORE:{
-//
-// fileVersioningEvent.getWinVersioning().mask("performing operation...");
-// List olderVsIds = new ArrayList(olderVersions.size());
-// for (FileVersionModel fileVersionModel : olderVersions) {
-// olderVsIds.add(fileVersionModel.getIdentifier());
-// }
-//
-// AppControllerExplorer.rpcWorkspaceService.performOperationOnVersionedFile(currentVersion.getIdentifier(), olderVsIds, WorkspaceVersioningOperation.RESTORE, new AsyncCallback>() {
-//
-// @Override
-// public void onFailure(Throwable caught) {
-// fileVersioningEvent.getWinVersioning().unmask();
-// new MessageBoxAlert("Error", caught.getMessage(), null);
-//
-// }
-//
-// @Override
-// public void onSuccess(List result) {
-// fileVersioningEvent.getWinVersioning().unmask();
-// fileVersioningEvent.getWinVersioning().updateVersioningContainer(result);
-// fileVersioningEvent.getWinVersioning().updateItemsNumber(result.size());
-//
-// }
-// });
-// break;
-// }
+
+ case PUBLIC_LINK:{
+
+ fileVersioningEvent.getWinVersioning().mask("performing operation...");
+ FileVersionModel version = fileVersioningEvent.getSelectedVersions().get(0);
+ AppControllerExplorer.getEventBus().fireEvent(new GetPublicLinkEvent(currentVersion, version.getName()));
+ fileVersioningEvent.getWinVersioning().unmask();
+ break;
+ }
}
@@ -2376,7 +2357,7 @@ public class AppController implements SubscriberInterface {
@Override
public void versioningHistory(FileModel file) {
- AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.SHOW, file, null, null));
+ AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.SHOW, file, null, null, null));
}
}
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/gridevent/FileVersioningEvent.java b/src/main/java/org/gcube/portlets/user/workspace/client/gridevent/FileVersioningEvent.java
index 434bb41..e5bdf21 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/gridevent/FileVersioningEvent.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/gridevent/FileVersioningEvent.java
@@ -26,21 +26,25 @@ public class FileVersioningEvent extends GwtEvent im
public static Type TYPE = new Type();
private WorkspaceVersioningOperation workspaceVersioningOperation;
private FileModel currentVersion;
- private List olderVersion;
+ private List olderVersions;
private WindowVersioning winVersioning;
+ private List selectedVersions;
+
/**
* Instantiates a new file versioning event.
*
* @param workspaceVersioningOperation the workspace versioning operation
* @param currentVersion the current version
- * @param olderVersion the older version
+ * @param selectedVersions the selected versions
+ * @param olderVersions the older versions
* @param winVersioning the win versioning
*/
- public FileVersioningEvent(WorkspaceVersioningOperation workspaceVersioningOperation, FileModel currentVersion, List olderVersion, WindowVersioning winVersioning) {
+ public FileVersioningEvent(WorkspaceVersioningOperation workspaceVersioningOperation, FileModel currentVersion, List selectedVersions, List olderVersions, WindowVersioning winVersioning) {
this.workspaceVersioningOperation = workspaceVersioningOperation;
this.currentVersion = currentVersion;
- this.olderVersion = olderVersion;
+ this.selectedVersions = selectedVersions;
+ this.olderVersions = olderVersions;
this.winVersioning = winVersioning;
}
@@ -79,17 +83,16 @@ public class FileVersioningEvent extends GwtEvent im
/**
- * Gets the older version.
+ * Gets the older versions.
*
- * @return the olderVersion
+ * @return the older versions
*/
- public List getOlderVersion() {
+ public List getOlderVersions() {
- return olderVersion;
+ return olderVersions;
}
-
/**
* Sets the workspace versioning operation.
*
@@ -102,13 +105,13 @@ public class FileVersioningEvent extends GwtEvent im
/**
- * Sets the older version.
+ * Sets the older versions.
*
- * @param olderVersion the olderVersion to set
+ * @param olderVersions the new older versions
*/
- public void setOlderVersion(List olderVersion) {
+ public void setOlderVersions(List olderVersions) {
- this.olderVersion = olderVersion;
+ this.olderVersions = olderVersions;
}
@@ -138,6 +141,27 @@ public class FileVersioningEvent extends GwtEvent im
}
+ /**
+ * Gets the selected versions.
+ *
+ * @return the selectedVersions
+ */
+ public List getSelectedVersions() {
+
+ return selectedVersions;
+ }
+
+ /**
+ * Sets the selected versions.
+ *
+ * @param selectedVersions the selectedVersions to set
+ */
+ public void setSelectedVersions(List selectedVersions) {
+
+ this.selectedVersions = selectedVersions;
+ }
+
+
/**
* Sets the versioning operation.
*
@@ -169,13 +193,16 @@ public class FileVersioningEvent extends GwtEvent im
builder.append(workspaceVersioningOperation);
builder.append(", currentVersion=");
builder.append(currentVersion);
- builder.append(", olderVersion=");
- builder.append(olderVersion);
+ builder.append(", olderVersions=");
+ builder.append(olderVersions);
builder.append(", winVersioning=");
builder.append(winVersioning);
+ builder.append(", selectedVersions=");
+ builder.append(selectedVersions);
builder.append("]");
return builder.toString();
}
+
}
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java
index 7b118e7..55d57f9 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtBottomToolBarItem.java
@@ -151,7 +151,7 @@ public class GxtBottomToolBarItem extends ToolBar{
@Override
public void componentSelected(ButtonEvent ce) {
- AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.SHOW, null, null, null));
+ AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.SHOW, null, null, null, null));
}
});
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java
index d2209e7..e403496 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/toolbars/GxtToolBarItemFunctionality.java
@@ -365,7 +365,7 @@ public class GxtToolBarItemFunctionality {
final FileGridModel fileGridModel = gridGroupViewContainer.getSelectedItem();
- AppController.getEventBus().fireEvent(new GetPublicLinkEvent(fileGridModel));
+ AppController.getEventBus().fireEvent(new GetPublicLinkEvent(fileGridModel, null));
}
});
diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java
index 693fea9..b075720 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/versioning/VersioningInfoContainer.java
@@ -60,6 +60,7 @@ public class VersioningInfoContainer extends LayoutContainer {
private Button buttonDelete;
//private Button buttonRestore;
private Button buttonDownload;
+ private Button buttonPublicLink;
private Button buttonEmptyVersions;
private FileModel currentVersion;
private WindowVersioning windowVersioning;
@@ -119,45 +120,6 @@ public class VersioningInfoContainer extends LayoutContainer {
ToolBar bar = new ToolBar();
-// buttonRestore = new Button(WorkspaceVersioningOperation.RESTORE.getLabel(),Resources.getIconUndo());
-// buttonRestore.setToolTip(WorkspaceVersioningOperation.RESTORE.getOperationDescription());
-// buttonRestore.setScale(ButtonScale.SMALL);
-// buttonRestore.setIconAlign(IconAlign.TOP);
-//
-// buttonRestore.addSelectionListener(new SelectionListener() {
-//
-// @Override
-// public void componentSelected(ButtonEvent ce) {
-//
-// if(checkSelection()){
-// //ONLY THE FIRST ITEM SELECTED CAN BE RESTORED
-// final List firstFileToRestore = new ArrayList(1);
-// firstFileToRestore.add(grid.getSelectionModel().getSelectedItems().get(0));
-// String msg = "Restoring the previous version: " +
-// "
"+firstFileToRestore.get(0).getName();
-// msg+="
Confirm?";
-//
-// String title = "Restore version ";
-// title+=" of: "+currentVersion.getName();
-// final DialogConfirm box = new DialogConfirm(null, title, msg);
-// box.getYesButton().addClickHandler(new ClickHandler() {
-//
-// @Override
-// public void onClick(ClickEvent event) {
-// AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.RESTORE, currentVersion, firstFileToRestore, windowVersioning));
-// box.hide();
-// }
-// });
-// box.setModal(true);
-// box.center();
-//
-// }
-// }
-// });
-//
-// bar.add(buttonRestore);
-
-
buttonDelete = new Button(WorkspaceVersioningOperation.DELETE_PERMANENTLY.getLabel(),Resources.getIconDeleteItem());
buttonDelete.setToolTip(WorkspaceVersioningOperation.DELETE_PERMANENTLY.getOperationDescription());
buttonDelete.setScale(ButtonScale.SMALL);
@@ -183,8 +145,11 @@ public class VersioningInfoContainer extends LayoutContainer {
@Override
public void onClick(ClickEvent event) {
- AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.DELETE_PERMANENTLY, currentVersion, selectedItems, windowVersioning));
- box.hide();
+ AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.DELETE_PERMANENTLY,
+ currentVersion,
+ grid.getSelectionModel().getSelectedItems(),
+ grid.getStore().getModels(),
+ windowVersioning));
}
});
box.setModal(true);
@@ -205,7 +170,30 @@ public class VersioningInfoContainer extends LayoutContainer {
public void componentSelected(ButtonEvent ce) {
if(checkSelection())
- AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.DOWNLOAD, currentVersion, grid.getSelectionModel().getSelectedItems(), windowVersioning));
+ AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.DOWNLOAD,
+ currentVersion,
+ grid.getSelectionModel().getSelectedItems(),
+ grid.getStore().getModels(),
+ windowVersioning));
+ }
+ });
+
+
+ buttonPublicLink = new Button(WorkspaceVersioningOperation.PUBLIC_LINK.getLabel(),Resources.getIconPublicLink());
+ buttonPublicLink.setToolTip(WorkspaceVersioningOperation.PUBLIC_LINK.getOperationDescription());
+ buttonPublicLink.setScale(ButtonScale.SMALL);
+ buttonPublicLink.setIconAlign(IconAlign.TOP);
+ buttonPublicLink.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void componentSelected(ButtonEvent ce) {
+
+ if(checkSelection())
+ AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.PUBLIC_LINK,
+ currentVersion,
+ grid.getSelectionModel().getSelectedItems(),
+ grid.getStore().getModels(),
+ windowVersioning));
}
});
@@ -230,7 +218,11 @@ public class VersioningInfoContainer extends LayoutContainer {
@Override
public void onClick(ClickEvent event) {
box.hide();
- AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.DELETE_ALL_OLDER_VERSIONS, currentVersion, store.getModels(), windowVersioning));
+ AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.DELETE_ALL_OLDER_VERSIONS,
+ currentVersion,
+ grid.getSelectionModel().getSelectedItems(),
+ grid.getStore().getModels(),
+ windowVersioning));
}
});
box.setModal(true);
@@ -242,9 +234,6 @@ public class VersioningInfoContainer extends LayoutContainer {
//bar.add(buttonEmptyVersions);
-
-
-
Button buttonRefresh = new Button(WorkspaceTrashOperation.REFRESH.getLabel(),Resources.getIconRefresh());
buttonRefresh.setToolTip(WorkspaceTrashOperation.REFRESH.getOperationDescription());
buttonRefresh.setScale(ButtonScale.SMALL);
@@ -254,12 +243,20 @@ public class VersioningInfoContainer extends LayoutContainer {
@Override
public void componentSelected(ButtonEvent ce) {
- AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.REFRESH, currentVersion, null, windowVersioning));
+ if(grid.getSelectionModel().getSelectedItems()==null || grid.getSelectionModel().getSelectedItems().size()==0)
+ return;
+
+ AppController.getEventBus().fireEvent(new FileVersioningEvent(WorkspaceVersioningOperation.REFRESH,
+ currentVersion,
+ grid.getSelectionModel().getSelectedItems(),
+ grid.getStore().getModels(),
+ windowVersioning));
}
});
bar.add(buttonRefresh);
bar.add(buttonDownload);
+ bar.add(buttonPublicLink);
cp.setTopComponent(bar);
}
@@ -353,8 +350,10 @@ public class VersioningInfoContainer extends LayoutContainer {
activeCurrentVersionOperation(!fileVersionModel.isCurrentVersion());
}
- if(selected.size()>1)
+ if(selected.size()>1){
activeDownloadOperation(false);
+ activePublicLinkperation(false);
+ }
}
@@ -383,6 +382,16 @@ public class VersioningInfoContainer extends LayoutContainer {
buttonDownload.setEnabled(b);
}
+ /**
+ * Active download operation.
+ *
+ * @param b the b
+ */
+ private void activePublicLinkperation(boolean b) {
+ buttonPublicLink.setEnabled(b);
+ }
+
+
/**
* Active current version operation.
@@ -439,6 +448,7 @@ public class VersioningInfoContainer extends LayoutContainer {
buttonDelete.setEnabled(bool);
//buttonRestore.setEnabled(bool);
buttonDownload.setEnabled(bool);
+ buttonPublicLink.setEnabled(bool);
}
/**