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