1452: Implement a GUI for StatMan Algorithms Importer
Task-Url: https://support.d4science.org/issues/1452 Updated Code Generation git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@122204 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
5597655c7e
commit
6e41b0e124
7
pom.xml
7
pom.xml
|
@ -277,7 +277,12 @@
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Uri Resolver Manager -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
|
<artifactId>uri-resolver-manager</artifactId>
|
||||||
|
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<!-- LOGGING -->
|
<!-- LOGGING -->
|
||||||
|
|
|
@ -3,8 +3,8 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.DeleteItemEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.DeleteItemEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputReadyEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveReadyEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputRequestEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.StatAlgoImporterRibbonEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.StatAlgoImporterRibbonEvent;
|
||||||
|
@ -43,6 +43,14 @@ public class StatAlgoImporterController {
|
||||||
private BorderLayoutContainer mainPanel;
|
private BorderLayoutContainer mainPanel;
|
||||||
private ProjectManager pm;
|
private ProjectManager pm;
|
||||||
|
|
||||||
|
|
||||||
|
private enum InputRequestType {
|
||||||
|
Save,
|
||||||
|
SoftwareCreate;
|
||||||
|
}
|
||||||
|
private InputRequestType inputRequestType;
|
||||||
|
|
||||||
|
|
||||||
public StatAlgoImporterController() {
|
public StatAlgoImporterController() {
|
||||||
eventBus = new SimpleEventBus();
|
eventBus = new SimpleEventBus();
|
||||||
pm = new ProjectManager(eventBus);
|
pm = new ProjectManager(eventBus);
|
||||||
|
@ -199,13 +207,13 @@ public class StatAlgoImporterController {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
eventBus.addHandler(InputSaveReadyEvent.TYPE,
|
eventBus.addHandler(InputReadyEvent.TYPE,
|
||||||
new InputSaveReadyEvent.InputSaveReadyEventHandler() {
|
new InputReadyEvent.InputReadyEventHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputSaveReady(InputSaveReadyEvent event) {
|
public void onInputReady(InputReadyEvent event) {
|
||||||
Log.debug("Catch InputSaveReadyEvent");
|
Log.debug("Catch InputReadyEvent");
|
||||||
doInputSaveReadyCommand(event);
|
doInputReadyCommand(event);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -235,6 +243,7 @@ public class StatAlgoImporterController {
|
||||||
showAddResourceDialog();
|
showAddResourceDialog();
|
||||||
break;
|
break;
|
||||||
case SOFTWARE_CREATE:
|
case SOFTWARE_CREATE:
|
||||||
|
softwareCreateRequest();
|
||||||
break;
|
break;
|
||||||
case HELP:
|
case HELP:
|
||||||
break;
|
break;
|
||||||
|
@ -244,18 +253,37 @@ public class StatAlgoImporterController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doInputSaveReadyCommand(InputSaveReadyEvent event) {
|
private void doInputReadyCommand(InputReadyEvent event) {
|
||||||
|
switch(inputRequestType){
|
||||||
|
case Save:
|
||||||
pm.saveProject(event.getInputData());
|
pm.saveProject(event.getInputData());
|
||||||
|
break;
|
||||||
|
case SoftwareCreate:
|
||||||
|
pm.createSofware(event.getInputData());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void projectSaveRequest() {
|
private void projectSaveRequest() {
|
||||||
InputSaveEvent inputSaveEvent = new InputSaveEvent();
|
inputRequestType=InputRequestType.Save;
|
||||||
eventBus.fireEvent(inputSaveEvent);
|
InputRequestEvent inputRequestEvent = new InputRequestEvent();
|
||||||
Log.debug("ProjectSaveRequest: " + inputSaveEvent);
|
eventBus.fireEvent(inputRequestEvent);
|
||||||
|
Log.debug("ProjectSaveRequest: " + inputRequestEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void softwareCreateRequest() {
|
||||||
|
inputRequestType=InputRequestType.SoftwareCreate;
|
||||||
|
InputRequestEvent inputRequestEvent = new InputRequestEvent();
|
||||||
|
eventBus.fireEvent(inputRequestEvent);
|
||||||
|
Log.debug("SoftwareCreateRequest: " + inputRequestEvent);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void showCreateProjectDialog() {
|
private void showCreateProjectDialog() {
|
||||||
pm.createProject();
|
pm.createProject();
|
||||||
|
|
||||||
|
@ -270,6 +298,8 @@ public class StatAlgoImporterController {
|
||||||
pm.addResource();
|
pm.addResource();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void doMainCodeSetCommand(MainCodeSetEvent event) {
|
private void doMainCodeSetCommand(MainCodeSetEvent event) {
|
||||||
ItemDescription itemDescription = event.getItemDescription();
|
ItemDescription itemDescription = event.getItemDescription();
|
||||||
if (itemDescription != null && itemDescription.getId() != null) {
|
if (itemDescription != null && itemDescription.getId() != null) {
|
||||||
|
@ -286,6 +316,9 @@ public class StatAlgoImporterController {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private void showCodeUploadDialog() {
|
private void showCodeUploadDialog() {
|
||||||
CodeUploadDialog codeUploadDialog = new CodeUploadDialog(eventBus);
|
CodeUploadDialog codeUploadDialog = new CodeUploadDialog(eventBus);
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
|
import com.google.gwt.event.shared.HasHandlers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Input Save Ready Event
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class InputReadyEvent extends
|
||||||
|
GwtEvent<InputReadyEvent.InputReadyEventHandler> {
|
||||||
|
|
||||||
|
public static Type<InputReadyEventHandler> TYPE = new Type<InputReadyEventHandler>();
|
||||||
|
private InputData inputData;
|
||||||
|
|
||||||
|
public interface InputReadyEventHandler extends EventHandler {
|
||||||
|
void onInputReady(InputReadyEvent event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface HasInputReadyEventHandler extends HasHandlers {
|
||||||
|
public HandlerRegistration addInputReadyEventHandler(
|
||||||
|
InputReadyEventHandler handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputReadyEvent(InputData inputData) {
|
||||||
|
this.inputData = inputData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatch(InputReadyEventHandler handler) {
|
||||||
|
handler.onInputReady(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Type<InputReadyEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Type<InputReadyEventHandler> getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fire(HasHandlers source,
|
||||||
|
InputReadyEvent inputSaveReadyEvent) {
|
||||||
|
source.fireEvent(inputSaveReadyEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputData getInputData() {
|
||||||
|
return inputData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "InputReadyEvent [inputData=" + inputData + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
|
import com.google.gwt.event.shared.HasHandlers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Input Save Event
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class InputRequestEvent extends
|
||||||
|
GwtEvent<InputRequestEvent.InputRequestEventHandler> {
|
||||||
|
|
||||||
|
public static Type<InputRequestEventHandler> TYPE = new Type<InputRequestEventHandler>();
|
||||||
|
|
||||||
|
public interface InputRequestEventHandler extends EventHandler {
|
||||||
|
void onInputRequest(InputRequestEvent event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface HasInputRequestEventHandler extends HasHandlers {
|
||||||
|
public HandlerRegistration addInputRequestEventHandler(
|
||||||
|
InputRequestEventHandler handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputRequestEvent() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatch(InputRequestEventHandler handler) {
|
||||||
|
handler.onInputRequest(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Type<InputRequestEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Type<InputRequestEventHandler> getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fire(HasHandlers source, InputRequestEvent inputSaveEvent) {
|
||||||
|
source.fireEvent(inputSaveEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "InputRequestEvent []";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,59 +0,0 @@
|
||||||
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
|
|
||||||
|
|
||||||
import com.google.gwt.event.shared.EventHandler;
|
|
||||||
import com.google.gwt.event.shared.GwtEvent;
|
|
||||||
import com.google.gwt.event.shared.HandlerRegistration;
|
|
||||||
import com.google.gwt.event.shared.HasHandlers;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Input Save Event
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @author "Giancarlo Panichi" <a
|
|
||||||
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class InputSaveEvent extends
|
|
||||||
GwtEvent<InputSaveEvent.InputSaveEventHandler> {
|
|
||||||
|
|
||||||
public static Type<InputSaveEventHandler> TYPE = new Type<InputSaveEventHandler>();
|
|
||||||
|
|
||||||
public interface InputSaveEventHandler extends EventHandler {
|
|
||||||
void onInputSave(InputSaveEvent event);
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface HasInputSaveEventHandler extends HasHandlers {
|
|
||||||
public HandlerRegistration addInputSaveEventHandler(
|
|
||||||
InputSaveEventHandler handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InputSaveEvent() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void dispatch(InputSaveEventHandler handler) {
|
|
||||||
handler.onInputSave(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Type<InputSaveEventHandler> getAssociatedType() {
|
|
||||||
return TYPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Type<InputSaveEventHandler> getType() {
|
|
||||||
return TYPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fire(HasHandlers source, InputSaveEvent inputSaveEvent) {
|
|
||||||
source.fireEvent(inputSaveEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "InputSaveEvent []";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
|
|
||||||
|
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
|
|
||||||
|
|
||||||
import com.google.gwt.event.shared.EventHandler;
|
|
||||||
import com.google.gwt.event.shared.GwtEvent;
|
|
||||||
import com.google.gwt.event.shared.HandlerRegistration;
|
|
||||||
import com.google.gwt.event.shared.HasHandlers;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Input Save Ready Event
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @author "Giancarlo Panichi" <a
|
|
||||||
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class InputSaveReadyEvent extends
|
|
||||||
GwtEvent<InputSaveReadyEvent.InputSaveReadyEventHandler> {
|
|
||||||
|
|
||||||
public static Type<InputSaveReadyEventHandler> TYPE = new Type<InputSaveReadyEventHandler>();
|
|
||||||
private InputData inputData;
|
|
||||||
|
|
||||||
public interface InputSaveReadyEventHandler extends EventHandler {
|
|
||||||
void onInputSaveReady(InputSaveReadyEvent event);
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface HasInputSaveReadyEventHandler extends HasHandlers {
|
|
||||||
public HandlerRegistration addInputSaveReadyEventHandler(
|
|
||||||
InputSaveReadyEventHandler handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InputSaveReadyEvent(InputData inputData) {
|
|
||||||
this.inputData = inputData;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void dispatch(InputSaveReadyEventHandler handler) {
|
|
||||||
handler.onInputSaveReady(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Type<InputSaveReadyEventHandler> getAssociatedType() {
|
|
||||||
return TYPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Type<InputSaveReadyEventHandler> getType() {
|
|
||||||
return TYPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fire(HasHandlers source,
|
|
||||||
InputSaveReadyEvent inputSaveReadyEvent) {
|
|
||||||
source.fireEvent(inputSaveReadyEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InputData getInputData() {
|
|
||||||
return inputData;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "InputSaveReadyEvent [inputData=" + inputData + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -58,17 +58,22 @@ public class MainDataPanel extends SimpleContainer {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (event.getProjectStatusEventType()) {
|
switch (event.getProjectStatusEventType()) {
|
||||||
|
case ADD_RESOURCE:
|
||||||
|
break;
|
||||||
|
case DELETE_RESOURCE:
|
||||||
|
break;
|
||||||
|
case MAIN_CODE_SET:
|
||||||
|
codeEditPanel.codeUpdate(event.getProject());
|
||||||
|
break;
|
||||||
case OPEN:
|
case OPEN:
|
||||||
addCodeEditPanel(event.getProject());
|
addCodeEditPanel(event.getProject());
|
||||||
break;
|
break;
|
||||||
case UPDATE:
|
|
||||||
codeEditPanel.codeUpdate(event.getProject());
|
|
||||||
break;
|
|
||||||
case ADD_RESOURCE:
|
|
||||||
case DELETE_RESOURCE:
|
|
||||||
case MAIN_CODE_SET:
|
|
||||||
case SAVE:
|
case SAVE:
|
||||||
break;
|
break;
|
||||||
|
case START:
|
||||||
|
break;
|
||||||
|
case UPDATE:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ public class ProjectManager {
|
||||||
public void onSelectedItem(Item item) {
|
public void onSelectedItem(Item item) {
|
||||||
|
|
||||||
if (item.getType() == ItemType.FOLDER) {
|
if (item.getType() == ItemType.FOLDER) {
|
||||||
openProjectOnServer(item);
|
createProjectOnServer(item);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
UtilsGXT3.info("Attention",
|
UtilsGXT3.info("Attention",
|
||||||
|
@ -315,8 +315,41 @@ public class ProjectManager {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void createSofware(InputData inputData) {
|
||||||
|
Log.debug("Create Software: " + inputData);
|
||||||
|
|
||||||
|
StatAlgoImporterServiceAsync.INSTANCE.createSoftware(inputData,
|
||||||
|
new AsyncCallback<Void>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Void result) {
|
||||||
|
fireProjectStatusSoftwareCreatedEvent();
|
||||||
|
UtilsGXT3.info("Create Software", "Software Created!");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
if (caught instanceof StatAlgoImporterSessionExpiredException) {
|
||||||
|
eventBus.fireEvent(new SessionExpiredEvent(
|
||||||
|
SessionExpiredType.EXPIREDONSERVER));
|
||||||
|
} else {
|
||||||
|
Log.error("Error in create software: "
|
||||||
|
+ caught.getLocalizedMessage());
|
||||||
|
UtilsGXT3.alert("Error",
|
||||||
|
caught.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
caught.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void setMainCode(final ItemDescription itemDescription) {
|
public void setMainCode(final ItemDescription itemDescription) {
|
||||||
if(project!=null&& project.getMainCode()!=null&& project.getMainCode().getItemDescription()!=null){
|
if (project != null) {
|
||||||
|
if (project.getMainCode() != 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() {
|
||||||
|
@ -337,10 +370,13 @@ public class ProjectManager {
|
||||||
});
|
});
|
||||||
mb.setWidth(300);
|
mb.setWidth(300);
|
||||||
mb.show();
|
mb.show();
|
||||||
|
} else {
|
||||||
|
setMainCodeOnServer(itemDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,7 +464,6 @@ public class ProjectManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void fireProjectStatusDeleteEvent() {
|
protected void fireProjectStatusDeleteEvent() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
|
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
|
||||||
ProjectStatusEventType.DELETE_RESOURCE, project);
|
ProjectStatusEventType.DELETE_RESOURCE, project);
|
||||||
eventBus.fireEvent(projectStatusEvent);
|
eventBus.fireEvent(projectStatusEvent);
|
||||||
|
@ -449,6 +484,13 @@ public class ProjectManager {
|
||||||
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
|
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void fireProjectStatusSoftwareCreatedEvent() {
|
||||||
|
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
|
||||||
|
ProjectStatusEventType.SOFTWARE_CREATED, project);
|
||||||
|
eventBus.fireEvent(projectStatusEvent);
|
||||||
|
Log.debug("ProjectStatusEvent fired! " + projectStatusEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void fireProjectStatusStartEvent() {
|
protected void fireProjectStatusStartEvent() {
|
||||||
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
|
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
|
||||||
|
|
|
@ -64,6 +64,6 @@ public interface StatAlgoImporterService extends RemoteService {
|
||||||
|
|
||||||
public void saveCode(String code) throws StatAlgoImporterServiceException;
|
public void saveCode(String code) throws StatAlgoImporterServiceException;
|
||||||
|
|
||||||
public void createAlgorithm() throws StatAlgoImporterServiceException;
|
public void createSoftware(InputData inputData) throws StatAlgoImporterServiceException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,6 @@ public interface StatAlgoImporterServiceAsync {
|
||||||
|
|
||||||
void saveCode(String code, AsyncCallback<Void> asyncCallback);
|
void saveCode(String code, AsyncCallback<Void> asyncCallback);
|
||||||
|
|
||||||
void createAlgorithm(AsyncCallback<Void> callback);
|
void createSoftware(InputData inputData, AsyncCallback<Void> callback);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,6 +116,8 @@ public class ExplorerProjectPanel extends ContentPanel {
|
||||||
break;
|
break;
|
||||||
case MAIN_CODE_SET:
|
case MAIN_CODE_SET:
|
||||||
break;
|
break;
|
||||||
|
case SOFTWARE_CREATED:
|
||||||
|
reloadWSResourceExplorerPanel();
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -242,7 +244,7 @@ public class ExplorerProjectPanel extends ContentPanel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSelect(SelectEvent event) {
|
public void onSelect(SelectEvent event) {
|
||||||
reloadWSResourceExplorerPanel(event);
|
reloadWSResourceExplorerPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -270,7 +272,7 @@ public class ExplorerProjectPanel extends ContentPanel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void reloadWSResourceExplorerPanel(SelectEvent event) {
|
protected void reloadWSResourceExplorerPanel() {
|
||||||
if(wsResourcesExplorerPanel!=null){
|
if(wsResourcesExplorerPanel!=null){
|
||||||
wsResourcesExplorerPanel.refreshRootFolderView();
|
wsResourcesExplorerPanel.refreshRootFolderView();
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,5 +20,9 @@ public interface InputVariableMessages extends Messages {
|
||||||
@DefaultMessage("Interpreter")
|
@DefaultMessage("Interpreter")
|
||||||
String interpreterInfo();
|
String interpreterInfo();
|
||||||
|
|
||||||
|
@DefaultMessage("Info")
|
||||||
|
String projectInfo();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
|
||||||
|
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputRequestEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.NewSelectedRowsVariableEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.NewSelectedRowsVariableEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.SelectedRowsVariables;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.SelectedRowsVariables;
|
||||||
|
@ -67,13 +67,13 @@ public class InputVariablePanel extends ContentPanel {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
eventBus.addHandler(InputSaveEvent.TYPE,
|
eventBus.addHandler(InputRequestEvent.TYPE,
|
||||||
new InputSaveEvent.InputSaveEventHandler() {
|
new InputRequestEvent.InputRequestEventHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInputSave(InputSaveEvent event) {
|
public void onInputRequest(InputRequestEvent event) {
|
||||||
Log.debug("Catch InputSaveEvent");
|
Log.debug("Catch InputRequestEvent");
|
||||||
manageInputSaveEvents(event);
|
manageInputRequestEvents(event);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -102,9 +102,8 @@ public class InputVariablePanel extends ContentPanel {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void manageInputSaveEvents(InputSaveEvent event) {
|
protected void manageInputRequestEvents(InputRequestEvent event) {
|
||||||
inputVariableTabPanel.saveInput();
|
inputVariableTabPanel.requestInput();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
|
||||||
|
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveReadyEvent;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputReadyEvent;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.SelectedRowsVariables;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.SelectedRowsVariables;
|
||||||
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;
|
||||||
|
@ -25,6 +25,7 @@ public class InputVariableTabPanel extends TabPanel {
|
||||||
private EnvironmentVariablesPanel enviromentVariablesPanel;
|
private EnvironmentVariablesPanel enviromentVariablesPanel;
|
||||||
private SelectedRowsPanel selectedRowsPanel;
|
private SelectedRowsPanel selectedRowsPanel;
|
||||||
private InterpreterInfoPanel interpreterInfoPanel;
|
private InterpreterInfoPanel interpreterInfoPanel;
|
||||||
|
private ProjectInfoPanel projectInfoPanel;
|
||||||
|
|
||||||
public InputVariableTabPanel(EventBus eventBus,
|
public InputVariableTabPanel(EventBus eventBus,
|
||||||
InputVariablePanel toolBoxPanel) {
|
InputVariablePanel toolBoxPanel) {
|
||||||
|
@ -50,6 +51,7 @@ public class InputVariableTabPanel extends TabPanel {
|
||||||
addEnvironmentVariablesPanel(project);
|
addEnvironmentVariablesPanel(project);
|
||||||
addSelectedRowsPanel(project);
|
addSelectedRowsPanel(project);
|
||||||
addInterpreterInfoPanel(project);
|
addInterpreterInfoPanel(project);
|
||||||
|
addProjectInfoPanel(project);
|
||||||
setActiveWidget(getWidget(0));
|
setActiveWidget(getWidget(0));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -92,7 +94,7 @@ public class InputVariableTabPanel extends TabPanel {
|
||||||
enviromentVariablesPanel.update(project);
|
enviromentVariablesPanel.update(project);
|
||||||
selectedRowsPanel.update(project);
|
selectedRowsPanel.update(project);
|
||||||
interpreterInfoPanel.update(project);
|
interpreterInfoPanel.update(project);
|
||||||
|
projectInfoPanel.update(project);
|
||||||
forceLayout();
|
forceLayout();
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Log.error("Error in InputVariableTabPanel: "
|
Log.error("Error in InputVariableTabPanel: "
|
||||||
|
@ -101,27 +103,33 @@ public class InputVariableTabPanel extends TabPanel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveInput() {
|
public void requestInput() {
|
||||||
InputData inputVariables = new InputData();
|
InputData inputData = new InputData();
|
||||||
if (enviromentVariablesPanel != null) {
|
if (enviromentVariablesPanel != null) {
|
||||||
inputVariables.setListEnvironmentVariables(enviromentVariablesPanel
|
inputData.setListEnvironmentVariables(enviromentVariablesPanel
|
||||||
.getEnvironmentVariables());
|
.getEnvironmentVariables());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedRowsPanel != null) {
|
if (selectedRowsPanel != null) {
|
||||||
inputVariables.setListSelectedRows(selectedRowsPanel
|
inputData.setListSelectedRows(selectedRowsPanel
|
||||||
.getSelectedRows());
|
.getSelectedRows());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (interpreterInfoPanel != null) {
|
if (interpreterInfoPanel != null) {
|
||||||
inputVariables.setInterpreterInfo(interpreterInfoPanel
|
inputData.setInterpreterInfo(interpreterInfoPanel
|
||||||
.getInterpreterInfo());
|
.getInterpreterInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
InputSaveReadyEvent inputSaveReadyEvent = new InputSaveReadyEvent(
|
if (projectInfoPanel != null) {
|
||||||
inputVariables);
|
inputData.setProjectInfo(projectInfoPanel
|
||||||
eventBus.fireEvent(inputSaveReadyEvent);
|
.getProjectInfo());
|
||||||
Log.debug("Fired InputSaveReadyEvent");
|
}
|
||||||
|
|
||||||
|
|
||||||
|
InputReadyEvent inputReadyEvent = new InputReadyEvent(
|
||||||
|
inputData);
|
||||||
|
eventBus.fireEvent(inputReadyEvent);
|
||||||
|
Log.debug("Fired InputReadyEvent");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,6 +164,17 @@ public class InputVariableTabPanel extends TabPanel {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addProjectInfoPanel(Project project) {
|
||||||
|
TabItemConfig projectInfoPanelItemConf = new TabItemConfig(
|
||||||
|
msgs.projectInfo(), false);
|
||||||
|
|
||||||
|
projectInfoPanel = new ProjectInfoPanel(project, eventBus);
|
||||||
|
projectInfoPanel.setHeaderVisible(false);
|
||||||
|
add(projectInfoPanel, projectInfoPanelItemConf);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void addSelectedRowsVariable(
|
public void addSelectedRowsVariable(
|
||||||
SelectedRowsVariables selectedRowsVariable) {
|
SelectedRowsVariables selectedRowsVariable) {
|
||||||
setActiveWidget(selectedRowsPanel);
|
setActiveWidget(selectedRowsPanel);
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectInfo;
|
||||||
|
|
||||||
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
|
import com.google.gwt.event.shared.EventBus;
|
||||||
|
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
|
||||||
|
import com.sencha.gxt.core.client.util.Margins;
|
||||||
|
import com.sencha.gxt.widget.core.client.ContentPanel;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.MarginData;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
|
||||||
|
import com.sencha.gxt.widget.core.client.form.FieldLabel;
|
||||||
|
import com.sencha.gxt.widget.core.client.form.TextField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author giancarlo email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ProjectInfoPanel extends ContentPanel {
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private EventBus eventBus;
|
||||||
|
private TextField projectName;
|
||||||
|
private TextField projectDescription;
|
||||||
|
private TextField projectClassName;
|
||||||
|
|
||||||
|
public ProjectInfoPanel(Project project, EventBus eventBus) {
|
||||||
|
super();
|
||||||
|
Log.debug("ProjectInfoPanel");
|
||||||
|
this.eventBus = eventBus;
|
||||||
|
|
||||||
|
// msgs = GWT.create(ServiceCategoryMessages.class);
|
||||||
|
try {
|
||||||
|
init();
|
||||||
|
create(project);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init() {
|
||||||
|
setHeaderVisible(false);
|
||||||
|
setResize(true);
|
||||||
|
setBodyBorder(false);
|
||||||
|
setBorders(false);
|
||||||
|
forceLayoutOnResize = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void create(Project project) {
|
||||||
|
|
||||||
|
projectName = new TextField();
|
||||||
|
projectName.setAllowBlank(false);
|
||||||
|
projectName.setEmptyText("Enter name...");
|
||||||
|
FieldLabel projectNameLabel = new FieldLabel(projectName, "Name");
|
||||||
|
|
||||||
|
projectDescription = new TextField();
|
||||||
|
projectDescription.setAllowBlank(false);
|
||||||
|
projectDescription.setEmptyText("Enter description...");
|
||||||
|
FieldLabel projectDescriptionLabel = new FieldLabel(projectDescription,
|
||||||
|
"Description");
|
||||||
|
|
||||||
|
projectClassName = new TextField();
|
||||||
|
projectClassName.setAllowBlank(false);
|
||||||
|
projectClassName.setEmptyText("Enter class name...");
|
||||||
|
FieldLabel projectClassNameLabel = new FieldLabel(projectClassName,
|
||||||
|
"Class Name");
|
||||||
|
|
||||||
|
if (project != null && project.getInputData()!=null && project.getInputData().getProjectInfo() != null) {
|
||||||
|
|
||||||
|
if (project.getInputData().getProjectInfo().getName() != null) {
|
||||||
|
projectName.setValue(project.getInputData().getProjectInfo().getName());
|
||||||
|
}
|
||||||
|
if (project.getInputData().getProjectInfo().getDescription() != null) {
|
||||||
|
projectDescription.setValue(project.getInputData().getProjectInfo()
|
||||||
|
.getDescription());
|
||||||
|
}
|
||||||
|
if (project.getInputData().getProjectInfo().getClassName() != null) {
|
||||||
|
projectClassName.setValue(project.getInputData().getProjectInfo()
|
||||||
|
.getClassName());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
VerticalLayoutContainer vlc = new VerticalLayoutContainer();
|
||||||
|
vlc.setAdjustForScroll(false);
|
||||||
|
vlc.setScrollMode(ScrollMode.NONE);
|
||||||
|
|
||||||
|
vlc.add(projectNameLabel, new VerticalLayoutData(1, -1, new Margins(5,
|
||||||
|
0, 5, 0)));
|
||||||
|
vlc.add(projectDescriptionLabel, new VerticalLayoutData(1, -1,
|
||||||
|
new Margins(5, 0, 5, 0)));
|
||||||
|
vlc.add(projectClassNameLabel, new VerticalLayoutData(1, -1,
|
||||||
|
new Margins(5, 0, 5, 0)));
|
||||||
|
|
||||||
|
add(vlc, new MarginData(new Margins(0)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(Project project) {
|
||||||
|
Log.debug("Update Project Info: " + project);
|
||||||
|
if (project != null && project.getInputData()!=null && project.getInputData().getProjectInfo() != null) {
|
||||||
|
|
||||||
|
if (project.getInputData().getProjectInfo().getName() != null) {
|
||||||
|
projectName.setValue(project.getInputData().getProjectInfo().getName());
|
||||||
|
} else {
|
||||||
|
projectName.clear();
|
||||||
|
}
|
||||||
|
if (project.getInputData().getProjectInfo().getDescription() != null) {
|
||||||
|
projectDescription.setValue(project.getInputData().getProjectInfo()
|
||||||
|
.getDescription());
|
||||||
|
} else {
|
||||||
|
projectDescription.clear();
|
||||||
|
}
|
||||||
|
if (project.getInputData().getProjectInfo().getClassName() != null) {
|
||||||
|
projectClassName.setValue(project.getInputData().getProjectInfo()
|
||||||
|
.getClassName());
|
||||||
|
} else {
|
||||||
|
projectClassName.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
projectName.clear();
|
||||||
|
projectDescription.clear();
|
||||||
|
projectClassName.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectInfo getProjectInfo() {
|
||||||
|
String name = projectName.getCurrentValue();
|
||||||
|
String description = projectDescription.getCurrentValue();
|
||||||
|
String className = projectClassName.getCurrentValue();
|
||||||
|
|
||||||
|
return new ProjectInfo(name, description, className);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,6 +13,8 @@ public enum ProjectStatusEventType {
|
||||||
UPDATE,
|
UPDATE,
|
||||||
ADD_RESOURCE,
|
ADD_RESOURCE,
|
||||||
DELETE_RESOURCE,
|
DELETE_RESOURCE,
|
||||||
|
SOFTWARE_CREATED,
|
||||||
SAVE;
|
SAVE;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,14 +355,16 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createAlgorithm() throws StatAlgoImporterServiceException {
|
public void createSoftware(InputData inputData) throws StatAlgoImporterServiceException {
|
||||||
try {
|
try {
|
||||||
HttpSession session = this.getThreadLocalRequest().getSession();
|
HttpSession session = this.getThreadLocalRequest().getSession();
|
||||||
ASLSession aslSession = SessionUtil.getAslSession(session);
|
ASLSession aslSession = SessionUtil.getAslSession(session);
|
||||||
logger.debug("createAlgorithm()");
|
logger.debug("createSoftware(): "+inputData);
|
||||||
Project project = SessionUtil.getProjectSession(session);
|
Project project = SessionUtil.getProjectSession(session);
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
ProjectBuilder projectBuilder=new ProjectBuilder(project, aslSession);
|
project.setInputData(inputData);
|
||||||
|
SessionUtil.setProjectSession(session,project);
|
||||||
|
ProjectBuilder projectBuilder=new ProjectBuilder(project, aslSession, session);
|
||||||
projectBuilder.build();
|
projectBuilder.build();
|
||||||
} else {
|
} else {
|
||||||
throw new StatAlgoImporterServiceException("No project open!");
|
throw new StatAlgoImporterServiceException("No project open!");
|
||||||
|
@ -373,7 +375,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw e;
|
throw e;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
logger.error("createAlgorithm(): " + e.getLocalizedMessage(), e);
|
logger.error("createSoftware(): " + e.getLocalizedMessage(), e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.nio.charset.Charset;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -43,8 +44,8 @@ public class AlgorithmGenerator {
|
||||||
public Path createAlgorithm() throws StatAlgoImporterServiceException {
|
public Path createAlgorithm() throws StatAlgoImporterServiceException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Path tempFile = Files.createTempFile(project.getClassName(),
|
Path tempFile = Files.createTempFile(project.getInputData()
|
||||||
EXTENTION_JAVA);
|
.getProjectInfo().getClassName(), EXTENTION_JAVA);
|
||||||
|
|
||||||
List<String> lines = createJavaCode();
|
List<String> lines = createJavaCode();
|
||||||
Files.write(tempFile, lines, Charset.defaultCharset(),
|
Files.write(tempFile, lines, Charset.defaultCharset(),
|
||||||
|
@ -65,7 +66,9 @@ public class AlgorithmGenerator {
|
||||||
String mainScriptRelativePath = retrieveMainScriptRelativePath();
|
String mainScriptRelativePath = retrieveMainScriptRelativePath();
|
||||||
String packageUrl = retrievePackageUrl();
|
String packageUrl = retrievePackageUrl();
|
||||||
|
|
||||||
List<String> code = Arrays
|
ArrayList<String> code = new ArrayList<String>();
|
||||||
|
|
||||||
|
code.addAll(Arrays
|
||||||
.asList("package org.gcube.dataanalysis.executor.rscripts;",
|
.asList("package org.gcube.dataanalysis.executor.rscripts;",
|
||||||
"",
|
"",
|
||||||
"import java.io.File;",
|
"import java.io.File;",
|
||||||
|
@ -75,24 +78,26 @@ public class AlgorithmGenerator {
|
||||||
"import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType;",
|
"import org.gcube.dataanalysis.ecoengine.datatypes.StatisticalType;",
|
||||||
"import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes;",
|
"import org.gcube.dataanalysis.ecoengine.datatypes.enumtypes.PrimitiveTypes;",
|
||||||
"import org.gcube.dataanalysis.executor.rscripts.generic.GenericRScript;",
|
"import org.gcube.dataanalysis.executor.rscripts.generic.GenericRScript;",
|
||||||
"", "public class " + project.getClassName()
|
"", "public class "
|
||||||
|
+ project.getInputData().getProjectInfo()
|
||||||
|
.getClassName()
|
||||||
+ " extends GenericRScript {", "",
|
+ " extends GenericRScript {", "",
|
||||||
|
|
||||||
" public static enum operators {",
|
" public static enum operators {",
|
||||||
" EQUAL, NOT_EQUAL, CONTAINS, BEGINS_WITH, ENDS_WITH",
|
" EQUAL, NOT_EQUAL, CONTAINS, BEGINS_WITH, ENDS_WITH",
|
||||||
" };",
|
" };", "", " @Override",
|
||||||
|
" public String getDescription() {", " return \""
|
||||||
" @Override", " public String getDescription() {",
|
+ project.getInputData().getProjectInfo()
|
||||||
" return \"" + project.getDescription() + "\";", " }",
|
.getDescription() + "\";", " }", "",
|
||||||
"", " protected void initVariables(){",
|
" protected void initVariables(){",
|
||||||
" mainScriptName=\"" + mainScriptRelativePath + "\";",
|
" mainScriptName=\"" + mainScriptRelativePath + "\";",
|
||||||
" packageURL=\"" + packageUrl + "\";",
|
" packageURL=\"" + packageUrl + "\";",
|
||||||
" environmentalvariables = new ArrayList<String>();");
|
" environmentalvariables = new ArrayList<String>();"));
|
||||||
|
|
||||||
for (EnvironmentVariables envVariable : project.getInputData()
|
for (EnvironmentVariables envVariable : project.getInputData()
|
||||||
.getListEnvironmentVariables()) {
|
.getListEnvironmentVariables()) {
|
||||||
code.add(" environmentalvariables.add(\"" + envVariable.getName()
|
code.add(" environmentalvariables.add(\"" + envVariable.getName()
|
||||||
+ "\")");
|
+ "\");");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (SelectedRowsVariables selVariable : project.getInputData()
|
for (SelectedRowsVariables selVariable : project.getInputData()
|
||||||
|
@ -100,11 +105,11 @@ public class AlgorithmGenerator {
|
||||||
switch (selVariable.getIoType()) {
|
switch (selVariable.getIoType()) {
|
||||||
case INPUT:
|
case INPUT:
|
||||||
code.add(" inputvariables.add(\"" + selVariable.getName()
|
code.add(" inputvariables.add(\"" + selVariable.getName()
|
||||||
+ "\")");
|
+ "\");");
|
||||||
break;
|
break;
|
||||||
case OUTPUT:
|
case OUTPUT:
|
||||||
code.add(" outputvariables.add(\"" + selVariable.getName()
|
code.add(" outputvariables.add(\"" + selVariable.getName()
|
||||||
+ "\")");
|
+ "\");");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -113,11 +118,13 @@ public class AlgorithmGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
code.add(" }");
|
code.add(" }");
|
||||||
|
code.add("");
|
||||||
code.add(" @Override");
|
code.add(" @Override");
|
||||||
code.add(" protected void setInputParameters() {");
|
code.add(" protected void setInputParameters() {");
|
||||||
createInputParameters(code);
|
createInputParameters(code);
|
||||||
|
|
||||||
code.add(" }");
|
code.add(" }");
|
||||||
|
code.add("");
|
||||||
code.add(" @Override");
|
code.add(" @Override");
|
||||||
code.add(" public StatisticalType getOutput() {");
|
code.add(" public StatisticalType getOutput() {");
|
||||||
createOutputParameters(code);
|
createOutputParameters(code);
|
||||||
|
@ -128,7 +135,7 @@ public class AlgorithmGenerator {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createInputParameters(List<String> code) {
|
private void createInputParameters(ArrayList<String> code) {
|
||||||
|
|
||||||
for (SelectedRowsVariables selVariable : project.getInputData()
|
for (SelectedRowsVariables selVariable : project.getInputData()
|
||||||
.getListSelectedRows()) {
|
.getListSelectedRows()) {
|
||||||
|
@ -200,7 +207,7 @@ public class AlgorithmGenerator {
|
||||||
* STRING, NUMBER, ENUMERATED, CONSTANT, RANDOM, FILE, MAP, BOOLEAN, IMAGES
|
* STRING, NUMBER, ENUMERATED, CONSTANT, RANDOM, FILE, MAP, BOOLEAN, IMAGES
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private void createOutputParameters(List<String> code) {
|
private void createOutputParameters(ArrayList<String> code) {
|
||||||
for (SelectedRowsVariables selVariable : project.getInputData()
|
for (SelectedRowsVariables selVariable : project.getInputData()
|
||||||
.getListSelectedRows()) {
|
.getListSelectedRows()) {
|
||||||
if (selVariable.getIoType().compareTo(IOType.OUTPUT) == 0) {
|
if (selVariable.getIoType().compareTo(IOType.OUTPUT) == 0) {
|
||||||
|
@ -268,11 +275,24 @@ public class AlgorithmGenerator {
|
||||||
.getPath();
|
.getPath();
|
||||||
String mainCodePath = project.getMainCode().getItemDescription()
|
String mainCodePath = project.getMainCode().getItemDescription()
|
||||||
.getPath();
|
.getPath();
|
||||||
return mainCodePath.substring(projectPath.length());
|
|
||||||
|
String relativePath = project.getProjectFolder().getItemDescription()
|
||||||
|
.getName()
|
||||||
|
+ mainCodePath.substring(projectPath.length());
|
||||||
|
return relativePath;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String retrievePackageUrl() {
|
private String retrievePackageUrl() {
|
||||||
return project.getProjectTarget().getPackageUrl().getPublicLink();
|
String packageUrl = "";
|
||||||
|
if (project.getProjectTarget() != null
|
||||||
|
&& project.getProjectTarget().getPackageUrl() != null) {
|
||||||
|
if (project.getProjectTarget().getPackageUrl().getPublicLink() != null) {
|
||||||
|
packageUrl = project.getProjectTarget().getPackageUrl()
|
||||||
|
.getPublicLink();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return packageUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.generator;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.StandardOpenOption;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.InterpreterPackageInfo;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class IntegrationInfoGenerator {
|
||||||
|
private static final String EXTENTION_JAVA = ".txt";
|
||||||
|
public static final Logger logger = LoggerFactory
|
||||||
|
.getLogger(IntegrationInfoGenerator.class);
|
||||||
|
|
||||||
|
private Project project;
|
||||||
|
|
||||||
|
public IntegrationInfoGenerator(Project project) {
|
||||||
|
super();
|
||||||
|
this.project = project;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "IntegrationInfoGenerator [project=" + project + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
public Path createIntegrationInfo() throws StatAlgoImporterServiceException {
|
||||||
|
|
||||||
|
try {
|
||||||
|
Path tempFile = Files.createTempFile(project.getInputData()
|
||||||
|
.getProjectInfo().getClassName(), EXTENTION_JAVA);
|
||||||
|
|
||||||
|
List<String> lines = createInfo();
|
||||||
|
Files.write(tempFile, lines, Charset.defaultCharset(),
|
||||||
|
StandardOpenOption.WRITE);
|
||||||
|
logger.debug(tempFile.toString());
|
||||||
|
return tempFile;
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(),
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> createInfo() {
|
||||||
|
ArrayList<String> infos = new ArrayList<String>();
|
||||||
|
if (project.getInputData().getInterpreterInfo() != null) {
|
||||||
|
if (project.getInputData().getInterpreterInfo().getVersion() != null) {
|
||||||
|
infos.add("Interpreter Version: "
|
||||||
|
+ project.getInputData().getInterpreterInfo()
|
||||||
|
.getVersion());
|
||||||
|
} else {
|
||||||
|
infos.add("Interpreter Version: Any");
|
||||||
|
}
|
||||||
|
infos.add("");
|
||||||
|
if (project.getInputData().getInterpreterInfo()
|
||||||
|
.getInterpreterPackagesInfo() != null
|
||||||
|
&& project.getInputData().getInterpreterInfo()
|
||||||
|
.getInterpreterPackagesInfo().size() > 0) {
|
||||||
|
infos.add("Packages:");
|
||||||
|
for (InterpreterPackageInfo info : project.getInputData()
|
||||||
|
.getInterpreterInfo().getInterpreterPackagesInfo()) {
|
||||||
|
infos.add("" + info.getName() + " " + info.getVersion());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return infos;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,14 +1,24 @@
|
||||||
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.generator;
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.generator;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.gcube.application.framework.core.session.ASLSession;
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
|
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.SessionUtil;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
|
||||||
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.project.Project;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectTarget;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -22,29 +32,92 @@ public class ProjectBuilder {
|
||||||
private static final String ALGORITHM_MIMETYPE = "text/plain";
|
private static final String ALGORITHM_MIMETYPE = "text/plain";
|
||||||
private static final String ALGORITHM_DESCRIPTION = "Statistical Algorithm Java Code";
|
private static final String ALGORITHM_DESCRIPTION = "Statistical Algorithm Java Code";
|
||||||
private static final String ALGORITHM_EXTENTION = ".java";
|
private static final String ALGORITHM_EXTENTION = ".java";
|
||||||
|
private static final String INTEGRATION_INFO_NAME = "IntegrationInfo";
|
||||||
|
private static final String INTEGRATION_INFO_MIMETYPE = "text/plain";
|
||||||
|
private static final String INTEGRATION_INFO_DESCRIPTION = "Integration Info";
|
||||||
|
private static final String INTEGRATION_INFO_EXTENTION = ".txt";
|
||||||
|
private static final String PROJECT_PACKAGE_MIMETYPE = "application/zip";
|
||||||
|
private static final String PROJECT_PACKAGE_DESCRIPTION = "Statical Algorithm Project Package";
|
||||||
|
private static final String PROJECT_PACKAGE_EXTENTION = ".zip";
|
||||||
|
|
||||||
public static final Logger logger = LoggerFactory
|
public static final Logger logger = LoggerFactory
|
||||||
.getLogger(ProjectBuilder.class);
|
.getLogger(ProjectBuilder.class);
|
||||||
|
|
||||||
private Project project;
|
private Project project;
|
||||||
private ASLSession aslSession;
|
private ASLSession aslSession;
|
||||||
|
private HttpSession session;
|
||||||
|
private ProjectTarget projectTarget;
|
||||||
|
|
||||||
public ProjectBuilder(Project project, ASLSession aslSession) {
|
public ProjectBuilder(Project project, ASLSession aslSession,
|
||||||
|
HttpSession session) {
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.aslSession = aslSession;
|
this.aslSession = aslSession;
|
||||||
|
this.session = session;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkInfo() throws StatAlgoImporterServiceException {
|
||||||
|
if (project == null) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Attention No Project Found!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.getProjectFolder() == null) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Attention No Project Folder Found!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.getInputData() == null) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Attention No Input Set!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.getInputData().getProjectInfo() == null) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Attention No Project Information Set!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.getInputData().getProjectInfo().getClassName() == null) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Attention No Project Class Name Set!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.getMainCode() == null) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Attention No Main Code Set");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.getInputData() == null) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Attention No Input Data Set!");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void build() throws StatAlgoImporterServiceException {
|
public void build() throws StatAlgoImporterServiceException {
|
||||||
|
checkInfo();
|
||||||
|
createProjectPackage();
|
||||||
|
createAlgorithm();
|
||||||
|
createIntegrationInfo();
|
||||||
|
|
||||||
|
SessionUtil.setProjectSession(session, project);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void createAlgorithm() throws StatAlgoImporterServiceException {
|
||||||
AlgorithmGenerator algorithmGenerator = new AlgorithmGenerator(project);
|
AlgorithmGenerator algorithmGenerator = new AlgorithmGenerator(project);
|
||||||
Path algorithm = algorithmGenerator.createAlgorithm();
|
Path algorithm = algorithmGenerator.createAlgorithm();
|
||||||
|
|
||||||
FilesStorage filesStorage = new FilesStorage();
|
FilesStorage filesStorage = new FilesStorage();
|
||||||
|
WorkspaceItem algorithmItem;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
filesStorage.saveItemOnWorkspace(aslSession.getUsername(),
|
algorithmItem = filesStorage.createItemOnWorkspace(
|
||||||
|
aslSession.getUsername(),
|
||||||
Files.newInputStream(algorithm, StandardOpenOption.READ),
|
Files.newInputStream(algorithm, StandardOpenOption.READ),
|
||||||
project.getClassName() + ALGORITHM_EXTENTION,
|
project.getInputData().getProjectInfo().getClassName()
|
||||||
ALGORITHM_DESCRIPTION, ALGORITHM_MIMETYPE, project
|
+ ALGORITHM_EXTENTION, ALGORITHM_DESCRIPTION,
|
||||||
.getProjectFolder().getItemDescription().getId());
|
ALGORITHM_MIMETYPE, project.getProjectTarget()
|
||||||
|
.getTargetFolder().getId());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.error(e.getLocalizedMessage());
|
logger.error(e.getLocalizedMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -52,6 +125,142 @@ public class ProjectBuilder {
|
||||||
e);
|
e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemDescription codeSource;
|
||||||
|
try {
|
||||||
|
codeSource = new ItemDescription(algorithmItem.getId(),
|
||||||
|
algorithmItem.getName(), algorithmItem.getOwner()
|
||||||
|
.getPortalLogin(), algorithmItem.getPath(),
|
||||||
|
algorithmItem.getType().name());
|
||||||
|
codeSource.setPublicLink(algorithmItem.getPublicLink(true));
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
projectTarget.setCodeSource(codeSource);
|
||||||
|
logger.debug("ProjectTarget: " + projectTarget);
|
||||||
|
project.setProjectTarget(projectTarget);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createProjectPackage() throws StatAlgoImporterServiceException {
|
||||||
|
FilesStorage filesStorage = new FilesStorage();
|
||||||
|
filesStorage.deleteTargetFolder(aslSession.getUsername(), project
|
||||||
|
.getProjectFolder().getItemDescription().getId());
|
||||||
|
|
||||||
|
File projectPackageFile = filesStorage.zipFolder(
|
||||||
|
aslSession.getUsername(), project.getProjectFolder()
|
||||||
|
.getItemDescription().getId());
|
||||||
|
|
||||||
|
WorkspaceFolder targetFolder = filesStorage.createTargetFolder(
|
||||||
|
aslSession.getUsername(), project.getProjectFolder()
|
||||||
|
.getItemDescription().getId());
|
||||||
|
logger.debug("TargetFolder:" + targetFolder);
|
||||||
|
|
||||||
|
ItemDescription tFolder;
|
||||||
|
try {
|
||||||
|
tFolder = new ItemDescription(targetFolder.getId(),
|
||||||
|
targetFolder.getName(), targetFolder.getOwner()
|
||||||
|
.getPortalLogin(), targetFolder.getPath(),
|
||||||
|
targetFolder.getType().name());
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
projectTarget = new ProjectTarget(tFolder);
|
||||||
|
|
||||||
|
InputStream inputStream;
|
||||||
|
try {
|
||||||
|
inputStream = Files.newInputStream(projectPackageFile.toPath(),
|
||||||
|
StandardOpenOption.READ);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("Error input stream generation: "
|
||||||
|
+ e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
WorkspaceItem projectPackageItem;
|
||||||
|
try {
|
||||||
|
projectPackageItem = filesStorage.createItemOnWorkspace(
|
||||||
|
aslSession.getUsername(), inputStream, project
|
||||||
|
.getInputData().getProjectInfo().getClassName()
|
||||||
|
+ PROJECT_PACKAGE_EXTENTION,
|
||||||
|
PROJECT_PACKAGE_DESCRIPTION, PROJECT_PACKAGE_MIMETYPE,
|
||||||
|
targetFolder.getId());
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.debug("ProjectPackageItem:" + projectPackageItem);
|
||||||
|
ItemDescription packageUrl;
|
||||||
|
try {
|
||||||
|
packageUrl = new ItemDescription(projectPackageItem.getId(),
|
||||||
|
projectPackageItem.getName(), projectPackageItem.getOwner()
|
||||||
|
.getPortalLogin(), projectPackageItem.getPath(),
|
||||||
|
projectPackageItem.getType().name());
|
||||||
|
packageUrl.setPublicLink(projectPackageItem.getPublicLink(true));
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
projectTarget.setPackageUrl(packageUrl);
|
||||||
|
project.setProjectTarget(projectTarget);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createIntegrationInfo()
|
||||||
|
throws StatAlgoImporterServiceException {
|
||||||
|
IntegrationInfoGenerator integrationInfoGenerator = new IntegrationInfoGenerator(
|
||||||
|
project);
|
||||||
|
Path infoFile = integrationInfoGenerator.createIntegrationInfo();
|
||||||
|
|
||||||
|
FilesStorage filesStorage = new FilesStorage();
|
||||||
|
WorkspaceItem infoItem;
|
||||||
|
|
||||||
|
try {
|
||||||
|
infoItem = filesStorage.createItemOnWorkspace(
|
||||||
|
aslSession.getUsername(),
|
||||||
|
Files.newInputStream(infoFile, StandardOpenOption.READ),
|
||||||
|
INTEGRATION_INFO_NAME
|
||||||
|
+ INTEGRATION_INFO_EXTENTION, INTEGRATION_INFO_DESCRIPTION,
|
||||||
|
INTEGRATION_INFO_MIMETYPE, project.getProjectTarget()
|
||||||
|
.getTargetFolder().getId());
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(),
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemDescription integrationItemDescription;
|
||||||
|
try {
|
||||||
|
integrationItemDescription = new ItemDescription(infoItem.getId(),
|
||||||
|
infoItem.getName(), infoItem.getOwner().getPortalLogin(),
|
||||||
|
infoItem.getPath(), infoItem.getType().name());
|
||||||
|
integrationItemDescription.setPublicLink(infoItem
|
||||||
|
.getPublicLink(true));
|
||||||
|
} catch (InternalErrorException e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
projectTarget.setIntegrationInfo(integrationItemDescription);
|
||||||
|
logger.debug("ProjectTarget: " + projectTarget);
|
||||||
|
project.setProjectTarget(projectTarget);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage;
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
|
|
||||||
|
@ -8,6 +10,7 @@ import org.gcube.common.homelibrary.home.HomeLibrary;
|
||||||
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
|
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
|
||||||
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
||||||
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
||||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
|
import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException;
|
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException;
|
||||||
|
@ -15,6 +18,8 @@ import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundExcept
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException;
|
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException;
|
||||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongItemTypeException;
|
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongItemTypeException;
|
||||||
|
import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalFile;
|
||||||
|
import org.gcube.common.homelibrary.util.zip.ZipUtil;
|
||||||
import org.gcube.contentmanager.storageclient.model.protocol.smp.SMPUrl;
|
import org.gcube.contentmanager.storageclient.model.protocol.smp.SMPUrl;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -32,6 +37,7 @@ public class FilesStorage {
|
||||||
private static final String STATISTICAL_ALGORITHM_PROJECT_MIMETYPE = "text/xml";
|
private static final String STATISTICAL_ALGORITHM_PROJECT_MIMETYPE = "text/xml";
|
||||||
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION = "Statistical Algorithm Project File";
|
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION = "Statistical Algorithm Project File";
|
||||||
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_NAME = "stat_algo.project";
|
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_NAME = "stat_algo.project";
|
||||||
|
private static final String STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME = "Target";
|
||||||
|
|
||||||
public static final Logger logger = LoggerFactory
|
public static final Logger logger = LoggerFactory
|
||||||
.getLogger(FilesStorage.class);
|
.getLogger(FilesStorage.class);
|
||||||
|
@ -80,8 +86,66 @@ public class FilesStorage {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveStatisticalAlgorithmProject(String user, InputStream inputStream,
|
public void deleteTargetFolder(String user, String folderId)
|
||||||
String folderId) throws StatAlgoImporterServiceException {
|
throws StatAlgoImporterServiceException {
|
||||||
|
Workspace ws;
|
||||||
|
try {
|
||||||
|
ws = HomeLibrary.getUserWorkspace(user);
|
||||||
|
|
||||||
|
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
||||||
|
if (!workSpaceItem.isFolder()) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"No valid project folder!");
|
||||||
|
}
|
||||||
|
|
||||||
|
WorkspaceItem target = ws.find(
|
||||||
|
STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME, folderId);
|
||||||
|
|
||||||
|
if (target != null) {
|
||||||
|
ws.removeItems(target.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
} catch (WrongItemTypeException | WorkspaceFolderNotFoundException
|
||||||
|
| InternalErrorException | HomeNotFoundException
|
||||||
|
| ItemNotFoundException | InsufficientPrivilegesException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorkspaceFolder createTargetFolder(String user, String folderId)
|
||||||
|
throws StatAlgoImporterServiceException {
|
||||||
|
Workspace ws;
|
||||||
|
try {
|
||||||
|
ws = HomeLibrary.getUserWorkspace(user);
|
||||||
|
|
||||||
|
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
||||||
|
if (!workSpaceItem.isFolder()) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"No valid project folder!");
|
||||||
|
}
|
||||||
|
|
||||||
|
WorkspaceFolder projectTargetFolder = ws.createFolder("Target",
|
||||||
|
"Project Target", folderId);
|
||||||
|
|
||||||
|
return projectTargetFolder;
|
||||||
|
} catch (WorkspaceFolderNotFoundException
|
||||||
|
| InternalErrorException | HomeNotFoundException
|
||||||
|
| ItemNotFoundException | InsufficientPrivilegesException
|
||||||
|
| ItemAlreadyExistException | WrongDestinationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveStatisticalAlgorithmProject(String user,
|
||||||
|
InputStream inputStream, String folderId)
|
||||||
|
throws StatAlgoImporterServiceException {
|
||||||
Workspace ws;
|
Workspace ws;
|
||||||
try {
|
try {
|
||||||
ws = HomeLibrary.getUserWorkspace(user);
|
ws = HomeLibrary.getUserWorkspace(user);
|
||||||
|
@ -115,11 +179,9 @@ public class FilesStorage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveItemOnWorkspace(String user, InputStream inputStream,
|
||||||
|
String name, String description, String mimeType, String folderId)
|
||||||
public void saveItemOnWorkspace(String user, InputStream inputStream, String name,
|
throws StatAlgoImporterServiceException {
|
||||||
String description, String mimeType,
|
|
||||||
String folderId) throws StatAlgoImporterServiceException {
|
|
||||||
Workspace ws;
|
Workspace ws;
|
||||||
try {
|
try {
|
||||||
ws = HomeLibrary.getUserWorkspace(user);
|
ws = HomeLibrary.getUserWorkspace(user);
|
||||||
|
@ -130,13 +192,10 @@ public class FilesStorage {
|
||||||
"Destination is not a folder!");
|
"Destination is not a folder!");
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkspaceItem projectItem = ws.find(
|
WorkspaceItem projectItem = ws.find(name, folderId);
|
||||||
name, folderId);
|
|
||||||
|
|
||||||
if (projectItem == null) {
|
if (projectItem == null) {
|
||||||
ws.createExternalFile(name,
|
ws.createExternalFile(name, description, mimeType, inputStream,
|
||||||
description,
|
|
||||||
mimeType, inputStream,
|
|
||||||
folderId);
|
folderId);
|
||||||
} else {
|
} else {
|
||||||
ws.updateItem(projectItem.getId(), inputStream);
|
ws.updateItem(projectItem.getId(), inputStream);
|
||||||
|
@ -154,10 +213,8 @@ public class FilesStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
public WorkspaceItem createItemOnWorkspace(String user, InputStream inputStream,
|
||||||
*
|
String name, String description, String mimeType, String folderId)
|
||||||
*/
|
|
||||||
public InputStream retrieveProjectItemOnWorkspace(String user, String folderId)
|
|
||||||
throws StatAlgoImporterServiceException {
|
throws StatAlgoImporterServiceException {
|
||||||
Workspace ws;
|
Workspace ws;
|
||||||
try {
|
try {
|
||||||
|
@ -166,10 +223,42 @@ public class FilesStorage {
|
||||||
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
||||||
if (!workSpaceItem.isFolder()) {
|
if (!workSpaceItem.isFolder()) {
|
||||||
throw new StatAlgoImporterServiceException(
|
throw new StatAlgoImporterServiceException(
|
||||||
"Folder is not valid item!");
|
"Destination is not a folder!");
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkspaceItem projectItem=ws.find(STATISTICAL_ALGORITHM_PROJECT_FILE_NAME, folderId);
|
|
||||||
|
ExternalFile workspaceItem=ws.createExternalFile(name, description, mimeType, inputStream,
|
||||||
|
folderId);
|
||||||
|
|
||||||
|
return workspaceItem;
|
||||||
|
} catch ( WorkspaceFolderNotFoundException
|
||||||
|
| InternalErrorException | HomeNotFoundException
|
||||||
|
| ItemNotFoundException | InsufficientPrivilegesException
|
||||||
|
| ItemAlreadyExistException | WrongDestinationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public InputStream retrieveProjectItemOnWorkspace(String user,
|
||||||
|
String folderId) throws StatAlgoImporterServiceException {
|
||||||
|
Workspace ws;
|
||||||
|
try {
|
||||||
|
ws = HomeLibrary.getUserWorkspace(user);
|
||||||
|
|
||||||
|
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
||||||
|
if (!workSpaceItem.isFolder()) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Item is not valid folder!");
|
||||||
|
}
|
||||||
|
|
||||||
|
WorkspaceItem projectItem = ws.find(
|
||||||
|
STATISTICAL_ALGORITHM_PROJECT_FILE_NAME, folderId);
|
||||||
|
|
||||||
if (projectItem == null) {
|
if (projectItem == null) {
|
||||||
throw new StatAlgoImporterServiceException(
|
throw new StatAlgoImporterServiceException(
|
||||||
|
@ -179,15 +268,13 @@ public class FilesStorage {
|
||||||
return retrieveImputStream(user, projectItem);
|
return retrieveImputStream(user, projectItem);
|
||||||
|
|
||||||
} catch (WorkspaceFolderNotFoundException | InternalErrorException
|
} catch (WorkspaceFolderNotFoundException | InternalErrorException
|
||||||
| HomeNotFoundException | ItemNotFoundException | WrongItemTypeException e) {
|
| HomeNotFoundException | ItemNotFoundException
|
||||||
|
| WrongItemTypeException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -200,7 +287,7 @@ public class FilesStorage {
|
||||||
WorkspaceItem workSpaceItem = ws.getItem(itemId);
|
WorkspaceItem workSpaceItem = ws.getItem(itemId);
|
||||||
if (workSpaceItem.isFolder()) {
|
if (workSpaceItem.isFolder()) {
|
||||||
throw new StatAlgoImporterServiceException(
|
throw new StatAlgoImporterServiceException(
|
||||||
"Folder is not valid item!");
|
"Item is not valid folder!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return retrieveImputStream(user, workSpaceItem);
|
return retrieveImputStream(user, workSpaceItem);
|
||||||
|
@ -248,12 +335,14 @@ public class FilesStorage {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param user User
|
* @param user
|
||||||
* @param itemId Item on workspace
|
* User
|
||||||
* @param data String to save
|
* @param itemId
|
||||||
|
* Item on workspace
|
||||||
|
* @param data
|
||||||
|
* String to save
|
||||||
* @throws StatAlgoImporterServiceException
|
* @throws StatAlgoImporterServiceException
|
||||||
*/
|
*/
|
||||||
public void saveItem(String user, String itemId, String data)
|
public void saveItem(String user, String itemId, String data)
|
||||||
|
@ -269,7 +358,7 @@ public class FilesStorage {
|
||||||
} else {
|
} else {
|
||||||
if (workSpaceItem.isFolder()) {
|
if (workSpaceItem.isFolder()) {
|
||||||
throw new StatAlgoImporterServiceException(
|
throw new StatAlgoImporterServiceException(
|
||||||
"Folder is not valid item!");
|
"Item is not valid folder!");
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -282,11 +371,39 @@ public class FilesStorage {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} catch (WorkspaceFolderNotFoundException | InternalErrorException
|
} catch (WorkspaceFolderNotFoundException | InternalErrorException
|
||||||
| HomeNotFoundException | ItemNotFoundException | InsufficientPrivilegesException | ItemAlreadyExistException | WrongDestinationException e) {
|
| HomeNotFoundException | ItemNotFoundException
|
||||||
|
| InsufficientPrivilegesException | ItemAlreadyExistException
|
||||||
|
| WrongDestinationException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public File zipFolder(String user, String folderId)
|
||||||
|
throws StatAlgoImporterServiceException {
|
||||||
|
Workspace ws;
|
||||||
|
try {
|
||||||
|
ws = HomeLibrary.getUserWorkspace(user);
|
||||||
|
|
||||||
|
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
||||||
|
if (!workSpaceItem.isFolder()) {
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Item is not valid folder!");
|
||||||
|
}
|
||||||
|
|
||||||
|
WorkspaceFolder folder = (WorkspaceFolder) workSpaceItem;
|
||||||
|
|
||||||
|
File fileZip = ZipUtil.zipFolder(folder);
|
||||||
|
|
||||||
|
return fileZip;
|
||||||
|
|
||||||
|
} catch (IOException | InternalErrorException
|
||||||
|
| WorkspaceFolderNotFoundException | HomeNotFoundException
|
||||||
|
| ItemNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.uriresolver;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
||||||
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
|
||||||
|
import org.gcube.portlets.user.uriresolvermanager.UriResolverManager;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Client for retrieve link
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author giancarlo email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class UriResolverSMIClient {
|
||||||
|
private static Logger logger = LoggerFactory
|
||||||
|
.getLogger(UriResolverSMIClient.class);
|
||||||
|
|
||||||
|
public UriResolverSMIClient() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String resolve(ItemDescription itemDescription, ASLSession aslSession)
|
||||||
|
throws StatAlgoImporterServiceException {
|
||||||
|
try {
|
||||||
|
|
||||||
|
String link = "";
|
||||||
|
|
||||||
|
logger.debug("Get uri from resolver: " + itemDescription);
|
||||||
|
|
||||||
|
UriResolverManager resolver;
|
||||||
|
Map<String, String> params = new HashMap<String, String>();
|
||||||
|
if (itemDescription != null) {
|
||||||
|
resolver = new UriResolverManager();
|
||||||
|
params.put("smp-id", itemDescription.getId());
|
||||||
|
if (itemDescription.getName() == null) {
|
||||||
|
params.put("fileName", "");
|
||||||
|
} else {
|
||||||
|
params.put("fileName", itemDescription.getName());
|
||||||
|
}
|
||||||
|
if (itemDescription.getType() == null) {
|
||||||
|
params.put("contentType", "");
|
||||||
|
} else {
|
||||||
|
params.put("contentType", itemDescription.getType());
|
||||||
|
}
|
||||||
|
logger.debug("Uri Resolver params: " + params);
|
||||||
|
link = resolver.getLink(params, true); // true, link is shorted
|
||||||
|
// otherwise none
|
||||||
|
} else {
|
||||||
|
logger.debug("No valid ItemDescription: "+itemDescription);
|
||||||
|
throw new StatAlgoImporterServiceException (
|
||||||
|
"No valid ItemDescription: "+itemDescription);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.debug("Retrieved Link: " + link);
|
||||||
|
return link;
|
||||||
|
|
||||||
|
} catch (StatAlgoImporterServiceException e) {
|
||||||
|
throw e;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new StatAlgoImporterServiceException(
|
||||||
|
"Error retrieving uri from resolver: "
|
||||||
|
+ e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -16,9 +16,11 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.Select
|
||||||
public class InputData implements Serializable {
|
public class InputData implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -2405068429998054485L;
|
private static final long serialVersionUID = -2405068429998054485L;
|
||||||
|
private ProjectInfo projectInfo;
|
||||||
|
private InterpreterInfo interpreterInfo;
|
||||||
private ArrayList<EnvironmentVariables> listEnvironmentVariables;
|
private ArrayList<EnvironmentVariables> listEnvironmentVariables;
|
||||||
private ArrayList<SelectedRowsVariables> listSelectedRows;
|
private ArrayList<SelectedRowsVariables> listSelectedRows;
|
||||||
private InterpreterInfo interpreterInfo;
|
|
||||||
|
|
||||||
public InputData() {
|
public InputData() {
|
||||||
super();
|
super();
|
||||||
|
@ -26,11 +28,12 @@ public class InputData implements Serializable {
|
||||||
|
|
||||||
public InputData(ArrayList<EnvironmentVariables> listEnvironmentVariables,
|
public InputData(ArrayList<EnvironmentVariables> listEnvironmentVariables,
|
||||||
ArrayList<SelectedRowsVariables> listSelectedRows,
|
ArrayList<SelectedRowsVariables> listSelectedRows,
|
||||||
InterpreterInfo interpreterInfo) {
|
InterpreterInfo interpreterInfo, ProjectInfo projectInfo) {
|
||||||
super();
|
super();
|
||||||
this.listEnvironmentVariables = listEnvironmentVariables;
|
this.listEnvironmentVariables = listEnvironmentVariables;
|
||||||
this.listSelectedRows = listSelectedRows;
|
this.listSelectedRows = listSelectedRows;
|
||||||
this.interpreterInfo = interpreterInfo;
|
this.interpreterInfo = interpreterInfo;
|
||||||
|
this.projectInfo = projectInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<EnvironmentVariables> getListEnvironmentVariables() {
|
public ArrayList<EnvironmentVariables> getListEnvironmentVariables() {
|
||||||
|
@ -59,12 +62,22 @@ public class InputData implements Serializable {
|
||||||
this.interpreterInfo = interpreterInfo;
|
this.interpreterInfo = interpreterInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public ProjectInfo getProjectInfo() {
|
||||||
public String toString() {
|
return projectInfo;
|
||||||
return "InputData [listEnvironmentVariables="
|
|
||||||
+ listEnvironmentVariables + ", listSelectedRows="
|
|
||||||
+ listSelectedRows + ", interpreterInfo=" + interpreterInfo
|
|
||||||
+ "]";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setProjectInfo(ProjectInfo projectInfo) {
|
||||||
|
this.projectInfo = projectInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "InputData [projectInfo=" + projectInfo + ", interpreterInfo="
|
||||||
|
+ interpreterInfo + ", listEnvironmentVariables="
|
||||||
|
+ listEnvironmentVariables + ", listSelectedRows="
|
||||||
|
+ listSelectedRows + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,9 +12,6 @@ public class Project implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -7906477664944910362L;
|
private static final long serialVersionUID = -7906477664944910362L;
|
||||||
|
|
||||||
private String name;
|
|
||||||
private String description;
|
|
||||||
private String className;
|
|
||||||
private ProjectFolder projectFolder;
|
private ProjectFolder projectFolder;
|
||||||
private MainCode mainCode;
|
private MainCode mainCode;
|
||||||
private InputData inputData;
|
private InputData inputData;
|
||||||
|
@ -30,30 +27,6 @@ public class Project implements Serializable {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDescription(String description) {
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getClassName() {
|
|
||||||
return className;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setClassName(String className) {
|
|
||||||
this.className = className;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MainCode getMainCode() {
|
public MainCode getMainCode() {
|
||||||
return mainCode;
|
return mainCode;
|
||||||
}
|
}
|
||||||
|
@ -88,15 +61,9 @@ public class Project implements Serializable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Project [name=" + name + ", description=" + description
|
return "Project [projectFolder=" + projectFolder + ", mainCode="
|
||||||
+ ", className=" + className + ", projectFolder="
|
+ mainCode + ", inputData=" + inputData + ", projectTarget="
|
||||||
+ projectFolder + ", mainCode=" + mainCode + ", inputData="
|
+ projectTarget + "]";
|
||||||
+ inputData + ", projectTarget=" + projectTarget + "]";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ProjectInfo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 7304965177776383842L;
|
||||||
|
private String name;
|
||||||
|
private String description;
|
||||||
|
private String className;
|
||||||
|
|
||||||
|
public ProjectInfo() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProjectInfo(String name, String description, String className) {
|
||||||
|
super();
|
||||||
|
this.name = name;
|
||||||
|
this.description = description;
|
||||||
|
this.className = className;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClassName() {
|
||||||
|
return className;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClassName(String className) {
|
||||||
|
this.className = className;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ProjectInfo [name=" + name + ", description=" + description
|
||||||
|
+ ", className=" + className + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -13,14 +13,29 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.It
|
||||||
public class ProjectTarget implements Serializable {
|
public class ProjectTarget implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 480665662744105383L;
|
private static final long serialVersionUID = 480665662744105383L;
|
||||||
|
private ItemDescription targetFolder;
|
||||||
private ItemDescription packageUrl;
|
private ItemDescription packageUrl;
|
||||||
private ItemDescription codeSource;
|
private ItemDescription codeSource;
|
||||||
|
private ItemDescription integrationInfo;
|
||||||
private ItemDescription codeJar;
|
private ItemDescription codeJar;
|
||||||
|
|
||||||
public ProjectTarget() {
|
public ProjectTarget() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ProjectTarget(ItemDescription targetFolder) {
|
||||||
|
super();
|
||||||
|
this.targetFolder = targetFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemDescription getTargetFolder() {
|
||||||
|
return targetFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTargetFolder(ItemDescription targetFolder) {
|
||||||
|
this.targetFolder = targetFolder;
|
||||||
|
}
|
||||||
|
|
||||||
public ItemDescription getPackageUrl() {
|
public ItemDescription getPackageUrl() {
|
||||||
return packageUrl;
|
return packageUrl;
|
||||||
}
|
}
|
||||||
|
@ -45,10 +60,25 @@ public class ProjectTarget implements Serializable {
|
||||||
this.codeJar = codeJar;
|
this.codeJar = codeJar;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "ProjectTarget [packageUrl=" + packageUrl + ", codeSource="
|
public ItemDescription getIntegrationInfo() {
|
||||||
+ codeSource + ", codeJar=" + codeJar + "]";
|
return integrationInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setIntegrationInfo(ItemDescription integrationInfo) {
|
||||||
|
this.integrationInfo = integrationInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ProjectTarget [targetFolder=" + targetFolder + ", packageUrl="
|
||||||
|
+ packageUrl + ", codeSource=" + codeSource
|
||||||
|
+ ", integrationInfo=" + integrationInfo + ", codeJar="
|
||||||
|
+ codeJar + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,10 +51,10 @@
|
||||||
name="locale" values="es" /> <set-property name="locale" value="en, it, es"
|
name="locale" values="es" /> <set-property name="locale" value="en, it, es"
|
||||||
/> <set-property-fallback name="locale" value="en" /> -->
|
/> <set-property-fallback name="locale" value="en" /> -->
|
||||||
|
|
||||||
<!-- <set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
|
<set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
|
||||||
name="log_DivLogger" value="ENABLED" /> <set-property name="log_GWTLogger"
|
name="log_DivLogger" value="ENABLED" /> <set-property name="log_GWTLogger"
|
||||||
value="ENABLED" /> <set-property name="log_SystemLogger" value="ENABLED"
|
value="ENABLED" /> <set-property name="log_SystemLogger" value="ENABLED"
|
||||||
/> -->
|
/>
|
||||||
<!-- Not in GWT 2.6 <set-property name="log_FirebugLogger" value="ENABLED"
|
<!-- Not in GWT 2.6 <set-property name="log_FirebugLogger" value="ENABLED"
|
||||||
/> -->
|
/> -->
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue