1452: Implement a GUI for StatMan Algorithms Importer

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

Added save project and add/delete resource

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@121805 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2015-12-11 17:02:03 +00:00
parent 6c76f94416
commit 88bf092513
34 changed files with 959 additions and 138 deletions

View File

@ -3,11 +3,12 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client;
import java.util.Date; import java.util.Date;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.DeleteItemEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.DeleteItemEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveReadyEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.StatAlgoImporterRibbonEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.StatAlgoImporterRibbonEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.project.ProjectManager; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.project.ProjectManager;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType;
@ -18,6 +19,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsG
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession; import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
@ -198,11 +200,25 @@ public class StatAlgoImporterController {
} }
}); });
eventBus.addHandler(InputSaveReadyEvent.TYPE,
new InputSaveReadyEvent.InputSaveReadyEventHandler() {
@Override
public void onInputSaveReady(InputSaveReadyEvent event) {
Log.debug("Catch InputSaveReadyEvent");
doInputSaveReadyCommand(event);
}
});
eventBus.fireEvent(new UIStateEvent(UIStateType.START)); eventBus.fireEvent(new UIStateEvent(UIStateType.START));
} }
private void doMenuCommand(StatAlgoImporterRibbonEvent event) { private void doMenuCommand(StatAlgoImporterRibbonEvent event) {
StatAlgoImporterRibbonType eventType = event.getStatRunnerRibbonType(); StatAlgoImporterRibbonType eventType = event.getStatRunnerRibbonType();
if (eventType == null) { if (eventType == null) {
@ -216,10 +232,13 @@ public class StatAlgoImporterController {
break; break;
case PROJECT_OPEN: case PROJECT_OPEN:
break; break;
case ALGORITHM_CREATE: case PROJECT_SAVE:
projectSaveRequest();
break; break;
case ALGORITHM_IMPORT: case RESOURCE_ADD:
showCodeUploadDialog(); showAddResourceDialog();
break;
case SOFTWARE_CREATE:
break; break;
case HELP: case HELP:
break; break;
@ -228,11 +247,28 @@ public class StatAlgoImporterController {
} }
} }
protected void doInputSaveReadyCommand(InputSaveReadyEvent event) {
pm.saveProject(event.getInputVariables());
}
private void projectSaveRequest() {
InputSaveEvent inputSaveEvent=new InputSaveEvent();
eventBus.fireEvent(inputSaveEvent);
Log.debug("ProjectSaveRequest: "+inputSaveEvent);
}
private void showCreateProjectDialog() { private void showCreateProjectDialog() {
pm.createProject(); pm.createProject();
} }
private void showAddResourceDialog() {
pm.addResource();
}
private void doMainCodeSetCommand(MainCodeSetEvent event) { private void doMainCodeSetCommand(MainCodeSetEvent event) {
ItemDescription itemDescription = event.getItemDescription(); ItemDescription itemDescription = event.getItemDescription();
@ -250,6 +286,7 @@ public class StatAlgoImporterController {
} }
@SuppressWarnings("unused")
private void showCodeUploadDialog() { private void showCodeUploadDialog() {
CodeUploadDialog codeUploadDialog = new CodeUploadDialog(eventBus); CodeUploadDialog codeUploadDialog = new CodeUploadDialog(eventBus);
codeUploadDialog.show(); codeUploadDialog.show();

View File

@ -1,6 +1,6 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event; package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.GwtEvent;

View File

@ -0,0 +1,59 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
/**
* Input Save Event
*
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class InputSaveEvent extends
GwtEvent<InputSaveEvent.InputSaveEventHandler> {
public static Type<InputSaveEventHandler> TYPE = new Type<InputSaveEventHandler>();
public interface InputSaveEventHandler extends EventHandler {
void onInputSave(InputSaveEvent event);
}
public interface HasInputSaveEventHandler extends HasHandlers {
public HandlerRegistration addInputSaveEventHandler(
InputSaveEventHandler handler);
}
public InputSaveEvent() {
}
@Override
protected void dispatch(InputSaveEventHandler handler) {
handler.onInputSave(this);
}
@Override
public Type<InputSaveEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<InputSaveEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, InputSaveEvent inputSaveEvent) {
source.fireEvent(inputSaveEvent);
}
@Override
public String toString() {
return "InputSaveEvent []";
}
}

View File

@ -0,0 +1,65 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
/**
* Input Save Ready Event
*
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class InputSaveReadyEvent extends
GwtEvent<InputSaveReadyEvent.InputSaveReadyEventHandler> {
public static Type<InputSaveReadyEventHandler> TYPE = new Type<InputSaveReadyEventHandler>();
private InputVariables inputVariables;
public interface InputSaveReadyEventHandler extends EventHandler {
void onInputSaveReady(InputSaveReadyEvent event);
}
public interface HasInputSaveReadyEventHandler extends HasHandlers {
public HandlerRegistration addInputSaveReadyEventHandler(
InputSaveReadyEventHandler handler);
}
public InputSaveReadyEvent(InputVariables inputVariables) {
this.inputVariables = inputVariables;
}
@Override
protected void dispatch(InputSaveReadyEventHandler handler) {
handler.onInputSaveReady(this);
}
@Override
public Type<InputSaveReadyEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<InputSaveReadyEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source,
InputSaveReadyEvent inputSaveReadyEvent) {
source.fireEvent(inputSaveReadyEvent);
}
public InputVariables getInputVariables() {
return inputVariables;
}
@Override
public String toString() {
return "InputSaveReadyEvent [inputVariables=" + inputVariables + "]";
}
}

View File

@ -1,6 +1,6 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event; package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.GwtEvent;

View File

@ -1,6 +1,7 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event; package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.GwtEvent;
@ -20,7 +21,7 @@ public class ProjectStatusEvent extends
public static Type<ProjectStatusEventHandler> TYPE = new Type<ProjectStatusEventHandler>(); public static Type<ProjectStatusEventHandler> TYPE = new Type<ProjectStatusEventHandler>();
private ProjectStatusEventType projectStatusEventType; private ProjectStatusEventType projectStatusEventType;
private String projectFolderId; private ItemDescription projectFolder;
public interface ProjectStatusEventHandler extends EventHandler { public interface ProjectStatusEventHandler extends EventHandler {
void onProjectStatus(ProjectStatusEvent event); void onProjectStatus(ProjectStatusEvent event);
@ -31,9 +32,9 @@ public class ProjectStatusEvent extends
ProjectStatusEventHandler handler); ProjectStatusEventHandler handler);
} }
public ProjectStatusEvent(ProjectStatusEventType projectStatusEventType,String projectFolderId) { public ProjectStatusEvent(ProjectStatusEventType projectStatusEventType,ItemDescription projectFolder) {
this.projectStatusEventType = projectStatusEventType; this.projectStatusEventType = projectStatusEventType;
this.projectFolderId = projectFolderId; this.projectFolder = projectFolder;
} }
@Override @Override
@ -59,16 +60,18 @@ public class ProjectStatusEvent extends
return projectStatusEventType; return projectStatusEventType;
} }
public String getProjectFolderId() { public ItemDescription getProjectFolder() {
return projectFolderId; return projectFolder;
} }
@Override @Override
public String toString() { public String toString() {
return "ProjectStatusEvent [projectStatusEventType=" return "ProjectStatusEvent [projectStatusEventType="
+ projectStatusEventType + ", projectFolderId=" + projectStatusEventType + ", projectFolder=" + projectFolder
+ projectFolderId + "]"; + "]";
} }
} }

View File

@ -1,13 +1,18 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.project; package org.gcube.portlets.user.statisticalalgorithmsimporter.client.project;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener; import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog; import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog;
import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.Item;
@ -26,7 +31,7 @@ import com.sencha.gxt.core.client.dom.XDOM;
*/ */
public class ProjectManager { public class ProjectManager {
private EventBus eventBus; private EventBus eventBus;
private String projectFolderId; private ItemDescription projectFolder;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private ItemDescription mainCodeDescription; private ItemDescription mainCodeDescription;
@ -56,6 +61,9 @@ public class ProjectManager {
@Override @Override
public void onFailed(Throwable throwable) { public void onFailed(Throwable throwable) {
Log.error("Error in create project: "
+ throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace(); throwable.printStackTrace();
} }
@ -75,11 +83,103 @@ public class ProjectManager {
wselectDialog.show(); wselectDialog.show();
} }
public void addResource() {
List<ItemType> selectableTypes = new ArrayList<ItemType>();
selectableTypes.add(ItemType.EXTERNAL_FILE);
selectableTypes.add(ItemType.EXTERNAL_IMAGE);
selectableTypes.add(ItemType.IMAGE_DOCUMENT);
selectableTypes.add(ItemType.DOCUMENT);
selectableTypes.add(ItemType.PDF_DOCUMENT);
List<ItemType> showableTypes = new ArrayList<ItemType>();
showableTypes.addAll(Arrays.asList(ItemType.values()));
WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog(
"Select a Resource", selectableTypes, showableTypes);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
if (item.getType() == ItemType.EXTERNAL_FILE
|| item.getType() == ItemType.EXTERNAL_IMAGE
|| item.getType() == ItemType.IMAGE_DOCUMENT
|| item.getType() == ItemType.DOCUMENT
|| item.getType() == ItemType.PDF_DOCUMENT) {
String filename = item.getName();
if (filename != null && !filename.isEmpty()) {
addResourceToProject(item);
} else {
UtilsGXT3.info("Attention", "Select a valid resource!");
}
} else {
UtilsGXT3.info("Attention", "Select a valid resource!");
}
}
@Override
public void onFailed(Throwable throwable) {
Log.error("Error in add resource: "
+ throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace();
}
@Override
public void onAborted() {
}
@Override
public void onNotValidSelection() {
UtilsGXT3.info("Attention", "Select a valid resource!");
}
};
wselectDialog.addWorkspaceExplorerSelectNotificationListener(handler);
wselectDialog.setZIndex(XDOM.getTopZIndex());
wselectDialog.show();
}
protected void addResourceToProject(Item item) {
Log.debug("Add Resource To Project Item selected: " + item);
ItemDescription itemDescription = new ItemDescription(item.getId(),
item.getName(), item.getOwner(), item.getPath(), item.getType()
.name());
StatAlgoImporterServiceAsync.INSTANCE.addResourceToProject(
itemDescription, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
fireProjectStatusAddResourceEvent();
}
@Override
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
Log.error("Error in add resource to project: "
+ caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
caught.printStackTrace();
}
});
}
protected void createProjectOnServer(Item item) { protected void createProjectOnServer(Item item) {
Log.debug("Item selected: " + item); Log.debug("Create Project Item selected: " + item);
projectFolderId = item.getId(); projectFolder = new ItemDescription(item.getId(), item.getName(),
item.getOwner(), item.getPath(), item.getType().name());
StatAlgoImporterServiceAsync.INSTANCE.createProjectOnWorkspace( StatAlgoImporterServiceAsync.INSTANCE.createProjectOnWorkspace(
item.getId(), new AsyncCallback<Void>() { projectFolder, new AsyncCallback<Void>() {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
@ -89,18 +189,55 @@ public class ProjectManager {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
Log.debug(caught.getLocalizedMessage()); if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
Log.error("Error in create project: "
+ caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
caught.printStackTrace(); caught.printStackTrace();
} }
}); });
} }
public void setMainCode(ItemDescription mainCodeDescription) { public void saveProject(InputVariables inputVariables) {
this.mainCodeDescription = mainCodeDescription; Log.debug("Save Project: " + inputVariables);
Log.debug("Main: " + mainCodeDescription);
StatAlgoImporterServiceAsync.INSTANCE.setMainCode( StatAlgoImporterServiceAsync.INSTANCE.saveProject(inputVariables,
mainCodeDescription.getId(), new AsyncCallback<Void>() { new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
UtilsGXT3.info("Save",
"Project saved!");
}
@Override
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
Log.error("Error on save project: "
+ caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
caught.printStackTrace();
}
});
}
public void setMainCode(ItemDescription itemDescription) {
this.mainCodeDescription = itemDescription;
Log.debug("Set Main Code: " + itemDescription);
StatAlgoImporterServiceAsync.INSTANCE.setMainCode(itemDescription,
new AsyncCallback<Void>() {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
@ -119,29 +256,77 @@ public class ProjectManager {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
fireProjectStatusEventUpdate(); fireProjectStatusUpdateEvent();
} }
}); });
} }
public void deleteItem(ItemDescription itemDescription) { public void deleteItem(ItemDescription itemDescription) {
StatAlgoImporterServiceAsync.INSTANCE.deleteResourceOnProject(itemDescription,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
Log.error("Error deleting resourse: "
+ caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
caught.printStackTrace();
}
@Override
public void onSuccess(Void result) {
fireProjectStatusDeleteEvent();
}
});
} }
protected void fireProjectStatusOpenEvent() { protected void fireProjectStatusOpenEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
ProjectStatusEventType.OPEN, projectFolderId); ProjectStatusEventType.OPEN, projectFolder);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired"); Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
} }
protected void fireProjectStatusEventUpdate() { protected void fireProjectStatusSaveProjectEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
ProjectStatusEventType.UPDATE, projectFolderId); ProjectStatusEventType.SAVE, projectFolder);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired"); Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
}
protected void fireProjectStatusAddResourceEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
ProjectStatusEventType.ADD_RESOURCE, projectFolder);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
}
protected void fireProjectStatusDeleteEvent() {
// TODO Auto-generated method stub
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
ProjectStatusEventType.DELETE_RESOURCE, projectFolder);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
}
protected void fireProjectStatusUpdateEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
ProjectStatusEventType.UPDATE, projectFolder);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
} }
} }

