Start work for support BlackBox Project

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@149326 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2017-06-06 18:15:22 +00:00
parent f8aaa60efb
commit 658dcd6d7f
26 changed files with 1511 additions and 402 deletions

View File

@ -1,11 +1,10 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client; package org.gcube.portlets.user.statisticalalgorithmsimporter.client;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.MainDataPanel; 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.resource.StatAlgoImporterResources;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.ribbon.StatAlgoImporterRibbon; 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.StatAlgoImporterService;
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.tools.ToolsPanel;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.EntryPoint;
@ -37,7 +36,7 @@ public class StatAlgoImporter implements EntryPoint {
.create(StatAlgoImporterService.class); .create(StatAlgoImporterService.class);
// Main Panel // Main Panel
private static BorderLayoutContainer mainPanelLayout; private static BorderLayoutContainer workAreaPanelLayout;
/** /**
* {@inheritDoc} * {@inheritDoc}
@ -61,29 +60,6 @@ public class StatAlgoImporter implements EntryPoint {
} }
/*private void loadScope() {
ClientScopeHelper.getService().setScope(Location.getHref(),
new AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
if (result) {
loadMainPanel();
} else {
UtilsGXT3
.info("Attention",
"ClientScopeHelper has returned a false value!");
}
}
@Override
public void onFailure(Throwable caught) {
UtilsGXT3.alert("Error", "Error setting scope: "
+ caught.getLocalizedMessage());
caught.printStackTrace();
}
});
}*/
private void loadMainPanel() { private void loadMainPanel() {
StatAlgoImporterResources.INSTANCE.saiStyles().ensureInjected(); StatAlgoImporterResources.INSTANCE.saiStyles().ensureInjected();
@ -93,17 +69,17 @@ public class StatAlgoImporter implements EntryPoint {
EventBus eventBus = controller.getEventBus(); EventBus eventBus = controller.getEventBus();
// Layout // Layout
mainPanelLayout = new BorderLayoutContainer(); workAreaPanelLayout = new BorderLayoutContainer();
mainPanelLayout.setId("mainPanelLayout"); //workAreaPanelLayout.setId("workAreaPanelLayout");
mainPanelLayout.setBorders(false); workAreaPanelLayout.setBorders(false);
mainPanelLayout.setResize(true); workAreaPanelLayout.setResize(true);
// mainPanelLayout.getElement().getStyle().setBackgroundColor("rgb(3, 126, 207)"); // mainPanelLayout.getElement().getStyle().setBackgroundColor("rgb(3, 126, 207)");
// Main // Main
final MainDataPanel mainDataPanel = new MainDataPanel(eventBus); final WorkAreaPanel workAreaPanel = new WorkAreaPanel(eventBus);
MarginData mainData = new MarginData(new Margins(2)); MarginData workAreaData = new MarginData(new Margins(2));
mainPanelLayout.setCenterWidget(mainDataPanel, mainData); workAreaPanelLayout.setCenterWidget(workAreaPanel, workAreaData);
// Menu // Menu
StatAlgoImporterRibbon accountingManagerMenu = new StatAlgoImporterRibbon( StatAlgoImporterRibbon accountingManagerMenu = new StatAlgoImporterRibbon(
@ -114,32 +90,17 @@ public class StatAlgoImporter implements EntryPoint {
ribbonData.setCollapsible(false); ribbonData.setCollapsible(false);
ribbonData.setSplit(false); ribbonData.setSplit(false);
mainPanelLayout.setNorthWidget(accountingManagerMenu.getContainer(), workAreaPanelLayout.setNorthWidget(accountingManagerMenu.getContainer(),
ribbonData); ribbonData);
// Right //
ToolsPanel toolsPanel = new ToolsPanel(eventBus); bind(workAreaPanelLayout);
BorderLayoutData eastData = new BorderLayoutData(500); controller.setMainPanelLayout(workAreaPanelLayout);
eastData.setCollapsible(true);
eastData.setSplit(false);
eastData.setFloatable(false);
eastData.setCollapseMini(true);
eastData.setMargins(new Margins(0, 5, 0, 5));
eastData.setCollapseHidden(false);
// estData.setMaxSize(510);
// estData.setMinSize(310);
mainPanelLayout.setEastWidget(toolsPanel, eastData);
toolsPanel.enable();
toolsPanel.collapse();
bind(mainPanelLayout);
controller.setMainPanelLayout(mainPanelLayout);
controller.restoreUISession(); controller.restoreUISession();
} }
protected void bind(BorderLayoutContainer mainWidget) { private void bind(BorderLayoutContainer mainWidget) {
try { try {
RootPanel root = RootPanel.get(JSP_TAG_ID); RootPanel root = RootPanel.get(JSP_TAG_ID);
Log.info("Root Panel: " + root); Log.info("Root Panel: " + root);

View File

@ -48,6 +48,7 @@ public class StatAlgoImporterController {
private SimpleEventBus eventBus; private SimpleEventBus eventBus;
private UserInfo userInfo; private UserInfo userInfo;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private BorderLayoutContainer mainPanel; private BorderLayoutContainer mainPanel;
private ProjectManager pm; private ProjectManager pm;
@ -61,16 +62,17 @@ public class StatAlgoImporterController {
public StatAlgoImporterController() { public StatAlgoImporterController() {
eventBus = new SimpleEventBus(); eventBus = new SimpleEventBus();
pm = new ProjectManager(eventBus);
init(); init();
} }
private void init() { private void init() {
callHello(); callHello();
checkSession(); checkSession();
pm = new ProjectManager(eventBus);
bindToEvents(); bindToEvents();
} }
private void checkSession() { private void checkSession() {
// if you do not need to something when the session expire // if you do not need to something when the session expire
//CheckSession.getInstance().startPolling(); //CheckSession.getInstance().startPolling();
@ -176,6 +178,9 @@ public class StatAlgoImporterController {
} }
// Bind Controller to events on bus // Bind Controller to events on bus
private void bindToEvents() { private void bindToEvents() {
eventBus.addHandler(SessionExpiredEvent.TYPE, eventBus.addHandler(SessionExpiredEvent.TYPE,
@ -250,6 +255,10 @@ public class StatAlgoImporterController {
pm.startProjectManager(); pm.startProjectManager();
} }
private void doMenuCommand(StatAlgoImporterRibbonEvent event) { private void doMenuCommand(StatAlgoImporterRibbonEvent event) {
StatAlgoImporterRibbonType eventType = event.getStatRunnerRibbonType(); StatAlgoImporterRibbonType eventType = event.getStatRunnerRibbonType();

View File

@ -0,0 +1,40 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.create;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectCreateSession;
import org.gcube.portlets.widgets.githubconnector.client.wizard.WizardWindow;
import com.google.gwt.core.client.GWT;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectCreateWizard extends WizardWindow {
private ProjectCreateSession projectCreateSession;
public ProjectCreateWizard() {
super("Project Create");
GWT.log("ProjectCreateWizard");
projectCreateSession = new ProjectCreateSession();
create();
}
private void create() {
ProjectSetupSelectionCard CredentialCard = new ProjectSetupSelectionCard();
addCard(CredentialCard);
CredentialCard.setup();
}
public ProjectCreateSession getProjectCreateSession() {
return projectCreateSession;
}
}

View File

@ -0,0 +1,138 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.create;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.githubconnector.client.util.GWTMessages;
import org.gcube.portlets.widgets.githubconnector.client.wizard.WizardCard;
import org.gcube.portlets.widgets.githubconnector.client.wizard.event.WizardEvent;
import org.gcube.portlets.widgets.githubconnector.client.wizard.event.WizardEventType;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectPanel;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
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;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectFolderSelectionCard extends WizardCard {
// private DecoratorPanel decPanel;
private ItemDescription newProjectFolder;
public ProjectFolderSelectionCard() {
super("Project Setup", "Select the project folder");
try {
WorkspaceExplorerSelectPanel wselectPanel = new WorkspaceExplorerSelectPanel("Select Project Folder", true);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
if (item.getType() == ItemType.FOLDER) {
createNewProjectFolder(item);
} else {
newProjectFolder=null;
GWTMessages.alert("Attention", "Select a valid project folder!", getZIndex());
}
}
@Override
public void onFailed(Throwable throwable) {
Log.error("Error in create project: " + throwable.getLocalizedMessage(), throwable);
showErrorAndHide("Error", throwable.getLocalizedMessage());
}
@Override
public void onAborted() {
}
@Override
public void onNotValidSelection() {
newProjectFolder=null;
GWTMessages.alert("Attention", "Select a valid project folder!", getZIndex());
}
};
wselectPanel.addWorkspaceExplorerSelectNotificationListener(handler);
setContent(wselectPanel);
} catch (Exception e) {
GWT.log("Error: " + e.getLocalizedMessage());
e.printStackTrace();
}
}
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());
}
@Override
public void setup() {
Command sayNextCard = new Command() {
public void execute() {
checkData();
}
};
Command sayPreviousCard = new Command() {
public void execute() {
try {
GWT.log("PreviousCard");
getWizardWindow().setNextButtonToDefault();
getWizardWindow().previousCard();
} catch (Exception e) {
GWT.log("sayPreviousCard :" + e.getLocalizedMessage());
}
}
};
getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
getWizardWindow().setNextButtonCommand(sayNextCard);
getWizardWindow().setNextButtonToFinish();
setEnableBackButton(true);
setBackButtonVisible(true);
setEnableNextButton(true);
setNextButtonVisible(true);
}
private void checkData() {
if(newProjectFolder!=null){
ProjectCreateWizard wiz = (ProjectCreateWizard) getWizardWindow();
wiz.getProjectCreateSession().setNewProjectFolder(newProjectFolder);
goNext();
} else {
GWTMessages.alert("Attention", "Select a valid project folder!", getZIndex());
}
}
private void goNext() {
try {
GWT.log("NextCard");
WizardEvent event = new WizardEvent(WizardEventType.Completed);
getWizardWindow().fireEvent(event);
getWizardWindow().close(false);
} catch (Exception e) {
GWT.log("sayNextCard :" + e.getLocalizedMessage());
}
}
}

View File

@ -0,0 +1,177 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.create;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.ProjectSetup;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.SAIDescriptor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.widgets.githubconnector.client.resource.GCResources;
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.shared.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.SimplePanel;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectSetupSelectionCard extends WizardCard {
private SAIDescriptor saiDescription;
private ListBox projectSetupListBox;
// private DecoratorPanel decPanel;
public ProjectSetupSelectionCard() {
super("Project Setup", "Configure the project");
retrieveSaiDescriptor();
}
private void init(){
try {
SimplePanel projectSetupSelectionPanel = new SimplePanel();
projectSetupListBox = new ListBox();
projectSetupListBox.setWidth("176px");
projectSetupListBox.ensureDebugId("projectSetupListBox");
for (ProjectSetup projectSetup : saiDescription.getAvailableProjectConfigurations()) {
projectSetupListBox.addItem(projectSetup.getLanguage());
}
// Form
FlexTable layout = new FlexTable();
layout.setCellSpacing(10);
FlexTable loginFlexTable = new FlexTable();
loginFlexTable.setStyleName(GCResources.INSTANCE.wizardCSS().getCardPanelContent());
loginFlexTable.setCellSpacing(16);
loginFlexTable.setHTML(1, 0, "Type:");
loginFlexTable.setWidget(1, 1, projectSetupListBox);
projectSetupSelectionPanel.add(loginFlexTable);
setContent(projectSetupSelectionPanel);
} catch (Exception e) {
GWT.log("Error: " + e.getLocalizedMessage());
e.printStackTrace();
}
}
private void retrieveSaiDescriptor() {
final WaitDialog waitDialog = new WaitDialog(getZIndex());
waitDialog.show();
StatAlgoImporterServiceAsync.INSTANCE.getSAIDescripor(new AsyncCallback<SAIDescriptor>() {
@Override
public void onFailure(Throwable caught) {
waitDialog.hide();
GWT.log("Error retrieving repositories: " + caught.getMessage());
if (caught instanceof StatAlgoImporterSessionExpiredException) {
showErrorAndHide("Error", "Expired Session");
} else {
showErrorAndHide("Error", "Retrieving repositories: " + caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(SAIDescriptor saiDesc) {
waitDialog.hide();
saiDescription=saiDesc;
init();
}
});
}
@Override
public void setup() {
Command sayNextCard = new Command() {
public void execute() {
checkData();
}
};
Command sayPreviousCard = new Command() {
public void execute() {
try {
GWT.log("PreviousCard");
getWizardWindow().setNextButtonToDefault();
getWizardWindow().previousCard();
} catch (Exception e) {
GWT.log("sayPreviousCard :" + e.getLocalizedMessage());
}
}
};
getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
getWizardWindow().setNextButtonCommand(sayNextCard);
setEnableBackButton(false);
setBackButtonVisible(false);
setEnableNextButton(true);
setNextButtonVisible(true);
}
private void checkData() {
int selected = projectSetupListBox.getSelectedIndex();
if (selected >= 0) {
String language = projectSetupListBox.getValue(selected);
if (language == null || language.isEmpty()) {
GWTMessages.alert("Attention", "Select a type!", getZIndex());
} else {
ProjectSetup selectedSetup=null;
ProjectCreateWizard wiz = (ProjectCreateWizard) getWizardWindow();
for(ProjectSetup pSetup:saiDescription.getAvailableProjectConfigurations()){
if(pSetup.getLanguage().compareTo(language)==0){
selectedSetup=pSetup;
break;
}
}
if(selectedSetup!=null){
wiz.getProjectCreateSession().setProjectSetup(selectedSetup);
goNext();
} else {
GWTMessages.alert("Attention", "Select a type!", getZIndex());
}
}
} else {
GWTMessages.alert("Attention", "Select a type!", getZIndex());
}
}
private void goNext() {
try {
GWT.log("NextCard: ProjectFolderSelectionCard");
ProjectFolderSelectionCard card = new ProjectFolderSelectionCard();
getWizardWindow().addCard(card);
getWizardWindow().nextCard();
} catch (Throwable e) {
GWT.log("sayNextCard :" + e.getLocalizedMessage());
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,144 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
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 com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.shared.EventBus;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class WorkAreaPanel extends SimpleContainer {
private EventBus eventBus;
public WorkAreaPanel(EventBus eventBus) {
super();
this.eventBus = eventBus;
init();
create();
bindToEvents();
}
protected void init() {
forceLayoutOnResize = true;
setBorders(false);
}
protected void create() {
}
private void bindToEvents() {
eventBus.addHandler(ProjectStatusEvent.TYPE, new ProjectStatusEvent.ProjectStatusEventHandler() {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Catch ProjectStatusEvent");
doProjectStatusCommand(event);
}
});
}
private void doProjectStatusCommand(ProjectStatusEvent event) {
if (event.getProjectStatusEventType() == null) {
return;
}
switch (event.getProjectStatusEventType()) {
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;
}
}
private void setupWorkAreaPanel(Project project) {
if (project != null) {
if (project.getProjectConfig() == null || project.getProjectConfig().getLanguage() == "R") {
createRArea(project);
} else {
createBlackBoxArea(project);
}
forceLayout();
fireWorkAreaReady(project);
} else {
}
}
private void createBlackBoxArea(Project project) {
ToolsPanel toolsPanel = new ToolsPanel(eventBus);
clear();
add(toolsPanel);
}
private void createRArea(Project project) {
// Main Panel
BorderLayoutContainer mainPanelLayout = new BorderLayoutContainer();
// mainPanelLayout.setId("mainPanelLayout");
mainPanelLayout.setBorders(false);
mainPanelLayout.setResize(true);
// Main
final MainDataPanel mainDataPanel = new MainDataPanel(eventBus);
MarginData mainData = new MarginData(new Margins(2));
mainPanelLayout.setCenterWidget(mainDataPanel, mainData);
// Right
ToolsPanel toolsPanel = new ToolsPanel(eventBus);
BorderLayoutData eastData = new BorderLayoutData(500);
eastData.setCollapsible(true);
eastData.setSplit(false);
eastData.setFloatable(false);
eastData.setCollapseMini(true);
eastData.setMargins(new Margins(0, 5, 0, 5));
eastData.setCollapseHidden(false);
mainPanelLayout.setEastWidget(toolsPanel, eastData);
toolsPanel.enable();
toolsPanel.collapse();
clear();
add(mainPanelLayout);
}
private void fireWorkAreaReady(Project project) {
ProjectStatusEvent event = new ProjectStatusEvent(ProjectStatusEventType.WORK_AREA_READY, project);
eventBus.fireEvent(event);
}
}

View File

@ -12,6 +12,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgo
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.descriptor.SAIDescriptor;
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.InputData; 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.Project;
@ -42,15 +43,51 @@ import com.sencha.gxt.widget.core.client.event.DialogHideEvent.DialogHideHandler
public class ProjectManager { public class ProjectManager {
private EventBus eventBus; private EventBus eventBus;
private Project project; private Project project;
private SAIDescriptor saiDescriptor;
public ProjectManager(EventBus eventBus) { public ProjectManager(EventBus eventBus) {
this.eventBus = eventBus; this.eventBus = eventBus;
}
public void bind(){
eventBus.addHandler(ProjectStatusEvent.TYPE,
new ProjectStatusEvent.ProjectStatusEventHandler() {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
Log.debug("Catch ProjectStatusEvent");
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() { public void createProject() {
WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog( }
"Select Project Folder", true);
private void selectProjectFolder(){
WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog("Select Project Folder", true);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() { WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@ -61,16 +98,14 @@ public class ProjectManager {
createProjectOnServer(item); createProjectOnServer(item);
} else { } else {
UtilsGXT3.info("Attention", UtilsGXT3.info("Attention", "Select a valid project folder!");
"Select a valid project folder!");
} }
} }
@Override @Override
public void onFailed(Throwable throwable) { public void onFailed(Throwable throwable) {
Log.error("Error in create project: " Log.error("Error in create project: " + throwable.getLocalizedMessage());
+ throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage()); UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace(); throwable.printStackTrace();
} }
@ -92,8 +127,7 @@ public class ProjectManager {
} }
public void openProject() { public void openProject() {
WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog( WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog("Select Project Folder", true);
"Select Project Folder", true);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() { WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@ -104,16 +138,14 @@ public class ProjectManager {
openProjectOnServer(item); openProjectOnServer(item);
} else { } else {
UtilsGXT3.info("Attention", UtilsGXT3.info("Attention", "Select a valid project folder!");
"Select a valid project folder!");
} }
} }
@Override @Override
public void onFailed(Throwable throwable) { public void onFailed(Throwable throwable) {
Log.error("Error in create project: " Log.error("Error in create project: " + throwable.getLocalizedMessage());
+ throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage()); UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace(); throwable.printStackTrace();
} }
@ -137,14 +169,12 @@ public class ProjectManager {
public void addGitHubProject() { public void addGitHubProject() {
if (project != null) { if (project != null) {
if (project.getProjectFolder() != null if (project.getProjectFolder() != null && project.getProjectFolder().getFolder() != null) {
&& project.getProjectFolder().getFolder() != null) {
WizardEvent.WizardEventHandler handler = new WizardEvent.WizardEventHandler() { WizardEvent.WizardEventHandler handler = new WizardEvent.WizardEventHandler() {
@Override @Override
public void onResponse(WizardEvent event) { public void onResponse(WizardEvent event) {
GWT.log("Wizard Response: " GWT.log("Wizard Response: " + event.getWizardEventType());
+ event.getWizardEventType());
if (event.getWizardEventType() == null) { if (event.getWizardEventType() == null) {
fireProjectStatusAddResourceEvent(); fireProjectStatusAddResourceEvent();
return; return;
@ -170,8 +200,7 @@ public class ProjectManager {
wizard.setZIndex(XDOM.getTopZIndex()); wizard.setZIndex(XDOM.getTopZIndex());
wizard.show(); wizard.show();
} else { } else {
Log.error("Invalid ProjectFolder: " Log.error("Invalid ProjectFolder: " + project.getProjectFolder());
+ project.getProjectFolder());
UtilsGXT3.alert("Error", "Error retrieving project folder!"); UtilsGXT3.alert("Error", "Error retrieving project folder!");
} }
@ -193,17 +222,15 @@ public class ProjectManager {
List<ItemType> showableTypes = new ArrayList<ItemType>(); List<ItemType> showableTypes = new ArrayList<ItemType>();
showableTypes.addAll(Arrays.asList(ItemType.values())); showableTypes.addAll(Arrays.asList(ItemType.values()));
WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog( WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog("Select a Resource",
"Select a Resource", selectableTypes, showableTypes); selectableTypes, showableTypes);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() { WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@Override @Override
public void onSelectedItem(Item item) { public void onSelectedItem(Item item) {
if (item.getType() == ItemType.EXTERNAL_FILE if (item.getType() == ItemType.EXTERNAL_FILE || item.getType() == ItemType.EXTERNAL_IMAGE
|| item.getType() == ItemType.EXTERNAL_IMAGE || item.getType() == ItemType.IMAGE_DOCUMENT || item.getType() == ItemType.DOCUMENT
|| item.getType() == ItemType.IMAGE_DOCUMENT
|| item.getType() == ItemType.DOCUMENT
|| item.getType() == ItemType.PDF_DOCUMENT) { || item.getType() == ItemType.PDF_DOCUMENT) {
String filename = item.getName(); String filename = item.getName();
if (filename != null && !filename.isEmpty()) { if (filename != null && !filename.isEmpty()) {
@ -220,8 +247,7 @@ public class ProjectManager {
@Override @Override
public void onFailed(Throwable throwable) { public void onFailed(Throwable throwable) {
Log.error("Error in add resource: " Log.error("Error in add resource: " + throwable.getLocalizedMessage());
+ throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage()); UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace(); throwable.printStackTrace();
} }
@ -245,180 +271,153 @@ public class ProjectManager {
private void addResourceToProject(Item item) { private void addResourceToProject(Item item) {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor(); final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
Log.debug("Add Resource To Project Item selected: " + item); Log.debug("Add Resource To Project Item selected: " + item);
ItemDescription itemDescription = new ItemDescription(item.getId(), ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getName(), item.getOwner(), item.getPath(), item.getType() item.getPath(), item.getType().name());
.name()); StatAlgoImporterServiceAsync.INSTANCE.addResourceToProject(itemDescription, new AsyncCallback<Void>() {
StatAlgoImporterServiceAsync.INSTANCE.addResourceToProject(
itemDescription, new AsyncCallback<Void>() {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
monitor.hide(); monitor.hide();
fireProjectStatusAddResourceEvent(); fireProjectStatusAddResourceEvent();
} }
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { Log.error("Error in add resource to project: " + caught.getLocalizedMessage());
Log.error("Error in add resource to project: " UtilsGXT3.alert("Error", caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); }
UtilsGXT3.alert("Error", caught.printStackTrace();
caught.getLocalizedMessage());
}
caught.printStackTrace();
} }
}); });
} }
private void createProjectOnServer(Item item) { private void createProjectOnServer(Item item) {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor(); final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
Log.debug("Create Project Item selected: " + item); Log.debug("Create Project Item selected: " + item);
final ItemDescription newProjectFolder = new ItemDescription( final ItemDescription newProjectFolder = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getId(), item.getName(), item.getOwner(), item.getPath(), item.getPath(), item.getType().name());
item.getType().name()); StatAlgoImporterServiceAsync.INSTANCE.createProjectOnWorkspace(newProjectFolder, new AsyncCallback<Void>() {
StatAlgoImporterServiceAsync.INSTANCE.createProjectOnWorkspace(
newProjectFolder, new AsyncCallback<Void>() {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
monitor.hide(); monitor.hide();
project = new Project(new ProjectFolder( project = new Project(new ProjectFolder(newProjectFolder));
newProjectFolder)); fireProjectStatusWorkAreaSetupEvent();
fireProjectStatusOpenEvent(); }
}
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { Log.error("Error in create project: " + caught.getLocalizedMessage());
Log.error("Error in create project: " UtilsGXT3.alert("Error", caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); }
UtilsGXT3.alert("Error", caught.printStackTrace();
caught.getLocalizedMessage());
}
caught.printStackTrace();
} }
}); });
} }
protected void openProjectOnServer(Item item) { protected void openProjectOnServer(Item item) {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor(); final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
Log.debug("Open Project Item selected: " + item); Log.debug("Open Project Item selected: " + item);
final ItemDescription newProjectFolder = new ItemDescription( final ItemDescription newProjectFolder = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
item.getId(), item.getName(), item.getOwner(), item.getPath(), item.getPath(), item.getType().name());
item.getType().name()); StatAlgoImporterServiceAsync.INSTANCE.openProjectOnWorkspace(newProjectFolder, new AsyncCallback<Project>() {
StatAlgoImporterServiceAsync.INSTANCE.openProjectOnWorkspace(
newProjectFolder, new AsyncCallback<Project>() {
@Override @Override
public void onSuccess(Project projectOpened) { public void onSuccess(Project projectOpened) {
Log.debug("Open: " + projectOpened); Log.debug("Open: " + projectOpened);
monitor.hide(); monitor.hide();
project = projectOpened; project = projectOpened;
fireProjectStatusOpenEvent(); fireProjectStatusWorkAreaSetupEvent();
} }
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { Log.error("Error in open project: " + caught.getLocalizedMessage());
Log.error("Error in open project: " UtilsGXT3.alert("Error", caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); }
UtilsGXT3.alert("Error", caught.printStackTrace();
caught.getLocalizedMessage());
}
caught.printStackTrace();
} }
}); });
} }
public void saveProject(InputData inputData, public void saveProject(InputData inputData, final StatAlgoImporterMonitor monitor) {
final StatAlgoImporterMonitor monitor) {
Log.debug("Save Project: " + inputData); Log.debug("Save Project: " + inputData);
StatAlgoImporterServiceAsync.INSTANCE.saveProject(inputData, StatAlgoImporterServiceAsync.INSTANCE.saveProject(inputData, new AsyncCallback<Void>() {
new AsyncCallback<Void>() {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
monitor.hide(); monitor.hide();
UtilsGXT3.info("Save", "Project saved!"); UtilsGXT3.info("Save", "Project saved!");
fireProjectStatusExplorerRefreshEvent(); fireProjectStatusExplorerRefreshEvent();
} }
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { Log.error("Error on save project: " + caught.getLocalizedMessage());
Log.error("Error on save project: " UtilsGXT3.alert("Error", caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); }
UtilsGXT3.alert("Error", caught.printStackTrace();
caught.getLocalizedMessage());
}
caught.printStackTrace();
} }
}); });
} }
public void softwareCreate(final InputData inputData, public void softwareCreate(final InputData inputData, final StatAlgoImporterMonitor monitor) {
final StatAlgoImporterMonitor monitor) {
StatAlgoImporterServiceAsync.INSTANCE.createSoftware(inputData, StatAlgoImporterServiceAsync.INSTANCE.createSoftware(inputData, new AsyncCallback<Void>() {
new AsyncCallback<Void>() {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
monitor.hide(); monitor.hide();
fireProjectStatusSoftwareCreatedEvent(); fireProjectStatusSoftwareCreatedEvent();
UtilsGXT3.info("Create Software", "Software Created!"); UtilsGXT3.info("Create Software", "Software Created!");
} }
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { Log.error("Error in create software: " + caught.getLocalizedMessage());
Log.error("Error in create software: " UtilsGXT3.alert("Error", caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); fireProjectStatusExplorerRefreshEvent();
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
fireProjectStatusExplorerRefreshEvent();
} }
caught.printStackTrace(); caught.printStackTrace();
} }
}); });
} }
public void setMainCode(final ItemDescription itemDescription) { public void setMainCode(final ItemDescription itemDescription) {
if (project != null) { if (project != null) {
if (project.getMainCode() != null if (project.getMainCode() != null && project.getMainCode().getItemDescription() != null) {
&& project.getMainCode().getItemDescription() != null) {
final ConfirmMessageBox mb = new ConfirmMessageBox("Attention", final ConfirmMessageBox mb = new ConfirmMessageBox("Attention",
"All previous configurations will be lost. Would you like to change main code?"); "All previous configurations will be lost. Would you like to change main code?");
mb.addDialogHideHandler(new DialogHideHandler() { mb.addDialogHideHandler(new DialogHideHandler() {
@ -452,50 +451,41 @@ public class ProjectManager {
private void setMainCodeOnServer(final ItemDescription itemDescription) { private void setMainCodeOnServer(final ItemDescription itemDescription) {
Log.debug("Set Main Code: " + itemDescription); Log.debug("Set Main Code: " + itemDescription);
StatAlgoImporterServiceAsync.INSTANCE.setMainCode(itemDescription, StatAlgoImporterServiceAsync.INSTANCE.setMainCode(itemDescription, new AsyncCallback<Project>() {
new AsyncCallback<Project>() {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { Log.error("Error setting main code: " + caught.getLocalizedMessage());
Log.error("Error setting main code: " UtilsGXT3.alert("Error", caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); }
UtilsGXT3.alert("Error", caught.printStackTrace();
caught.getLocalizedMessage());
}
caught.printStackTrace();
} }
@Override @Override
public void onSuccess(Project result) { public void onSuccess(Project result) {
project = result; project = result;
fireProjectStatusMainCodeSetEvent(); fireProjectStatusMainCodeSetEvent();
} }
}); });
} }
public void setNewMainCode(NewMainCodeEvent newMainCodeEvent, public void setNewMainCode(NewMainCodeEvent newMainCodeEvent, final StatAlgoImporterMonitor monitor) {
final StatAlgoImporterMonitor monitor) { StatAlgoImporterServiceAsync.INSTANCE.setNewMainCode(newMainCodeEvent.getFile(), newMainCodeEvent.getCode(),
StatAlgoImporterServiceAsync.INSTANCE.setNewMainCode(
newMainCodeEvent.getFile(), newMainCodeEvent.getCode(),
new AsyncCallback<Project>() { new AsyncCallback<Project>() {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER));
} else { } else {
Log.error("Error on save new main code: " Log.error("Error on save new main code: " + caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); UtilsGXT3.alert("Error", caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
} }
caught.printStackTrace(); caught.printStackTrace();
@ -512,11 +502,8 @@ public class ProjectManager {
} }
public void deleteItem(final ItemDescription itemDescription) { public void deleteItem(final ItemDescription itemDescription) {
if (project != null if (project != null && project.getMainCode() != null && project.getMainCode().getItemDescription() != null
&& project.getMainCode() != null && itemDescription.getId().compareTo(project.getMainCode().getItemDescription().getId()) == 0) {
&& project.getMainCode().getItemDescription() != null
&& itemDescription.getId().compareTo(
project.getMainCode().getItemDescription().getId()) == 0) {
final ConfirmMessageBox mb = new ConfirmMessageBox("Delete", final ConfirmMessageBox mb = new ConfirmMessageBox("Delete",
"All previous configurations will be lost. Would you like to delete main code?"); "All previous configurations will be lost. Would you like to delete main code?");
mb.addDialogHideHandler(new DialogHideHandler() { mb.addDialogHideHandler(new DialogHideHandler() {
@ -539,8 +526,7 @@ public class ProjectManager {
mb.show(); mb.show();
} else { } else {
final ConfirmMessageBox mb = new ConfirmMessageBox("Delete", final ConfirmMessageBox mb = new ConfirmMessageBox("Delete", "Would you like to delete this resource?");
"Would you like to delete this resource?");
mb.addDialogHideHandler(new DialogHideHandler() { mb.addDialogHideHandler(new DialogHideHandler() {
@Override @Override
@ -564,73 +550,40 @@ public class ProjectManager {
} }
private void deleteItemOnServer(ItemDescription itemDescription, private void deleteItemOnServer(ItemDescription itemDescription, final boolean mainCode) {
final boolean mainCode) {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor(); final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
StatAlgoImporterServiceAsync.INSTANCE.deleteResourceOnProject( StatAlgoImporterServiceAsync.INSTANCE.deleteResourceOnProject(itemDescription, new AsyncCallback<Project>() {
itemDescription, new AsyncCallback<Project>() {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { Log.error("Error deleting resourse: " + caught.getLocalizedMessage());
Log.error("Error deleting resourse: " UtilsGXT3.alert("Error", caught.getLocalizedMessage());
+ caught.getLocalizedMessage()); }
UtilsGXT3.alert("Error", caught.printStackTrace();
caught.getLocalizedMessage()); }
}
caught.printStackTrace();
}
@Override @Override
public void onSuccess(Project result) { public void onSuccess(Project result) {
monitor.hide(); monitor.hide();
project = result; project = result;
if (mainCode) { if (mainCode) {
fireProjectStatusDeleteMainCodeEvent(); fireProjectStatusDeleteMainCodeEvent();
} else { } else {
fireProjectStatusDeleteEvent(); fireProjectStatusDeleteEvent();
} }
} }
}); });
}
public void startProjectManager(String value) {
StatAlgoImporterServiceAsync.INSTANCE.restoreUISession(value,
new AsyncCallback<Project>() {
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
}
public void onSuccess(Project p) {
if (p != null) {
project = p;
fireProjectStatusOpenEvent();
}
}
});
} }
public void softwareRepackage() { public void softwareRepackage() {
if (project != null) { if (project != null) {
final ConfirmMessageBox mb = new ConfirmMessageBox( final ConfirmMessageBox mb = new ConfirmMessageBox("Attention",
"Attention",
"This operation repackages the script only without recreating the Java software. The already deployed Java software will use the new script package. Do you want to proceed?"); "This operation repackages the script only without recreating the Java software. The already deployed Java software will use the new script package. Do you want to proceed?");
mb.addDialogHideHandler(new DialogHideHandler() { mb.addDialogHideHandler(new DialogHideHandler() {
@ -660,35 +613,30 @@ public class ProjectManager {
private void softwareRepackageOnServer() { private void softwareRepackageOnServer() {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor(); final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
StatAlgoImporterServiceAsync.INSTANCE StatAlgoImporterServiceAsync.INSTANCE.repackageSoftware(new AsyncCallback<Void>() {
.repackageSoftware(new AsyncCallback<Void>() {
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { UtilsGXT3.alert("Error", caught.getLocalizedMessage());
UtilsGXT3.alert("Error", fireProjectStatusExplorerRefreshEvent();
caught.getLocalizedMessage()); }
fireProjectStatusExplorerRefreshEvent(); }
}
}
public void onSuccess(Void result) { public void onSuccess(Void result) {
monitor.hide(); monitor.hide();
UtilsGXT3.info("Repackage", UtilsGXT3.info("Repackage", "The script has been repackaged!");
"The script has been repackaged!"); fireProjectStatusSoftwareRepackageEvent();
fireProjectStatusSoftwareRepackageEvent(); }
}
}); });
} }
public void softwarePublish() { public void softwarePublish() {
if (project != null) { if (project != null) {
final ConfirmMessageBox mb = new ConfirmMessageBox( final ConfirmMessageBox mb = new ConfirmMessageBox("Attention",
"Attention",
"The compiled software will be notified to the Infrastructure Administrators and will be published in the suggested VREs. The source code will not be shared. Do you confirm the submission?"); "The compiled software will be notified to the Infrastructure Administrators and will be published in the suggested VREs. The source code will not be shared. Do you confirm the submission?");
mb.addDialogHideHandler(new DialogHideHandler() { mb.addDialogHideHandler(new DialogHideHandler() {
@ -718,39 +666,101 @@ public class ProjectManager {
private void softwarePublishOnServer() { private void softwarePublishOnServer() {
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor(); final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
StatAlgoImporterServiceAsync.INSTANCE StatAlgoImporterServiceAsync.INSTANCE.publishSoftware(new AsyncCallback<Void>() {
.publishSoftware(new AsyncCallback<Void>() {
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
monitor.hide(); monitor.hide();
if (caught instanceof StatAlgoImporterSessionExpiredException) { if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
SessionExpiredType.EXPIREDONSERVER)); } else {
} else { UtilsGXT3.alert("Error", caught.getLocalizedMessage());
UtilsGXT3.alert("Error", fireProjectStatusExplorerRefreshEvent();
caught.getLocalizedMessage());
fireProjectStatusExplorerRefreshEvent();
} }
} }
public void onSuccess(Void result) { public void onSuccess(Void result) {
monitor.hide(); monitor.hide();
UtilsGXT3.info("Publish", UtilsGXT3.info("Publish", "The software has been published!");
"The software has been published!"); fireProjectStatusSoftwarePublishEvent();
fireProjectStatusSoftwarePublishEvent(); }
}
}); });
} }
public void startProjectManager() { public void startProjectManager() {
fireProjectStatusStartEvent(); retrieveSAIDescriptor(null);
} }
public void startProjectManager(String restoreValue) {
retrieveSAIDescriptor(restoreValue);
}
private void retrieveSAIDescriptor(final String restoreValue) {
StatAlgoImporterServiceAsync.INSTANCE.getSAIDescripor(new AsyncCallback<SAIDescriptor>() {
@Override
public void onFailure(Throwable caught) {
Log.info("Error retrieving SAI descriptor: " + caught.getMessage(), caught);
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
} else {
UtilsGXT3.alert("Error", "Error retrieving SAI descriptor: " + caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(SAIDescriptor saiDesc) {
saiDescriptor = saiDesc;
Log.info("SAIDescriptor: " + saiDescriptor);
if (restoreValue == null || restoreValue.isEmpty()) {
fireProjectStatusStartEvent();
} else {
restoreProject(restoreValue);
}
}
});
}
private void restoreProject(String restoreValue) {
Log.info("Restore Project");
StatAlgoImporterServiceAsync.INSTANCE.restoreUISession(restoreValue, new AsyncCallback<Project>() {
public void onFailure(Throwable caught) {
if (caught instanceof StatAlgoImporterSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
} else {
UtilsGXT3.alert("Error", caught.getLocalizedMessage());
}
}
public void onSuccess(Project p) {
if (p != null) {
project = p;
fireProjectStatusWorkAreaSetupEvent();
}
}
});
}
private void fireProjectStatusWorkAreaSetupEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.WORK_AREA_SETUP, project);
eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
}
private void fireProjectStatusOpenEvent() { private void fireProjectStatusOpenEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.OPEN, project);
ProjectStatusEventType.OPEN, project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
@ -758,79 +768,73 @@ public class ProjectManager {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private void fireProjectStatusSaveProjectEvent() { private void fireProjectStatusSaveProjectEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SAVE, project);
ProjectStatusEventType.SAVE, project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusAddResourceEvent() { private void fireProjectStatusAddResourceEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.ADD_RESOURCE, project);
ProjectStatusEventType.ADD_RESOURCE, project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusDeleteEvent() { private void fireProjectStatusDeleteEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.DELETE_RESOURCE, project);
ProjectStatusEventType.DELETE_RESOURCE, project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusDeleteMainCodeEvent() { private void fireProjectStatusDeleteMainCodeEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.DELETE_MAIN_CODE,
ProjectStatusEventType.DELETE_MAIN_CODE, project); project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
@SuppressWarnings("unused") @SuppressWarnings("unused")
private void fireProjectStatusUpdateEvent() { private void fireProjectStatusUpdateEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.UPDATE, project);
ProjectStatusEventType.UPDATE, project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusExplorerRefreshEvent() { private void fireProjectStatusExplorerRefreshEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.EXPLORER_REFRESH,
ProjectStatusEventType.EXPLORER_REFRESH, project); project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusMainCodeSetEvent() { private void fireProjectStatusMainCodeSetEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.MAIN_CODE_SET, project);
ProjectStatusEventType.MAIN_CODE_SET, project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusSoftwareCreatedEvent() { private void fireProjectStatusSoftwareCreatedEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SOFTWARE_CREATED,
ProjectStatusEventType.SOFTWARE_CREATED, project); project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusSoftwarePublishEvent() { private void fireProjectStatusSoftwarePublishEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SOFTWARE_PUBLISH,
ProjectStatusEventType.SOFTWARE_PUBLISH, project); project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusSoftwareRepackageEvent() { private void fireProjectStatusSoftwareRepackageEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.SOFTWARE_REPACKAGE,
ProjectStatusEventType.SOFTWARE_REPACKAGE, project); project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }
private void fireProjectStatusStartEvent() { private void fireProjectStatusStartEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent( ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.START, project);
ProjectStatusEventType.START, project);
eventBus.fireEvent(projectStatusEvent); eventBus.fireEvent(projectStatusEvent);
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent); Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
} }

View File

@ -3,6 +3,7 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc;
import java.util.ArrayList; 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.descriptor.SAIDescriptor;
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.InputData; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
@ -30,6 +31,14 @@ public interface StatAlgoImporterService extends RemoteService {
*/ */
public UserInfo hello() throws StatAlgoImporterServiceException; public UserInfo hello() throws StatAlgoImporterServiceException;
/**
* Retrieve SAI descriptort
*
* @return SAI descriptort
* @throws StatAlgoImporterServiceException Exception
*/
public SAIDescriptor getSAIDescripor() throws StatAlgoImporterServiceException;
// File Upload Monitor // File Upload Monitor
/** /**
* Get File Upload Monitor during the file upload operation in Import CSV * Get File Upload Monitor during the file upload operation in Import CSV

View File

@ -6,6 +6,7 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc;
import java.util.ArrayList; 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.descriptor.SAIDescriptor;
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.InputData; 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.Project;
@ -28,6 +29,8 @@ public interface StatAlgoImporterServiceAsync {
void hello(AsyncCallback<UserInfo> callback); void hello(AsyncCallback<UserInfo> callback);
void getSAIDescripor(AsyncCallback<SAIDescriptor> callback);
void getFileUploadMonitor(AsyncCallback<FileUploadMonitor> callback); void getFileUploadMonitor(AsyncCallback<FileUploadMonitor> callback);
void getCode(AsyncCallback<ArrayList<CodeData>> callback); void getCode(AsyncCallback<ArrayList<CodeData>> callback);
@ -58,4 +61,6 @@ public interface StatAlgoImporterServiceAsync {
void repackageSoftware(AsyncCallback<Void> asyncCallback); void repackageSoftware(AsyncCallback<Void> asyncCallback);
} }

View File

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

View File

@ -13,6 +13,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgo
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.annotation.WPS4RParser; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.annotation.WPS4RParser;
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.generator.ProjectBuilder; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.generator.ProjectBuilder;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.is.BuildSAIDescriptor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.AlgorithmNotification; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.AlgorithmNotification;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.Recipient; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.Recipient;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
@ -20,6 +21,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.Main
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.ProjectArchiver; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.ProjectArchiver;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
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.descriptor.SAIDescriptor;
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.exception.StatAlgoImporterSessionExpiredException; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
@ -120,6 +122,29 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
} }
@Override
public SAIDescriptor getSAIDescripor() throws StatAlgoImporterServiceException {
HttpServletRequest httpRequest = null;
try {
httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil
.getServiceCredentials(httpRequest);
logger.debug("getSAIDescriptor()");
SAIDescriptor saiDescriptor=BuildSAIDescriptor.build(serviceCredentials.getScope());
return saiDescriptor;
} catch (StatAlgoImporterServiceException e) {
logger.error("Error retrieving SAI descriptor: "+e.getLocalizedMessage(),e);
throw e;
} catch (Throwable e) {
logger.error("Error retrieving SAI descriptor: "+e.getLocalizedMessage(),e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(),e);
}
}
@Override @Override
public Project restoreUISession(String value) public Project restoreUISession(String value)
throws StatAlgoImporterServiceException { throws StatAlgoImporterServiceException {
@ -142,6 +167,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
} }
} }
/** /**
* *
@ -705,4 +731,6 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
} }
} }

View File

@ -0,0 +1,45 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.is;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Giancarlo Panichi
*
*
*/
@XmlRootElement(name = "availableprojectconfig")
@XmlAccessorType(XmlAccessType.FIELD)
public class AvailableProjectConfigJAXB {
@XmlElement
private String language;
@XmlElement
private String support;
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getSupport() {
return support;
}
public void setSupport(String support) {
this.support = support;
}
@Override
public String toString() {
return "ProjectConfigJAXB [language=" + language + ", support=" + support + "]";
}
}

View File

@ -0,0 +1,105 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.is;
import java.util.ArrayList;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.ProjectSetup;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.ProjectSupportType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.SAIDescriptor;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class BuildSAIDescriptor {
private static Logger logger = LoggerFactory.getLogger(BuildSAIDescriptor.class);
public static SAIDescriptor build(String scope) throws StatAlgoImporterServiceException {
SAIDescriptor saiDescriptor = null;
if (Constants.DEBUG_MODE) {
ArrayList<ProjectSetup> availableProjectConfigurations = new ArrayList<>();
ProjectSetup r = new ProjectSetup("R", ProjectSupportType.REdit);
availableProjectConfigurations.add(r);
ProjectSetup rBlackBox = new ProjectSetup("R-black box", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(rBlackBox);
ProjectSetup java = new ProjectSetup("Java", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(java);
ProjectSetup knimeWorkflow = new ProjectSetup("Knime Workflow",
ProjectSupportType.BlackBox);
availableProjectConfigurations.add(knimeWorkflow);
ProjectSetup linuxCompiled = new ProjectSetup("Linux-compiled",
ProjectSupportType.BlackBox);
availableProjectConfigurations.add(linuxCompiled);
ProjectSetup octave = new ProjectSetup("Octave", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(octave);
ProjectSetup python = new ProjectSetup("Python", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(python);
ProjectSetup windowsCompiled = new ProjectSetup("Windows-compiled",
ProjectSupportType.BlackBox);
availableProjectConfigurations.add(windowsCompiled);
ProjectSetup preInstalled = new ProjectSetup("Pre-Installed",
ProjectSupportType.BlackBox);
availableProjectConfigurations.add(preInstalled);
saiDescriptor = new SAIDescriptor(availableProjectConfigurations);
} else {
SAIDescriptorJAXB saiDescriptorJAXB = null;
try {
saiDescriptorJAXB = InformationSystemUtils.retrieveSAIDescriptor(scope);
} catch (StatAlgoImporterServiceException e) {
logger.info(e.getLocalizedMessage());
}
ArrayList<ProjectSetup> availableProjectConfigurations = new ArrayList<>();
logger.debug("SAIDescriptorJAXB: " + saiDescriptorJAXB);
if (saiDescriptorJAXB != null && saiDescriptorJAXB.getAvailableprojectconfigurations() != null
&& !saiDescriptorJAXB.getAvailableprojectconfigurations().isEmpty()) {
ProjectSupportType type;
for (AvailableProjectConfigJAXB availableProjectConfigJAXB : saiDescriptorJAXB
.getAvailableprojectconfigurations()) {
type = ProjectSupportType.valueOf(availableProjectConfigJAXB.getSupport());
if (type != null) {
availableProjectConfigurations
.add(new ProjectSetup(availableProjectConfigJAXB.getLanguage(), type));
}
}
} else {
logger.info("SAIDescriptorJAXB use default configuration for scope: " + scope);
ProjectSetup r = new ProjectSetup("R", ProjectSupportType.REdit);
availableProjectConfigurations.add(r);
ProjectSetup rBlackBox = new ProjectSetup("R-black box", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(rBlackBox);
ProjectSetup java = new ProjectSetup("Java", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(java);
ProjectSetup knimeWorkflow = new ProjectSetup("Knime Workflow",
ProjectSupportType.BlackBox);
availableProjectConfigurations.add(knimeWorkflow);
ProjectSetup linuxCompiled = new ProjectSetup("Linux-compiled",
ProjectSupportType.BlackBox);
availableProjectConfigurations.add(linuxCompiled);
ProjectSetup octave = new ProjectSetup("Octave", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(octave);
ProjectSetup python = new ProjectSetup("Python", ProjectSupportType.BlackBox);
availableProjectConfigurations.add(python);
ProjectSetup windowsCompiled = new ProjectSetup("Windows-compiled",
ProjectSupportType.BlackBox);
availableProjectConfigurations.add(windowsCompiled);
}
saiDescriptor = new SAIDescriptor(availableProjectConfigurations);
}
logger.debug("SAIDescriptor: " + saiDescriptor);
return saiDescriptor;
}
}

View File

@ -0,0 +1,95 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.is;
import java.util.Iterator;
import java.util.List;
import org.gcube.common.resources.gcore.GenericResource;
import org.gcube.common.resources.gcore.ScopeGroup;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.impl.JAXBParser;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.gcube.resources.discovery.icclient.ICFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class InformationSystemUtils {
private static Logger logger = LoggerFactory.getLogger(InformationSystemUtils.class);
public static SAIDescriptorJAXB retrieveSAIDescriptor(String scope) throws StatAlgoImporterServiceException {
try {
if (scope == null || scope.length() == 0)
return null;
ScopeProvider.instance.set(scope);
logger.debug("Retrieve SAI descriptor in scope: " + scope);
SimpleQuery query = ICFactory.queryFor(GenericResource.class);
query.addCondition("$resource/Profile/SecondaryType/text() eq '" + Constants.SAI_CATEGORY + "'")
.addCondition("$resource/Profile/Name/text() eq '" + Constants.SAI_NAME + "'")
.setResult("$resource");
DiscoveryClient<GenericResource> client = ICFactory.clientFor(GenericResource.class);
List<GenericResource> accountingResources = client.submit(query);
logger.debug("Resources: " + accountingResources);
SAIDescriptorJAXB enableTabs = null;
for (GenericResource genericResource : accountingResources) {
if (genericResource.scopes() != null) {
ScopeGroup<String> scopes = genericResource.scopes();
Iterator<String> iterator = scopes.iterator();
String scopeFound = null;
boolean found = false;
while (iterator.hasNext() && !found) {
scopeFound = iterator.next();
if (scopeFound.compareTo(scope) == 0) {
found = true;
}
}
if (found) {
try {
JAXBParser<SAIDescriptorJAXB> parser = new JAXBParser<SAIDescriptorJAXB>(
SAIDescriptorJAXB.class);
logger.debug("Body: " + genericResource.profile().bodyAsString());
enableTabs = (SAIDescriptorJAXB) parser.parse(genericResource.profile().bodyAsString());
logger.debug("Enable: " + enableTabs);
} catch (Throwable e) {
String error = "Error in discovery SAI profile generic resource on IS in scope " + scope + ". "
+ "Resource parsing failed!";
logger.error(error);
logger.error(
"Error {resource=" + genericResource + ", error=" + e.getLocalizedMessage() + "}");
e.printStackTrace();
throw new StatAlgoImporterServiceException(error, e);
}
break;
}
}
}
return enableTabs;
} catch (StatAlgoImporterServiceException e) {
throw e;
} catch (Throwable e) {
String error = "Error in discovery SAI profile generic resource on IS in scope : " + scope;
logger.error(error);
logger.error("Error: " + e.getLocalizedMessage(),e);
throw new StatAlgoImporterServiceException(error, e);
}
}
}

View File

@ -0,0 +1,37 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.is;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Giancarlo Panichi
*
*
*/
@XmlRootElement(name = "saidescriptor")
@XmlAccessorType(XmlAccessType.FIELD)
public class SAIDescriptorJAXB {
@XmlElement(name = "availableprojectconfigurations")
private List<AvailableProjectConfigJAXB> availableprojectconfigurations = null;
public List<AvailableProjectConfigJAXB> getAvailableprojectconfigurations() {
return availableprojectconfigurations;
}
public void setAvailableprojectconfigurations(List<AvailableProjectConfigJAXB> availableprojectconfigurations) {
this.availableprojectconfigurations = availableprojectconfigurations;
}
@Override
public String toString() {
return "SAIDescriptorJAXB [availableprojectconfigurations=" + availableprojectconfigurations + "]";
}
}

View File

@ -30,5 +30,11 @@ public class Constants {
public static final String CURR_USER_ID = "CURR_USER_ID"; public static final String CURR_USER_ID = "CURR_USER_ID";
public static final String LOCAL_UPLOAD_SERVLET = "LocalUploadServlet"; public static final String LOCAL_UPLOAD_SERVLET = "LocalUploadServlet";
// IS Resource
public static final String SAI_NAME = "SAIProfile";
public static final String SAI_CATEGORY = "SAI";
} }

View File

@ -0,0 +1,48 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor;
import java.io.Serializable;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectSetup implements Serializable {
private static final long serialVersionUID = -7559226273036843188L;
private String language;
private ProjectSupportType projectSupportType;
public ProjectSetup() {
super();
}
public ProjectSetup(String language, ProjectSupportType projectSupportType) {
super();
this.language = language;
this.projectSupportType = projectSupportType;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public ProjectSupportType getProjectSupportType() {
return projectSupportType;
}
public void setProjectSupportType(ProjectSupportType projectSupportType) {
this.projectSupportType = projectSupportType;
}
@Override
public String toString() {
return "ProjectSetup [language=" + language + ", projectSupportType=" + projectSupportType + "]";
}
}

View File

@ -0,0 +1,48 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor;
import java.util.Arrays;
import java.util.List;
/**
*
* @author Giancarlo Panichi
*
*
*/
public enum ProjectSupportType {
REdit("REdit"), BlackBox("BlackBox");
private String id;
private ProjectSupportType(String id) {
this.id = id;
}
public String getId() {
return id;
}
public String toString() {
return id;
}
public String getLabel() {
return id;
}
public static ProjectSupportType valueFromLabel(String label) {
for(ProjectSupportType type: values()){
if(type.getId().compareTo(label)==0){
return type;
}
}
return null;
}
public static List<ProjectSupportType> asList() {
List<ProjectSupportType> list = Arrays.asList(values());
return list;
}
}

View File

@ -0,0 +1,39 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor;
import java.io.Serializable;
import java.util.ArrayList;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class SAIDescriptor implements Serializable {
private static final long serialVersionUID = 8083363401840308985L;
private ArrayList<ProjectSetup> availableProjectConfigurations;
public SAIDescriptor() {
super();
}
public SAIDescriptor(ArrayList<ProjectSetup> availableProjectConfigurations) {
super();
this.availableProjectConfigurations = availableProjectConfigurations;
}
public ArrayList<ProjectSetup> getAvailableProjectConfigurations() {
return availableProjectConfigurations;
}
public void setAvailableProjectConfigurations(ArrayList<ProjectSetup> availableProjectConfigurations) {
this.availableProjectConfigurations = availableProjectConfigurations;
}
@Override
public String toString() {
return "SAIDescriptor [availableProjectConfigurations=" + availableProjectConfigurations + "]";
}
}

View File

@ -10,20 +10,10 @@ import java.util.List;
* *
*/ */
public enum DataType { public enum DataType {
STRING("String"), INTEGER("Integer"), DOUBLE("Double"), ENUMERATED( STRING("String"), INTEGER("Integer"), DOUBLE("Double"), ENUMERATED("Enumerated"), FILE("File"), BOOLEAN("Boolean");
"Enumerated"), FILE("File"), BOOLEAN("Boolean");
// private static InputTypeMessages
// msgs=GWT.create(InputTypeMessages.class);
private String id; private String id;
// private static List<String> inputTypeI18NList;
/*
* static { inputTypeI18NList = new ArrayList<String>(); for (InputType
* itype : values()) { inputTypeI18NList.add(msgs.inputType(itype)); } }
*/
private DataType(String id) { private DataType(String id) {
this.id = id; this.id = id;
} }
@ -37,7 +27,6 @@ public enum DataType {
} }
public String getLabel() { public String getLabel() {
// return msgs.inputType(this);
return id; return id;
} }
@ -47,15 +36,9 @@ public enum DataType {
} }
public static List<DataType> asListForGlobalVariables() { public static List<DataType> asListForGlobalVariables() {
List<DataType> list = Arrays.asList(DataType.STRING, DataType.INTEGER, List<DataType> list = Arrays.asList(DataType.STRING, DataType.INTEGER, DataType.DOUBLE, DataType.FILE,
DataType.DOUBLE, DataType.FILE, DataType.BOOLEAN); DataType.BOOLEAN);
return list; return list;
} }
/*
* public static List<String> asI18NList() { return inputTypeI18NList;
*
* }
*/
} }

View File

@ -13,6 +13,7 @@ public class Project implements Serializable {
private static final long serialVersionUID = -7906477664944910362L; private static final long serialVersionUID = -7906477664944910362L;
private ProjectFolder projectFolder; private ProjectFolder projectFolder;
private ProjectConfig projectConfig;
private MainCode mainCode; private MainCode mainCode;
private InputData inputData; private InputData inputData;
private ProjectTarget projectTarget; private ProjectTarget projectTarget;
@ -27,6 +28,14 @@ public class Project implements Serializable {
} }
public ProjectConfig getProjectConfig() {
return projectConfig;
}
public void setProjectConfig(ProjectConfig projectConfig) {
this.projectConfig = projectConfig;
}
public MainCode getMainCode() { public MainCode getMainCode() {
return mainCode; return mainCode;
} }
@ -61,9 +70,8 @@ public class Project implements Serializable {
@Override @Override
public String toString() { public String toString() {
return "Project [projectFolder=" + projectFolder + ", mainCode=" return "Project [projectFolder=" + projectFolder + ", projectConfig=" + projectConfig + ", mainCode=" + mainCode
+ mainCode + ", inputData=" + inputData + ", projectTarget=" + ", inputData=" + inputData + ", projectTarget=" + projectTarget + "]";
+ projectTarget + "]";
} }
} }

View File

@ -0,0 +1,48 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import java.io.Serializable;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectConfig implements Serializable {
private static final long serialVersionUID = 8006265995411482998L;
private String language;
private ProjectSupport projectSupport;
public ProjectConfig() {
super();
}
public ProjectConfig(String language, ProjectSupport projectSupport) {
super();
this.language = language;
this.projectSupport = projectSupport;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public ProjectSupport getProjectSupport() {
return projectSupport;
}
public void setProjectSupport(ProjectSupport projectSupport) {
this.projectSupport = projectSupport;
}
@Override
public String toString() {
return "ProjectConfig [language=" + language + ", projectSupport=" + projectSupport + "]";
}
}

View File

@ -0,0 +1,52 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import java.io.Serializable;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.ProjectSetup;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectCreateSession implements Serializable {
private static final long serialVersionUID = -6892840268452906937L;
private ItemDescription newProjectFolder;
private ProjectSetup projectSetup;
public ProjectCreateSession() {
super();
}
public ProjectCreateSession(ItemDescription newProjectFolder, ProjectSetup projectSetup) {
super();
this.newProjectFolder = newProjectFolder;
this.projectSetup = projectSetup;
}
public ItemDescription getNewProjectFolder() {
return newProjectFolder;
}
public void setNewProjectFolder(ItemDescription newProjectFolder) {
this.newProjectFolder = newProjectFolder;
}
public ProjectSetup getProjectSetup() {
return projectSetup;
}
public void setProjectSetup(ProjectSetup projectSetup) {
this.projectSetup = projectSetup;
}
@Override
public String toString() {
return "ProjectCreateSession [newProjectFolder=" + newProjectFolder + ", projectSetup=" + projectSetup + "]";
}
}

View File

@ -0,0 +1,13 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import java.io.Serializable;
/**
*
* @author Giancarlo Panichi
*
*
*/
interface ProjectSupport extends Serializable {
}

View File

@ -0,0 +1,45 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectSupportBlackBox implements ProjectSupport {
private static final long serialVersionUID = -5337735100116549017L;
private ItemDescription binaryItem;
public ProjectSupportBlackBox() {
super();
}
/**
*
* @param binaryItem
* Binary Item
*/
public ProjectSupportBlackBox(ItemDescription binaryItem) {
super();
this.binaryItem = binaryItem;
}
public ItemDescription getBinaryItem() {
return binaryItem;
}
public void setBinaryItem(ItemDescription binaryItem) {
this.binaryItem = binaryItem;
}
@Override
public String toString() {
return "ProjectSupportBlackBox [binaryItem=" + binaryItem + "]";
}
}

View File

@ -0,0 +1,22 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ProjectSupportREdit implements ProjectSupport {
private static final long serialVersionUID = -5337735100116549017L;
public ProjectSupportREdit() {
super();
}
@Override
public String toString() {
return "ProjectSupportREdit []";
}
}