Versioning #7006 first release

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@144060 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2017-02-22 10:36:28 +00:00
parent 1068ba6ac1
commit 3095ff46d2
5 changed files with 106 additions and 95 deletions

View File

@ -1,10 +1,7 @@
package org.gcube.portlets.user.workspace.client.model; package org.gcube.portlets.user.workspace.client.model;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
import com.google.gwt.user.client.rpc.IsSerializable;
/** /**
* The Class FileVersionModel. * The Class FileVersionModel.
@ -12,12 +9,13 @@ import com.google.gwt.user.client.rpc.IsSerializable;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Feb 20, 2017 * Feb 20, 2017
*/ */
public class FileVersionModel extends FileModel implements IsSerializable, Serializable { public class FileVersionModel extends FileModel {
/** /**
* *
*/ */
private static final long serialVersionUID = -607019966965449963L; private static final long serialVersionUID = 4645522942385738974L;
public static final String PATH = "path"; public static final String PATH = "path";
public static final String USER_VERSIONING = "user_versioning"; public static final String USER_VERSIONING = "user_versioning";
public static final String CREATED = "created"; public static final String CREATED = "created";

View File

@ -139,7 +139,7 @@ public interface GWTWorkspaceService extends RemoteService{
* *
* @param category the category * @param category the category
* @return the smart folder results by category * @return the smart folder results by category
* @throws Exception * @throws Exception the exception
*/ */
List<FileGridModel> getSmartFolderResultsByCategory( List<FileGridModel> getSmartFolderResultsByCategory(
GXTCategorySmartFolder category) throws Exception; GXTCategorySmartFolder category) throws Exception;
@ -738,16 +738,32 @@ public interface GWTWorkspaceService extends RemoteService{
* *
* @param itemId the item id * @param itemId the item id
* @return the allow access * @return the allow access
* @throws SessionExpiredException the session expired exception
* @throws Exception the exception
*/ */
AllowAccess accessToFolderLink(String itemId) throws SessionExpiredException, Exception; AllowAccess accessToFolderLink(String itemId) throws SessionExpiredException, Exception;
/** /**
* @param fileIdentifier * Perform operation on versioned file.
* @return *
* @throws Exception * @param fileId the file id
* @param olderVersionIDs the older version i ds
* @param operation the operation
* @return the list
* @throws Exception the exception
*/ */
List<FileVersionModel> getVersionHistory(String fileIdentifier)
throws Exception;
List<FileVersionModel> performOperationOnVersionedFile( List<FileVersionModel> performOperationOnVersionedFile(
FileModel currentVersion, List<FileVersionModel> selectedVersion, String fileId, List<String> olderVersionIDs,
WorkspaceVersioningOperation operation) throws Exception; WorkspaceVersioningOperation operation) throws Exception;
/**
* Gets the version history.
*
* @param fileIdentifier the file identifier
* @return the version history
* @throws Exception the exception
*/
List<FileVersionModel> getVersionHistory(String fileIdentifier) throws Exception;
} }

View File

@ -748,16 +748,8 @@ public interface GWTWorkspaceServiceAsync {
void getVersionHistory( void getVersionHistory(
String fileIdentifier, AsyncCallback<List<FileVersionModel>> callback); String fileIdentifier, AsyncCallback<List<FileVersionModel>> callback);
/**
* Perform operation on versioned file.
*
* @param currentVersion the current version
* @param selectedVersion the selected version
* @param operation the operation
* @param callback the callback
*/
void performOperationOnVersionedFile( void performOperationOnVersionedFile(
FileModel currentVersion, List<FileVersionModel> selectedVersion, String fileId, List<String> olderVersionIds,
WorkspaceVersioningOperation operation, WorkspaceVersioningOperation operation,
AsyncCallback<List<FileVersionModel>> callback); AsyncCallback<List<FileVersionModel>> callback);

View File

@ -3373,79 +3373,6 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
} }
/* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#performOperationOnVersionedFile(org.gcube.portlets.user.workspace.client.model.FileModel, org.gcube.portlets.user.workspace.client.model.FileModel, org.gcube.portlets.user.workspace.shared.WorkspaceVersioningOperation)
*/
@Override
public List<FileVersionModel> performOperationOnVersionedFile(FileModel currentVersion, List<FileVersionModel> olderVersions, WorkspaceVersioningOperation operation) throws Exception{
if(currentVersion == null || olderVersions==null || olderVersions.size()==0)
throw new Exception("File Versioned is null");
workspaceLogger.info("Cuurent Version: "+currentVersion.getName()+", File Versioned "+olderVersions+ " perform operation: "+operation);
try {
Workspace workspace = getWorkspace();
WorkspaceItem fileHL = workspace.getItem(currentVersion.getIdentifier());
if(fileHL instanceof ExternalFile){
ExternalFile extFile = (ExternalFile) fileHL;
switch (operation) {
case DOWNLOAD: {
//IMPLEMENTED CLIENT-SIDE
break;
}
case EMPTY_OLDER_VERSIONS:{
//TODO
//extFile.(selectedVersion.getIdentifier());;
}
case RESTORE: {
for (FileVersionModel olderVerison : olderVersions) {
extFile.restoreVersion(olderVerison.getIdentifier());
}
return getVersionHistory(currentVersion.getIdentifier());
}
case REFRESH: {
return getVersionHistory(currentVersion.getIdentifier());
}
case DELETE_PERMANENTLY: {
for (FileVersionModel olderVerison : olderVersions) {
extFile.removeVersion(olderVerison.getIdentifier());
workspaceLogger.info("Version "+olderVerison.getIdentifier() +" of "+currentVersion.getName()+" removed");
}
return getVersionHistory(currentVersion.getIdentifier());
}
default:{
break;
}
}
return getVersionHistory(currentVersion.getIdentifier());
}else
throw new FileNotVersionedException("Selected file is not versioned");
}catch (Exception e) {
if (e instanceof FileNotVersionedException)
throw new Exception(e.getMessage());
workspaceLogger.error("Error in server during perform operation on versioning of: "+currentVersion.getName(), e);
String error = ConstantsExplorer.SERVER_ERROR +" updating versioning of "+currentVersion.getName();
throw new Exception(error);
}
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#executeOperationOnTrash(java.util.List, org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#executeOperationOnTrash(java.util.List, org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation)
*/ */
@ -4085,4 +4012,82 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
throw new Exception(error); throw new Exception(error);
} }
} }
/* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#performOperationOnVersionedFile(java.lang.String, java.util.List, org.gcube.portlets.user.workspace.shared.WorkspaceVersioningOperation)
*/
@Override
public List<FileVersionModel> performOperationOnVersionedFile(
String fileId, List<String> olderVersionIDs,
WorkspaceVersioningOperation operation) throws Exception {
if(fileId == null || olderVersionIDs==null || olderVersionIDs.size()==0)
throw new Exception("File Versioned is null");
workspaceLogger.info("File Id: "+fileId+", Ids Version: "+olderVersionIDs+ " perform operation: "+operation);
try {
Workspace workspace = getWorkspace();
WorkspaceItem fileHL = workspace.getItem(fileId);
if(fileHL instanceof ExternalFile){
ExternalFile extFile = (ExternalFile) fileHL;
switch (operation) {
case DOWNLOAD: {
//IMPLEMENTED CLIENT-SIDE
break;
}
case DELETE_ALL_OLDER_VERSIONS:{
//MUST BE OPTIMIZED HL-SIDE
for (String olderVersionId : olderVersionIDs) {
extFile.removeVersion(olderVersionId);
workspaceLogger.info("Version "+olderVersionId +" of file id: "+fileId+" removed");
}
return getVersionHistory(fileId);
}
case RESTORE: {
for (String olderVersionId : olderVersionIDs) {
extFile.restoreVersion(olderVersionId);
workspaceLogger.info("Version "+olderVersionId +" of file id: "+fileId+" restored");
}
return getVersionHistory(fileId);
}
case REFRESH: {
return getVersionHistory(fileId);
}
case DELETE_PERMANENTLY: {
for (String olderVersionId : olderVersionIDs) {
extFile.removeVersion(olderVersionId);
workspaceLogger.info("Version "+olderVersionId +" of file id: "+fileId+" removed");
}
return getVersionHistory(fileId);
}
default:{
break;
}
}
return getVersionHistory(fileId);
}else
throw new FileNotVersionedException("Selected file is not versioned");
}catch (Exception e) {
if (e instanceof FileNotVersionedException)
throw new Exception(e.getMessage());
workspaceLogger.error("Error in server during perform operation on versioning on file id: "+fileId, e);
String error = ConstantsExplorer.SERVER_ERROR +" updating versioning of file id: "+fileId;
throw new Exception(error);
}
}
} }

View File

@ -22,7 +22,7 @@ public enum WorkspaceVersioningOperation {
RESTORE("Restore", "Restore the file to the selected version"), RESTORE("Restore", "Restore the file to the selected version"),
DOWNLOAD("Download", "Download the version of the selected file"), DOWNLOAD("Download", "Download the version of the selected file"),
DELETE_PERMANENTLY("Delete Permanently", "Delete Permanently the version for the selected file"), DELETE_PERMANENTLY("Delete Permanently", "Delete Permanently the version for the selected file"),
EMPTY_OLDER_VERSIONS("Empty Old Versions", "Empty definitively all older versions of the file"); DELETE_ALL_OLDER_VERSIONS("Delete all older versions", "Delete definitively all older versions of the file");
public String label; public String label;
public String operationDescription; public String operationDescription;