View File

@ -44,6 +44,9 @@ public interface StatAlgoImporterResources extends ClientBundle {
@Source("reload_24.png") @Source("reload_24.png")
ImageResource reload24(); ImageResource reload24();
@Source("reload_16.png")
ImageResource reload16();
@Source("input_16.png") @Source("input_16.png")
ImageResource input16(); ImageResource input16();
@ -74,6 +77,12 @@ public interface StatAlgoImporterResources extends ClientBundle {
@Source("project-open_24.png") @Source("project-open_24.png")
ImageResource projectOpen24(); ImageResource projectOpen24();
@Source("project-save_32.png")
ImageResource projectSave32();
@Source("project-save_24.png")
ImageResource projectSave24();
@Source("add_24.png") @Source("add_24.png")
ImageResource add24(); ImageResource add24();

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

View File

@ -41,7 +41,8 @@ public class HomeToolBar {
//Home //Home
private TextButton btnCreateProject; private TextButton btnCreateProject;
private TextButton btnOpenProject; private TextButton btnOpenProject;
private TextButton btnSaveProject;
//Resources //Resources
private TextButton btnAddResource; private TextButton btnAddResource;
@ -115,7 +116,7 @@ public class HomeToolBar {
btnOpenProject.setIconAlign(IconAlign.LEFT); btnOpenProject.setIconAlign(IconAlign.LEFT);
btnOpenProject.setArrowAlign(ButtonArrowAlign.BOTTOM); btnOpenProject.setArrowAlign(ButtonArrowAlign.BOTTOM);
btnOpenProject.setToolTip(msgs.btnOpenProjectToolTip()); btnOpenProject.setToolTip(msgs.btnOpenProjectToolTip());
btnOpenProject.getElement().setMargins(new Margins(0, 4, 0, 0));
btnOpenProject.addSelectHandler(new SelectHandler() { btnOpenProject.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) { public void onSelect(SelectEvent event) {
@ -127,6 +128,27 @@ public class HomeToolBar {
homeLayout.setWidget(0, 1, btnOpenProject); homeLayout.setWidget(0, 1, btnOpenProject);
homeLayout.getFlexCellFormatter().setRowSpan(0, 1, 2); homeLayout.getFlexCellFormatter().setRowSpan(0, 1, 2);
btnSaveProject = new TextButton(msgs.btnSaveProject(),
StatAlgoImporterResources.INSTANCE.projectSave24());
btnSaveProject.setId("btnSaveProject");
btnSaveProject.setScale(ButtonScale.SMALL);
btnSaveProject.setIconAlign(IconAlign.LEFT);
btnSaveProject.setArrowAlign(ButtonArrowAlign.BOTTOM);
btnSaveProject.setToolTip(msgs.btnSaveProjectToolTip());
btnSaveProject.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new StatAlgoImporterRibbonEvent(
StatAlgoImporterRibbonType.PROJECT_SAVE));
}
});
homeLayout.setWidget(0, 2, btnSaveProject);
homeLayout.getFlexCellFormatter().setRowSpan(0, 2, 2);
// Resources // Resources
ButtonGroup resourcesGroup = new ButtonGroup(); ButtonGroup resourcesGroup = new ButtonGroup();
resourcesGroup.setId("Resource"); resourcesGroup.setId("Resource");
@ -148,7 +170,7 @@ public class HomeToolBar {
public void onSelect(SelectEvent event) { public void onSelect(SelectEvent event) {
eventBus.fireEvent(new StatAlgoImporterRibbonEvent( eventBus.fireEvent(new StatAlgoImporterRibbonEvent(
StatAlgoImporterRibbonType.ALGORITHM_IMPORT)); StatAlgoImporterRibbonType.RESOURCE_ADD));
} }
}); });
@ -177,7 +199,7 @@ public class HomeToolBar {
public void onSelect(SelectEvent event) { public void onSelect(SelectEvent event) {
eventBus.fireEvent(new StatAlgoImporterRibbonEvent( eventBus.fireEvent(new StatAlgoImporterRibbonEvent(
StatAlgoImporterRibbonType.ALGORITHM_CREATE)); StatAlgoImporterRibbonType.SOFTWARE_CREATE));
} }
}); });
@ -320,6 +342,7 @@ public class HomeToolBar {
case START: case START:
btnCreateProject.enable(); btnCreateProject.enable();
btnOpenProject.enable(); btnOpenProject.enable();
btnSaveProject.enable();
btnAddResource.enable(); btnAddResource.enable();
btnCreateSoftware.enable(); btnCreateSoftware.enable();
btnHelp.enable(); btnHelp.enable();

View File

@ -44,6 +44,12 @@ public interface HomeToolBarMessages extends Messages {
@DefaultMessage("Open Project") @DefaultMessage("Open Project")
String btnOpenProjectToolTip(); String btnOpenProjectToolTip();
@DefaultMessage("Save")
String btnSaveProject();
@DefaultMessage("Save Project")
String btnSaveProjectToolTip();
// //
@DefaultMessage("Resource") @DefaultMessage("Resource")
String resourceGroupHeadingText(); String resourceGroupHeadingText();

View File

@ -5,7 +5,9 @@ import java.util.ArrayList;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@ -40,10 +42,20 @@ public interface StatAlgoImporterService extends RemoteService {
public ArrayList<CodeData> getCode() public ArrayList<CodeData> getCode()
throws StatAlgoImporterServiceException; throws StatAlgoImporterServiceException;
public void createProjectOnWorkspace(String itemId) public void createProjectOnWorkspace(ItemDescription itemDescription)
throws StatAlgoImporterServiceException; throws StatAlgoImporterServiceException;
// //
public void setMainCode(String itemId) public void setMainCode(ItemDescription itemDescription)
throws StatAlgoImporterServiceException;
public void addResourceToProject(ItemDescription itemDescription)
throws StatAlgoImporterServiceException;
public void deleteResourceOnProject(ItemDescription itemDescription)
throws StatAlgoImporterServiceException;
public void saveProject(InputVariables inputVariables)
throws StatAlgoImporterServiceException; throws StatAlgoImporterServiceException;

View File

@ -7,7 +7,9 @@ import java.util.ArrayList;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
@ -33,9 +35,18 @@ public interface StatAlgoImporterServiceAsync {
void getCode(AsyncCallback<ArrayList<CodeData>> callback); void getCode(AsyncCallback<ArrayList<CodeData>> callback);
void createProjectOnWorkspace(String itemId, void createProjectOnWorkspace(ItemDescription itemDescription,
AsyncCallback<Void> callback); AsyncCallback<Void> callback);
void setMainCode(String itemId, AsyncCallback<Void> callback); void setMainCode(ItemDescription itemDescription, AsyncCallback<Void> callback);
void addResourceToProject(ItemDescription itemDescription,
AsyncCallback<Void> asyncCallback);
void saveProject(InputVariables inputVariables,
AsyncCallback<Void> asyncCallback);
void deleteResourceOnProject(ItemDescription itemDescription,
AsyncCallback<Void> asyncCallback);
} }

View File

@ -4,9 +4,9 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.Delete
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.StatAlgoImporterResources; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.StatAlgoImporterResources;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener; import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE; import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload; import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload;
@ -22,13 +22,16 @@ import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode; import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.ContentPanel; import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.box.ConfirmMessageBox;
import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.AccordionLayoutContainer.AccordionLayoutAppearance; import com.sencha.gxt.widget.core.client.container.AccordionLayoutContainer.AccordionLayoutAppearance;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData; import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.DialogHideEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent; import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.DialogHideEvent.DialogHideHandler;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar; import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
@ -46,6 +49,7 @@ public class ExplorerProjectPanel extends ContentPanel {
private MultipleDNDUpload dnd; private MultipleDNDUpload dnd;
private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel; private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel;
private TextButton btnDelete; private TextButton btnDelete;
private TextButton btnReload;
public ExplorerProjectPanel(EventBus eventBus) { public ExplorerProjectPanel(EventBus eventBus) {
super(); super();
@ -123,10 +127,13 @@ public class ExplorerProjectPanel extends ContentPanel {
+ event.toString()); + event.toString());
switch (event.getProjectStatusEventType()) { switch (event.getProjectStatusEventType()) {
case OPEN: case OPEN:
case UPDATE:
case SAVE:
case ADD_RESOURCE:
case DELETE_RESOURCE:
create(event); create(event);
break; break;
case UPDATE: case MAIN_CODE_SET:
create(event);
break; break;
default: default:
break; break;
@ -137,7 +144,7 @@ public class ExplorerProjectPanel extends ContentPanel {
try { try {
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel( wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
event.getProjectFolderId(), false); event.getProjectFolder().getId(), false);
WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() { WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() {
@Override @Override
@ -176,7 +183,7 @@ public class ExplorerProjectPanel extends ContentPanel {
// DND // DND
dnd = new MultipleDNDUpload(); dnd = new MultipleDNDUpload();
dnd.setParameters(event.getProjectFolderId(), UPLOAD_TYPE.File); dnd.setParameters(event.getProjectFolder().getId(), UPLOAD_TYPE.File);
dnd.addUniqueContainer(vResourcesExplorerContainer); dnd.addUniqueContainer(vResourcesExplorerContainer);
WorskpaceUploadNotificationListener workspaceUploaderListener = new WorskpaceUploadNotificationListener() { WorskpaceUploadNotificationListener workspaceUploaderListener = new WorskpaceUploadNotificationListener() {
@ -230,7 +237,7 @@ public class ExplorerProjectPanel extends ContentPanel {
}); });
btnDelete = new TextButton("Delete"); btnDelete = new TextButton("Delete");
btnDelete.setIcon(StatAlgoImporterResources.INSTANCE.add16()); btnDelete.setIcon(StatAlgoImporterResources.INSTANCE.delete16());
btnDelete.setScale(ButtonScale.SMALL); btnDelete.setScale(ButtonScale.SMALL);
btnDelete.setIconAlign(IconAlign.LEFT); btnDelete.setIconAlign(IconAlign.LEFT);
btnDelete.setToolTip("Delete"); btnDelete.setToolTip("Delete");
@ -244,11 +251,30 @@ public class ExplorerProjectPanel extends ContentPanel {
}); });
btnReload = new TextButton("Reload");
btnReload.setIcon(StatAlgoImporterResources.INSTANCE.reload16());
btnReload.setScale(ButtonScale.SMALL);
btnReload.setIconAlign(IconAlign.LEFT);
btnReload.setToolTip("Reload");
btnReload.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
reloadWSResourceExplorerPanel(event);
}
});
ToolBar toolBar = new ToolBar(); ToolBar toolBar = new ToolBar();
toolBar.add(btnSetMain, new BoxLayoutData(new Margins(0))); toolBar.add(btnSetMain, new BoxLayoutData(new Margins(0)));
toolBar.add(btnReload, new BoxLayoutData(new Margins(0)));
toolBar.add(btnDelete, new BoxLayoutData(new Margins(0)));
VerticalLayoutContainer v = new VerticalLayoutContainer(); VerticalLayoutContainer v = new VerticalLayoutContainer();
@ -263,6 +289,13 @@ public class ExplorerProjectPanel extends ContentPanel {
} }
} }
protected void reloadWSResourceExplorerPanel(SelectEvent event) {
if(wsResourcesExplorerPanel!=null){
wsResourcesExplorerPanel.refreshRootFolderView();
}
}
private void setMainCode(SelectEvent event) { private void setMainCode(SelectEvent event) {
Log.debug("Set Main Code"); Log.debug("Set Main Code");
if (selectedItem != null if (selectedItem != null
@ -275,21 +308,39 @@ public class ExplorerProjectPanel extends ContentPanel {
} }
private void deleteItem(SelectEvent event) { private void deleteItem(SelectEvent event) {
ItemDescription itemDescription = new ItemDescription( final ConfirmMessageBox mb = new ConfirmMessageBox("Delete",
selectedItem.getId(), selectedItem.getName(), "Would you like to delete this resource?");
selectedItem.getOwner(), selectedItem.getPath()); mb.addDialogHideHandler(new DialogHideHandler() {
DeleteItemEvent deleteItemEvent = new DeleteItemEvent(
itemDescription); @Override
eventBus.fireEvent(deleteItemEvent); public void onDialogHide(DialogHideEvent event) {
Log.debug("Fired: " + deleteItemEvent); switch (event.getHideButton()) {
case NO:
break;
case YES:
ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
DeleteItemEvent deleteItemEvent = new DeleteItemEvent(
itemDescription);
eventBus.fireEvent(deleteItemEvent);
Log.debug("Fired: " + deleteItemEvent);
break;
default:
break;
}
}
});
mb.setWidth(300);
mb.show();
} }
private void loadData() { private void loadData() {
ItemDescription itemDescription = new ItemDescription( ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(), selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath()); selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
MainCodeSetEvent mainCodeSetEvent = new MainCodeSetEvent( MainCodeSetEvent mainCodeSetEvent = new MainCodeSetEvent(
itemDescription); itemDescription);
eventBus.fireEvent(mainCodeSetEvent); eventBus.fireEvent(mainCodeSetEvent);

View File

@ -56,6 +56,7 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
*/ */
public class EnvironmentVariablesPanel extends ContentPanel { public class EnvironmentVariablesPanel extends ContentPanel {
@SuppressWarnings("unused")
private EventBus eventBus; private EventBus eventBus;
private ListStore<EnvironmentVariables> storeEnvironmentVariable; private ListStore<EnvironmentVariables> storeEnvironmentVariable;
private Grid<EnvironmentVariables> gridEnvironmentVariable; private Grid<EnvironmentVariables> gridEnvironmentVariable;
@ -136,13 +137,13 @@ public class EnvironmentVariablesPanel extends ContentPanel {
storeEnvironmentVariable = new ListStore<EnvironmentVariables>( storeEnvironmentVariable = new ListStore<EnvironmentVariables>(
props.id()); props.id());
/*ArrayList<EnvironmentVariables> list = new ArrayList<>(); /*
for (int i = 0; i < 10; i++) { * ArrayList<EnvironmentVariables> list = new ArrayList<>(); for (int i
list.add(new EnvironmentVariables(i, "Test" + i, "Desc", * = 0; i < 10; i++) { list.add(new EnvironmentVariables(i, "Test" + i,
"defaultValue", InputType.STRING)); * "Desc", "defaultValue", InputType.STRING)); }
} *
* storeEnvironmentVariable.addAll(list);
storeEnvironmentVariable.addAll(list);*/ */
final GridSelectionModel<EnvironmentVariables> sm = new GridSelectionModel<EnvironmentVariables>(); final GridSelectionModel<EnvironmentVariables> sm = new GridSelectionModel<EnvironmentVariables>();
sm.setSelectionMode(SelectionMode.SINGLE); sm.setSelectionMode(SelectionMode.SINGLE);
@ -156,7 +157,6 @@ public class EnvironmentVariablesPanel extends ContentPanel {
gridEnvironmentVariable.getView().setAutoFill(true); gridEnvironmentVariable.getView().setAutoFill(true);
gridEnvironmentVariable.setBorders(false); gridEnvironmentVariable.setBorders(false);
gridEnvironmentVariable.setColumnReordering(false); gridEnvironmentVariable.setColumnReordering(false);
/* /*
* GridDragSource<EnvironmentVariables> ds = new * GridDragSource<EnvironmentVariables> ds = new
@ -196,8 +196,8 @@ public class EnvironmentVariablesPanel extends ContentPanel {
gridEnvironmentVariableEditing.addEditor(nameColumn, new TextField()); gridEnvironmentVariableEditing.addEditor(nameColumn, new TextField());
gridEnvironmentVariableEditing.addEditor(descriptionColumn, gridEnvironmentVariableEditing.addEditor(descriptionColumn,
new TextField()); new TextField());
gridEnvironmentVariableEditing gridEnvironmentVariableEditing.addEditor(inputTypeColumn,
.addEditor(inputTypeColumn, comboInputType); comboInputType);
gridEnvironmentVariableEditing.addEditor(defaultValueColumn, gridEnvironmentVariableEditing.addEditor(defaultValueColumn,
new TextField()); new TextField());
@ -226,8 +226,8 @@ public class EnvironmentVariablesPanel extends ContentPanel {
storeEnvironmentVariable.remove(rowIndex); storeEnvironmentVariable.remove(rowIndex);
storeEnvironmentVariable.commitChanges(); storeEnvironmentVariable.commitChanges();
gridEnvironmentVariableEditing.getCancelButton() gridEnvironmentVariableEditing.getCancelButton().setVisible(
.setVisible(true); true);
btnAdd.setEnabled(true); btnAdd.setEnabled(true);
if (addStatus) { if (addStatus) {
addStatus = false; addStatus = false;
@ -291,13 +291,13 @@ public class EnvironmentVariablesPanel extends ContentPanel {
VerticalLayoutContainer vlc = new VerticalLayoutContainer(); VerticalLayoutContainer vlc = new VerticalLayoutContainer();
vlc.setAdjustForScroll(false); vlc.setAdjustForScroll(false);
vlc.setScrollMode(ScrollMode.NONE); vlc.setScrollMode(ScrollMode.NONE);
vlc.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0))); vlc.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
vlc.add(gridEnvironmentVariable, new VerticalLayoutData(1, 1, vlc.add(gridEnvironmentVariable, new VerticalLayoutData(1, 1,
new Margins(0))); new Margins(0)));
add(vlc, new MarginData(new Margins(0))); add(vlc, new MarginData(new Margins(0)));
} }
private void editingBeforeStart( private void editingBeforeStart(
@ -318,7 +318,7 @@ public class EnvironmentVariablesPanel extends ContentPanel {
seq, "", "", "", InputType.STRING); seq, "", "", "", InputType.STRING);
Log.debug("New Environment Variable: " + newEnvironmentVariable); Log.debug("New Environment Variable: " + newEnvironmentVariable);
gridEnvironmentVariableEditing.cancelEditing(); gridEnvironmentVariableEditing.cancelEditing();
addStatus = true; addStatus = true;
gridEnvironmentVariableEditing.getCancelButton().setVisible(false); gridEnvironmentVariableEditing.getCancelButton().setVisible(false);
storeEnvironmentVariable.add(newEnvironmentVariable); storeEnvironmentVariable.add(newEnvironmentVariable);
int row = storeEnvironmentVariable.indexOf(newEnvironmentVariable); int row = storeEnvironmentVariable.indexOf(newEnvironmentVariable);
@ -337,4 +337,10 @@ public class EnvironmentVariablesPanel extends ContentPanel {
} }
public ArrayList<EnvironmentVariables> getEnvironmentVariables() {
ArrayList<EnvironmentVariables> listEnviromentVarialbles = new ArrayList<>(
gridEnvironmentVariable.getStore().getAll());
return listEnviromentVarialbles;
}
} }

View File

@ -1,5 +1,6 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent;
@ -28,7 +29,7 @@ public class InputVariablePanel extends ContentPanel {
bindToEvents(); bindToEvents();
} }
public InputVariablePanel(EventBus eventBus, public InputVariablePanel(EventBus eventBus,
AccordionLayoutAppearance appearance) { AccordionLayoutAppearance appearance) {
super(appearance); super(appearance);
@ -48,7 +49,7 @@ public class InputVariablePanel extends ContentPanel {
setBorders(true); setBorders(true);
setHeadingText("Input"); setHeadingText("Input");
forceLayoutOnResize = true; forceLayoutOnResize = true;
} }
protected void bindToEvents() { protected void bindToEvents() {
@ -66,10 +67,28 @@ public class InputVariablePanel extends ContentPanel {
@Override @Override
public void onProjectStatus(ProjectStatusEvent event) { public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Catch ProjectStatusEvent");
manageProjectStatusEvents(event); manageProjectStatusEvents(event);
} }
}); });
eventBus.addHandler(InputSaveEvent.TYPE,
new InputSaveEvent.InputSaveEventHandler() {
@Override
public void onInputSave(InputSaveEvent event) {
Log.debug("Catch InputSaveEvent");
manageInputSaveEvents(event);
}
});
}
protected void manageInputSaveEvents(InputSaveEvent event) {
inputVariableTabPanel.saveInput();
} }
protected void manageUIStateEvents(UIStateEvent event) { protected void manageUIStateEvents(UIStateEvent event) {
@ -96,18 +115,22 @@ public class InputVariablePanel extends ContentPanel {
case UPDATE: case UPDATE:
updatePanel(); updatePanel();
break; break;
case ADD_RESOURCE:
break;
case MAIN_CODE_SET:
break;
default: default:
break; break;
} }
} }
private void create(){ private void create() {
inputVariableTabPanel = new InputVariableTabPanel(eventBus, this); inputVariableTabPanel = new InputVariableTabPanel(eventBus, this);
add(inputVariableTabPanel); add(inputVariableTabPanel);
startPanel(); startPanel();
forceLayout(); forceLayout();
} }
/* /*
* private void closePanelOnly() { collapse(); disable(); state = * private void closePanelOnly() { collapse(); disable(); state =
* InputVariablePanelState.CLOSED; } * InputVariablePanelState.CLOSED; }

View File

@ -1,5 +1,8 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input; package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveReadyEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus; import com.google.gwt.event.shared.EventBus;
@ -77,6 +80,25 @@ public class InputVariableTabPanel extends TabPanel {
} }
} }
public void saveInput() {
InputVariables inputVariables = new InputVariables();
if (enviromentVariablesPanel != null) {
inputVariables.setListEnvironmentVariables(enviromentVariablesPanel
.getEnvironmentVariables());
}
if (selectedRowsPanel != null) {
inputVariables.setListSelectedRows(selectedRowsPanel
.getSelectedRows());
}
InputSaveReadyEvent inputSaveReadyEvent = new InputSaveReadyEvent(
inputVariables);
eventBus.fireEvent(inputSaveReadyEvent);
Log.debug("Fired InputSaveReadyEvent");
}
// Add // Add
private void addSelectedRowsPanel() { private void addSelectedRowsPanel() {
TabItemConfig selectedRowsPanelItemConf = new TabItemConfig( TabItemConfig selectedRowsPanelItemConf = new TabItemConfig(

View File

@ -55,9 +55,10 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
*/ */
public class SelectedRowsPanel extends ContentPanel { public class SelectedRowsPanel extends ContentPanel {
@SuppressWarnings("unused")
private EventBus eventBus; private EventBus eventBus;
private ListStore<EnvironmentVariables> storeEnvironmentVariable; private ListStore<EnvironmentVariables> storeEnvironmentVariable;
private Grid<EnvironmentVariables> gridEnvironmentVariable; private Grid<EnvironmentVariables> gridSelectedRows;
private ListStore<InputType> storeComboInputType; private ListStore<InputType> storeComboInputType;
private ComboBox<InputType> comboInputType; private ComboBox<InputType> comboInputType;
private GridRowEditing<EnvironmentVariables> gridEnvironmentVariableEditing; private GridRowEditing<EnvironmentVariables> gridEnvironmentVariableEditing;
@ -146,15 +147,15 @@ public class SelectedRowsPanel extends ContentPanel {
final GridSelectionModel<EnvironmentVariables> sm = new GridSelectionModel<EnvironmentVariables>(); final GridSelectionModel<EnvironmentVariables> sm = new GridSelectionModel<EnvironmentVariables>();
sm.setSelectionMode(SelectionMode.SINGLE); sm.setSelectionMode(SelectionMode.SINGLE);
gridEnvironmentVariable = new Grid<EnvironmentVariables>( gridSelectedRows = new Grid<EnvironmentVariables>(
storeEnvironmentVariable, columns); storeEnvironmentVariable, columns);
gridEnvironmentVariable.setSelectionModel(sm); gridSelectedRows.setSelectionModel(sm);
gridEnvironmentVariable.getView().setStripeRows(true); gridSelectedRows.getView().setStripeRows(true);
gridEnvironmentVariable.getView().setColumnLines(true); gridSelectedRows.getView().setColumnLines(true);
gridEnvironmentVariable.getView().setAutoExpandColumn(nameColumn); gridSelectedRows.getView().setAutoExpandColumn(nameColumn);
gridEnvironmentVariable.getView().setAutoFill(true); gridSelectedRows.getView().setAutoFill(true);
gridEnvironmentVariable.setBorders(false); gridSelectedRows.setBorders(false);
gridEnvironmentVariable.setColumnReordering(false); gridSelectedRows.setColumnReordering(false);
/* /*
@ -191,7 +192,7 @@ public class SelectedRowsPanel extends ContentPanel {
addHandlersForComboInputType(inputTypePropertiesCombo.label()); addHandlersForComboInputType(inputTypePropertiesCombo.label());
gridEnvironmentVariableEditing = new GridRowEditing<EnvironmentVariables>( gridEnvironmentVariableEditing = new GridRowEditing<EnvironmentVariables>(
gridEnvironmentVariable); gridSelectedRows);
gridEnvironmentVariableEditing.addEditor(nameColumn, new TextField()); gridEnvironmentVariableEditing.addEditor(nameColumn, new TextField());
gridEnvironmentVariableEditing.addEditor(descriptionColumn, gridEnvironmentVariableEditing.addEditor(descriptionColumn,
new TextField()); new TextField());
@ -291,7 +292,7 @@ public class SelectedRowsPanel extends ContentPanel {
vlc.setScrollMode(ScrollMode.NONE); vlc.setScrollMode(ScrollMode.NONE);
vlc.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0))); vlc.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
vlc.add(gridEnvironmentVariable, new VerticalLayoutData(1, 1, vlc.add(gridSelectedRows, new VerticalLayoutData(1, 1,
new Margins(0))); new Margins(0)));
add(vlc, new MarginData(new Margins(0))); add(vlc, new MarginData(new Margins(0)));
@ -334,5 +335,12 @@ public class SelectedRowsPanel extends ContentPanel {
public void update() { public void update() {
} }
public ArrayList<EnvironmentVariables> getSelectedRows() {
ArrayList<EnvironmentVariables> listEnviromentVarialbles = new ArrayList<>(
gridSelectedRows.getStore().getAll());
return listEnviromentVarialbles;
}
} }

View File

@ -8,6 +8,10 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type;
*/ */
public enum ProjectStatusEventType { public enum ProjectStatusEventType {
OPEN, OPEN,
MAINCODESET, MAIN_CODE_SET,
UPDATE; UPDATE,
ADD_RESOURCE,
DELETE_RESOURCE,
SAVE;
} }

View File

@ -9,7 +9,8 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type;
public enum StatAlgoImporterRibbonType { public enum StatAlgoImporterRibbonType {
PROJECT_CREATE, PROJECT_CREATE,
PROJECT_OPEN, PROJECT_OPEN,
ALGORITHM_IMPORT, PROJECT_SAVE,
ALGORITHM_CREATE, RESOURCE_ADD,
SOFTWARE_CREATE,
HELP; HELP;
} }

View File

@ -8,13 +8,17 @@ import javax.servlet.http.HttpSession;
import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterService; import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterService;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.file.CodeReader; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.file.CodeReader;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.ProjectArchiver;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.MainCode; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.MainCode;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectFolder; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectFolder;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -110,13 +114,12 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
throws StatAlgoImporterServiceException { throws StatAlgoImporterServiceException {
try { try {
HttpSession session = this.getThreadLocalRequest().getSession(); HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession=SessionUtil.getAslSession(session); ASLSession aslSession = SessionUtil.getAslSession(session);
logger.debug("getCode()"); logger.debug("getCode()");
Project projectSession = SessionUtil Project projectSession = SessionUtil.getProjectSession(session);
.getProjectSession(session);
if (projectSession != null) { if (projectSession != null) {
CodeReader codeFileReader = new CodeReader( CodeReader codeFileReader = new CodeReader(projectSession,
projectSession, aslSession); aslSession);
ArrayList<CodeData> codeList = codeFileReader.getCodeList(); ArrayList<CodeData> codeList = codeFileReader.getCodeList();
for (CodeData codeData : codeList) { for (CodeData codeData : codeList) {
logger.debug("" + codeData.getId() + " " logger.debug("" + codeData.getId() + " "
@ -143,17 +146,16 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
* *
*/ */
@Override @Override
public void createProjectOnWorkspace(String itemId) public void createProjectOnWorkspace(ItemDescription itemDescription)
throws StatAlgoImporterServiceException { throws StatAlgoImporterServiceException {
try { try {
HttpSession session = this.getThreadLocalRequest().getSession(); HttpSession session = this.getThreadLocalRequest().getSession();
SessionUtil.getAslSession(session); SessionUtil.getAslSession(session);
logger.debug("createProjectOnWorkspace()"); logger.debug("createProjectOnWorkspace()");
ProjectFolder projectFolder=new ProjectFolder(itemId); ProjectFolder projectFolder = new ProjectFolder(itemDescription);
Project projectSession = new Project(projectFolder); Project projectSession = new Project(projectFolder);
SessionUtil.setProjectSession(session, projectSession); SessionUtil.setProjectSession(session, projectSession);
return; return;
} catch (StatAlgoImporterServiceException e) { } catch (StatAlgoImporterServiceException e) {
e.printStackTrace(); e.printStackTrace();
@ -167,32 +169,131 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
} }
@Override @Override
public void setMainCode(String itemId) public void setMainCode(ItemDescription itemDescription)
throws StatAlgoImporterServiceException { throws StatAlgoImporterServiceException {
try { try {
HttpSession session = this.getThreadLocalRequest().getSession(); HttpSession session = this.getThreadLocalRequest().getSession();
SessionUtil.getAslSession(session); SessionUtil.getAslSession(session);
logger.debug("SetMainCode()"); logger.debug("SetMainCode()");
Project project = SessionUtil Project project = SessionUtil.getProjectSession(session);
.getProjectSession(session);
if (project != null) { if (project != null) {
project.setMainCode(new MainCode(itemId)); project.setMainCode(new MainCode(itemDescription));
SessionUtil.setProjectSession(session, project); SessionUtil.setProjectSession(session, project);
} else { } else {
throw new StatAlgoImporterServiceException("No project open!"); throw new StatAlgoImporterServiceException("No project open!");
} }
return; return;
} catch (StatAlgoImporterServiceException e) { } catch (StatAlgoImporterServiceException e) {
e.printStackTrace(); e.printStackTrace();
throw e; throw e;
} catch (Throwable e) { } catch (Throwable e) {
logger.error( logger.error("setMainCode(): " + e.getLocalizedMessage(), e);
"setMainCode(): " + e.getLocalizedMessage(), e); e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
@Override
public void addResourceToProject(ItemDescription itemDescription)
throws StatAlgoImporterServiceException {
try {
HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession = SessionUtil.getAslSession(session);
logger.debug("addResourceToProject(): " + itemDescription);
if (itemDescription == null || itemDescription.getId()==null) {
throw new StatAlgoImporterServiceException(
"Add resource to project is failed, invalid resource: "
+ itemDescription);
}
Project project = SessionUtil.getProjectSession(session);
if (project != null && project.getProjectFolder() != null
&& project.getProjectFolder().getItemDescription() != null) {
FilesStorage fileStorage = new FilesStorage();
fileStorage.copyItemOnFolder(aslSession.getUsername(),
itemDescription.getId(), project.getProjectFolder()
.getItemDescription().getId());
} else {
throw new StatAlgoImporterServiceException("No project open!");
}
return;
} catch (StatAlgoImporterServiceException e) {
e.printStackTrace();
throw e;
} catch (Throwable e) {
logger.error("addResourceToProject(): " + e.getLocalizedMessage(),
e);
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
@Override
public void deleteResourceOnProject(ItemDescription itemDescription)
throws StatAlgoImporterServiceException {
try {
HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession = SessionUtil.getAslSession(session);
logger.debug("deleteResourceOnProject(): " + itemDescription);
if (itemDescription == null || itemDescription.getId()==null) {
throw new StatAlgoImporterServiceException(
"Delete resource on project is failed, invalid resource: "
+ itemDescription);
}
Project project = SessionUtil.getProjectSession(session);
if (project != null) {
FilesStorage fileStorage = new FilesStorage();
fileStorage.deleteItemOnFolder(aslSession.getUsername(),
itemDescription.getId());
} else {
throw new StatAlgoImporterServiceException("No project open!");
}
return;
} catch (StatAlgoImporterServiceException e) {
e.printStackTrace();
throw e;
} catch (Throwable e) {
logger.error("deleteResourceOnProject(): " + e.getLocalizedMessage(),
e);
e.printStackTrace(); e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage()); throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
} }
} }
@Override
public void saveProject(InputVariables inputVariables)
throws StatAlgoImporterServiceException {
try {
HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession=SessionUtil.getAslSession(session);
logger.debug("saveProject():"+inputVariables);
Project project = SessionUtil.getProjectSession(session);
if (project != null) {
project.setInputVariable(inputVariables);
SessionUtil.setProjectSession(session, project);
ProjectArchiver.archive(project, aslSession);
} else {
throw new StatAlgoImporterServiceException("No project open!");
}
return;
} catch (StatAlgoImporterServiceException e) {
e.printStackTrace();
throw e;
} catch (Throwable e) {
logger.error("saveProject(): " + e.getLocalizedMessage(), e);
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
} }

View File

@ -32,13 +32,17 @@ public class CodeReader {
throws StatAlgoImporterServiceException { throws StatAlgoImporterServiceException {
try { try {
if (projectSession == null || projectSession.getMainCode() == null if (projectSession == null
|| projectSession.getMainCode().getItemId() == null) { || projectSession.getMainCode() == null
|| projectSession.getMainCode().getItemDescription() == null
|| projectSession.getMainCode().getItemDescription()
.getId() == null) {
throw new StatAlgoImporterServiceException( throw new StatAlgoImporterServiceException(
"Project hasn't a valid main set!"); "Project hasn't a valid main set!");
} }
String itemId = projectSession.getMainCode().getItemId(); String itemId = projectSession.getMainCode().getItemDescription()
.getId();
code = new ArrayList<CodeData>(); code = new ArrayList<CodeData>();
FilesStorage filesStorage = new FilesStorage(); FilesStorage filesStorage = new FilesStorage();

View File

@ -8,8 +8,12 @@ import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException; import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.Workspace; import org.gcube.common.homelibrary.home.workspace.Workspace;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem; import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException; import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException; import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException;
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongItemTypeException;
import org.gcube.contentmanager.storageclient.model.protocol.smp.SMPUrl; import org.gcube.contentmanager.storageclient.model.protocol.smp.SMPUrl;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -24,9 +28,91 @@ import org.slf4j.LoggerFactory;
public class FilesStorage { public class FilesStorage {
private static final String STATISTICAL_ALGORITHM_PROJECT_MIMETYPE = "text/xml";
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION = "Statistical Algorithm Project File";
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_NAME = "stat_algo.project";
public static final Logger logger = LoggerFactory public static final Logger logger = LoggerFactory
.getLogger(FilesStorage.class); .getLogger(FilesStorage.class);
public void copyItemOnFolder(String user, String itemId, String folderId)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem workSpaceItem = ws.getItem(folderId);
if (!workSpaceItem.isFolder()) {
throw new StatAlgoImporterServiceException(
"Destination is not a folder!");
}
ws.copy(itemId, folderId);
return;
} catch (WrongDestinationException | ItemAlreadyExistException
| InsufficientPrivilegesException
| WorkspaceFolderNotFoundException | InternalErrorException
| HomeNotFoundException | ItemNotFoundException e) {
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
public void deleteItemOnFolder(String user, String itemId)
throws StatAlgoImporterServiceException {
Workspace ws;
try {
ws = HomeLibrary.getUserWorkspace(user);
ws.removeItems(itemId);
return;
} catch (InsufficientPrivilegesException
| WorkspaceFolderNotFoundException | InternalErrorException
| HomeNotFoundException | ItemNotFoundException e) {
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
public void saveItemOnFolder(String user, InputStream inputStream,
String folderId) throws StatAlgoImporterServiceException {
Workspace ws;
try {
ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem workSpaceItem = ws.getItem(folderId);
if (!workSpaceItem.isFolder()) {
throw new StatAlgoImporterServiceException(
"Destination is not a folder!");
}
WorkspaceItem projectItem = ws.find(
STATISTICAL_ALGORITHM_PROJECT_FILE_NAME, folderId);
if (projectItem == null) {
ws.createExternalFile(STATISTICAL_ALGORITHM_PROJECT_FILE_NAME,
STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION,
STATISTICAL_ALGORITHM_PROJECT_MIMETYPE, inputStream,
folderId);
} else {
ws.updateItem(projectItem.getId(), inputStream);
}
return;
} catch (WrongItemTypeException | WorkspaceFolderNotFoundException
| InternalErrorException | HomeNotFoundException
| ItemNotFoundException | InsufficientPrivilegesException
| ItemAlreadyExistException | WrongDestinationException e) {
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
/** /**
* *
@ -38,10 +124,11 @@ public class FilesStorage {
ws = HomeLibrary.getUserWorkspace(user); ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem workSpaceItem = ws.getItem(itemId); WorkspaceItem workSpaceItem = ws.getItem(itemId);
if(workSpaceItem.isFolder()){ if (workSpaceItem.isFolder()) {
throw new StatAlgoImporterServiceException("Folder is not valid item!"); throw new StatAlgoImporterServiceException(
"Folder is not valid item!");
} }
return retrieveImputStream(user, workSpaceItem); return retrieveImputStream(user, workSpaceItem);
} catch (WorkspaceFolderNotFoundException | InternalErrorException } catch (WorkspaceFolderNotFoundException | InternalErrorException
@ -87,6 +174,4 @@ public class FilesStorage {
} }
} }

View File

@ -1,8 +1,11 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage; package org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage;
import java.beans.XMLEncoder; import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -19,13 +22,19 @@ public class ProjectArchiver {
.getLogger(ProjectArchiver.class); .getLogger(ProjectArchiver.class);
public static void archive(Project project) { public static void archive(Project project, ASLSession aslSession)
throws StatAlgoImporterServiceException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
XMLEncoder xmlEncoder = new XMLEncoder(byteArrayOutputStream); XMLEncoder xmlEncoder = new XMLEncoder(byteArrayOutputStream);
xmlEncoder.writeObject(project); xmlEncoder.writeObject(project);
xmlEncoder.close(); xmlEncoder.close();
logger.debug("Archived:" + byteArrayOutputStream); logger.debug("Archived:" + byteArrayOutputStream);
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
FilesStorage filesStorage=new FilesStorage();
filesStorage.saveItemOnFolder(aslSession.getUsername(), byteArrayInputStream, project.getProjectFolder().getItemDescription().getId());
} }
} }

View File

@ -0,0 +1,57 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import java.io.Serializable;
import java.util.ArrayList;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.EnvironmentVariables;
/**
*
* @author giancarlo email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class InputVariables implements Serializable {
private static final long serialVersionUID = -2405068429998054485L;
private ArrayList<EnvironmentVariables> listEnvironmentVariables;
private ArrayList<EnvironmentVariables> listSelectedRows;
public InputVariables() {
super();
}
public InputVariables(
ArrayList<EnvironmentVariables> listEnvironmentVariables,
ArrayList<EnvironmentVariables> listSelectedRows) {
super();
this.listEnvironmentVariables = listEnvironmentVariables;
this.listSelectedRows = listSelectedRows;
}
public ArrayList<EnvironmentVariables> getListEnvironmentVariables() {
return listEnvironmentVariables;
}
public void setListEnvironmentVariables(
ArrayList<EnvironmentVariables> listEnvironmentVariables) {
this.listEnvironmentVariables = listEnvironmentVariables;
}
public ArrayList<EnvironmentVariables> getListSelectedRows() {
return listSelectedRows;
}
public void setListSelectedRows(
ArrayList<EnvironmentVariables> listSelectedRows) {
this.listSelectedRows = listSelectedRows;
}
@Override
public String toString() {
return "InputVariables [listEnvironmentVariables="
+ listEnvironmentVariables + ", listSelectedRows="
+ listSelectedRows + "]";
}
}

View File

@ -2,6 +2,8 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import java.io.Serializable; import java.io.Serializable;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
/** /**
* *
* @author Giancarlo Panichi email: <a * @author Giancarlo Panichi email: <a
@ -11,24 +13,28 @@ import java.io.Serializable;
public class MainCode implements Serializable { public class MainCode implements Serializable {
private static final long serialVersionUID = 6328159797277211090L; private static final long serialVersionUID = 6328159797277211090L;
private String itemId; private ItemDescription itemDescription;
public MainCode(String itemId) { public MainCode() {
super(); super();
this.itemId = itemId;
} }
public String getItemId() { public MainCode(ItemDescription itemDescription) {
return itemId; super();
this.itemDescription = itemDescription;
} }
public void setItemId(String itemId) { public ItemDescription getItemDescription() {
this.itemId = itemId; return itemDescription;
}
public void setItemDescription(ItemDescription itemDescription) {
this.itemDescription = itemDescription;
} }
@Override @Override
public String toString() { public String toString() {
return "MainCode [itemId=" + itemId + "]"; return "MainCode [itemDescription=" + itemDescription + "]";
} }
} }

View File

@ -14,6 +14,11 @@ public class Project implements Serializable {
private ProjectFolder projectFolder; private ProjectFolder projectFolder;
private MainCode mainCode; private MainCode mainCode;
private InputVariables inputVariable;
public Project(){
super();
}
public Project(ProjectFolder projectFolder) { public Project(ProjectFolder projectFolder) {
super(); super();
@ -37,12 +42,22 @@ public class Project implements Serializable {
this.projectFolder = projectFolder; this.projectFolder = projectFolder;
} }
public InputVariables getInputVariable() {
return inputVariable;
}
public void setInputVariable(InputVariables inputVariable) {
this.inputVariable = inputVariable;
}
@Override @Override
public String toString() { public String toString() {
return "Project [projectFolder=" + projectFolder + ", mainCode=" return "Project [projectFolder=" + projectFolder + ", mainCode="
+ mainCode + "]"; + mainCode + ", inputVariable=" + inputVariable + "]";
} }
} }

View File

@ -2,6 +2,8 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import java.io.Serializable; import java.io.Serializable;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
/** /**
* *
* @author Giancarlo Panichi email: <a * @author Giancarlo Panichi email: <a
@ -11,26 +13,31 @@ import java.io.Serializable;
public class ProjectFolder implements Serializable { public class ProjectFolder implements Serializable {
private static final long serialVersionUID = 3698120963507381801L; private static final long serialVersionUID = 3698120963507381801L;
private String itemId; private ItemDescription itemDescription;
public ProjectFolder(String itemId) { public ProjectFolder(){
super(); super();
this.itemId = itemId;
} }
public String getItemId() { public ProjectFolder(ItemDescription itemDescription) {
return itemId; super();
this.itemDescription = itemDescription;
} }
public void setItemId(String itemId) { public ItemDescription getItemDescription() {
this.itemId = itemId; return itemDescription;
}
public void setItemDescription(ItemDescription itemDescription) {
this.itemDescription = itemDescription;
} }
@Override @Override
public String toString() { public String toString() {
return "ProjectFolder [itemId=" + itemId + "]"; return "ProjectFolder [itemDescription=" + itemDescription + "]";
} }
} }

View File

@ -1,4 +1,4 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata; package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace;
import java.io.Serializable; import java.io.Serializable;
@ -16,17 +16,20 @@ public class ItemDescription implements Serializable {
private String name; private String name;
private String owner; private String owner;
private String path; private String path;
private String type;
public ItemDescription(){ public ItemDescription(){
super(); super();
} }
public ItemDescription(String id, String name, String owner, String path) { public ItemDescription(String id, String name, String owner, String path,
String type) {
super(); super();
this.id = id; this.id = id;
this.name = name; this.name = name;
this.owner = owner; this.owner = owner;
this.path = path; this.path = path;
this.type = type;
} }
public String getId() { public String getId() {
@ -61,11 +64,20 @@ public class ItemDescription implements Serializable {
this.path = path; this.path = path;
} }
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override @Override
public String toString() { public String toString() {
return "ItemDescription [id=" + id + ", name=" + name + ", owner=" return "ItemDescription [id=" + id + ", name=" + name + ", owner="
+ owner + ", path=" + path + "]"; + owner + ", path=" + path + ", type=" + type + "]";
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B