429: Workspace: uploading big files

Task-Url: https://support.d4science.org/issues/429

Workspace Uploader integrated in workspace-tree

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@119408 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2015-10-05 16:33:14 +00:00
parent 14ce83164f
commit 696ec6bb30
11 changed files with 827 additions and 765 deletions

20
pom.xml
View File

@ -44,8 +44,15 @@
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
<dependencies> <dependencies>
<!-- UNCOMMENT THIS TO RUN IN DEVO MODE -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xerces</artifactId>
<version>2.4.0</version>
</dependency>
<!-- This dependency is needed to use GWT UI BInder without old Xerces <!-- This dependency is needed to use GWT UI BInder without old Xerces
version of gCore complaining --> version of gCore complaining -->
<dependency> <dependency>
@ -54,6 +61,7 @@
<version>2.9.1</version> <version>2.9.1</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Google Web Toolkit (GWT) --> <!-- Google Web Toolkit (GWT) -->
<dependency> <dependency>
<groupId>com.google.gwt</groupId> <groupId>com.google.gwt</groupId>
@ -182,10 +190,18 @@
<version>1.4.5</version> <version>1.4.5</version>
</dependency> </dependency>
<!-- FILE UPLOAD-progress-bar --> <!-- FILE UPLOAD-progress-bar -->
<!-- <dependency> -->
<!-- <groupId>org.gcube.portlets.widgets</groupId> -->
<!-- <artifactId>fileupload-progress-bar</artifactId> -->
<!-- <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> -->
<!-- </dependency> -->
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
<artifactId>fileupload-progress-bar</artifactId> <artifactId>workspace-uploader</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -14,6 +14,7 @@
<inherits name="org.gcube.portlets.widgets.workspacesharingwidget.WorkspaceSharingWidget" /> <inherits name="org.gcube.portlets.widgets.workspacesharingwidget.WorkspaceSharingWidget" />
<servlet path="/WorkspaceService" class="org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl" /> <servlet path="/WorkspaceService" class="org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl" />
<inherits name="org.gcube.portlets.widgets.workspaceuploader.WorkspaceUploader"></inherits>
<!-- <!--
<servlet path="/ImageService" class="org.gcube.portlets.user.workspace.server.ImageServlet" /> <servlet path="/ImageService" class="org.gcube.portlets.user.workspace.server.ImageServlet" />
<servlet path="/MetadataService" class="org.gcube.portlets.user.workspace.server.MetadataServlet" /> <servlet path="/MetadataService" class="org.gcube.portlets.user.workspace.server.MetadataServlet" />

View File

