1452: Implement a GUI for StatMan Algorithms Importer

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

Fixed Project Folder Move 

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@122478 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2016-01-22 17:16:33 +00:00
parent 42cf40b1de
commit 6bf37916c9
3 changed files with 85 additions and 24 deletions

View File

@ -34,7 +34,10 @@ import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sencha.gxt.widget.core.client.box.ConfirmMessageBox;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
import com.sencha.gxt.widget.core.client.event.DialogHideEvent;
import com.sencha.gxt.widget.core.client.event.DialogHideEvent.DialogHideHandler;
/**
*
@ -335,11 +338,34 @@ public class StatAlgoImporterController {
}
private void softwareCreateRequest() {
monitor = new StatAlgoImporterMonitor();
inputRequestType = InputRequestType.SoftwareCreate;
InputRequestEvent inputRequestEvent = new InputRequestEvent();
eventBus.fireEvent(inputRequestEvent);
Log.debug("SoftwareCreateRequest: " + inputRequestEvent);
final ConfirmMessageBox mb = new ConfirmMessageBox(
"Warning",
"The creation of new software will overwrite the possible"
+ " previous version and will require publication again."
+ " Do you want to proceed anyway?");
mb.addDialogHideHandler(new DialogHideHandler() {
@Override
public void onDialogHide(DialogHideEvent event) {
switch (event.getHideButton()) {
case NO:
break;
case YES:
monitor = new StatAlgoImporterMonitor();
inputRequestType = InputRequestType.SoftwareCreate;
InputRequestEvent inputRequestEvent = new InputRequestEvent();
eventBus.fireEvent(inputRequestEvent);
Log.debug("SoftwareCreateRequest: " + inputRequestEvent);
break;
default:
break;
}
}
});
mb.setWidth(300);
mb.show();
}
private void softwarePublish() {

View File

@ -320,9 +320,8 @@ public class ProjectManager {
});
}
public void createSofware(InputData inputData,
public void createSofware(final InputData inputData,
final StatAlgoImporterMonitor monitor) {
Log.debug("Create Software: " + inputData);
StatAlgoImporterServiceAsync.INSTANCE.createSoftware(inputData,
new AsyncCallback<Void>() {

View File

@ -10,13 +10,13 @@ import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.MainCode;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectFolder;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi email: <a
@ -45,30 +45,34 @@ public class ProjectArchiver {
.getItemDescription().getId());
}
public static boolean existProjectInFolder(ItemDescription newProjectFolder,
ASLSession aslSession) throws StatAlgoImporterServiceException {
public static boolean existProjectInFolder(
ItemDescription newProjectFolder, ASLSession aslSession)
throws StatAlgoImporterServiceException {
FilesStorage filesStorage = new FilesStorage();
return filesStorage.existProjectItemOnWorkspace(aslSession.getUsername(), newProjectFolder.getId());
return filesStorage.existProjectItemOnWorkspace(
aslSession.getUsername(), newProjectFolder.getId());
}
public static Project readProject(ItemDescription newProjectFolder,
ASLSession aslSession) throws StatAlgoImporterServiceException {
FilesStorage filesStorage = new FilesStorage();
InputStream inputStream = filesStorage.retrieveProjectItemOnWorkspace(
aslSession.getUsername(), newProjectFolder.getId());
XMLDecoder xmlDecoder = new XMLDecoder(inputStream);
Project project = (Project) xmlDecoder.readObject();
xmlDecoder.close();
WorkspaceItem projectFolderItem=filesStorage.retrieveItemInfoOnWorkspace(aslSession.getUsername(), newProjectFolder.getId());
WorkspaceItem projectFolderItem = filesStorage
.retrieveItemInfoOnWorkspace(aslSession.getUsername(),
newProjectFolder.getId());
try {
newProjectFolder.setId(projectFolderItem.getId());
newProjectFolder.setName(projectFolderItem.getName());
newProjectFolder.setOwner(projectFolderItem.getOwner().getPortalLogin());
newProjectFolder.setOwner(projectFolderItem.getOwner()
.getPortalLogin());
newProjectFolder.setPath(projectFolderItem.getPath());
newProjectFolder.setType(projectFolderItem.getType().name());
} catch (InternalErrorException e) {
@ -77,16 +81,48 @@ public class ProjectArchiver {
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
if(project!=null && project.getProjectFolder()!=null &&
newProjectFolder.compareInfo(project.getProjectFolder().getItemDescription())){
if (project != null
&& project.getProjectFolder() != null
&& newProjectFolder.compareInfo(project.getProjectFolder()
.getItemDescription())) {
} else {
project.setProjectFolder(new ProjectFolder(newProjectFolder));
archive(project, aslSession);
}
if (project != null && project.getMainCode() != null
&& project.getMainCode().getItemDescription() != null) {
WorkspaceItem mainCodeItem = filesStorage
.retrieveItemInfoOnWorkspace(aslSession.getUsername(),
project.getMainCode().getItemDescription().getId());
ItemDescription newMainCodeItemDescription;
try {
newMainCodeItemDescription = new ItemDescription(
mainCodeItem.getId(), mainCodeItem.getName(),
mainCodeItem.getOwner().getPortalLogin(),
mainCodeItem.getPath(), mainCodeItem.getType().name());
} catch (InternalErrorException e) {
logger.error(e.getLocalizedMessage());
e.printStackTrace();
throw new StatAlgoImporterServiceException(
e.getLocalizedMessage());
}
if (newMainCodeItemDescription.compareInfo(project.getMainCode()
.getItemDescription())) {
} else {
project.setMainCode(new MainCode(newMainCodeItemDescription));
archive(project, aslSession);
}
} else {
project.setProjectFolder(new ProjectFolder(newProjectFolder));
archive(project, aslSession);
}
return project;
}
}