ref 8819: Extend The Algorithms Importer to Manage Many Processes as Black Boxes

https://support.d4science.org/issues/8819

Updated support

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@149342 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2017-06-07 17:46:05 +00:00
parent 658dcd6d7f
commit 2e5a551a6a
19 changed files with 409 additions and 292 deletions

View File

@ -1,10 +1,10 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.WorkAreaPanel;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.StatAlgoImporterResources;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.ribbon.StatAlgoImporterRibbon;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterService;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.workarea.WorkAreaPanel;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint;

View File

@ -69,6 +69,7 @@ public class StatAlgoImporterController {
callHello();
checkSession();
pm = new ProjectManager(eventBus);
//pm.startProjectManager();
bindToEvents();
}
@ -252,7 +253,7 @@ public class StatAlgoImporterController {
});
pm.startProjectManager();
}

View File

@ -13,6 +13,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.SimplePanel;
/**
*
@ -22,15 +23,13 @@ import com.google.gwt.user.client.Command;
*/
public class ProjectFolderSelectionCard extends WizardCard {
// private DecoratorPanel decPanel;
private ItemDescription newProjectFolder;
public ProjectFolderSelectionCard() {
super("Project Setup", "Select the project folder");
super("Setup", "Select the project folder");
try {
WorkspaceExplorerSelectPanel wselectPanel = new WorkspaceExplorerSelectPanel("Select Project Folder", true);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@Override
@ -40,7 +39,7 @@ public class ProjectFolderSelectionCard extends WizardCard {
createNewProjectFolder(item);
} else {
newProjectFolder=null;
newProjectFolder = null;
GWTMessages.alert("Attention", "Select a valid project folder!", getZIndex());
}
@ -59,13 +58,16 @@ public class ProjectFolderSelectionCard extends WizardCard {
@Override
public void onNotValidSelection() {
newProjectFolder=null;
newProjectFolder = null;
GWTMessages.alert("Attention", "Select a valid project folder!", getZIndex());
}
};
wselectPanel.addWorkspaceExplorerSelectNotificationListener(handler);
setContent(wselectPanel);
SimplePanel mainPanel=new SimplePanel();
mainPanel.setHeight("400px");
mainPanel.setWidget(wselectPanel);
setContent(mainPanel);
} catch (Exception e) {
GWT.log("Error: " + e.getLocalizedMessage());
e.printStackTrace();
@ -74,8 +76,8 @@ public class ProjectFolderSelectionCard extends WizardCard {
private void createNewProjectFolder(Item item) {
Log.debug("Create Project Item selected: " + item);
newProjectFolder = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getPath(), item.getType().name());
newProjectFolder = new ItemDescription(item.getId(), item.getName(), item.getOwner(), item.getPath(),
item.getType().name());
}
@Override
@ -108,15 +110,16 @@ public class ProjectFolderSelectionCard extends WizardCard {
setBackButtonVisible(true);
setEnableNextButton(true);
setNextButtonVisible(true);
getWizardWindow().center();
}
private void checkData() {
if(newProjectFolder!=null){
ProjectCreateWizard wiz = (ProjectCreateWizard) getWizardWindow();
wiz.getProjectCreateSession().setNewProjectFolder(newProjectFolder);
goNext();
if (newProjectFolder != null) {
ProjectCreateWizard wiz = (ProjectCreateWizard) getWizardWindow();
wiz.getProjectCreateSession().setNewProjectFolder(newProjectFolder);
goNext();
} else {
GWTMessages.alert("Attention", "Select a valid project folder!", getZIndex());
}

View File

@ -9,6 +9,7 @@ import org.gcube.portlets.widgets.githubconnector.client.util.GWTMessages;
import org.gcube.portlets.widgets.githubconnector.client.util.WaitDialog;
import org.gcube.portlets.widgets.githubconnector.client.wizard.WizardCard;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback;
@ -23,31 +24,28 @@ import com.google.gwt.user.client.ui.SimplePanel;
*
*/
public class ProjectSetupSelectionCard extends WizardCard {
private SAIDescriptor saiDescription;
private ListBox projectSetupListBox;
// private DecoratorPanel decPanel;
public ProjectSetupSelectionCard() {
super("Project Setup", "Configure the project");
retrieveSaiDescriptor();
super("Setup", "Configure the project");
create();
}
private void init(){
private void create() {
try {
SimplePanel projectSetupSelectionPanel = new SimplePanel();
projectSetupListBox = new ListBox();
projectSetupListBox.setWidth("176px");
projectSetupListBox.ensureDebugId("projectSetupListBox");
for (ProjectSetup projectSetup : saiDescription.getAvailableProjectConfigurations()) {
projectSetupListBox.addItem(projectSetup.getLanguage());
}
projectSetupListBox.setEnabled(false);
// Form
FlexTable layout = new FlexTable();
layout.setCellSpacing(10);
@ -61,20 +59,25 @@ public class ProjectSetupSelectionCard extends WizardCard {
projectSetupSelectionPanel.add(loginFlexTable);
setContent(projectSetupSelectionPanel);
Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
init();
}
});
} catch (Exception e) {
GWT.log("Error: " + e.getLocalizedMessage());
e.printStackTrace();
}
}
private void retrieveSaiDescriptor() {
private void init() {
final WaitDialog waitDialog = new WaitDialog(getZIndex());
waitDialog.show();
StatAlgoImporterServiceAsync.INSTANCE.getSAIDescripor(new AsyncCallback<SAIDescriptor>() {
@Override
public void onFailure(Throwable caught) {
waitDialog.hide();
@ -91,9 +94,14 @@ public class ProjectSetupSelectionCard extends WizardCard {
@Override
public void onSuccess(SAIDescriptor saiDesc) {
waitDialog.hide();
saiDescription=saiDesc;
init();
GWT.log("SAI Descriptor: " + saiDesc);
saiDescription = saiDesc;
for (ProjectSetup projectSetup : saiDescription.getAvailableProjectConfigurations()) {
projectSetupListBox.addItem(projectSetup.getLanguage());
}
projectSetupListBox.setEnabled(true);
}
});
@ -129,7 +137,7 @@ public class ProjectSetupSelectionCard extends WizardCard {
setBackButtonVisible(false);
setEnableNextButton(true);
setNextButtonVisible(true);
getWizardWindow().center();
}
@ -140,15 +148,15 @@ public class ProjectSetupSelectionCard extends WizardCard {
if (language == null || language.isEmpty()) {
GWTMessages.alert("Attention", "Select a type!", getZIndex());
} else {
ProjectSetup selectedSetup=null;
ProjectSetup selectedSetup = null;
ProjectCreateWizard wiz = (ProjectCreateWizard) getWizardWindow();
for(ProjectSetup pSetup:saiDescription.getAvailableProjectConfigurations()){
if(pSetup.getLanguage().compareTo(language)==0){
selectedSetup=pSetup;
for (ProjectSetup pSetup : saiDescription.getAvailableProjectConfigurations()) {
if (pSetup.getLanguage().compareTo(language) == 0) {
selectedSetup = pSetup;
break;
}
}
if(selectedSetup!=null){
if (selectedSetup != null) {
wiz.getProjectCreateSession().setProjectSetup(selectedSetup);
goNext();
} else {

View File

@ -0,0 +1,74 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.WorkAreaEventType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
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;
/**
* Project Status Event
*
*
* @author Giancarlo Panichi
*
*
*/
public class WorkAreaEvent extends GwtEvent<WorkAreaEvent.WorkAreaEventHandler> {
public static Type<WorkAreaEventHandler> TYPE = new Type<WorkAreaEventHandler>();
private WorkAreaEventType workAreaEventType;
private Project project;
public interface WorkAreaEventHandler extends EventHandler {
void onWorkArea(WorkAreaEvent event);
}
public interface HasWorkAreaEventHandler extends HasHandlers {
public HandlerRegistration addWorkAreaEventHandler(WorkAreaEventHandler handler);
}
public WorkAreaEvent() {
this.workAreaEventType = WorkAreaEventType.WORK_AREA_SETUP;
this.project = null;
}
public WorkAreaEvent(WorkAreaEventType workAreaEventType, Project project) {
this.workAreaEventType = workAreaEventType;
this.project = project;
}
@Override
protected void dispatch(WorkAreaEventHandler handler) {
handler.onWorkArea(this);
}
@Override
public Type<WorkAreaEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<WorkAreaEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, WorkAreaEvent workAreaEvent) {
source.fireEvent(workAreaEvent);
}
public WorkAreaEventType getWorkAreaEventType() {
return workAreaEventType;
}
public Project getProject() {
return project;
}
@Override
public String toString() {
return "WorkAreaEvent [workAreaEventType=" + workAreaEventType + ", project=" + project + "]";
}
}

View File

@ -23,6 +23,7 @@ public class MainDataPanel extends SimpleContainer {
public MainDataPanel(EventBus eventBus) {
super();
this.eventBus = eventBus;
Log.debug("MainDataPanel");
init();
create();
bindToEvents();
@ -46,11 +47,13 @@ public class MainDataPanel extends SimpleContainer {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Catch ProjectStatusEvent");
Log.debug("Main Data Panel catch ProjectStatusEvent: "+event);
doProjectStatusCommand(event);
}
});
Log.debug("Main Data Panel bind to event do!");
}
private void doProjectStatusCommand(ProjectStatusEvent event) {

View File

@ -4,19 +4,22 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.create.ProjectCreateWizard;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.NewMainCodeEvent;
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.WorkAreaEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.monitor.StatAlgoImporterMonitor;
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.SessionExpiredType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.WorkAreaEventType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.SAIDescriptor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
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.ProjectCreateSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.githubconnector.client.GitHubConnectorWizard;
import org.gcube.portlets.widgets.githubconnector.client.wizard.event.WizardEvent;
@ -47,85 +50,98 @@ public class ProjectManager {
public ProjectManager(EventBus eventBus) {
this.eventBus = eventBus;
// bind();
}
public void bind(){
eventBus.addHandler(ProjectStatusEvent.TYPE,
new ProjectStatusEvent.ProjectStatusEventHandler() {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Catch ProjectStatusEvent");
doProjectStatusManage(event);
}
});
public void bind() {
eventBus.addHandler(ProjectStatusEvent.TYPE, new ProjectStatusEvent.ProjectStatusEventHandler() {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Project Manager catch ProjectStatusEvent:" + event);
// doProjectStatusManage(event);
}
});
}
private void doProjectStatusManage(ProjectStatusEvent event) {
if(event==null|| event.getProjectStatusEventType()==null){
return;
}
switch(event.getProjectStatusEventType()){
case WORK_AREA_READY:
fireProjectStatusOpenEvent();
break;
default:
break;
}
}
public void createProject() {
}
private void selectProjectFolder(){
WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog("Select Project Folder", true);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
// Example
WizardEvent.WizardEventHandler handler = new WizardEvent.WizardEventHandler() {
@Override
public void onSelectedItem(Item item) {
if (item.getType() == ItemType.FOLDER) {
createProjectOnServer(item);
public void onResponse(WizardEvent event) {
if (event == null || event.getWizardEventType() == null) {
GWT.log("ProjectCreateWizard Response: null");
return;
} else {
UtilsGXT3.info("Attention", "Select a valid project folder!");
GWT.log("ProjectCreateWizard Response: " + event.getWizardEventType());
switch (event.getWizardEventType()) {
case Completed:
ProjectCreateWizard wizard = (ProjectCreateWizard) event.getSource();
ProjectCreateSession projectCreateSession = wizard.getProjectCreateSession();
createProjectOnServer(projectCreateSession);
break;
case Background:
case Aborted:
case Failed:
break;
default:
break;
}
}
}
@Override
public void onFailed(Throwable throwable) {
Log.error("Error in create project: " + throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace();
}
@Override
public void onAborted() {
}
@Override
public void onNotValidSelection() {
UtilsGXT3.info("Attention", "Select a valid project folder!");
}
};
wselectDialog.addWorkspaceExplorerSelectNotificationListener(handler);
wselectDialog.setZIndex(XDOM.getTopZIndex());
wselectDialog.show();
final ProjectCreateWizard wizard = new ProjectCreateWizard();
wizard.addWizardEventHandler(handler);
wizard.setZIndex(XDOM.getTopZIndex());
wizard.show();
}
/*
* private void selectProjectFolder() {
*
* WorkspaceExplorerSelectDialog wselectDialog = new
* WorkspaceExplorerSelectDialog("Select Project Folder", true);
*
* WorskpaceExplorerSelectNotificationListener handler = new
* WorskpaceExplorerSelectNotificationListener() {
*
* @Override public void onSelectedItem(Item item) {
*
* if (item.getType() == ItemType.FOLDER) {
*
* } else { UtilsGXT3.info("Attention", "Select a valid project folder!"); }
*
* }
*
* @Override public void onFailed(Throwable throwable) {
* Log.error("Error in create project: " + throwable.getLocalizedMessage());
* UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
* throwable.printStackTrace(); }
*
* @Override public void onAborted() {
*
* }
*
* @Override public void onNotValidSelection() { UtilsGXT3.info("Attention",
* "Select a valid project folder!"); } };
*
* wselectDialog.addWorkspaceExplorerSelectNotificationListener(handler);
* wselectDialog.setZIndex(XDOM.getTopZIndex()); wselectDialog.show(); }
*/
public void openProject() {
WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog("Select Project Folder", true);
@ -297,36 +313,36 @@ public class ProjectManager {
}
private void createProjectOnServer(Item item) {
private void createProjectOnServer(final ProjectCreateSession projectCreateSession) {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
Log.debug("Create Project Item selected: " + item);
final ItemDescription newProjectFolder = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getPath(), item.getType().name());
StatAlgoImporterServiceAsync.INSTANCE.createProjectOnWorkspace(newProjectFolder, new AsyncCallback<Void>() {
Log.debug("Create Project: " + projectCreateSession);
StatAlgoImporterServiceAsync.INSTANCE.createProjectOnWorkspace(projectCreateSession,
new AsyncCallback<Project>() {
@Override
public void onSuccess(Void result) {
monitor.hide();
project = new Project(new ProjectFolder(newProjectFolder));
fireProjectStatusWorkAreaSetupEvent();
}
@Override
public void onSuccess(Project p) {
monitor.hide();
project = p;
fireWorkAreaSetupEvent();
@Override
public void onFailure(Throwable caught) {
monitor.hide();
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();
}
}
});
@Override
public void onFailure(Throwable caught) {
monitor.hide();
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();
}
});
}
protected void openProjectOnServer(Item item) {
private void openProjectOnServer(Item item) {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
Log.debug("Open Project Item selected: " + item);
@ -339,7 +355,7 @@ public class ProjectManager {
Log.debug("Open: " + projectOpened);
monitor.hide();
project = projectOpened;
fireProjectStatusWorkAreaSetupEvent();
fireWorkAreaSetupEvent();
}
@ -742,7 +758,7 @@ public class ProjectManager {
public void onSuccess(Project p) {
if (p != null) {
project = p;
fireProjectStatusWorkAreaSetupEvent();
fireWorkAreaSetupEvent();
}
}
@ -750,93 +766,96 @@ public class ProjectManager {
}
private void fireProjectStatusWorkAreaSetupEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.WORK_AREA_SETUP, project);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusOpenEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.OPEN, project);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
private void fireWorkAreaSetupEvent() {
WorkAreaEvent workAreaEvent = new WorkAreaEvent(WorkAreaEventType.WORK_AREA_SETUP, project);
Log.debug("Project Manager workAreaEvent fire! " + workAreaEvent);
eventBus.fireEvent(workAreaEvent);
}
@SuppressWarnings("unused")
private void fireProjectStatusSaveProjectEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SAVE, project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusAddResourceEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.ADD_RESOURCE, project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusDeleteEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.DELETE_RESOURCE, project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusDeleteMainCodeEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.DELETE_MAIN_CODE,
project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
@SuppressWarnings("unused")
private void fireProjectStatusUpdateEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.UPDATE, project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusExplorerRefreshEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.EXPLORER_REFRESH,
project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusMainCodeSetEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.MAIN_CODE_SET, project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusSoftwareCreatedEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SOFTWARE_CREATED,
project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusSoftwarePublishEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SOFTWARE_PUBLISH,
project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusSoftwareRepackageEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SOFTWARE_REPACKAGE,
project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusStartEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.START, project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusOpenEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.OPEN, project);
Log.debug("Project Manager ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
}
}

View File

@ -8,6 +8,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.St
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectCreateSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
@ -52,7 +53,7 @@ public interface StatAlgoImporterService extends RemoteService {
// Code
public ArrayList<CodeData> getCode() throws StatAlgoImporterServiceException;
public void createProjectOnWorkspace(ItemDescription itemDescription) throws StatAlgoImporterServiceException;
public Project createProjectOnWorkspace(ProjectCreateSession projectCreateSession) throws StatAlgoImporterServiceException;
//
public Project setMainCode(ItemDescription itemDescription) throws StatAlgoImporterServiceException;

View File

@ -10,6 +10,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.S
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectCreateSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
@ -35,7 +36,7 @@ public interface StatAlgoImporterServiceAsync {
void getCode(AsyncCallback<ArrayList<CodeData>> callback);
void createProjectOnWorkspace(ItemDescription itemDescription, AsyncCallback<Void> callback);
void createProjectOnWorkspace(ProjectCreateSession projectCreateSession, AsyncCallback<Project> callback);
void setMainCode(ItemDescription itemDescription, AsyncCallback<Project> callback);

View File

@ -28,6 +28,7 @@ public class ToolsPanel extends ContentPanel {
public ToolsPanel(EventBus eventBus) {
super();
this.eventBus = eventBus;
Log.debug("ToolsPanel");
init();
create();
bindToEvents();
@ -49,11 +50,12 @@ public class ToolsPanel extends ContentPanel {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Catch ProjectStatusEvent");
Log.debug("Tools Panel Catch ProjectStatusEvent"+event);
doProjectStatusCommand(event);
}
});
Log.debug("ToolsPanel bind to Event do!");
}
private void doProjectStatusCommand(ProjectStatusEvent event) {

View File

@ -65,13 +65,10 @@ public class ExplorerProjectPanel extends ContentPanel {
}
public ExplorerProjectPanel(EventBus eventBus,
AccordionLayoutAppearance appearance) {
public ExplorerProjectPanel(EventBus eventBus, AccordionLayoutAppearance appearance) {
super(appearance);
Log.debug("ExplorerProjectPanel");
this.eventBus = eventBus;
// msgs = GWT.create(ServiceCategoryMessages.class);
init();
bindToEvents();
@ -86,26 +83,26 @@ public class ExplorerProjectPanel extends ContentPanel {
setResize(true);
setAnimCollapse(false);
setHeadingText("Project Explorer");
}
private void bindToEvents() {
eventBus.addHandler(ProjectStatusEvent.TYPE,
new ProjectStatusEvent.ProjectStatusEventHandler() {
eventBus.addHandler(ProjectStatusEvent.TYPE, new ProjectStatusEvent.ProjectStatusEventHandler() {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
manageProjectStatusEvents(event);
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("ExplorerProjectPanel Catch Event ProjectStatus: " + event);
}
});
manageProjectStatusEvents(event);
}
});
Log.debug("ExplorerProjectPanel bind to Event do!");
}
private void manageProjectStatusEvents(ProjectStatusEvent event) {
Log.debug("InputVariablePanel recieved event ProjectStatus: "
+ event.toString());
switch (event.getProjectStatusEventType()) {
case START:
break;
@ -113,15 +110,15 @@ public class ExplorerProjectPanel extends ContentPanel {
case UPDATE:
case ADD_RESOURCE:
case DELETE_RESOURCE:
case DELETE_MAIN_CODE:
case DELETE_MAIN_CODE:
create(event);
break;
case SAVE:
case SAVE:
case MAIN_CODE_SET:
case SOFTWARE_CREATED:
case SOFTWARE_PUBLISH:
case SOFTWARE_REPACKAGE:
case EXPLORER_REFRESH:
case EXPLORER_REFRESH:
reloadWSResourceExplorerPanel();
break;
default:
@ -133,12 +130,8 @@ public class ExplorerProjectPanel extends ContentPanel {
try {
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
event.getProject().getProjectFolder().getFolder()
.getId(), false);
event.getProject().getProjectFolder().getFolder().getId(), false);
WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
@ -164,27 +157,23 @@ public class ExplorerProjectPanel extends ContentPanel {
}
};
wsResourcesExplorerPanel
.addWorkspaceExplorerSelectNotificationListener(wsResourceExplorerListener);
wsResourcesExplorerPanel.addWorkspaceExplorerSelectNotificationListener(wsResourceExplorerListener);
wsResourcesExplorerPanel.ensureDebugId("wsResourceExplorerPanel");
VerticalLayoutContainer vResourcesExplorerContainer = new VerticalLayoutContainer();
vResourcesExplorerContainer.setScrollMode(ScrollMode.AUTO);
vResourcesExplorerContainer.add(wsResourcesExplorerPanel,
new VerticalLayoutData(1, -1, new Margins(0)));
vResourcesExplorerContainer.add(wsResourcesExplorerPanel, new VerticalLayoutData(1, -1, new Margins(0)));
// DND
dnd = new MultipleDNDUpload();
dnd.setParameters(event.getProject().getProjectFolder()
.getFolder().getId(), UPLOAD_TYPE.File);
dnd.setParameters(event.getProject().getProjectFolder().getFolder().getId(), UPLOAD_TYPE.File);
dnd.addUniqueContainer(vResourcesExplorerContainer);
WorskpaceUploadNotificationListener workspaceUploaderListener = new WorskpaceUploadNotificationListener() {
@Override
public void onUploadCompleted(String parentId, String itemId) {
Log.debug("Upload completed: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
Log.debug("Upload completed: [parentID: " + parentId + ", itemId: " + itemId + "]");
wsResourcesExplorerPanel.refreshRootFolderView();
forceLayout();
@ -192,22 +181,18 @@ public class ExplorerProjectPanel extends ContentPanel {
@Override
public void onUploadAborted(String parentId, String itemId) {
Log.debug("Upload Aborted: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
Log.debug("Upload Aborted: [parentID: " + parentId + ", itemId: " + itemId + "]");
}
@Override
public void onError(String parentId, String itemId,
Throwable throwable) {
Log.debug("Upload Error: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
public void onError(String parentId, String itemId, Throwable throwable) {
Log.debug("Upload Error: [parentID: " + parentId + ", itemId: " + itemId + "]");
throwable.printStackTrace();
}
@Override
public void onOverwriteCompleted(String parentId, String itemId) {
Log.debug("Upload Override Completed: [parentID: "
+ parentId + ", itemId: " + itemId + "]");
Log.debug("Upload Override Completed: [parentID: " + parentId + ", itemId: " + itemId + "]");
wsResourcesExplorerPanel.refreshRootFolderView();
forceLayout();
}
@ -277,7 +262,7 @@ public class ExplorerProjectPanel extends ContentPanel {
toolBar.add(btnOpen, new BoxLayoutData(new Margins(0)));
toolBar.add(btnDelete, new BoxLayoutData(new Margins(0)));
toolBar.add(btnReload, new BoxLayoutData(new Margins(0)));
VerticalLayoutContainer v = new VerticalLayoutContainer();
v.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
@ -300,72 +285,57 @@ public class ExplorerProjectPanel extends ContentPanel {
private void setMainCode(SelectEvent event) {
Log.debug("Set Main Code");
if (selectedItem != null
&& selectedItem.getType().compareTo(ItemType.EXTERNAL_FILE) == 0) {
if (selectedItem != null && selectedItem.getType().compareTo(ItemType.EXTERNAL_FILE) == 0) {
loadData();
} else {
UtilsGXT3.info("Attention",
"Select a valid file to be used as main!");
UtilsGXT3.info("Attention", "Select a valid file to be used as main!");
}
}
private void deleteItem(SelectEvent event) {
ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(),
selectedItem.getType().name());
DeleteItemEvent deleteItemEvent = new DeleteItemEvent(
itemDescription);
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);
}
private void loadData() {
ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem
.getType().name());
MainCodeSetEvent mainCodeSetEvent = new MainCodeSetEvent(
itemDescription);
ItemDescription itemDescription = new ItemDescription(selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
MainCodeSetEvent mainCodeSetEvent = new MainCodeSetEvent(itemDescription);
eventBus.fireEvent(mainCodeSetEvent);
Log.debug("Fired: " + mainCodeSetEvent);
}
private void openFile() {
if (selectedItem != null
&& !selectedItem.isFolder()) {
if (selectedItem != null && !selectedItem.isFolder()) {
final ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(),
selectedItem.getType().name());
StatAlgoImporterServiceAsync.INSTANCE.getPublicLink(
itemDescription, new AsyncCallback<String>() {
final ItemDescription itemDescription = new ItemDescription(selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
@Override
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
Log.error("Error open file: "
+ caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
caught.printStackTrace();
StatAlgoImporterServiceAsync.INSTANCE.getPublicLink(itemDescription, new AsyncCallback<String>() {
}
@Override
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
} else {
Log.error("Error open file: " + caught.getLocalizedMessage());
UtilsGXT3.alert("Error", caught.getLocalizedMessage());
}
caught.printStackTrace();
@Override
public void onSuccess(String link) {
Log.debug("Retrieved link: " + link);
Window.open(link, itemDescription.getName(), "");
}
}
});
@Override
public void onSuccess(String link) {
Log.debug("Retrieved link: " + link);
Window.open(link, itemDescription.getName(), "");
}
});
} else {
UtilsGXT3.info("Attention", "Select a file!");

View File

@ -26,7 +26,7 @@ public class InputVariablePanel extends ContentPanel {
public InputVariablePanel(EventBus eventBus) {
super();
Log.debug("Open InputVariablePanel");
Log.debug("InputVariablePanel");
this.eventBus = eventBus;
init();
bindToEvents();
@ -91,7 +91,7 @@ public class InputVariablePanel extends ContentPanel {
}
});
Log.debug("InputVariablePanel bind to Event do!");
}
protected void addNewSelectedRowsVariable(

View File

@ -8,8 +8,6 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type;
*/
public enum ProjectStatusEventType {
START,
WORK_AREA_SETUP,
WORK_AREA_READY,
OPEN,
MAIN_CODE_SET,
UPDATE,

View File

@ -0,0 +1,11 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type;
/**
*
* @author Giancarlo Panichi
*
*
*/
public enum WorkAreaEventType {
WORK_AREA_SETUP
}

View File

@ -1,9 +1,12 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata;
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.workarea;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.WorkAreaEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.MainDataPanel;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.ToolsPanel;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportBlackBox;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.shared.EventBus;
@ -31,49 +34,37 @@ public class WorkAreaPanel extends SimpleContainer {
bindToEvents();
}
protected void init() {
private void init() {
forceLayoutOnResize = true;
setBorders(false);
}
protected void create() {
private void create() {
}
private void bindToEvents() {
eventBus.addHandler(ProjectStatusEvent.TYPE, new ProjectStatusEvent.ProjectStatusEventHandler() {
eventBus.addHandler(WorkAreaEvent.TYPE, new WorkAreaEvent.WorkAreaEventHandler() {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Catch ProjectStatusEvent");
public void onWorkArea(WorkAreaEvent event) {
Log.debug("Work Area Panel Catch WorkAreaEvent: " + event);
doProjectStatusCommand(event);
}
});
Log.debug("Work Area Panel bind to event do!");
}
private void doProjectStatusCommand(ProjectStatusEvent event) {
if (event.getProjectStatusEventType() == null) {
private void doProjectStatusCommand(WorkAreaEvent event) {
if (event.getWorkAreaEventType() == null) {
return;
}
switch (event.getProjectStatusEventType()) {
switch (event.getWorkAreaEventType()) {
case WORK_AREA_SETUP:
setupWorkAreaPanel(event.getProject());
break;
case DELETE_MAIN_CODE:
case MAIN_CODE_SET:
case OPEN:
case WORK_AREA_READY:
case SAVE:
case START:
case UPDATE:
case SOFTWARE_CREATED:
case SOFTWARE_PUBLISH:
case SOFTWARE_REPACKAGE:
case ADD_RESOURCE:
case DELETE_RESOURCE:
case EXPLORER_REFRESH:
break;
default:
break;
@ -83,17 +74,26 @@ public class WorkAreaPanel extends SimpleContainer {
private void setupWorkAreaPanel(Project project) {
if (project != null) {
if (project.getProjectConfig() == null || project.getProjectConfig().getLanguage() == "R") {
if (project.getProjectConfig() == null || project.getProjectConfig().getProjectSupport() == null) {
Log.debug("Work Area Panel Set R Area! ");
createRArea(project);
} else {
createBlackBoxArea(project);
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBlackBox) {
Log.debug("Work Area Panel Set BlackBox Area! ");
createBlackBoxArea(project);
} else {
Log.debug("Work Area Panel Set R Area! ");
createRArea(project);
}
}
forceLayout();
fireWorkAreaReady(project);
fireProjectStatusOpenEvent(project);
} else {
Log.debug("Work Area Panel: project is null! ");
}
}
private void createBlackBoxArea(Project project) {
@ -130,14 +130,17 @@ public class WorkAreaPanel extends SimpleContainer {
clear();
add(mainPanelLayout);
}
private void fireWorkAreaReady(Project project) {
ProjectStatusEvent event = new ProjectStatusEvent(ProjectStatusEventType.WORK_AREA_READY, project);
eventBus.fireEvent(event);
private void fireProjectStatusOpenEvent(Project project) {
try {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.OPEN, project);
Log.debug("Work Area Panel ProjectStatusEvent fire! " + projectStatusEvent);
eventBus.fireEvent(projectStatusEvent);
} catch (Throwable e) {
Log.error(e.getLocalizedMessage(), e);
}
}

View File

@ -28,7 +28,11 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUpl
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
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.ProjectConfig;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectCreateSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectFolder;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportBlackBox;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportREdit;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.json.JSONArray;
@ -245,27 +249,45 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
*
*/
@Override
public void createProjectOnWorkspace(ItemDescription newProjectFolder)
public Project createProjectOnWorkspace(ProjectCreateSession projectCreateSession)
throws StatAlgoImporterServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil
.getServiceCredentials(httpRequest);
logger.debug("createProjectOnWorkspace(): " + newProjectFolder);
if (ProjectArchiver.existProjectInFolder(newProjectFolder,
logger.debug("createProjectOnWorkspace(): " + projectCreateSession);
Project project;
if (ProjectArchiver.existProjectInFolder(projectCreateSession.getNewProjectFolder(),
serviceCredentials)) {
throw new StatAlgoImporterServiceException(
"Attention a project is present in this folder, use open or another folder!");
} else {
ProjectFolder projectFolder = new ProjectFolder(
newProjectFolder);
Project projectSession = new Project(projectFolder);
ProjectFolder projectFolder = new ProjectFolder(projectCreateSession.getNewProjectFolder());
ProjectConfig projectConfig=null;
if (projectCreateSession.getProjectSetup() != null
&& projectCreateSession.getProjectSetup().getProjectSupportType() != null) {
switch(projectCreateSession.getProjectSetup().getProjectSupportType()){
case BlackBox:
projectConfig=new ProjectConfig(projectCreateSession.getProjectSetup().getLanguage(),
new ProjectSupportBlackBox());
break;
case REdit:
projectConfig=new ProjectConfig(projectCreateSession.getProjectSetup().getLanguage(),
new ProjectSupportREdit());
break;
default:
break;
}
}
project = new Project(projectFolder,projectConfig);
SessionUtil.setProjectSession(httpRequest, serviceCredentials,
projectSession);
logger.debug("Create Project: " + projectSession);
project);
}
return;
logger.debug("Create Project: " + project);
return project;
} catch (StatAlgoImporterServiceException e) {
e.printStackTrace();
throw e;

View File

@ -8,7 +8,7 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.shared;
*/
public class Constants {
public static final boolean DEBUG_MODE = false;
public static final boolean DEBUG_MODE = true;
public static final boolean TEST_ENABLE = false;
public static final String APPLICATION_ID = "org.gcube.portlets.user.statisticalalgorithmsimporter.server.portlet.StatAlgoImporterPortlet";

View File

@ -22,9 +22,10 @@ public class Project implements Serializable {
super();
}
public Project(ProjectFolder projectFolder) {
public Project(ProjectFolder projectFolder, ProjectConfig projectConfig) {
super();
this.projectFolder = projectFolder;
this.projectConfig = projectConfig;
}

View File

@ -56,19 +56,19 @@
name="locale" values="es" /> <set-property name="locale" value="en, it, es"
/> <set-property-fallback name="locale" value="en" /> -->
<!--
<set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
name="log_DivLogger" value="ENABLED" /> <set-property name="log_GWTLogger"
value="ENABLED" /> <set-property name="log_SystemLogger" value="ENABLED"
/> -->
/>
<!-- Not in GWT 2.6 <set-property name="log_FirebugLogger" value="ENABLED"
/> -->
<!--
<set-property name="log_ConsoleLogger" value="DISABLED" />
<set-property name="log_DivLogger" value="DISABLED" />
<set-property name="log_GWTLogger" value="DISABLED" />
<set-property name="log_SystemLogger" value="DISABLED" />
<set-property name="log_SystemLogger" value="DISABLED" /> -->
<!-- Not in GWT 2.6 <set-property name="log_FirebugLogger" value="DISABLED"
/> -->