@ -113,7 +113,6 @@ import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
import org.gcube.portlets.user.workspace.client.model.SubTree; import org.gcube.portlets.user.workspace.client.model.SubTree;
import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService; import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService;
import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceServiceAsync; import org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceServiceAsync;
import org.gcube.portlets.user.workspace.client.uploader.FileUploader;
import org.gcube.portlets.user.workspace.client.util.RequestBuilderWorkspaceValidateItem; import org.gcube.portlets.user.workspace.client.util.RequestBuilderWorkspaceValidateItem;
import org.gcube.portlets.user.workspace.client.util.WindowOpenParameter; import org.gcube.portlets.user.workspace.client.util.WindowOpenParameter;
import org.gcube.portlets.user.workspace.client.view.ExplorerPanel; import org.gcube.portlets.user.workspace.client.view.ExplorerPanel;
@ -135,7 +134,6 @@ import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxConfirm; import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxConfirm;
import org.gcube.portlets.user.workspace.client.view.windows.NewBrowserWindow; import org.gcube.portlets.user.workspace.client.view.windows.NewBrowserWindow;
import org.gcube.portlets.user.workspace.client.view.windows.WindowImagePreview; import org.gcube.portlets.user.workspace.client.view.windows.WindowImagePreview;
import org.gcube.portlets.user.workspace.client.view.windows.WindowOpenUrl;
import org.gcube.portlets.user.workspace.client.view.windows.accounting.WindowAccountingInfo; import org.gcube.portlets.user.workspace.client.view.windows.accounting.WindowAccountingInfo;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem; import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalImage; import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalImage;
@ -146,15 +144,14 @@ import org.gcube.portlets.user.workspace.shared.ReportAssignmentACL;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException; import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import org.gcube.portlets.user.workspace.shared.UserBean; import org.gcube.portlets.user.workspace.shared.UserBean;
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingField; import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingField;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEvent;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEventHandler;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEvent;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEventHandler;
import org.gcube.portlets.widgets.workspacesharingwidget.client.ConstantsSharing.LOAD_CONTACTS_AS; import org.gcube.portlets.widgets.workspacesharingwidget.client.ConstantsSharing.LOAD_CONTACTS_AS;
import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragConstants; import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragConstants;
import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragContactsEditPermissions; import org.gcube.portlets.widgets.workspacesharingwidget.client.MultiDragContactsEditPermissions;
import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact; import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact;
import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.DialogMultiDragContact; import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.multisuggest.DialogMultiDragContact;
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUploadStream.UPLOAD_TYPE;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.MultipleDilaogUploadStream;
import com.extjs.gxt.ui.client.Registry; import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.BaseEvent;
@ -169,7 +166,6 @@ import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.HasWidgets;
@ -188,7 +184,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
private boolean selectRootItem; private boolean selectRootItem;
private FileUploader fileUploader; // private FileUploader fileUploader;
public static String myLogin; public static String myLogin;
public static String myLoginFirstName; public static String myLoginFirstName;
@ -1128,21 +1124,60 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
} }
private void doFileUploadEvent(FileUploadEvent fileUploadEvent) { private void doFileUploadEvent(FileUploadEvent fileUploadEvent) {
GWT.log("FileUploadEvent...");
FileModel folder = fileUploadEvent.getTargetFolderModel(); FileModel folder = fileUploadEvent.getTargetFolderModel();
if(folder == null) if(folder == null)
folder = explorerPanel.getAsycTreePanel().getRootItem(); folder = explorerPanel.getAsycTreePanel().getRootItem();
String uploadType = null;
if(fileUploadEvent.getUploadTypeToString().equals(UploadType.ARCHIVE.toString())){ if(fileUploadEvent.getUploadTypeToString().equals(UploadType.ARCHIVE.toString())){
// new DialogUpload(ConstantsExplorer.ARCHIVEUPLOADHEADER, folder.getName(), folder, ConstantsExplorer.ARCHIVE); uploadType = ConstantsExplorer.ARCHIVE;
fileUploader = new FileUploader(eventBus, folder, ConstantsExplorer.ARCHIVE); }else{
uploadType = ConstantsExplorer.FILE;
} }
else
fileUploader = new FileUploader(eventBus, folder, ConstantsExplorer.FILE); String caption = "Upload ";
UPLOAD_TYPE upType = UPLOAD_TYPE.File;
if(uploadType.compareTo(ConstantsExplorer.ARCHIVE)==0){
caption+= " a zip Archive";
upType = UPLOAD_TYPE.Archive;
}else if(uploadType.compareTo(ConstantsExplorer.FILE)==0){
caption+= "File";
upType = UPLOAD_TYPE.File;
}
caption+= " in: "+folder.getName();
MultipleDilaogUploadStream uploadStream = new MultipleDilaogUploadStream(caption, folder.getIdentifier(), upType);
WorskpaceUploadNotificationListener listener = new WorskpaceUploadNotificationListener() {
@Override
public void onUploadCompleted(String parentId, String itemId) {
GWT.log("Upload completed: [parentID: "+parentId+", itemId: "+itemId+"]");
eventBus.fireEvent(new CompletedFileUploadEvent(parentId, itemId));
}
@Override
public void onUploadAborted(String parentId, String itemId) {
GWT.log("Upload Aborted: [parentID: "+parentId+", itemId: "+itemId+"]");
}
@Override
public void onError(String parentId, String itemId, Throwable throwable) {
GWT.log("Upload Aborted: [parentID: "+parentId+", itemId: "+itemId+"]");
}
};
uploadStream.addWorkspaceUploadNotificationListener(listener);
uploadStream.center();
} }
}); });
/*
eventBus.addHandler(FileUploadSelectedEvent.TYPE, new FileUploadSelectedEventHandler() { eventBus.addHandler(FileUploadSelectedEvent.TYPE, new FileUploadSelectedEventHandler() {
@Override @Override
@ -1194,9 +1229,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
} }
}); });
/**
* get the uploaded file result
*/
eventBus.addHandler(FileUploadCompleteEvent.TYPE, new FileUploadCompleteEventHandler() { eventBus.addHandler(FileUploadCompleteEvent.TYPE, new FileUploadCompleteEventHandler() {
@Override @Override
@ -1209,7 +1242,8 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
fileUploader.submitServletForm(absolutePathOnServer); fileUploader.submitServletForm(absolutePathOnServer);
} }
}); });*/
eventBus.addHandler(CompletedFileUploadEvent.TYPE, new CompletedFileUploadEventHandler() { eventBus.addHandler(CompletedFileUploadEvent.TYPE, new CompletedFileUploadEventHandler() {
@ -1220,14 +1254,19 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
} }
private void doCompletedFileUploadEvent(CompletedFileUploadEvent completedFileUploadEvent) { private void doCompletedFileUploadEvent(CompletedFileUploadEvent completedFileUploadEvent) {
GWT.log("doCompletedFileUploadEvent...");
// explorerPanel.getAsycTreePanel().reloadAndSelectTreeLevelFromWorkspaceForUplaod(completedFileUploadEvent.getParentFileModel().getIdentifier()); // explorerPanel.getAsycTreePanel().reloadAndSelectTreeLevelFromWorkspaceForUplaod(completedFileUploadEvent.getParentFileModel().getIdentifier());
boolean isLevelExpanded = treeLevelIsExpanded(completedFileUploadEvent.getTargetFolderModel().getIdentifier());
boolean isLevelExpanded = treeLevelIsExpanded(completedFileUploadEvent.getParentId());
//REFRESH TREE ONLY IF FOLDER PARENT EXISTS IN TREE //REFRESH TREE ONLY IF FOLDER PARENT EXISTS IN TREE
if(explorerPanel.getAsycTreePanel().getFileModelByIdentifier(completedFileUploadEvent.getTargetFolderModel().getIdentifier())!=null){ FileModel parent = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(completedFileUploadEvent.getParentId());
explorerPanel.getAsycTreePanel().reloadTreeLevelAndExpandFolder(completedFileUploadEvent.getTargetFolderModel().getIdentifier(), isLevelExpanded); if(parent!=null && completedFileUploadEvent.getItemIdentifier()!=null){
explorerPanel.getAsycTreePanel().reloadTreeLevelAndExpandFolder(completedFileUploadEvent.getParentId(), isLevelExpanded);
// explorerPanel.getAsycTreePanel().addItemIdAndExpandFolder(parent, completedFileUploadEvent.getItemIdentifier(), isLevelExpanded);
} }
completedFileUploadEvent.setParentModel(parent); //SET PARENT
doUpdateWorkspaceSize(new UpdateWorkspaceSizeEvent()); doUpdateWorkspaceSize(new UpdateWorkspaceSizeEvent());
notifySubscriber(completedFileUploadEvent); notifySubscriber(completedFileUploadEvent);
} }
@ -1418,16 +1457,11 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
msg = ConstantsExplorer.MESSAGE_CONFIRM_DELETE_ITEM + " "+ event.getFileTarget().getName() +"?"; msg = ConstantsExplorer.MESSAGE_CONFIRM_DELETE_ITEM + " "+ event.getFileTarget().getName() +"?";
} }
MessageBoxConfirm mbc = new MessageBoxConfirm(title, msg); MessageBoxConfirm mbc = new MessageBoxConfirm(title, msg);
mbc.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() { mbc.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() {
public void handleEvent(MessageBoxEvent be) { public void handleEvent(MessageBoxEvent be) {
// eventBus.fireEvent(new DeleteItemEvent(sel));
//IF NOT CANCELLED //IF NOT CANCELLED
String clickedButton = be.getButtonClicked().getItemId(); String clickedButton = be.getButtonClicked().getItemId();
if(clickedButton.equals(Dialog.YES)){ if(clickedButton.equals(Dialog.YES)){
@ -1938,7 +1972,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
CompletedFileUploadEvent fileUpEvent = (CompletedFileUploadEvent) event; CompletedFileUploadEvent fileUpEvent = (CompletedFileUploadEvent) event;
sub.addedFile(fileUpEvent.getItemIdentifier(), fileUpEvent.getTargetFolderModel()); sub.addedFile(fileUpEvent.getItemIdentifier(), fileUpEvent.getParentModel());
}else if(event instanceof CreateUrlEvent){ }else if(event instanceof CreateUrlEvent){

View File

@ -13,11 +13,13 @@ import com.google.gwt.event.shared.GwtEvent;
public class CompletedFileUploadEvent extends GwtEvent<CompletedFileUploadEventHandler> implements GuiEventInterface{ public class CompletedFileUploadEvent extends GwtEvent<CompletedFileUploadEventHandler> implements GuiEventInterface{
public static Type<CompletedFileUploadEventHandler> TYPE = new Type<CompletedFileUploadEventHandler>(); public static Type<CompletedFileUploadEventHandler> TYPE = new Type<CompletedFileUploadEventHandler>();
private FileModel parentFileModel;
private String itemIdentifier; private String itemIdentifier;
private String parentId;
private FileModel parentModel;
public CompletedFileUploadEvent(FileModel parent, String itemIdentifier) { public CompletedFileUploadEvent(String parentId, String itemIdentifier) {
this.parentFileModel = parent; this.parentId = parentId;
this.itemIdentifier = itemIdentifier; this.itemIdentifier = itemIdentifier;
} }
@ -36,13 +38,39 @@ public class CompletedFileUploadEvent extends GwtEvent<CompletedFileUploadEventH
return EventsTypeEnum.COMPLETED_FILE_UPLOAD_EVENT; return EventsTypeEnum.COMPLETED_FILE_UPLOAD_EVENT;
} }
public FileModel getTargetFolderModel() {
return parentFileModel;
}
public String getItemIdentifier() { public String getItemIdentifier() {
return itemIdentifier; return itemIdentifier;
} }
/**
* @return the parentId
*/
public String getParentId() {
return parentId;
}
/**
* @param itemIdentifier the itemIdentifier to set
*/
public void setItemIdentifier(String itemIdentifier) {
this.itemIdentifier = itemIdentifier;
}
/**
* @param parentId the parentId to set
*/
public void setParentId(String parentId) {
this.parentId = parentId;
}
public void setParentModel(FileModel parent){
this.parentModel = parent;
}
/**
* @return the parentModel
*/
public FileModel getParentModel() {
return parentModel;
}
} }

View File

@ -5,7 +5,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.gcube.portlets.user.workspace.client.model.BulkCreatorModel;
import org.gcube.portlets.user.workspace.client.model.FileDetailsModel; import org.gcube.portlets.user.workspace.client.model.FileDetailsModel;
import org.gcube.portlets.user.workspace.client.model.FileGridModel; import org.gcube.portlets.user.workspace.client.model.FileGridModel;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
@ -789,4 +788,6 @@ public interface GWTWorkspaceService extends RemoteService{
*/ */
void setGcubeItemProperties(String itemId, Map<String, String> properties) throws Exception; void setGcubeItemProperties(String itemId, Map<String, String> properties) throws Exception;
FileModel getItemForFileTree(String itemId) throws Exception;
} }

View File

@ -5,7 +5,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.gcube.portlets.user.workspace.client.model.BulkCreatorModel;
import org.gcube.portlets.user.workspace.client.model.FileDetailsModel; import org.gcube.portlets.user.workspace.client.model.FileDetailsModel;
import org.gcube.portlets.user.workspace.client.model.FileGridModel; import org.gcube.portlets.user.workspace.client.model.FileGridModel;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
@ -252,15 +251,15 @@ public interface GWTWorkspaceServiceAsync {
// void sendTo(List<InfoContactModel> listContacts, List<FileModel> listAttachments, String subject, String text, AsyncCallback<Boolean> callback); // void sendTo(List<InfoContactModel> listContacts, List<FileModel> listAttachments, String subject, String text, AsyncCallback<Boolean> callback);
/** /**
* Send to by id. * Send to by id.
* *
* @param listContactsId the list contacts id * @param listContactsId the list contacts id
* @param listAttachmentsId the list attachments id * @param listAttachmentsId the list attachments id
* @param subject the subject * @param subject the subject
* @param text the text * @param text the text
* @param callback the callback * @param callback the callback
*/ */
void sendToById(List<String> listContactsId, List<String> listAttachmentsId, String subject, String text, AsyncCallback<Boolean> callback); void sendToById(List<String> listContactsId, List<String> listAttachmentsId, String subject, String text, AsyncCallback<Boolean> callback);
/** /**
* Gets the all messages received. * Gets the all messages received.
@ -529,6 +528,12 @@ void sendToById(List<String> listContactsId, List<String> listAttachmentsId, Str
* @return the item for file grid * @return the item for file grid
*/ */
void getItemForFileGrid(String itemId, AsyncCallback<FileGridModel> callback); void getItemForFileGrid(String itemId, AsyncCallback<FileGridModel> callback);
/**
* @param itemId
* @param asyncCallback
*/
void getItemForFileTree(String itemId,AsyncCallback<FileModel> asyncCallback);
/** /**
* Gets the folder children for file grid by id. * Gets the folder children for file grid by id.
@ -785,4 +790,6 @@ void sendToById(List<String> listContactsId, List<String> listAttachmentsId, Str
void setGcubeItemProperties(String itemId, Map<String, String> properties, void setGcubeItemProperties(String itemId, Map<String, String> properties,
AsyncCallback<Void> callback); AsyncCallback<Void> callback);
} }

View File

@ -1,304 +1,304 @@
package org.gcube.portlets.user.workspace.client.uploader; //package org.gcube.portlets.user.workspace.client.uploader;
//
//
import org.gcube.portlets.user.workspace.client.AppControllerExplorer; //import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer; //import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.event.CompletedFileUploadEvent; //import org.gcube.portlets.user.workspace.client.event.CompletedFileUploadEvent;
import org.gcube.portlets.user.workspace.client.model.FileModel; //import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplayMessage; //import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplayMessage;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert; //import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxConfirm; //import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxConfirm;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxWait; //import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxWait;
import org.gcube.portlets.user.workspace.shared.HandlerResultMessage; //import org.gcube.portlets.user.workspace.shared.HandlerResultMessage;
//
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; //import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.ButtonEvent; //import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events; //import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.FormEvent; //import com.extjs.gxt.ui.client.event.FormEvent;
import com.extjs.gxt.ui.client.event.Listener; //import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.MessageBoxEvent; //import com.extjs.gxt.ui.client.event.MessageBoxEvent;
import com.extjs.gxt.ui.client.event.SelectionListener; //import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog; //import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.Info; //import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.Window; //import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.button.Button; //import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.FileUploadField; //import com.extjs.gxt.ui.client.widget.form.FileUploadField;
import com.extjs.gxt.ui.client.widget.form.FormPanel; //import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.FormPanel.Encoding; //import com.extjs.gxt.ui.client.widget.form.FormPanel.Encoding;
import com.extjs.gxt.ui.client.widget.form.FormPanel.Method; //import com.extjs.gxt.ui.client.widget.form.FormPanel.Method;
import com.google.gwt.user.client.Timer; //import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback; //import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML; //import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Hidden; //import com.google.gwt.user.client.ui.Hidden;
//
//
/** ///**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it // * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* // *
*/ // */
public class DialogUpload extends Window { //public class DialogUpload extends Window {
//
private final FormPanel formPanel = new FormPanel(); // private final FormPanel formPanel = new FormPanel();
private FileUploadField fileUploadField = new FileUploadField(); // private FileUploadField fileUploadField = new FileUploadField();
private MessageBoxWait messageBoxWait = null; // private MessageBoxWait messageBoxWait = null;
private boolean isStatusCompleted = false; // private boolean isStatusCompleted = false;
private Button btnSubmit = new Button("Submit"); // private Button btnSubmit = new Button("Submit");
private Button btnCancel = new Button("Cancel"); // private Button btnCancel = new Button("Cancel");
private Hidden hiddenOverwrite = new Hidden(ConstantsExplorer.IS_OVERWRITE,"false"); // private Hidden hiddenOverwrite = new Hidden(ConstantsExplorer.IS_OVERWRITE,"false");
//
//
private String parentIdentifier = ""; // private String parentIdentifier = "";
private String parentName = ""; // private String parentName = "";
//
public DialogUpload(String headerTitle, String parentName, final FileModel parent, String fieldLabel){ // public DialogUpload(String headerTitle, String parentName, final FileModel parent, String fieldLabel){
//
this.setHeaderVisible(true); // this.setHeaderVisible(true);
this.setHeading(headerTitle + parentName); // this.setHeading(headerTitle + parentName);
this.parentIdentifier = parent.getIdentifier(); // this.parentIdentifier = parent.getIdentifier();
this.parentName = parentName; // this.parentName = parentName;
this.setStyleAttribute("margin", "10px"); // this.setStyleAttribute("margin", "10px");
//
// Create a FormPanel and point it at a service. // // Create a FormPanel and point it at a service.
//
// Create a FormPanel and point it at a service. // // Create a FormPanel and point it at a service.
formPanel.setHeaderVisible(false); // formPanel.setHeaderVisible(false);
formPanel.setFrame(true); // formPanel.setFrame(true);
formPanel.setAction(ConstantsExplorer.UPLOAD_WORKSPACE_SERVICE); // formPanel.setAction(ConstantsExplorer.UPLOAD_WORKSPACE_SERVICE);
formPanel.setEncoding(Encoding.MULTIPART); // formPanel.setEncoding(Encoding.MULTIPART);
formPanel.setMethod(Method.POST); // formPanel.setMethod(Method.POST);
//
formPanel.setButtonAlign(HorizontalAlignment.CENTER); // formPanel.setButtonAlign(HorizontalAlignment.CENTER);
formPanel.setWidth(400); // formPanel.setWidth(400);
//
// TextField<String> name = new TextField<String>(); // // TextField<String> name = new TextField<String>();
// name.setFieldLabel("Name"); // // name.setFieldLabel("Name");
// formPanel.add(name); // // formPanel.add(name);
//
fileUploadField.setAllowBlank(false); // fileUploadField.setAllowBlank(false);
fileUploadField.setName(ConstantsExplorer.UPLOAD_FORM_ELEMENT); // fileUploadField.setName(ConstantsExplorer.UPLOAD_FORM_ELEMENT);
//
// Add hidden parameters // // Add hidden parameters
formPanel.add(new Hidden(ConstantsExplorer.ID_FOLDER,parent.getIdentifier())); // formPanel.add(new Hidden(ConstantsExplorer.ID_FOLDER,parent.getIdentifier()));
formPanel.add(new Hidden(ConstantsExplorer.UPLOAD_TYPE,fieldLabel)); // formPanel.add(new Hidden(ConstantsExplorer.UPLOAD_TYPE,fieldLabel));
formPanel.add(hiddenOverwrite); // formPanel.add(hiddenOverwrite);
//
// fileUploadField.setFieldLabel(ConstantsExplorer.FILE); // // fileUploadField.setFieldLabel(ConstantsExplorer.FILE);
fileUploadField.setFieldLabel(fieldLabel); // fileUploadField.setFieldLabel(fieldLabel);
formPanel.add(fileUploadField); // formPanel.add(fileUploadField);
formPanel.addButton(btnSubmit); // formPanel.addButton(btnSubmit);
//
formPanel.addButton(btnCancel); // formPanel.addButton(btnCancel);
//
//
// handle the post // // handle the post
formPanel.addListener(Events.Submit, new Listener<FormEvent>() { // formPanel.addListener(Events.Submit, new Listener<FormEvent>() {
//
public void handleEvent(FormEvent event) { // public void handleEvent(FormEvent event) {
// When the form submission is successfully completed, this // // When the form submission is successfully completed, this
// event is // // event is
// fired. Assuming the service returned a response of type // // fired. Assuming the service returned a response of type
// text/html, // // text/html,
//
isStatusCompleted = true; // isStatusCompleted = true;
//
//
// Log.trace("onSubmitComplete"); // // Log.trace("onSubmitComplete");
String result = event.getResultHtml(); // String result = event.getResultHtml();
//
// Log.trace("Result "+result); // // Log.trace("Result "+result);
hide(); // hide();
//
messageBoxWait.getMessageBoxWait().close(); // messageBoxWait.getMessageBoxWait().close();
//
if (result == null) { // if (result == null) {
// MessageUtil.showErrorMessage("Error during upload", "An error occurred during file upload."); // // MessageUtil.showErrorMessage("Error during upload", "An error occurred during file upload.");
new MessageBoxAlert("Error during upload", "An error occurred during file upload.", null); // new MessageBoxAlert("Error during upload", "An error occurred during file upload.", null);
return; // return;
} // }
//
//expected <pre>200:Upload complete</pre> // //expected <pre>200:Upload complete</pre>
/*we strip tags added by webserver, // /*we strip tags added by webserver,
* // *
* Massi fix because webkit returns // * Massi fix because webkit returns
* <pre style="word-wrap: break-word; white-space: pre-wrap;">OK:File france_flag.png(0) imported correctly in /Workspace</pre> // * <pre style="word-wrap: break-word; white-space: pre-wrap;">OK:File france_flag.png(0) imported correctly in /Workspace</pre>
* // *
* TODO: recall it next time // * TODO: recall it next time
*/ // */
//String strippedResult = result.replace("<pre>", "").replace("</pre>", ""); //this won't work for webkit // //String strippedResult = result.replace("<pre>", "").replace("</pre>", ""); //this won't work for webkit
//replaced by new HTML(result).getText() // //replaced by new HTML(result).getText()
String strippedResult = new HTML(result).getText(); // String strippedResult = new HTML(result).getText();
//
//
// com.google.gwt.user.client.Window.alert(result); //// com.google.gwt.user.client.Window.alert(result);
// com.google.gwt.user.client.Window.alert("Stripped: " + strippedResult); //// com.google.gwt.user.client.Window.alert("Stripped: " + strippedResult);
//
final HandlerResultMessage resultMessage = HandlerResultMessage.parseResult(strippedResult); // final HandlerResultMessage resultMessage = HandlerResultMessage.parseResult(strippedResult);
//
switch (resultMessage.getStatus()) { // switch (resultMessage.getStatus()) {
case ERROR: // case ERROR:
new MessageBoxAlert("Error during upload", resultMessage.getMessage(), null); // new MessageBoxAlert("Error during upload", resultMessage.getMessage(), null);
break; // break;
case UNKNOWN: // case UNKNOWN:
new MessageBoxAlert("Error during upload", resultMessage.getMessage(), null); // new MessageBoxAlert("Error during upload", resultMessage.getMessage(), null);
break; // break;
case WARN: { // case WARN: {
new MessageBoxAlert("Upload completed with warnings", resultMessage.getMessage(), null); // new MessageBoxAlert("Upload completed with warnings", resultMessage.getMessage(), null);
break; // break;
} // }
case OK: { // case OK: {
Timer t = new Timer() { // Timer t = new Timer() {
public void run() { // public void run() {
AppControllerExplorer.getEventBus().fireEvent(new CompletedFileUploadEvent(parent, null)); // AppControllerExplorer.getEventBus().fireEvent(new CompletedFileUploadEvent(parent, null));
new InfoDisplayMessage("Upload completed successfully", resultMessage.getMessage()); // new InfoDisplayMessage("Upload completed successfully", resultMessage.getMessage());
} // }
}; // };
//
t.schedule(250); // t.schedule(250);
//
} // }
} // }
} // }
}); // });
//
add(formPanel); // add(formPanel);
//
this.addListeners(); // this.addListeners();
//
this.setAutoWidth(true); // this.setAutoWidth(true);
this.setAutoHeight(true); // this.setAutoHeight(true);
//
// this.show(); //// this.show();
//
} // }
//
private void addListeners() { // private void addListeners() {
//
//
btnSubmit.addSelectionListener(new SelectionListener<ButtonEvent>() { // btnSubmit.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override // @Override
public void componentSelected(ButtonEvent ce) { // public void componentSelected(ButtonEvent ce) {
if (fileUploadField.getValue()==null || !(fileUploadField.getValue().length()>2)) { // if (fileUploadField.getValue()==null || !(fileUploadField.getValue().length()>2)) {
new MessageBoxAlert(ConstantsExplorer.ERROR, ConstantsExplorer.NOFILESPECIFIED, null); // new MessageBoxAlert(ConstantsExplorer.ERROR, ConstantsExplorer.NOFILESPECIFIED, null);
return; // return;
} // }
//
// com.google.gwt.user.client.Window.alert("parentIdentifier "+parentIdentifier); //// com.google.gwt.user.client.Window.alert("parentIdentifier "+parentIdentifier);
// com.google.gwt.user.client.Window.alert("fileUploadField.getValue() "+fileUploadField.getValue()); //// com.google.gwt.user.client.Window.alert("fileUploadField.getValue() "+fileUploadField.getValue());
// com.google.gwt.user.client.Window.alert("parentName "+parentName); //// com.google.gwt.user.client.Window.alert("parentName "+parentName);
/* // /*
* TODO: recall: Some browser would write in fileUploadField.getValue() C:\fakepath\$fileName // * TODO: recall: Some browser would write in fileUploadField.getValue() C:\fakepath\$fileName
*/ // */
String normalizedFileName = fileUploadField.getValue(); // String normalizedFileName = fileUploadField.getValue();
//
// com.google.gwt.user.client.Window.alert("fileUploadField.getValue() "+fileUploadField.getValue()); //// com.google.gwt.user.client.Window.alert("fileUploadField.getValue() "+fileUploadField.getValue());
if (normalizedFileName.contains("\\")) { // if (normalizedFileName.contains("\\")) {
normalizedFileName = normalizedFileName.substring(normalizedFileName.lastIndexOf("\\")+1); //remove C:\fakepath\ if exists // normalizedFileName = normalizedFileName.substring(normalizedFileName.lastIndexOf("\\")+1); //remove C:\fakepath\ if exists
// com.google.gwt.user.client.Window.alert("normalizedFileName= "+normalizedFileName); //// com.google.gwt.user.client.Window.alert("normalizedFileName= "+normalizedFileName);
} // }
final String label = normalizedFileName; // final String label = normalizedFileName;
AppControllerExplorer.rpcWorkspaceService.itemExistsInWorkpaceFolder(parentIdentifier, normalizedFileName, new AsyncCallback<String>() { // AppControllerExplorer.rpcWorkspaceService.itemExistsInWorkpaceFolder(parentIdentifier, normalizedFileName, new AsyncCallback<String>() {
//
@Override // @Override
public void onSuccess(final String itemId) { // public void onSuccess(final String itemId) {
//
if(itemId!=null){ // if(itemId!=null){
//
MessageBoxConfirm msg = new MessageBoxConfirm("Replace "+label+"?", label + " exists in folder "+parentName + ". Overwrite?"); // MessageBoxConfirm msg = new MessageBoxConfirm("Replace "+label+"?", label + " exists in folder "+parentName + ". Overwrite?");
//
//
msg.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() { // msg.getMessageBoxConfirm().addCallback(new Listener<MessageBoxEvent>() {
//
public void handleEvent(MessageBoxEvent be) { // public void handleEvent(MessageBoxEvent be) {
//
//IF NOT CANCELLED // //IF NOT CANCELLED
String clickedButton = be.getButtonClicked().getItemId(); // String clickedButton = be.getButtonClicked().getItemId();
//
if(clickedButton.equals(Dialog.YES)){ // if(clickedButton.equals(Dialog.YES)){
//
// removeItemAndSubmitForm(itemId); //// removeItemAndSubmitForm(itemId);
updateItemSubmitForm(itemId); // updateItemSubmitForm(itemId);
} // }
//
//
} // }
}); // });
}else // }else
submitForm(); //ITEM does NOT EXIST SO SUBMIT FORM; // submitForm(); //ITEM does NOT EXIST SO SUBMIT FORM;
//
} // }
//
@Override // @Override
public void onFailure(Throwable caught) { // public void onFailure(Throwable caught) {
Info.display("Error", "Sorry an error occurred on the server "+caught.getLocalizedMessage() + ". Please try again later"); // Info.display("Error", "Sorry an error occurred on the server "+caught.getLocalizedMessage() + ". Please try again later");
//
} // }
//
}); // });
//
} // }
}); // });
//
//
btnCancel.addSelectionListener(new SelectionListener<ButtonEvent>() { // btnCancel.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override // @Override
public void componentSelected(ButtonEvent ce) { // public void componentSelected(ButtonEvent ce) {
hide(); // hide();
} // }
}); // });
} // }
//
//
public void submitForm(){ // public void submitForm(){
//
messageBoxWait = new MessageBoxWait(ConstantsExplorer.PROGRESS, ConstantsExplorer.SAVINGYOURFILE, fileUploadField.getValue()); // messageBoxWait = new MessageBoxWait(ConstantsExplorer.PROGRESS, ConstantsExplorer.SAVINGYOURFILE, fileUploadField.getValue());
//
//Progress bar for upload // //Progress bar for upload
final Timer t = new Timer() // final Timer t = new Timer()
{ // {
public void run() // public void run()
{ // {
if (isStatusCompleted) // if (isStatusCompleted)
{ // {
cancel(); // cancel();
messageBoxWait.getMessageBoxWait().close(); // messageBoxWait.getMessageBoxWait().close();
} // }
} // }
}; // };
t.scheduleRepeating(500); // t.scheduleRepeating(500);
formPanel.submit(); // formPanel.submit();
//
} // }
//
//
private void removeItemAndSubmitForm(String itemId){ // private void removeItemAndSubmitForm(String itemId){
//
AppControllerExplorer.rpcWorkspaceService.removeItem(itemId, new AsyncCallback<Boolean>() { // AppControllerExplorer.rpcWorkspaceService.removeItem(itemId, new AsyncCallback<Boolean>() {
//
@Override // @Override
public void onFailure(Throwable caught) { // public void onFailure(Throwable caught) {
Info.display("Error", caught.getMessage()); // Info.display("Error", caught.getMessage());
//
//
} // }
//
@Override // @Override
public void onSuccess(Boolean result) { // public void onSuccess(Boolean result) {
if(result){ // if(result){
hiddenOverwrite.setValue("true"); // hiddenOverwrite.setValue("true");
submitForm(); // submitForm();
} // }
//
} // }
//
}); // });
} // }
//
//
private void updateItemSubmitForm(String itemId){ // private void updateItemSubmitForm(String itemId){
//
//
hiddenOverwrite.setValue("true"); // hiddenOverwrite.setValue("true");
submitForm(); // submitForm();
} // }
} //}
//

View File

@ -1,131 +1,131 @@
/** ///**
* // *
*/ // */
package org.gcube.portlets.user.workspace.client.uploader; //package org.gcube.portlets.user.workspace.client.uploader;
//
import org.gcube.portlets.user.workspace.client.ConstantsExplorer; //import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.model.FileModel; //import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.widgets.fileupload.client.view.UploadProgressDialog; //import org.gcube.portlets.widgets.fileupload.client.view.UploadProgressDialog;
//
import com.extjs.gxt.ui.client.widget.Info; //import com.extjs.gxt.ui.client.widget.Info;
import com.google.gwt.event.shared.HandlerManager; //import com.google.gwt.event.shared.HandlerManager;
//
//
/** ///**
* The Class FileUploader. // * The Class FileUploader.
* // *
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it // * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jul 15, 2015 // * Jul 15, 2015
*/ // */
public class FileUploader { //public class FileUploader {
//
//
private final UploadProgressDialog dlg; // private final UploadProgressDialog dlg;
private FileModel folderParent; // private FileModel folderParent;
private UpdateServiceUploader updateServiceUploader; // private UpdateServiceUploader updateServiceUploader;
private String uploadType; // private String uploadType;
//
/** // /**
* Instantiates a new file uploader. // * Instantiates a new file uploader.
* // *
* @param eventBus the event bus // * @param eventBus the event bus
* @param folderParent the folder parent // * @param folderParent the folder parent
* @param uploadType the upload type // * @param uploadType the upload type
*/ // */
public FileUploader(HandlerManager eventBus, FileModel folderParent, String uploadType) { // public FileUploader(HandlerManager eventBus, FileModel folderParent, String uploadType) {
this.folderParent = folderParent; // this.folderParent = folderParent;
this.uploadType = uploadType; // this.uploadType = uploadType;
//
/** // /**
* Prepare new servlet uploader // * Prepare new servlet uploader
*/ // */
updateServiceUploader = new UpdateServiceUploader(this, folderParent, uploadType); // updateServiceUploader = new UpdateServiceUploader(this, folderParent, uploadType);
//
String caption = "Upload "; // String caption = "Upload ";
if(uploadType.compareTo(ConstantsExplorer.ARCHIVE)==0) // if(uploadType.compareTo(ConstantsExplorer.ARCHIVE)==0)
caption+= " a zip Archive"; // caption+= " a zip Archive";
else if(uploadType.compareTo(ConstantsExplorer.FILE)==0) // else if(uploadType.compareTo(ConstantsExplorer.FILE)==0)
caption+= "File"; // caption+= "File";
//
caption+= " in: "+folderParent.getName(); // caption+= " in: "+folderParent.getName();
//
dlg = new UploadProgressDialog(caption, eventBus, true); // dlg = new UploadProgressDialog(caption, eventBus, true);
dlg.center(); // dlg.center();
dlg.show(); // dlg.show();
} // }
//
//
/** // /**
* Submit form. // * Submit form.
*/ // */
public void submitForm() { // public void submitForm() {
//
try { // try {
dlg.submitForm(); // dlg.submitForm();
} catch (Exception e) { // } catch (Exception e) {
Info.display("Error", "Sorry an error occurred on the server "+e.getLocalizedMessage() + ". Please try again later"); // Info.display("Error", "Sorry an error occurred on the server "+e.getLocalizedMessage() + ". Please try again later");
e.printStackTrace(); // e.printStackTrace();
} // }
} // }
//
/** // /**
* Overwrite. // * Overwrite.
*/ // */
public void overwrite(){ // public void overwrite(){
updateServiceUploader.setOverwrite(); // updateServiceUploader.setOverwrite();
} // }
//
/** // /**
* Submit servlet form. // * Submit servlet form.
* // *
* @param absolutePathOnServer the absolute path of the file uploaded on the server // * @param absolutePathOnServer the absolute path of the file uploaded on the server
*/ // */
public void submitServletForm(String absolutePathOnServer){ // public void submitServletForm(String absolutePathOnServer){
//
updateServiceUploader.setFileName(absolutePathOnServer); // updateServiceUploader.setFileName(absolutePathOnServer);
try { // try {
updateServiceUploader.submitForm(); // updateServiceUploader.submitForm();
} catch (Exception e) { // } catch (Exception e) {
dlg.showRegisteringResult(false); // dlg.showRegisteringResult(false);
} // }
} // }
//
/** // /**
* Gets the folder parent. // * Gets the folder parent.
* // *
* @return the folder parent // * @return the folder parent
*/ // */
public FileModel getFolderParent() { // public FileModel getFolderParent() {
return folderParent; // return folderParent;
} // }
//
/** // /**
* Gets the upload type. // * Gets the upload type.
* // *
* @return the upload type // * @return the upload type
*/ // */
public String getUploadType() { // public String getUploadType() {
return uploadType; // return uploadType;
} // }
//
/** // /**
* Show registering result. // * Show registering result.
* // *
* @param b the b // * @param b the b
* @param message the message // * @param message the message
*/ // */
public void showRegisteringResult(boolean b, String message) { // public void showRegisteringResult(boolean b, String message) {
this.dlg.showRegisteringResult(b, message); // this.dlg.showRegisteringResult(b, message);
} // }
//
//
/** // /**
* Show registering result. // * Show registering result.
* // *
* @param b the b // * @param b the b
*/ // */
public void showRegisteringResult(boolean b) { // public void showRegisteringResult(boolean b) {
this.dlg.showRegisteringResult(b); // this.dlg.showRegisteringResult(b);
} // }
//
} //}

View File

@ -1,172 +1,172 @@
package org.gcube.portlets.user.workspace.client.uploader; //package org.gcube.portlets.user.workspace.client.uploader;
//
//
import org.gcube.portlets.user.workspace.client.AppControllerExplorer; //import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer; //import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.event.CompletedFileUploadEvent; //import org.gcube.portlets.user.workspace.client.event.CompletedFileUploadEvent;
import org.gcube.portlets.user.workspace.client.model.FileModel; //import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.shared.HandlerResultMessage; //import org.gcube.portlets.user.workspace.shared.HandlerResultMessage;
//
import com.extjs.gxt.ui.client.widget.Window; //import com.extjs.gxt.ui.client.widget.Window;
import com.google.gwt.core.client.GWT; //import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Request; //import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder; //import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback; //import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException; //import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response; //import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL; //import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Timer; //import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.HTML; //import com.google.gwt.user.client.ui.HTML;
//
//
/** ///**
* // *
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it // * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Jan 20, 2014 // * @Jan 20, 2014
* // *
*/ // */
public class UpdateServiceUploader extends Window{ //public class UpdateServiceUploader extends Window{
//
private FileUploader fileUploaderDlg = null; // private FileUploader fileUploaderDlg = null;
private String fileName = ""; // private String fileName = "";
private boolean overwrite = false; // private boolean overwrite = false;
private FileModel parent; // private FileModel parent;
private String uploadType; // private String uploadType;
//
//
/** // /**
* // *
* @param fileUploader // * @param fileUploader
* @param parent // * @param parent
* @param uploadType // * @param uploadType
* // *
* By default overwrite paramameter is false // * By default overwrite paramameter is false
*/ // */
public UpdateServiceUploader(final FileUploader fileUploader, final FileModel parent, String uploadType){ // public UpdateServiceUploader(final FileUploader fileUploader, final FileModel parent, String uploadType){
//
this.fileUploaderDlg = fileUploader; // this.fileUploaderDlg = fileUploader;
this.parent = parent; // this.parent = parent;
this.uploadType = uploadType; // this.uploadType = uploadType;
} // }
//
public static String encodeUrlDelimiters(String s) { // public static String encodeUrlDelimiters(String s) {
if (s == null) { // if (s == null) {
return null; // return null;
} // }
s = s.replaceAll(";", "%2F"); // s = s.replaceAll(";", "%2F");
s = s.replaceAll("/", "%2F"); // s = s.replaceAll("/", "%2F");
s = s.replaceAll(":", "%3A"); // s = s.replaceAll(":", "%3A");
s = s.replaceAll("\\?", "%3F"); // s = s.replaceAll("\\?", "%3F");
s = s.replaceAll("&", "%26"); // s = s.replaceAll("&", "%26");
s = s.replaceAll("\\=", "%3D"); // s = s.replaceAll("\\=", "%3D");
s = s.replaceAll("\\+", "%2B"); // s = s.replaceAll("\\+", "%2B");
s = s.replaceAll("\\$", "%24"); // s = s.replaceAll("\\$", "%24");
s = s.replaceAll(",", "%2C"); // s = s.replaceAll(",", "%2C");
s = s.replaceAll("#", "%23"); // s = s.replaceAll("#", "%23");
return s; // return s;
} // }
//
//
public void submitForm() throws Exception{ // public void submitForm() throws Exception{
//
if(fileName == null || fileName.isEmpty()) // if(fileName == null || fileName.isEmpty())
throw new Exception("File absolute path on server is null"); // throw new Exception("File absolute path on server is null");
//
String parameters = ""; // String parameters = "";
//
String fileNameEscaped = URL.encodeQueryString(fileName); // String fileNameEscaped = URL.encodeQueryString(fileName);
parameters+=ConstantsExplorer.UPLOAD_FORM_ELEMENT+"="+fileNameEscaped+"&"; // parameters+=ConstantsExplorer.UPLOAD_FORM_ELEMENT+"="+fileNameEscaped+"&";
//
if(parent.getIdentifier()!=null && !parent.getIdentifier().isEmpty()) // if(parent.getIdentifier()!=null && !parent.getIdentifier().isEmpty())
parameters+=ConstantsExplorer.ID_FOLDER+"="+parent.getIdentifier()+"&"; // parameters+=ConstantsExplorer.ID_FOLDER+"="+parent.getIdentifier()+"&";
else // else
throw new Exception("Parent Folder ID parameter is null or empty"); // throw new Exception("Parent Folder ID parameter is null or empty");
//
if(uploadType!=null && !uploadType.isEmpty()) // if(uploadType!=null && !uploadType.isEmpty())
parameters+=ConstantsExplorer.UPLOAD_TYPE+"="+uploadType+"&"; // parameters+=ConstantsExplorer.UPLOAD_TYPE+"="+uploadType+"&";
else // else
throw new Exception("UploadType parameter is null or empty"); // throw new Exception("UploadType parameter is null or empty");
//
parameters+=ConstantsExplorer.IS_OVERWRITE+"="+overwrite; // parameters+=ConstantsExplorer.IS_OVERWRITE+"="+overwrite;
//
GWT.log("Encoded parameters are: "+parameters); // GWT.log("Encoded parameters are: "+parameters);
//
// String urlRequest = ConstantsExplorer.LOCAL_UPLOAD_WORKSPACE_SERVICE+"?"+parameters; //// String urlRequest = ConstantsExplorer.LOCAL_UPLOAD_WORKSPACE_SERVICE+"?"+parameters;
RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST, ConstantsExplorer.LOCAL_UPLOAD_WORKSPACE_SERVICE); // RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST, ConstantsExplorer.LOCAL_UPLOAD_WORKSPACE_SERVICE);
requestBuilder.setHeader("Content-Type", "application/x-www-form-urlencoded"); // requestBuilder.setHeader("Content-Type", "application/x-www-form-urlencoded");
//
try { // try {
//
requestBuilder.sendRequest(parameters, new RequestCallback() { // requestBuilder.sendRequest(parameters, new RequestCallback() {
//
@Override // @Override
public void onResponseReceived(Request request, Response response) { // public void onResponseReceived(Request request, Response response) {
//
// int status = response.getStatusCode(); //// int status = response.getStatusCode();
//
//expected <pre>200:Upload complete</pre> // //expected <pre>200:Upload complete</pre>
/*we strip tags added by webserver, // /*we strip tags added by webserver,
* // *
* Massi fix because webkit returns // * Massi fix because webkit returns
* <pre style="word-wrap: break-word; white-space: pre-wrap;">OK:File france_flag.png(0) imported correctly in /Workspace</pre> // * <pre style="word-wrap: break-word; white-space: pre-wrap;">OK:File france_flag.png(0) imported correctly in /Workspace</pre>
* // *
* TODO: recall it next time // * TODO: recall it next time
*/ // */
//String strippedResult = result.replace("<pre>", "").replace("</pre>", ""); //this won't work for webkit // //String strippedResult = result.replace("<pre>", "").replace("</pre>", ""); //this won't work for webkit
//replaced by new HTML(result).getText() // //replaced by new HTML(result).getText()
String strippedResult = new HTML(response.getText()).getText(); // String strippedResult = new HTML(response.getText()).getText();
//
final HandlerResultMessage resultMessage = HandlerResultMessage.parseResult(strippedResult); // final HandlerResultMessage resultMessage = HandlerResultMessage.parseResult(strippedResult);
//
switch (resultMessage.getStatus()) { // switch (resultMessage.getStatus()) {
case ERROR: // case ERROR:
GWT.log("Error during upload: "+resultMessage.getMessage()); // GWT.log("Error during upload: "+resultMessage.getMessage());
fileUploaderDlg.showRegisteringResult(false, resultMessage.getMessage()); // fileUploaderDlg.showRegisteringResult(false, resultMessage.getMessage());
break; // break;
case UNKNOWN: // case UNKNOWN:
GWT.log("Error during upload: "+resultMessage.getMessage()); // GWT.log("Error during upload: "+resultMessage.getMessage());
fileUploaderDlg.showRegisteringResult(false, "Error during upload: "+resultMessage.getMessage()); // fileUploaderDlg.showRegisteringResult(false, "Error during upload: "+resultMessage.getMessage());
break; // break;
case WARN: { // case WARN: {
GWT.log("Upload completed with warnings: "+resultMessage.getMessage()); // GWT.log("Upload completed with warnings: "+resultMessage.getMessage());
fileUploaderDlg.showRegisteringResult(false, "Upload completed with warnings: "+resultMessage.getMessage()); // fileUploaderDlg.showRegisteringResult(false, "Upload completed with warnings: "+resultMessage.getMessage());
break; // break;
} // }
case OK: { // case OK: {
Timer t = new Timer() { // Timer t = new Timer() {
public void run() { // public void run() {
AppControllerExplorer.getEventBus().fireEvent(new CompletedFileUploadEvent(parent, null)); // AppControllerExplorer.getEventBus().fireEvent(new CompletedFileUploadEvent(parent, null));
fileUploaderDlg.showRegisteringResult(true); // fileUploaderDlg.showRegisteringResult(true);
} // }
}; // };
//
t.schedule(250); // t.schedule(250);
} // }
} // }
} // }
//
@Override // @Override
public void onError(Request request, Throwable exception) { // public void onError(Request request, Throwable exception) {
fileUploaderDlg.showRegisteringResult(false); // fileUploaderDlg.showRegisteringResult(false);
return; // return;
} // }
}); // });
//
} catch (RequestException e) { // } catch (RequestException e) {
e.printStackTrace(); // e.printStackTrace();
} // }
} // }
//
public void setOverwrite(){ // public void setOverwrite(){
overwrite = true; // overwrite = true;
} // }
//
public String getFileName() { // public String getFileName() {
return fileName; // return fileName;
} // }
//
public void setFileName(String fileName) { // public void setFileName(String fileName) {
this.fileName = fileName; // this.fileName = fileName;
} // }
} //}
//

View File

@ -48,6 +48,7 @@ import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel.TreeNode; import com.extjs.gxt.ui.client.widget.treepanel.TreePanel.TreeNode;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
@ -316,8 +317,7 @@ public class AsyncTreePanel extends LayoutContainer {
@Override @Override
public void dragStart(DNDEvent event) { public void dragStart(DNDEvent event) {
System.out.println("***Event Start drag"); GWT.log("***Event Start drag");
FileModel sel = treePanel.getSelectionModel().getSelectedItem(); FileModel sel = treePanel.getSelectionModel().getSelectedItem();
if (sel != null && sel == treePanel.getStore().getRootItems().get(0)) { if (sel != null && sel == treePanel.getStore().getRootItems().get(0)) {
@ -333,11 +333,9 @@ public class AsyncTreePanel extends LayoutContainer {
} }
if(sel != null && sel.getName()!= null) if(sel != null && sel.getName()!= null)
System.out.println("Start drag of " + sel.getName()); GWT.log("Start drag of " + sel.getName());
super.dragStart(event); super.dragStart(event);
} }
}); });
@ -349,7 +347,6 @@ public class AsyncTreePanel extends LayoutContainer {
// super.onDragDrop(event); // super.onDragDrop(event);
// } // }
// @Override // @Override
// protected void showFeedback(DNDEvent event) { // protected void showFeedback(DNDEvent event) {
// // TODO Auto-generated method stub // // TODO Auto-generated method stub
@ -397,10 +394,8 @@ public class AsyncTreePanel extends LayoutContainer {
return false; return false;
} }
return true; return true;
} }
return false; return false;
// TreePanel<FileModel> source = (TreePanel<FileModel>) event.getDragSource().getComponent(); // TreePanel<FileModel> source = (TreePanel<FileModel>) event.getDragSource().getComponent();
@ -423,34 +418,22 @@ public class AsyncTreePanel extends LayoutContainer {
//Called when drop on folder //Called when drop on folder
@Override @Override
protected void handleAppendDrop(DNDEvent event, @SuppressWarnings("rawtypes") TreeNode item) { protected void handleAppendDrop(DNDEvent event, @SuppressWarnings("rawtypes") TreeNode item) {
super.handleAppendDrop(event, item); super.handleAppendDrop(event, item);
System.out.println("***Event move handleAppendDrop"); GWT.log("***Event move handleAppendDrop");
List<FileModel> listFileModel = getDragSource(event); List<FileModel> listFileModel = getDragSource(event);
if(listFileModel.size() == 1){ if(listFileModel.size() == 1){
FileModel destination = getDragDestination(item, DragType.APPEND); FileModel destination = getDragDestination(item, DragType.APPEND);
if(destination != null){ if(destination != null){
//REMOVE THIS COMMENT TODO //REMOVE THIS COMMENT TODO
eventBus.fireEvent(new MoveItemEvent(listFileModel.get(0), (FolderModel) destination)); eventBus.fireEvent(new MoveItemEvent(listFileModel.get(0), (FolderModel) destination));
System.out.println("Destination: " +destination.getName() + " id "+ destination.getIdentifier()); System.out.println("Destination: " +destination.getName() + " id "+ destination.getIdentifier());
} }
} }else{
else{
//MULTIDRAG //MULTIDRAG
} }
GWT.log("***End Event move handleAppendDrop");
// }
System.out.println("***End Event move handleAppendDrop");
} }
// @Override // @Override
@ -464,91 +447,58 @@ public class AsyncTreePanel extends LayoutContainer {
protected void handleInsertDrop(DNDEvent event, @SuppressWarnings("rawtypes") TreeNode item, int index) { protected void handleInsertDrop(DNDEvent event, @SuppressWarnings("rawtypes") TreeNode item, int index) {
super.handleInsertDrop(event, item, index); super.handleInsertDrop(event, item, index);
System.out.println("***Event move handleInsertDrop"); GWT.log("***Event move handleInsertDrop");
// System.out.println("on handleInsertDrop");
List<FileModel> listFileModel = getDragSource(event); List<FileModel> listFileModel = getDragSource(event);
if(listFileModel.size() == 1){ //one element dragged if(listFileModel.size() == 1){ //one element dragged
FileModel destination = getDragDestination(item, DragType.INSERT); FileModel destination = getDragDestination(item, DragType.INSERT);
if(destination != null){
if(destination != null){ GWT.log("Destination: " +destination.getName() + " id "+ destination.getIdentifier());
System.out.println("Destination: " +destination.getName() + " id "+ destination.getIdentifier());
//REMOVE THIS COMMENT TODO //REMOVE THIS COMMENT TODO
eventBus.fireEvent(new MoveItemEvent(listFileModel.get(0), (FolderModel) destination)); eventBus.fireEvent(new MoveItemEvent(listFileModel.get(0), (FolderModel) destination));
} }
} }else{
else{
//multi drag //multi drag
} }
GWT.log("***End Event move handleInsertDrop");
System.out.println("***End Event move handleInsertDrop");
} }
private FileModel getDragDestination(@SuppressWarnings("rawtypes") TreeNode item, DragType insertType){ private FileModel getDragDestination(@SuppressWarnings("rawtypes") TreeNode item, DragType insertType){
FileModel destination = null; FileModel destination = null;
if(item!=null){ if(item!=null){
destination = (FileModel) item.getModel(); destination = (FileModel) item.getModel();
if(destination != null){ if(destination != null){
if(insertType.equals(DragType.APPEND)) if(insertType.equals(DragType.APPEND))
return destination; //APPEND ON FOLDER return destination; //APPEND ON FOLDER
else else
return destination.getParentFileModel(); //INSERT BETWEEN FILE - RETUR FOLDER PARENT return destination.getParentFileModel(); //INSERT BETWEEN FILE - RETUR FOLDER PARENT
} }
} }
return destination; return destination;
} }
private List<FileModel> getDragSource(DNDEvent event){ private List<FileModel> getDragSource(DNDEvent event){
List<FileModel> listDraggedFile = new ArrayList<FileModel>(); List<FileModel> listDraggedFile = new ArrayList<FileModel>();
if(event.getData() != null){ if(event.getData() != null){
List<TreeStoreModel> listItemsSource = event.getData(); List<TreeStoreModel> listItemsSource = event.getData();
GWT.log("Number of move " + listItemsSource.size());
System.out.println("Number of move " + listItemsSource.size());
FileModel sourceFileModel = null; //for print FileModel sourceFileModel = null; //for print
for(TreeStoreModel itemSource : listItemsSource){ for(TreeStoreModel itemSource : listItemsSource){
listDraggedFile.add((FileModel) itemSource.getModel()); listDraggedFile.add((FileModel) itemSource.getModel());
sourceFileModel = (FileModel) itemSource.getModel(); sourceFileModel = (FileModel) itemSource.getModel();
if(sourceFileModel.getParentFileModel()!=null) if(sourceFileModel.getParentFileModel()!=null)
GWT.log("Source Name " + sourceFileModel.getName() + " id " + sourceFileModel.getIdentifier() + " end drag " + " Parent Name: " + sourceFileModel.getParentFileModel().getName() + "id " + sourceFileModel.getParentFileModel().getIdentifier());
System.out.println("Source Name " + sourceFileModel.getName() + " id " + sourceFileModel.getIdentifier() + " end drag " + " Parent Name: " + sourceFileModel.getParentFileModel().getName() + "id " + sourceFileModel.getParentFileModel().getIdentifier());
else else
System.out.println("Source Name " + sourceFileModel.getName() + " id " + sourceFileModel.getIdentifier() + " end drag "); GWT.log("Source Name " + sourceFileModel.getName() + " id " + sourceFileModel.getIdentifier() + " end drag ");
System.out.println("Child count: " + itemSource.getChildCount());
GWT.log("Child count: " + itemSource.getChildCount());
} }
} }
return listDraggedFile; return listDraggedFile;
} }
@ -558,8 +508,7 @@ public class AsyncTreePanel extends LayoutContainer {
//// System.out.println("in handle insert"); //// System.out.println("in handle insert");
// } // }
}; };
targetTreePanel.setAllowSelfAsSource(true); targetTreePanel.setAllowSelfAsSource(true);
targetTreePanel.setFeedback(Feedback.APPEND); targetTreePanel.setFeedback(Feedback.APPEND);
targetTreePanel.setScrollElementId(cp.getId()); targetTreePanel.setScrollElementId(cp.getId());
@ -648,7 +597,6 @@ public class AsyncTreePanel extends LayoutContainer {
if(be!=null) if(be!=null)
deselectItem(treePanel.getSelectionModel().getSelectedItem()); deselectItem(treePanel.getSelectionModel().getSelectedItem());
} }
}); });
@ -658,27 +606,19 @@ public class AsyncTreePanel extends LayoutContainer {
if(be != null && !isSubTreeLoaded){ if(be != null && !isSubTreeLoaded){
System.out.println("***Event beforeExpand Node"); GWT.log("***Event beforeExpand Node");
GWT.log("Expand Folder Model: " + be.getNode().getModel().get(ConstantsExplorer.NAME));
System.out.println("Expand Folder Model: " + be.getNode().getModel().get(ConstantsExplorer.NAME));
final FolderModel folder = (FolderModel) be.getNode().getModel(); final FolderModel folder = (FolderModel) be.getNode().getModel();
int numChildrenFolder = store.getChildCount(folder); int numChildrenFolder = store.getChildCount(folder);
if (folder!=null){ if (folder!=null){
eventBus.fireEvent(new ExpandFolderEvent(folder)); eventBus.fireEvent(new ExpandFolderEvent(folder));
if (numChildrenFolder==0) { if (numChildrenFolder==0) {
treePanel.mask(ConstantsExplorer.LOADING,ConstantsExplorer.LOADINGSTYLE); treePanel.mask(ConstantsExplorer.LOADING,ConstantsExplorer.LOADINGSTYLE);
loadTreeLevelFromWorkspace(folder); loadTreeLevelFromWorkspace(folder);
} }
} }
GWT.log("***End Event beforeExpand Node");
System.out.println("***End Event beforeExpand Node");
} }
} }
}); });
@ -688,20 +628,18 @@ public class AsyncTreePanel extends LayoutContainer {
public void handleEvent(TreePanelEvent<FileModel> be) { public void handleEvent(TreePanelEvent<FileModel> be) {
System.out.println("***Event Context Menu open"); GWT.log("***Event Context Menu open");
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
TreeNode node = be.getNode(); TreeNode node = be.getNode();
if(node!=null){ if(node!=null){
System.out.println("Menu on: " + node.getModel().get(ConstantsExplorer.NAME)); GWT.log("Menu on: " + node.getModel().get(ConstantsExplorer.NAME));
System.out.println("node "+ treePanel.findNode(be.getTarget())); GWT.log("node "+ treePanel.findNode(be.getTarget()));
}else{ }else{
System.out.println("Menu on: null"); GWT.log("Menu on: null");
System.out.println("node "+ treePanel.findNode(be.getTarget())); GWT.log("node "+ treePanel.findNode(be.getTarget()));
} }
List<FileModel> listSelected = treePanel.getSelectionModel().getSelectedItems(); List<FileModel> listSelected = treePanel.getSelectionModel().getSelectedItems();
// //
if (listSelected != null && listSelected.size() > 0) { if (listSelected != null && listSelected.size() > 0) {
@ -744,6 +682,32 @@ public class AsyncTreePanel extends LayoutContainer {
reloadTreeLevelAndExpandFolder(folder, expandFolder); reloadTreeLevelAndExpandFolder(folder, expandFolder);
} }
public void addItemIdAndExpandFolder(final FileModel parent, String itemId, boolean expandFolder){
treePanel.mask(ConstantsExplorer.VALIDATINGOPERATION,ConstantsExplorer.LOADINGSTYLE);
AppControllerExplorer.rpcWorkspaceService.getItemForFileTree(itemId, new AsyncCallback<FileModel>(){
@Override
public void onFailure(Throwable caught) {
if(caught instanceof SessionExpiredException){
GWT.log("Session expired");
eventBus.fireEvent(new SessionExpiredEvent());
return;
}
treePanel.unmask();
new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " getting item from workspace." +ConstantsExplorer.TRY_AGAIN, null);
removeAllAndRecoveryRoot();
}
@Override
public void onSuccess(FileModel result) {
GWT.log("GetItemForFileTree adding: "+result);
treePanel.unmask();
store.add(parent,result,false);
}
});
}
private void reloadTreeLevelAndExpandFolder(final FolderModel folder, final boolean expandFolder){ private void reloadTreeLevelAndExpandFolder(final FolderModel folder, final boolean expandFolder){
@ -758,26 +722,25 @@ public class AsyncTreePanel extends LayoutContainer {
eventBus.fireEvent(new SessionExpiredEvent()); eventBus.fireEvent(new SessionExpiredEvent());
return; return;
} }
treePanel.unmask();
new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " getting folder children items." +ConstantsExplorer.TRY_AGAIN, null); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " getting folder children items." +ConstantsExplorer.TRY_AGAIN, null);
removeAllAndRecoveryRoot(); removeAllAndRecoveryRoot();
} }
@Override @Override
public void onSuccess(List<FileModel> result) { public void onSuccess(List<FileModel> result) {
treePanel.unmask(); treePanel.unmask();
store.removeAll(folder); store.removeAll(folder);
addChildrenToFolder(folder.getIdentifier(), result); // addChildrenToFolder(folder.getIdentifier(), result);
addChildrenToFolder(folder, result);
setExpandTreeLevel(folder, expandFolder); setExpandTreeLevel(folder, expandFolder);
} }
}); });
} }
private void loadTreeLevelFromWorkspace(final FolderModel folder){ private void loadTreeLevelFromWorkspace(final FolderModel folder){
System.out.println("Start RPC - getFolderChildren"); GWT.log("Start RPC - getFolderChildren");
// Log.info("Start RPC - getFolderChildren"); // Log.info("Start RPC - getFolderChildren");
// final CountTimer count = new CountTimer(1000); // final CountTimer count = new CountTimer(1000);
@ -794,22 +757,16 @@ public class AsyncTreePanel extends LayoutContainer {
new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " getting folder children items. " +ConstantsExplorer.TRY_AGAIN, null); new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " getting folder children items. " +ConstantsExplorer.TRY_AGAIN, null);
removeAllAndRecoveryRoot(); removeAllAndRecoveryRoot();
} }
@Override @Override
public void onSuccess(List<FileModel> result) { public void onSuccess(List<FileModel> result) {
// Log.info("End RPC - getFolderChildren time " + count.getTime());
if(treePanel.isMasked()) if(treePanel.isMasked())
treePanel.unmask(); treePanel.unmask();
store.removeAll(folder); store.removeAll(folder);
addChildrenToFolder(folder, result); addChildrenToFolder(folder, result);
GWT.log("End RPC - getFolderChildren");
System.out.println("End RPC - getFolderChildren");
} }
}); });
@ -895,23 +852,17 @@ public class AsyncTreePanel extends LayoutContainer {
public FileModel getFileModelByIdentifier(String identifier){ public FileModel getFileModelByIdentifier(String identifier){
return treePanel.getStore().findModel(ConstantsExplorer.IDENTIFIER, identifier); return treePanel.getStore().findModel(ConstantsExplorer.IDENTIFIER, identifier);
} }
public int getChildrenNumber(String identifier){ public int getChildrenNumber(String identifier){
// FileModel fileModel = treePanel.getStore().findModel(ConstantsExplorer.IDENTIFIER, identifier);
FolderModel fileModel = (FolderModel) getFileModelByIdentifier(identifier); FolderModel fileModel = (FolderModel) getFileModelByIdentifier(identifier);
return getChildrenNumber(fileModel); return getChildrenNumber(fileModel);
} }
private int getChildrenNumber(FolderModel folder){ private int getChildrenNumber(FolderModel folder){
return store.getChildCount(folder); return store.getChildCount(folder);
} }
@ -924,7 +875,6 @@ public class AsyncTreePanel extends LayoutContainer {
FileModel fileTarget = getFileModelByIdentifier(identifier); FileModel fileTarget = getFileModelByIdentifier(identifier);
if(fileTarget!=null){ if(fileTarget!=null){
return deleteItem(fileTarget); return deleteItem(fileTarget);
} }
@ -1020,8 +970,7 @@ public class AsyncTreePanel extends LayoutContainer {
* @param bool expand true/false * @param bool expand true/false
*/ */
private void setExpandTreeLevel(FileModel parent, boolean bool) { private void setExpandTreeLevel(FileModel parent, boolean bool) {
treePanel.setExpanded(parent, bool); treePanel.setExpanded(parent, bool);
} }
/** /**

View File

@ -536,6 +536,32 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
} }
} }
/* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getItemForFileTree(java.lang.String)
*/
@Override
public FileModel getItemForFileTree(String itemId) throws Exception {
try {
if(itemId == null)
throw new Exception(IDENTIFIER_IS_NULL);
Workspace workspace = getWorkspace();
WorkspaceItem wsItem = workspace.getItem(itemId);
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
//BUILD PARENT
WorkspaceFolder folderParent = wsItem.getParent(); //get parent
FileModel wsFolderParent = builder.buildGXTFileModelItem(folderParent, null);
//BUILD ITEM
return builder.buildGXTFileModelItem(wsItem, wsFolderParent);
} catch (Exception e) {
workspaceLogger.error("Error in server during item retrieving, getItemForFileGrid", e);
String error = ConstantsExplorer.SERVER_ERROR + RETRIEVING_ITEM_EITHER_ITEM_DOESN_T_EXIST;
throw new Exception(error);
}
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#moveItem(java.lang.String, java.lang.String) * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#moveItem(java.lang.String, java.lang.String)
*/ */