#633 Ticket: fixed download.
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@77275 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
9e5ed0bbdf
commit
dbba9a624b
|
@ -95,6 +95,8 @@ 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.util.PollingWorkspace;
|
import org.gcube.portlets.user.workspace.client.util.PollingWorkspace;
|
||||||
|
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.view.BasicDNDExample;
|
import org.gcube.portlets.user.workspace.client.view.BasicDNDExample;
|
||||||
import org.gcube.portlets.user.workspace.client.view.ExplorerPanel;
|
import org.gcube.portlets.user.workspace.client.view.ExplorerPanel;
|
||||||
import org.gcube.portlets.user.workspace.client.view.sharing.DialogShareFolder;
|
import org.gcube.portlets.user.workspace.client.view.sharing.DialogShareFolder;
|
||||||
|
@ -109,9 +111,9 @@ import org.gcube.portlets.user.workspace.client.view.windows.DialogText;
|
||||||
import org.gcube.portlets.user.workspace.client.view.windows.DialogUpload;
|
import org.gcube.portlets.user.workspace.client.view.windows.DialogUpload;
|
||||||
import org.gcube.portlets.user.workspace.client.view.windows.DialogWebDavUrl;
|
import org.gcube.portlets.user.workspace.client.view.windows.DialogWebDavUrl;
|
||||||
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplay;
|
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplay;
|
||||||
|
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.MessageBoxInfo;
|
|
||||||
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.WindowOpenUrl;
|
||||||
import org.gcube.portlets.user.workspace.client.view.windows.accounting.WindowAccountingInfo;
|
import org.gcube.portlets.user.workspace.client.view.windows.accounting.WindowAccountingInfo;
|
||||||
|
@ -132,6 +134,7 @@ import com.extjs.gxt.ui.client.widget.Info;
|
||||||
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.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.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.HasWidgets;
|
import com.google.gwt.user.client.ui.HasWidgets;
|
||||||
|
@ -167,6 +170,10 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
||||||
}
|
}
|
||||||
|
|
||||||
public GWTWorkspaceServiceAsync getRpcWorkspaceService() {
|
public GWTWorkspaceServiceAsync getRpcWorkspaceService() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return rpcWorkspaceService;
|
return rpcWorkspaceService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,7 +338,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
||||||
|
|
||||||
}
|
}
|
||||||
else{//ITEM IS NOT SHAREABLE
|
else{//ITEM IS NOT SHAREABLE
|
||||||
new MessageBoxInfo("Info", "The selected item is not shareable because an ancestor item is already shared");
|
new InfoDisplayMessage("Info", "The selected item is not shareable because an ancestor item is already shared");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -764,14 +771,53 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
||||||
public void onFileDownloadEvent(FileDownloadEvent fileDownloadEvent) {
|
public void onFileDownloadEvent(FileDownloadEvent fileDownloadEvent) {
|
||||||
|
|
||||||
if(fileDownloadEvent.getItemIdentifier()!=null){
|
if(fileDownloadEvent.getItemIdentifier()!=null){
|
||||||
if(fileDownloadEvent.getDownloadType().equals(DownloadType.SHOW)){
|
// if(fileDownloadEvent.getDownloadType().equals(DownloadType.SHOW)){
|
||||||
if(fileDownloadEvent.getItemName()!= null)
|
// if(fileDownloadEvent.getItemName()!= null)
|
||||||
com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier()+"&viewContent=true", fileDownloadEvent.getItemName(), "");
|
// com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier()+"&viewContent=true", fileDownloadEvent.getItemName(), "");
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier(), "_self", "");
|
// com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier(), "_self", "");
|
||||||
|
//
|
||||||
|
|
||||||
|
if(fileDownloadEvent.getDownloadType().equals(DownloadType.SHOW)){
|
||||||
|
if(fileDownloadEvent.getItemName()!= null){
|
||||||
|
|
||||||
|
try {
|
||||||
|
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET, ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE, "id="+fileDownloadEvent.getItemIdentifier()+"&viewContent=true", "_self", downloadHandlerCallback);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
explorerPanel.getAsycTreePanel().unmask();
|
||||||
|
new MessageBoxAlert("Error", e.getMessage(), null);
|
||||||
|
explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier()+"&viewContent=true", fileDownloadEvent.getItemName(), "");
|
||||||
|
} else{
|
||||||
|
|
||||||
|
try {
|
||||||
|
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE, "id="+fileDownloadEvent.getItemIdentifier(), "_self", downloadHandlerCallback);
|
||||||
|
} catch (Exception e) {
|
||||||
|
explorerPanel.getAsycTreePanel().unmask();
|
||||||
|
new MessageBoxAlert("Error", e.getMessage(), null);
|
||||||
|
explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?id="+fileDownloadEvent.getItemIdentifier(), "_self", "");
|
||||||
|
|
||||||
|
// if(fileDownloadEvent.getDownloadType().equals(DownloadType.SHOW)){
|
||||||
|
// if(fileDownloadEvent.getItemName()!= null){
|
||||||
|
//
|
||||||
|
// new DialogDownload(fileDownloadEvent.getItemName(), "_blank", fileDownloadEvent.getItemIdentifier(), true).submitForm();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }else{
|
||||||
|
//
|
||||||
|
// new DialogDownload("", "_self", fileDownloadEvent.getItemIdentifier(), false).submitForm();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FileModel file = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(fileDownloadEvent.getItemIdentifier());
|
FileModel file = explorerPanel.getAsycTreePanel().getFileModelByIdentifier(fileDownloadEvent.getItemIdentifier());
|
||||||
|
|
||||||
if(file!=null){ //FILE CAN NOT LOADED IN TREE
|
if(file!=null){ //FILE CAN NOT LOADED IN TREE
|
||||||
|
@ -1033,7 +1079,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
explorerPanel.getAsycTreePanel().unmask();
|
explorerPanel.getAsycTreePanel().unmask();
|
||||||
new MessageBoxAlert("Error", caught.getMessage()+".", null);
|
new MessageBoxAlert("Error", caught.getMessage(), null);
|
||||||
explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot();
|
explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1945,6 +1991,20 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AsyncCallback<WindowOpenParameter> downloadHandlerCallback = new AsyncCallback<WindowOpenParameter>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
explorerPanel.getAsycTreePanel().unmask();
|
||||||
|
new MessageBoxAlert("Error", caught.getMessage(), null);
|
||||||
|
explorerPanel.getAsycTreePanel().removeAllAndRecoveryRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(WindowOpenParameter windowOpenParam) {
|
||||||
|
com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?"+windowOpenParam.getParameters(), windowOpenParam.getOption(), "");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
/**
|
/**
|
||||||
|
@ -1969,4 +2029,5 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
||||||
// deselecteCurrentSelection();
|
// deselecteCurrentSelection();
|
||||||
explorerPanel.getAsycTreePanel().setSearch(isSearch);
|
explorerPanel.getAsycTreePanel().setSearch(isSearch);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,8 +189,14 @@ public class ConstantsExplorer {
|
||||||
public static final String GET_SEARCH_PARAMETER ="search";
|
public static final String GET_SEARCH_PARAMETER ="search";
|
||||||
public static final String GET_ITEMID_PARAMETER ="itemid";
|
public static final String GET_ITEMID_PARAMETER ="itemid";
|
||||||
public static final String GET_OPEARATION_PARAMETER ="operation";
|
public static final String GET_OPEARATION_PARAMETER ="operation";
|
||||||
public static enum WsPortletInitOperation {sharelink, gotofolder}; //DEFAULT OPERATION IS GOTOFOLDER
|
public static enum WsPortletInitOperation {sharelink, gotofolder}; //INIT OPERATIONS
|
||||||
|
//DEFAULT INIT OPERATION
|
||||||
|
public static final WsPortletInitOperation DEFAULT_OPERATION = WsPortletInitOperation.gotofolder;
|
||||||
|
|
||||||
public enum ViewSwitchType {Tree, SmartFolder, Messages};
|
public enum ViewSwitchType {Tree, SmartFolder, Messages};
|
||||||
|
|
||||||
|
//SERLVET ERROR
|
||||||
|
public static final String ERROR_ITEM_DOES_NOT_EXIST = "Item does not exist. It may have been deleted by another user";
|
||||||
|
public static final String VALIDATEITEM = "validateitem";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspace.client.util;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
|
||||||
|
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplayMessage;
|
||||||
|
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
|
||||||
|
|
||||||
|
import com.google.gwt.http.client.Request;
|
||||||
|
import com.google.gwt.http.client.RequestBuilder;
|
||||||
|
import com.google.gwt.http.client.RequestCallback;
|
||||||
|
import com.google.gwt.http.client.RequestException;
|
||||||
|
import com.google.gwt.http.client.Response;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Jun 24, 2013
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RequestBuilderWorkspaceValidateItem {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
protected static final int TIME_INFO_DISPLAY = 1500; //milliseconds
|
||||||
|
private AsyncCallback<WindowOpenParameter> callback;
|
||||||
|
private String parameters;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param method
|
||||||
|
* @param servletName the name of the servlet that must be called
|
||||||
|
* @param params param=value¶m1=value1&...
|
||||||
|
* @param name the name of the window (e.g. "_blank")
|
||||||
|
* @param callback
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public RequestBuilderWorkspaceValidateItem(RequestBuilder.Method method, String servletName, final String params, final String name, final AsyncCallback<WindowOpenParameter> callback) throws Exception{
|
||||||
|
|
||||||
|
this.callback = callback;
|
||||||
|
|
||||||
|
this.parameters = params;
|
||||||
|
|
||||||
|
if(servletName==null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
servletName = servletName.isEmpty()?"/":servletName;
|
||||||
|
|
||||||
|
if(!servletName.contains("/"))
|
||||||
|
servletName+="/"+servletName;
|
||||||
|
|
||||||
|
if(parameters==null)
|
||||||
|
parameters = ConstantsExplorer.VALIDATEITEM+"=true";
|
||||||
|
else
|
||||||
|
parameters +="&"+ConstantsExplorer.VALIDATEITEM+"=true";
|
||||||
|
|
||||||
|
RequestBuilder requestBuilder = new RequestBuilder(method, servletName+"?"+parameters);
|
||||||
|
new InfoDisplayMessage("Download", "Requesting...", TIME_INFO_DISPLAY);
|
||||||
|
try {
|
||||||
|
|
||||||
|
requestBuilder.sendRequest(params, new RequestCallback() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponseReceived(Request request, Response response) {
|
||||||
|
|
||||||
|
int status = response.getStatusCode();
|
||||||
|
|
||||||
|
// System.out.println("status code is "+status);
|
||||||
|
|
||||||
|
if(!(status==200) && !(status==202)){ //NOT IS STATUS SC_ACCEPTED
|
||||||
|
handleError("Sorry, an error occurred on retriving item, "+response.getText()); //ERROR STATUS
|
||||||
|
|
||||||
|
}else{ //OK STATUS
|
||||||
|
|
||||||
|
if(callback!=null)
|
||||||
|
callback.onSuccess(new WindowOpenParameter(name, "", params));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Request request, Throwable exception) {
|
||||||
|
|
||||||
|
// System.out.println("exception message is "+exception.getMessage());
|
||||||
|
handleError(exception.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (RequestException e) {
|
||||||
|
throw new Exception("An error occured on send request");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleError(String message){
|
||||||
|
|
||||||
|
if(callback!=null)
|
||||||
|
callback.onFailure(new Exception(message));
|
||||||
|
else
|
||||||
|
new MessageBoxAlert("Error", message, null);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspace.client.util;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Jun 25, 2013
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WindowOpenParameter {
|
||||||
|
|
||||||
|
String option;
|
||||||
|
String parameters;
|
||||||
|
String itemName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public WindowOpenParameter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param option the name of the window (e.g. "_blank")
|
||||||
|
* @param itemName
|
||||||
|
* @param parameters param=value¶m1=value1&...
|
||||||
|
*/
|
||||||
|
public WindowOpenParameter(String option, String itemName, String parameters) {
|
||||||
|
super();
|
||||||
|
this.option = option;
|
||||||
|
this.itemName = itemName;
|
||||||
|
this.parameters = parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getParameters() {
|
||||||
|
return parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParameters(String parameters) {
|
||||||
|
this.parameters = parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOption() {
|
||||||
|
return option;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOption(String option) {
|
||||||
|
this.option = option;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getItemName() {
|
||||||
|
return itemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setItemName(String itemName) {
|
||||||
|
this.itemName = itemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ 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 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;
|
||||||
|
@ -95,6 +96,7 @@ public class DialogUpload extends Window {
|
||||||
|
|
||||||
isStatusCompleted = true;
|
isStatusCompleted = true;
|
||||||
|
|
||||||
|
|
||||||
// Log.trace("onSubmitComplete");
|
// Log.trace("onSubmitComplete");
|
||||||
String result = event.getResultHtml();
|
String result = event.getResultHtml();
|
||||||
|
|
||||||
|
@ -125,7 +127,7 @@ public class DialogUpload extends Window {
|
||||||
// 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 UploadResultMessage resultMessage = UploadResultMessage.parseResult(strippedResult);
|
final HandlerResultMessage resultMessage = HandlerResultMessage.parseResult(strippedResult);
|
||||||
|
|
||||||
switch (resultMessage.getStatus()) {
|
switch (resultMessage.getStatus()) {
|
||||||
case ERROR:
|
case ERROR:
|
||||||
|
@ -142,7 +144,7 @@ public class DialogUpload extends Window {
|
||||||
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 MessageBoxInfo("Upload completed successfully", resultMessage.getMessage(), null);
|
new InfoDisplayMessage("Upload completed successfully", resultMessage.getMessage());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -268,7 +270,7 @@ public class DialogUpload extends Window {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
Info.display("Error", "Sorry an error occurred on the server "+caught.getMessage() + ". Please try again later");
|
Info.display("Error", caught.getMessage());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package org.gcube.portlets.user.workspace.client.view.windows;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Jun 25, 2013
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class InfoDisplayMessage extends InfoDisplay{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param title
|
||||||
|
* @param text
|
||||||
|
*/
|
||||||
|
public InfoDisplayMessage(String title, String text) {
|
||||||
|
super(title, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param title
|
||||||
|
* @param text
|
||||||
|
*/
|
||||||
|
public InfoDisplayMessage(String title, String text, int milliseconds) {
|
||||||
|
super(title, text, milliseconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,22 +0,0 @@
|
||||||
package org.gcube.portlets.user.workspace.client.view.windows;
|
|
||||||
|
|
||||||
import com.extjs.gxt.ui.client.event.Listener;
|
|
||||||
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
|
|
||||||
import com.extjs.gxt.ui.client.widget.MessageBox;
|
|
||||||
|
|
||||||
public class MessageBoxInfo {
|
|
||||||
|
|
||||||
private MessageBox box = null;
|
|
||||||
|
|
||||||
public MessageBoxInfo(String title, String msg) {
|
|
||||||
InfoDisplay.display(title, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageBoxInfo(String title, String msg, Listener<MessageBoxEvent> listener){
|
|
||||||
InfoDisplay.display(title, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageBox getMessageBoxConfirm(){
|
|
||||||
return box;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,595 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspace.server;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.StringReader;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.gcube.common.core.scope.GCUBEScope;
|
||||||
|
import org.gcube.common.core.utils.logging.GCUBELog;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.HomeLibrary;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorException;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceFolder;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceItem;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.ExternalResourceBrokenLinkException;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.ExternalResourcePluginNotFoundException;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.ItemNotFoundException;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.FolderItem;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.AquaMapsItem;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ExternalFile;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ExternalImage;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ExternalResourceLink;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ExternalUrl;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.Query;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.Report;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ReportTemplate;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Document;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Metadata;
|
||||||
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ts.TimeSeries;
|
||||||
|
import org.gcube.portlets.user.homelibrary.util.Extensions;
|
||||||
|
import org.gcube.portlets.user.homelibrary.util.MimeTypeUtil;
|
||||||
|
import org.gcube.portlets.user.homelibrary.util.zip.ZipUtil;
|
||||||
|
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
||||||
|
import org.gcube.portlets.user.workspace.shared.HandlerResultMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Federico De Faveri defaveri@isti.cnr.it
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class CopyOfDownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -8423345575690165644L;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void init() throws ServletException {
|
||||||
|
super.init();
|
||||||
|
System.out.println("Workspace DownloadServlet ready.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
||||||
|
|
||||||
|
String itemId = req.getParameter("id");
|
||||||
|
boolean viewContent = (req.getParameter("viewContent")==null)?false:req.getParameter("viewContent").equals("true");
|
||||||
|
|
||||||
|
System.out.println("FILE REQUEST "+itemId);
|
||||||
|
|
||||||
|
Workspace wa = null;
|
||||||
|
try {
|
||||||
|
wa = WsUtil.getWorkspace(req.getSession());
|
||||||
|
} catch (Exception e) {
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during workspace retrieving");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wa == null) {
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error, no workspace in session");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GCUBELog logger = WsUtil.getLogger(wa);
|
||||||
|
|
||||||
|
WorkspaceItem item;
|
||||||
|
try {
|
||||||
|
item = wa.getItem(itemId);
|
||||||
|
|
||||||
|
|
||||||
|
try{
|
||||||
|
//ACCOUNTING
|
||||||
|
item.markAsRead(true);
|
||||||
|
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Requested item "+itemId+" has trow an internal error exception",e);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (ItemNotFoundException e) {
|
||||||
|
logger.error("Requested item "+itemId+" not found",e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error, no items found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (item.getType()) {
|
||||||
|
|
||||||
|
case SHARED_FOLDER:
|
||||||
|
case FOLDER:{
|
||||||
|
try {
|
||||||
|
File tmpZip = ZipUtil.zipFolder((WorkspaceFolder) item);
|
||||||
|
resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" );
|
||||||
|
resp.setContentType("application/zip");
|
||||||
|
resp.setContentLength((int) tmpZip.length());
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
// IOUtils.copy(new FileInputStream(tmpZip), resp.getOutputStream());
|
||||||
|
|
||||||
|
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||||
|
IOUtils.copy(fileTmpZip, resp.getOutputStream());
|
||||||
|
fileTmpZip.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
tmpZip.delete();
|
||||||
|
return;
|
||||||
|
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during folder compression "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during folder compression: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case FOLDER_ITEM:{
|
||||||
|
FolderItem folderItem = (FolderItem) item;
|
||||||
|
|
||||||
|
switch (folderItem.getFolderItemType()) {
|
||||||
|
case REPORT_TEMPLATE:{
|
||||||
|
try{
|
||||||
|
ReportTemplate reportTemplate = (ReportTemplate)folderItem;
|
||||||
|
String itemName = item.getName() + "." + Extensions.REPORT_TEMPLATE.getValue();
|
||||||
|
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
|
||||||
|
resp.setContentType("application/zip");
|
||||||
|
resp.setContentLength((int) reportTemplate.getLength());
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
// IOUtils.copy(reportTemplate.getData(), resp.getOutputStream());
|
||||||
|
InputStream is = reportTemplate.getData();
|
||||||
|
IOUtils.copy(is, resp.getOutputStream());
|
||||||
|
is.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
case REPORT:{
|
||||||
|
try{
|
||||||
|
Report report = (Report)folderItem;
|
||||||
|
|
||||||
|
String itemName = item.getName() + "." + Extensions.REPORT.getValue();
|
||||||
|
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
|
||||||
|
resp.setContentType("application/zip");
|
||||||
|
resp.setContentLength((int) report.getLength());
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
// IOUtils.copy(report.getData(), resp.getOutputStream());
|
||||||
|
InputStream is = report.getData();
|
||||||
|
IOUtils.copy(is, resp.getOutputStream());
|
||||||
|
is.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
case EXTERNAL_PDF_FILE:
|
||||||
|
case EXTERNAL_FILE:{
|
||||||
|
|
||||||
|
InputStream is = null;
|
||||||
|
OutputStream out = null;
|
||||||
|
try{
|
||||||
|
ExternalFile externalFile = (ExternalFile)folderItem;
|
||||||
|
|
||||||
|
String mimeType = externalFile.getMimeType();
|
||||||
|
|
||||||
|
logger.trace("EXTERNAL_FILE DOWNLOAD FOR "+externalFile.getId());
|
||||||
|
//COMMENTED 26/03/2013
|
||||||
|
// String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
||||||
|
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
//COMMENTED 26/03/2013
|
||||||
|
// resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + "\"" );
|
||||||
|
resp.setContentType(mimeType);
|
||||||
|
|
||||||
|
resp.setContentLength((int) externalFile.getLength());
|
||||||
|
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
// IOUtils.copy(externalFile.getData(), resp.getOutputStream());
|
||||||
|
is = externalFile.getData();
|
||||||
|
out = resp.getOutputStream();
|
||||||
|
IOUtils.copy(is, out);
|
||||||
|
|
||||||
|
is.close();
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
case EXTERNAL_IMAGE:{
|
||||||
|
|
||||||
|
try{
|
||||||
|
ExternalImage externalImage = (ExternalImage)folderItem;
|
||||||
|
|
||||||
|
String mimeType = externalImage.getMimeType();
|
||||||
|
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
||||||
|
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
resp.setContentType(externalImage.getMimeType());
|
||||||
|
|
||||||
|
resp.setContentLength((int) externalImage.getLength());
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
// IOUtils.copy(externalImage.getData(), resp.getOutputStream());
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
InputStream is = externalImage.getData();
|
||||||
|
IOUtils.copy(is, out);
|
||||||
|
is.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
return;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during item compression "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case EXTERNAL_URL:{
|
||||||
|
try{
|
||||||
|
ExternalUrl externalUrl = (ExternalUrl)folderItem;
|
||||||
|
|
||||||
|
//ADDED 20/06/2013
|
||||||
|
String itemName = MimeTypeUtil.getNameWithExtension(externalUrl.getName(), "text/uri-list");
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
|
||||||
|
// //ADDED 20/06/2013
|
||||||
|
// String itemName = externalUrl.getName() + ".uri";
|
||||||
|
// String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
// resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
|
||||||
|
resp.setContentType("text/uri-list");
|
||||||
|
resp.setContentLength((int) externalUrl.getLength());
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
StringReader sr = new StringReader(externalUrl.getUrl());
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
IOUtils.copy(sr, out);
|
||||||
|
|
||||||
|
sr.close();
|
||||||
|
out.close();
|
||||||
|
return;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during item compression "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case QUERY:{
|
||||||
|
|
||||||
|
Query query = (Query)folderItem;
|
||||||
|
resp.setContentType("text/plain");
|
||||||
|
try {
|
||||||
|
resp.setContentLength((int) query.getLength());
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error getting item lenght "+query,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
StringReader sr = new StringReader(query.getQuery());
|
||||||
|
IOUtils.copy(sr, out);
|
||||||
|
sr.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
case TIME_SERIES:{
|
||||||
|
try{
|
||||||
|
TimeSeries ts = (TimeSeries)folderItem;
|
||||||
|
File tmpZip = ZipUtil.zipTimeSeries(ts);
|
||||||
|
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + ".zip\"" );
|
||||||
|
|
||||||
|
resp.setContentType("application/zip");
|
||||||
|
resp.setContentLength((int) tmpZip.length());
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||||
|
IOUtils.copy(fileTmpZip, out);
|
||||||
|
fileTmpZip.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
tmpZip.delete();
|
||||||
|
return;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during item compression "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case AQUAMAPS_ITEM:{
|
||||||
|
try{
|
||||||
|
AquaMapsItem aquamaps = (AquaMapsItem)folderItem;
|
||||||
|
File tmpZip = ZipUtil.zipAquaMapsItem(aquamaps);
|
||||||
|
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + ".zip\"" );
|
||||||
|
|
||||||
|
resp.setContentType("application/zip");
|
||||||
|
resp.setContentLength((int) tmpZip.length());
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||||
|
IOUtils.copy(fileTmpZip, out);
|
||||||
|
fileTmpZip.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
tmpZip.delete();
|
||||||
|
return;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during item compression "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case IMAGE_DOCUMENT:
|
||||||
|
case PDF_DOCUMENT:
|
||||||
|
case URL_DOCUMENT:
|
||||||
|
case DOCUMENT:{
|
||||||
|
try{
|
||||||
|
Document document = (Document)item;
|
||||||
|
|
||||||
|
|
||||||
|
if (!viewContent){
|
||||||
|
File tmpZip = ZipUtil.zipDocument(document);
|
||||||
|
|
||||||
|
resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" );
|
||||||
|
resp.setContentType("application/zip");
|
||||||
|
resp.setContentLength((int) tmpZip.length());
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||||
|
IOUtils.copy(fileTmpZip, out);
|
||||||
|
fileTmpZip.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
tmpZip.delete();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
String mimeType = document.getMimeType();
|
||||||
|
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
||||||
|
resp.setHeader( "Content-Disposition", "inline; filename=\"" + itemName + "\"" );
|
||||||
|
resp.setContentType(document.getMimeType());
|
||||||
|
resp.setContentLength((int) document.getLength());
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
InputStream is = document.getData();
|
||||||
|
IOUtils.copy(is, out);
|
||||||
|
is.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during item compression "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case METADATA:{
|
||||||
|
try{
|
||||||
|
Metadata document = (Metadata)item;
|
||||||
|
|
||||||
|
resp.setContentType("text/html");
|
||||||
|
resp.setContentLength((int) document.getLength());
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
StringReader sr = new StringReader(document.getData());
|
||||||
|
IOUtils.copy(sr, out);
|
||||||
|
sr.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during item compression "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
case EXTERNAL_RESOURCE_LINK:{ //IT'S SAME OF EXTERNAL FILE
|
||||||
|
|
||||||
|
try{
|
||||||
|
ExternalResourceLink externalResourceLink = (ExternalResourceLink) folderItem;
|
||||||
|
OutputStream out = resp.getOutputStream();
|
||||||
|
|
||||||
|
try {
|
||||||
|
String mimeType = externalResourceLink.getMimeType();
|
||||||
|
if(mimeType == null){
|
||||||
|
System.out.println("mimeType is null... recover from MimeTypeUtil by BufferedInputStream");
|
||||||
|
|
||||||
|
BufferedInputStream bufferedStream = new BufferedInputStream(externalResourceLink.getData(), (int) externalResourceLink.getLength());
|
||||||
|
mimeType = MimeTypeUtil.getMimeType(bufferedStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("setContentType with mimeType " + mimeType);
|
||||||
|
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
||||||
|
|
||||||
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
resp.setContentType(mimeType);
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("resoure link lenght: " +externalResourceLink.getLength());
|
||||||
|
|
||||||
|
resp.setContentLength((int) externalResourceLink.getLength());
|
||||||
|
|
||||||
|
if(externalResourceLink.getData()!=null){
|
||||||
|
System.out.println("Input stream is not null");
|
||||||
|
|
||||||
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
|
InputStream eris = externalResourceLink.getData();
|
||||||
|
IOUtils.copy(eris, resp.getOutputStream());
|
||||||
|
eris.close();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
logger.error("Input stream is null "+itemId);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during inpunt stream retrieving, it's null");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (ExternalResourceBrokenLinkException e) {
|
||||||
|
logger.error("Error during link resource retrieving "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during link retrieving, link broken!: "+e.getMessage());
|
||||||
|
} catch (ExternalResourcePluginNotFoundException e) {
|
||||||
|
logger.error("Error during link resource retrieving "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during link retrieving, plugin not found!: "+e.getMessage());
|
||||||
|
}
|
||||||
|
out.close();
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||||
|
return;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Error during resource retrieving "+itemId,e);
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during resource retrieving, plugin not found!: "+e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving");
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendError(HttpServletResponse response, String message) throws IOException
|
||||||
|
{
|
||||||
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
HandlerResultMessage resultMessage = HandlerResultMessage.errorResult(message);
|
||||||
|
response.getWriter().write(resultMessage.toString());
|
||||||
|
response.flushBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendMessage(HttpServletResponse response, String message) throws IOException
|
||||||
|
{
|
||||||
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
HandlerResultMessage resultMessage = HandlerResultMessage.okResult(message);
|
||||||
|
response.getWriter().write(resultMessage.toString());
|
||||||
|
response.flushBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendWarnMessage(HttpServletResponse response, String message) throws IOException
|
||||||
|
{
|
||||||
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
HandlerResultMessage resultMessage = HandlerResultMessage.warnResult(message);
|
||||||
|
response.getWriter().write(resultMessage.toString());
|
||||||
|
response.flushBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
InputStream is = null;
|
||||||
|
|
||||||
|
System.out.println("start");
|
||||||
|
|
||||||
|
// is = GCUBEStorage.getRemoteFile("/Home/test.user/Workspace3d660604-03ef-49eb-89c3-4c73f8a47914");
|
||||||
|
|
||||||
|
try{
|
||||||
|
|
||||||
|
Workspace ws = HomeLibrary.getHomeManagerFactory().getHomeManager().getHome("francesco.mangiacrapa", GCUBEScope.getScope("/gcube/devsec")).getWorkspace();
|
||||||
|
//
|
||||||
|
// ExternalFile f = (ExternalFile) ws.getItem("907ce8ef-5c0b-4601-83ac-215d1f432f6b");
|
||||||
|
|
||||||
|
WorkspaceItem wsItem = ws.getItem("907ce8ef-5c0b-4601-83ac-215d1f432f6b");
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("metadata info recovered from HL: [ID: "+wsItem.getId() +", name: "+wsItem.getName()+"]");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FileOutputStream out = new FileOutputStream(new File("/tmp/bla"));
|
||||||
|
// byte[] buffer = new byte[1024];
|
||||||
|
// int len;
|
||||||
|
// while ((len = is.read(buffer)) != -1) {
|
||||||
|
// out.write(buffer, 0, len);
|
||||||
|
// }
|
||||||
|
|
||||||
|
System.out.println("cast as external file");
|
||||||
|
ExternalFile f = (ExternalFile) wsItem;
|
||||||
|
|
||||||
|
is = f.getData();
|
||||||
|
|
||||||
|
IOUtils.copy(is, out);
|
||||||
|
is.close();
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
// System.out.println("Sleeping");
|
||||||
|
// Thread.sleep(20000);
|
||||||
|
// System.out.println("Alive");
|
||||||
|
|
||||||
|
System.out.println("end");
|
||||||
|
}catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,11 +40,12 @@ import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ReportTem
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Document;
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Document;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Metadata;
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Metadata;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ts.TimeSeries;
|
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ts.TimeSeries;
|
||||||
import org.gcube.portlets.user.homelibrary.jcr.repository.external.GCUBEStorage;
|
|
||||||
import org.gcube.portlets.user.homelibrary.util.Extensions;
|
import org.gcube.portlets.user.homelibrary.util.Extensions;
|
||||||
import org.gcube.portlets.user.homelibrary.util.MimeTypeUtil;
|
import org.gcube.portlets.user.homelibrary.util.MimeTypeUtil;
|
||||||
import org.gcube.portlets.user.homelibrary.util.zip.ZipUtil;
|
import org.gcube.portlets.user.homelibrary.util.zip.ZipUtil;
|
||||||
|
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
|
||||||
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
||||||
|
import org.gcube.portlets.user.workspace.shared.HandlerResultMessage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Federico De Faveri defaveri@isti.cnr.it
|
* @author Federico De Faveri defaveri@isti.cnr.it
|
||||||
|
@ -54,6 +55,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
private static final long serialVersionUID = -8423345575690165644L;
|
private static final long serialVersionUID = -8423345575690165644L;
|
||||||
|
|
||||||
|
protected static GCUBELog logger = new GCUBELog(DownloadServlet.class);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +65,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
@Override
|
@Override
|
||||||
public void init() throws ServletException {
|
public void init() throws ServletException {
|
||||||
super.init();
|
super.init();
|
||||||
System.out.println("Workspace DownloadServlet ready.");
|
logger.trace("Workspace DownloadServlet ready.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,29 +75,42 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
String itemId = req.getParameter("id");
|
String itemId = req.getParameter("id");
|
||||||
boolean viewContent = (req.getParameter("viewContent")==null)?false:req.getParameter("viewContent").equals("true");
|
boolean viewContent = (req.getParameter("viewContent")==null)?false:req.getParameter("viewContent").equals("true");
|
||||||
|
boolean isValidItem = (req.getParameter(ConstantsExplorer.VALIDATEITEM)==null)?false:req.getParameter(ConstantsExplorer.VALIDATEITEM).equals("true");
|
||||||
System.out.println("FILE REQUEST "+itemId);
|
|
||||||
|
logger.trace("Input Params [id: "+itemId + ", viewContent: "+viewContent+", "+ConstantsExplorer.VALIDATEITEM +":" +isValidItem+"]");
|
||||||
|
|
||||||
|
if(itemId==null || itemId.isEmpty()){
|
||||||
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Item id is null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.trace("FILE DOWNLOAD REQUEST "+itemId);
|
||||||
|
|
||||||
Workspace wa = null;
|
Workspace wa = null;
|
||||||
try {
|
try {
|
||||||
wa = WsUtil.getWorkspace(req.getSession());
|
wa = WsUtil.getWorkspace(req.getSession());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during workspace retrieving");
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during workspace retrieving");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wa == null) {
|
if (wa == null) {
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error, no workspace in session");
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error, no workspace in session");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GCUBELog logger = WsUtil.getLogger(wa);
|
|
||||||
|
|
||||||
WorkspaceItem item;
|
WorkspaceItem item;
|
||||||
try {
|
try {
|
||||||
|
|
||||||
item = wa.getItem(itemId);
|
item = wa.getItem(itemId);
|
||||||
|
|
||||||
|
if(isValidItem){ //ADDED 25/06/2013
|
||||||
|
String message = HttpServletResponse.SC_ACCEPTED+ ": The resource is available";
|
||||||
|
sendMessageContinue(resp, message);
|
||||||
|
logger.trace("response return: "+message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
//ACCOUNTING
|
//ACCOUNTING
|
||||||
item.markAsRead(true);
|
item.markAsRead(true);
|
||||||
|
@ -106,7 +121,10 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
} catch (ItemNotFoundException e) {
|
} catch (ItemNotFoundException e) {
|
||||||
logger.error("Requested item "+itemId+" not found",e);
|
logger.error("Requested item "+itemId+" not found",e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error, no items found");
|
// sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error, no items found");
|
||||||
|
|
||||||
|
sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": "+ConstantsExplorer.ERROR_ITEM_DOES_NOT_EXIST);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +152,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during folder compression "+itemId,e);
|
logger.error("Error during folder compression "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during folder compression: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during folder compression: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,7 +181,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
out.close();
|
out.close();
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during external item sending "+itemId,e);
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -191,7 +209,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
out.close();
|
out.close();
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during external item sending "+itemId,e);
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -231,7 +249,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during external item sending "+itemId,e);
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -262,7 +280,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
return;
|
return;
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during item compression "+itemId,e);
|
logger.error("Error during item compression "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -293,7 +311,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
return;
|
return;
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during item compression "+itemId,e);
|
logger.error("Error during item compression "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,7 +323,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
resp.setContentLength((int) query.getLength());
|
resp.setContentLength((int) query.getLength());
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error getting item lenght "+query,e);
|
logger.error("Error getting item lenght "+query,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,7 +359,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
return;
|
return;
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during item compression "+itemId,e);
|
logger.error("Error during item compression "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -367,7 +385,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
return;
|
return;
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during item compression "+itemId,e);
|
logger.error("Error during item compression "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -413,7 +431,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
return;
|
return;
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during item compression "+itemId,e);
|
logger.error("Error during item compression "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -436,7 +454,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
return;
|
return;
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during item compression "+itemId,e);
|
logger.error("Error during item compression "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -452,13 +470,13 @@ public class DownloadServlet extends HttpServlet{
|
||||||
try {
|
try {
|
||||||
String mimeType = externalResourceLink.getMimeType();
|
String mimeType = externalResourceLink.getMimeType();
|
||||||
if(mimeType == null){
|
if(mimeType == null){
|
||||||
System.out.println("mimeType is null... recover from MimeTypeUtil by BufferedInputStream");
|
logger.trace("mimeType is null... recover from MimeTypeUtil by BufferedInputStream");
|
||||||
|
|
||||||
BufferedInputStream bufferedStream = new BufferedInputStream(externalResourceLink.getData(), (int) externalResourceLink.getLength());
|
BufferedInputStream bufferedStream = new BufferedInputStream(externalResourceLink.getData(), (int) externalResourceLink.getLength());
|
||||||
mimeType = MimeTypeUtil.getMimeType(bufferedStream);
|
mimeType = MimeTypeUtil.getMimeType(bufferedStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("setContentType with mimeType " + mimeType);
|
logger.trace("setContentType with mimeType " + mimeType);
|
||||||
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
||||||
|
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
|
@ -466,12 +484,12 @@ public class DownloadServlet extends HttpServlet{
|
||||||
resp.setContentType(mimeType);
|
resp.setContentType(mimeType);
|
||||||
|
|
||||||
|
|
||||||
System.out.println("resoure link lenght: " +externalResourceLink.getLength());
|
logger.trace("resoure link lenght: " +externalResourceLink.getLength());
|
||||||
|
|
||||||
resp.setContentLength((int) externalResourceLink.getLength());
|
resp.setContentLength((int) externalResourceLink.getLength());
|
||||||
|
|
||||||
if(externalResourceLink.getData()!=null){
|
if(externalResourceLink.getData()!=null){
|
||||||
System.out.println("Input stream is not null");
|
logger.trace("Input stream is not null");
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
InputStream eris = externalResourceLink.getData();
|
InputStream eris = externalResourceLink.getData();
|
||||||
|
@ -480,24 +498,24 @@ public class DownloadServlet extends HttpServlet{
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
logger.error("Input stream is null "+itemId);
|
logger.error("Input stream is null "+itemId);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during inpunt stream retrieving, it's null");
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during inpunt stream retrieving, it's null");
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (ExternalResourceBrokenLinkException e) {
|
} catch (ExternalResourceBrokenLinkException e) {
|
||||||
logger.error("Error during link resource retrieving "+itemId,e);
|
logger.error("Error during link resource retrieving "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during link retrieving, link broken!: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during link retrieving, link broken!: "+e.getMessage());
|
||||||
} catch (ExternalResourcePluginNotFoundException e) {
|
} catch (ExternalResourcePluginNotFoundException e) {
|
||||||
logger.error("Error during link resource retrieving "+itemId,e);
|
logger.error("Error during link resource retrieving "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during link retrieving, plugin not found!: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during link retrieving, plugin not found!: "+e.getMessage());
|
||||||
}
|
}
|
||||||
out.close();
|
out.close();
|
||||||
} catch (InternalErrorException e) {
|
} catch (InternalErrorException e) {
|
||||||
logger.error("Error during external item sending "+itemId,e);
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
return;
|
return;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during resource retrieving "+itemId,e);
|
logger.error("Error during resource retrieving "+itemId,e);
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during resource retrieving, plugin not found!: "+e.getMessage());
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during resource retrieving, plugin not found!: "+e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -512,16 +530,48 @@ public class DownloadServlet extends HttpServlet{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving");
|
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void sendError(HttpServletResponse response, String message) throws IOException
|
||||||
|
{
|
||||||
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
HandlerResultMessage resultMessage = HandlerResultMessage.errorResult(message);
|
||||||
|
response.getWriter().write(resultMessage.toString());
|
||||||
|
response.flushBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendMessage(HttpServletResponse response, String message) throws IOException
|
||||||
|
{
|
||||||
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
HandlerResultMessage resultMessage = HandlerResultMessage.okResult(message);
|
||||||
|
response.getWriter().write(resultMessage.toString());
|
||||||
|
response.flushBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendMessageContinue(HttpServletResponse response, String message) throws IOException
|
||||||
|
{
|
||||||
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
HandlerResultMessage resultMessage = HandlerResultMessage.okResult(message);
|
||||||
|
response.getWriter().write(resultMessage.toString());
|
||||||
|
response.flushBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendWarnMessage(HttpServletResponse response, String message) throws IOException
|
||||||
|
{
|
||||||
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
HandlerResultMessage resultMessage = HandlerResultMessage.warnResult(message);
|
||||||
|
response.getWriter().write(resultMessage.toString());
|
||||||
|
response.flushBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
|
|
||||||
System.out.println("start");
|
logger.trace("start");
|
||||||
|
|
||||||
// is = GCUBEStorage.getRemoteFile("/Home/test.user/Workspace3d660604-03ef-49eb-89c3-4c73f8a47914");
|
// is = GCUBEStorage.getRemoteFile("/Home/test.user/Workspace3d660604-03ef-49eb-89c3-4c73f8a47914");
|
||||||
|
|
||||||
|
@ -534,7 +584,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
WorkspaceItem wsItem = ws.getItem("907ce8ef-5c0b-4601-83ac-215d1f432f6b");
|
WorkspaceItem wsItem = ws.getItem("907ce8ef-5c0b-4601-83ac-215d1f432f6b");
|
||||||
|
|
||||||
|
|
||||||
System.out.println("metadata info recovered from HL: [ID: "+wsItem.getId() +", name: "+wsItem.getName()+"]");
|
logger.trace("metadata info recovered from HL: [ID: "+wsItem.getId() +", name: "+wsItem.getName()+"]");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -546,7 +596,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
// out.write(buffer, 0, len);
|
// out.write(buffer, 0, len);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
System.out.println("cast as external file");
|
logger.trace("cast as external file");
|
||||||
ExternalFile f = (ExternalFile) wsItem;
|
ExternalFile f = (ExternalFile) wsItem;
|
||||||
|
|
||||||
is = f.getData();
|
is = f.getData();
|
||||||
|
@ -556,11 +606,11 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
out.close();
|
out.close();
|
||||||
|
|
||||||
// System.out.println("Sleeping");
|
// logger.trace("Sleeping");
|
||||||
// Thread.sleep(20000);
|
// Thread.sleep(20000);
|
||||||
// System.out.println("Alive");
|
// logger.trace("Alive");
|
||||||
|
|
||||||
System.out.println("end");
|
logger.trace("end");
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,6 +66,11 @@ import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||||
*/
|
*/
|
||||||
public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWTWorkspaceService{
|
public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWTWorkspaceService{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 2828885661214875589L;
|
private static final long serialVersionUID = 2828885661214875589L;
|
||||||
|
|
||||||
public static final String LAST_OPEN_FOLDER_ATTRIBUTE = "WORKSPACE.LAST_OPEN_FOLDER";
|
public static final String LAST_OPEN_FOLDER_ATTRIBUTE = "WORKSPACE.LAST_OPEN_FOLDER";
|
||||||
|
@ -610,6 +615,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
String error = "An error occurred on deleting item. "+e.getMessage();
|
String error = "An error occurred on deleting item. "+e.getMessage();
|
||||||
throw new Exception(error);
|
throw new Exception(error);
|
||||||
|
|
||||||
|
}catch (ItemNotFoundException e) {
|
||||||
|
String error = "An error occurred on deleting item. "+ConstantsExplorer.ERROR_ITEM_DOES_NOT_EXIST;
|
||||||
|
workspaceLogger.error(error, e);
|
||||||
|
throw new Exception(error);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
workspaceLogger.error("Error in server Item remove", e);
|
workspaceLogger.error("Error in server Item remove", e);
|
||||||
String error = ConstantsExplorer.SERVER_ERROR +" deleting item. "+e.getMessage();
|
String error = ConstantsExplorer.SERVER_ERROR +" deleting item. "+e.getMessage();
|
||||||
|
@ -656,12 +665,17 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} catch (ItemAlreadyExistException e) {
|
} catch (ItemAlreadyExistException e) {
|
||||||
String error = "An error occurred on copying item, " +e.getMessage();
|
String error = "An error occurred on renaming item, " +e.getMessage();
|
||||||
|
workspaceLogger.error(error, e);
|
||||||
|
throw new Exception(error);
|
||||||
|
}catch (ItemNotFoundException e2) {
|
||||||
|
String error = "An error occurred on renaming item. "+ConstantsExplorer.ERROR_ITEM_DOES_NOT_EXIST;
|
||||||
|
workspaceLogger.error(error, e2);
|
||||||
throw new Exception(error);
|
throw new Exception(error);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
workspaceLogger.error(ConstantsExplorer.SERVER_ERROR + " renaming item. "+ConstantsExplorer.TRY_AGAIN, e);
|
String error = ConstantsExplorer.SERVER_ERROR + " renaming item. "+ConstantsExplorer.TRY_AGAIN;
|
||||||
throw new Exception(e.getMessage());
|
workspaceLogger.error(error, e);
|
||||||
|
throw new Exception(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,9 @@ import org.gcube.portlets.user.homelibrary.util.Extensions;
|
||||||
import org.gcube.portlets.user.homelibrary.util.MimeTypeUtil;
|
import org.gcube.portlets.user.homelibrary.util.MimeTypeUtil;
|
||||||
import org.gcube.portlets.user.homelibrary.util.WorkspaceUtil;
|
import org.gcube.portlets.user.homelibrary.util.WorkspaceUtil;
|
||||||
import org.gcube.portlets.user.homelibrary.util.zip.UnzipUtil;
|
import org.gcube.portlets.user.homelibrary.util.zip.UnzipUtil;
|
||||||
import org.gcube.portlets.user.workspace.client.view.windows.UploadResultMessage;
|
|
||||||
import org.gcube.portlets.user.workspace.server.notifications.NotificationsUtil;
|
import org.gcube.portlets.user.workspace.server.notifications.NotificationsUtil;
|
||||||
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
||||||
|
import org.gcube.portlets.user.workspace.shared.HandlerResultMessage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Federico De Faveri defaveri@isti.cnr.it
|
* @author Federico De Faveri defaveri@isti.cnr.it
|
||||||
|
@ -332,7 +332,7 @@ public class UploadServlet extends HttpServlet {
|
||||||
protected void sendError(HttpServletResponse response, String message) throws IOException
|
protected void sendError(HttpServletResponse response, String message) throws IOException
|
||||||
{
|
{
|
||||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
UploadResultMessage resultMessage = UploadResultMessage.errorResult(message);
|
HandlerResultMessage resultMessage = HandlerResultMessage.errorResult(message);
|
||||||
response.getWriter().write(resultMessage.toString());
|
response.getWriter().write(resultMessage.toString());
|
||||||
response.flushBuffer();
|
response.flushBuffer();
|
||||||
}
|
}
|
||||||
|
@ -340,7 +340,7 @@ public class UploadServlet extends HttpServlet {
|
||||||
protected void sendMessage(HttpServletResponse response, String message) throws IOException
|
protected void sendMessage(HttpServletResponse response, String message) throws IOException
|
||||||
{
|
{
|
||||||
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
UploadResultMessage resultMessage = UploadResultMessage.okResult(message);
|
HandlerResultMessage resultMessage = HandlerResultMessage.okResult(message);
|
||||||
response.getWriter().write(resultMessage.toString());
|
response.getWriter().write(resultMessage.toString());
|
||||||
response.flushBuffer();
|
response.flushBuffer();
|
||||||
}
|
}
|
||||||
|
@ -348,7 +348,7 @@ public class UploadServlet extends HttpServlet {
|
||||||
protected void sendWarnMessage(HttpServletResponse response, String message) throws IOException
|
protected void sendWarnMessage(HttpServletResponse response, String message) throws IOException
|
||||||
{
|
{
|
||||||
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
UploadResultMessage resultMessage = UploadResultMessage.warnResult(message);
|
HandlerResultMessage resultMessage = HandlerResultMessage.warnResult(message);
|
||||||
response.getWriter().write(resultMessage.toString());
|
response.getWriter().write(resultMessage.toString());
|
||||||
response.flushBuffer();
|
response.flushBuffer();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,14 +9,11 @@ import java.util.List;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.gcube.portlets.user.homelibrary.home.exceptions.HomeNotFoundException;
|
|
||||||
import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorException;
|
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;
|
import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceFolder;
|
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceFolder;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceItem;
|
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceItem;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceItemType;
|
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceItemType;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceSharedFolder;
|
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceSharedFolder;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
|
||||||
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
|
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
|
||||||
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
|
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
|
||||||
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
import org.gcube.portlets.user.workspace.server.util.WsUtil;
|
||||||
|
|
|
@ -1,14 +1,22 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package org.gcube.portlets.user.workspace.client.view.windows;
|
package org.gcube.portlets.user.workspace.shared;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Federico De Faveri defaveri@isti.cnr.it
|
* @author Federico De Faveri defaveri@isti.cnr.it
|
||||||
*
|
* modified by Francesco Mangiacrapa
|
||||||
*/
|
*/
|
||||||
public class UploadResultMessage {
|
public class HandlerResultMessage implements Serializable{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -4607236625671465107L;
|
||||||
|
|
||||||
|
|
||||||
public enum Status {
|
public enum Status {
|
||||||
/**
|
/**
|
||||||
* If an error occurs.
|
* If an error occurs.
|
||||||
|
@ -29,19 +37,19 @@ public class UploadResultMessage {
|
||||||
UNKNOWN;
|
UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UploadResultMessage errorResult(String message){
|
public static HandlerResultMessage errorResult(String message){
|
||||||
return new UploadResultMessage(Status.ERROR, message);
|
return new HandlerResultMessage(Status.ERROR, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UploadResultMessage okResult(String message){
|
public static HandlerResultMessage okResult(String message){
|
||||||
return new UploadResultMessage(Status.OK, message);
|
return new HandlerResultMessage(Status.OK, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UploadResultMessage warnResult(String message){
|
public static HandlerResultMessage warnResult(String message){
|
||||||
return new UploadResultMessage(Status.WARN, message);
|
return new HandlerResultMessage(Status.WARN, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UploadResultMessage parseResult(String result){
|
public static HandlerResultMessage parseResult(String result){
|
||||||
//expected 200:Upload complete
|
//expected 200:Upload complete
|
||||||
String statusToken = null;
|
String statusToken = null;
|
||||||
String messageToken = null;
|
String messageToken = null;
|
||||||
|
@ -61,7 +69,7 @@ public class UploadResultMessage {
|
||||||
|
|
||||||
String message = (messageToken!=null)?messageToken:"";
|
String message = (messageToken!=null)?messageToken:"";
|
||||||
|
|
||||||
return new UploadResultMessage(status, message);
|
return new HandlerResultMessage(status, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,7 +81,7 @@ public class UploadResultMessage {
|
||||||
* @param status the status.
|
* @param status the status.
|
||||||
* @param message the message.
|
* @param message the message.
|
||||||
*/
|
*/
|
||||||
public UploadResultMessage(Status status, String message) {
|
public HandlerResultMessage(Status status, String message) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
Loading…
Reference in New Issue