1452: Implement a GUI for StatMan Algorithms Importer
Task-Url: https://support.d4science.org/issues/1452 Added Repackage git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@122526 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
a0ded9b2ba
commit
f0ad8e6d42
|
@ -278,6 +278,9 @@ public class StatAlgoImporterController {
|
|||
case SOFTWARE_PUBLISH:
|
||||
softwarePublish();
|
||||
break;
|
||||
case SOFTWARE_REPACKAGE:
|
||||
softwareRepackage();
|
||||
break;
|
||||
case HELP:
|
||||
showHelp();
|
||||
break;
|
||||
|
@ -372,6 +375,11 @@ public class StatAlgoImporterController {
|
|||
pm.softwarePublish();
|
||||
|
||||
}
|
||||
|
||||
private void softwareRepackage() {
|
||||
pm.softwareRepackage();
|
||||
|
||||
}
|
||||
|
||||
private void showCreateProjectDialog() {
|
||||
pm.createProject();
|
||||
|
|
|
@ -645,6 +645,67 @@ public class ProjectManager {
|
|||
});
|
||||
|
||||
}
|
||||
|
||||
public void softwareRepackage() {
|
||||
if (project != null) {
|
||||
final ConfirmMessageBox mb = new ConfirmMessageBox(
|
||||
"Attention",
|
||||
"This operation repackages the script only without recreating the Java software. The already deployed Java software will use the new script package. Do you want to proceed?");
|
||||
mb.addDialogHideHandler(new DialogHideHandler() {
|
||||
|
||||
@Override
|
||||
public void onDialogHide(DialogHideEvent event) {
|
||||
switch (event.getHideButton()) {
|
||||
case NO:
|
||||
break;
|
||||
case YES:
|
||||
softwareRepackageOnServer();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
mb.setWidth(300);
|
||||
mb.show();
|
||||
|
||||
} else {
|
||||
Log.error("Project not open: " + project);
|
||||
UtilsGXT3.alert("Error", "Project not open!");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void softwareRepackageOnServer() {
|
||||
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
|
||||
StatAlgoImporterServiceAsync.INSTANCE
|
||||
.repackageSoftware(new AsyncCallback<Void>() {
|
||||
|
||||
public void onFailure(Throwable caught) {
|
||||
monitor.hide();
|
||||
if (caught instanceof StatAlgoImporterSessionExpiredException) {
|
||||
eventBus.fireEvent(new SessionExpiredEvent(
|
||||
SessionExpiredType.EXPIREDONSERVER));
|
||||
} else {
|
||||
UtilsGXT3.alert("Error",
|
||||
caught.getLocalizedMessage());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void onSuccess(Void result) {
|
||||
monitor.hide();
|
||||
UtilsGXT3.info("Repackage",
|
||||
"The script has been repackaged!");
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void softwarePublish() {
|
||||
if (project != null) {
|
||||
|
@ -704,4 +765,6 @@ public class ProjectManager {
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -21,32 +21,31 @@ public interface StatAlgoImporterResources extends ClientBundle {
|
|||
|
||||
@Source("SAIStyles.css")
|
||||
SAIStyles saiStyles();
|
||||
|
||||
|
||||
@Source("WikiLink.txt")
|
||||
ExternalTextResource wikiLink();
|
||||
|
||||
|
||||
|
||||
@Source("help_32.png")
|
||||
ImageResource help32();
|
||||
|
||||
|
||||
@Source("help_24.png")
|
||||
ImageResource help24();
|
||||
|
||||
@Source("download_32.png")
|
||||
ImageResource download32();
|
||||
|
||||
|
||||
@Source("download_24.png")
|
||||
ImageResource download24();
|
||||
|
||||
@Source("download_16.png")
|
||||
ImageResource download16();
|
||||
|
||||
|
||||
@Source("upload_32.png")
|
||||
ImageResource upload32();
|
||||
|
||||
|
||||
@Source("upload_24.png")
|
||||
ImageResource upload24();
|
||||
|
||||
|
||||
@Source("job_32.png")
|
||||
ImageResource job32();
|
||||
|
||||
|
@ -55,7 +54,7 @@ public interface StatAlgoImporterResources extends ClientBundle {
|
|||
|
||||
@Source("reload_24.png")
|
||||
ImageResource reload24();
|
||||
|
||||
|
||||
@Source("reload_16.png")
|
||||
ImageResource reload16();
|
||||
|
||||
|
@ -67,22 +66,28 @@ public interface StatAlgoImporterResources extends ClientBundle {
|
|||
|
||||
@Source("cancel_32.png")
|
||||
ImageResource cancel32();
|
||||
|
||||
|
||||
@Source("cancel_24.png")
|
||||
ImageResource cancel24();
|
||||
|
||||
@Source("algorithm_32.png")
|
||||
ImageResource algorithm32();
|
||||
|
||||
|
||||
@Source("algorithm_24.png")
|
||||
ImageResource algorithm24();
|
||||
|
||||
|
||||
@Source("publish_32.png")
|
||||
ImageResource publish32();
|
||||
|
||||
|
||||
@Source("publish_24.png")
|
||||
ImageResource publish24();
|
||||
|
||||
|
||||
@Source("zip_32.png")
|
||||
ImageResource zip32();
|
||||
|
||||
@Source("zip_24.png")
|
||||
ImageResource zip24();
|
||||
|
||||
@Source("project-create_32.png")
|
||||
ImageResource projectCreate32();
|
||||
|
||||
|
@ -91,31 +96,31 @@ public interface StatAlgoImporterResources extends ClientBundle {
|
|||
|
||||
@Source("project-open_32.png")
|
||||
ImageResource projectOpen32();
|
||||
|
||||
|
||||
@Source("project-open_24.png")
|
||||
ImageResource projectOpen24();
|
||||
|
||||
|
||||
@Source("project-save_32.png")
|
||||
ImageResource projectSave32();
|
||||
|
||||
|
||||
@Source("project-save_24.png")
|
||||
ImageResource projectSave24();
|
||||
|
||||
@Source("add_24.png")
|
||||
ImageResource add24();
|
||||
|
||||
|
||||
@Source("add_16.png")
|
||||
ImageResource add16();
|
||||
|
||||
|
||||
@Source("delete_24.png")
|
||||
ImageResource delete24();
|
||||
|
||||
|
||||
@Source("delete_16.png")
|
||||
ImageResource delete16();
|
||||
|
||||
@Source("save_24.png")
|
||||
ImageResource save24();
|
||||
|
||||
|
||||
@Source("save_16.png")
|
||||
ImageResource save16();
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 897 B |
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
|
@ -50,7 +50,7 @@ public class HomeToolBar {
|
|||
//Software
|
||||
private TextButton btnCreateSoftware;
|
||||
private TextButton btnPublishSoftware;
|
||||
|
||||
private TextButton btnRepackageSoftware;
|
||||
|
||||
// Help
|
||||
private TextButton btnHelp;
|
||||
|
@ -196,6 +196,7 @@ public class HomeToolBar {
|
|||
btnCreateSoftware.setIconAlign(IconAlign.LEFT);
|
||||
btnCreateSoftware.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
||||
btnCreateSoftware.setToolTip(msgs.btnCreateSoftwareToolTip());
|
||||
btnCreateSoftware.getElement().setMargins(new Margins(0, 4, 0, 0));
|
||||
btnCreateSoftware.disable();
|
||||
btnCreateSoftware.addSelectHandler(new SelectHandler() {
|
||||
|
||||
|
@ -215,6 +216,7 @@ public class HomeToolBar {
|
|||
btnPublishSoftware.setIconAlign(IconAlign.LEFT);
|
||||
btnPublishSoftware.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
||||
btnPublishSoftware.setToolTip(msgs.btnPublishSoftwareToolTip());
|
||||
btnPublishSoftware.getElement().setMargins(new Margins(0, 4, 0, 0));
|
||||
btnPublishSoftware.disable();
|
||||
btnPublishSoftware.addSelectHandler(new SelectHandler() {
|
||||
|
||||
|
@ -227,6 +229,27 @@ public class HomeToolBar {
|
|||
softwareLayout.setWidget(0, 1, btnPublishSoftware);
|
||||
softwareLayout.getFlexCellFormatter().setRowSpan(0, 1, 2);
|
||||
|
||||
|
||||
btnRepackageSoftware = new TextButton(msgs.btnRepackageSoftwareText(),
|
||||
StatAlgoImporterResources.INSTANCE.zip24());
|
||||
btnRepackageSoftware.setId("publishSofwareButton");
|
||||
btnRepackageSoftware.setScale(ButtonScale.SMALL);
|
||||
btnRepackageSoftware.setIconAlign(IconAlign.LEFT);
|
||||
btnRepackageSoftware.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
||||
btnRepackageSoftware.setToolTip(msgs.btnRepackageSoftwareToolTip());
|
||||
btnRepackageSoftware.disable();
|
||||
btnRepackageSoftware.addSelectHandler(new SelectHandler() {
|
||||
|
||||
public void onSelect(SelectEvent event) {
|
||||
eventBus.fireEvent(new StatAlgoImporterRibbonEvent(
|
||||
StatAlgoImporterRibbonType.SOFTWARE_REPACKAGE));
|
||||
}
|
||||
});
|
||||
|
||||
softwareLayout.setWidget(0, 2, btnRepackageSoftware);
|
||||
softwareLayout.getFlexCellFormatter().setRowSpan(0, 2, 2);
|
||||
|
||||
|
||||
|
||||
// Help
|
||||
ButtonGroup helpGroup = new ButtonGroup();
|
||||
|
@ -373,6 +396,7 @@ public class HomeToolBar {
|
|||
btnAddResource.disable();
|
||||
btnCreateSoftware.disable();
|
||||
btnPublishSoftware.disable();
|
||||
btnRepackageSoftware.disable();
|
||||
btnHelp.enable();
|
||||
break;
|
||||
case OPEN:
|
||||
|
@ -387,6 +411,7 @@ public class HomeToolBar {
|
|||
btnAddResource.enable();
|
||||
btnCreateSoftware.enable();
|
||||
btnPublishSoftware.enable();
|
||||
btnRepackageSoftware.enable();
|
||||
btnHelp.enable();
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -75,6 +75,13 @@ public interface HomeToolBarMessages extends Messages {
|
|||
@DefaultMessage("Publish Software")
|
||||
String btnPublishSoftwareToolTip();
|
||||
|
||||
@DefaultMessage("Repackage")
|
||||
String btnRepackageSoftwareText();
|
||||
|
||||
@DefaultMessage("Script Repackage")
|
||||
String btnRepackageSoftwareToolTip();
|
||||
|
||||
|
||||
//
|
||||
@DefaultMessage("Help")
|
||||
String helpGroupHeadingText();
|
||||
|
@ -84,5 +91,6 @@ public interface HomeToolBarMessages extends Messages {
|
|||
|
||||
@DefaultMessage("Help")
|
||||
String helpButtonToolTip();
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -78,4 +78,6 @@ public interface StatAlgoImporterService extends RemoteService {
|
|||
|
||||
public void publishSoftware() throws StatAlgoImporterServiceException;
|
||||
|
||||
public void repackageSoftware() throws StatAlgoImporterServiceException;
|
||||
|
||||
}
|
||||
|
|
|
@ -66,4 +66,6 @@ public interface StatAlgoImporterServiceAsync {
|
|||
|
||||
void publishSoftware(AsyncCallback<Void> asyncCallback);
|
||||
|
||||
void repackageSoftware(AsyncCallback<Void> asyncCallback);
|
||||
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ public class ExplorerProjectPanel extends ContentPanel {
|
|||
try {
|
||||
|
||||
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
|
||||
event.getProject().getProjectFolder().getItemDescription()
|
||||
event.getProject().getProjectFolder().getFolder()
|
||||
.getId(), false);
|
||||
|
||||
|
||||
|
@ -177,7 +177,7 @@ public class ExplorerProjectPanel extends ContentPanel {
|
|||
|
||||
dnd = new MultipleDNDUpload();
|
||||
dnd.setParameters(event.getProject().getProjectFolder()
|
||||
.getItemDescription().getId(), UPLOAD_TYPE.File);
|
||||
.getFolder().getId(), UPLOAD_TYPE.File);
|
||||
dnd.addUniqueContainer(vResourcesExplorerContainer);
|
||||
WorskpaceUploadNotificationListener workspaceUploaderListener = new WorskpaceUploadNotificationListener() {
|
||||
|
||||
|
|
|
@ -13,5 +13,6 @@ public enum StatAlgoImporterRibbonType {
|
|||
RESOURCE_ADD,
|
||||
SOFTWARE_CREATE,
|
||||
SOFTWARE_PUBLISH,
|
||||
SOFTWARE_REPACKAGE,
|
||||
HELP;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.Main
|
|||
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.ProjectArchiver;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputData;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.MainCode;
|
||||
|
@ -300,11 +301,11 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
|||
|
||||
Project project = SessionUtil.getProjectSession(session);
|
||||
if (project != null && project.getProjectFolder() != null
|
||||
&& project.getProjectFolder().getItemDescription() != null) {
|
||||
&& project.getProjectFolder().getFolder() != null) {
|
||||
FilesStorage fileStorage = new FilesStorage();
|
||||
fileStorage.copyItemOnFolder(aslSession.getUsername(),
|
||||
itemDescription.getId(), project.getProjectFolder()
|
||||
.getItemDescription().getId());
|
||||
.getFolder().getId());
|
||||
} else {
|
||||
throw new StatAlgoImporterServiceException("No project open!");
|
||||
}
|
||||
|
@ -336,27 +337,12 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
|||
}
|
||||
|
||||
Project project = SessionUtil.getProjectSession(session);
|
||||
if (project != null) {
|
||||
if (project.getMainCode() != null
|
||||
&& project.getMainCode().getItemDescription() != null
|
||||
&& project.getMainCode().getItemDescription().getId()
|
||||
.compareTo(itemDescription.getId()) == 0) {
|
||||
project.setMainCode(null);
|
||||
project.setInputData(null);
|
||||
project.setProjectTarget(null);
|
||||
FilesStorage fileStorage = new FilesStorage();
|
||||
fileStorage.deleteItemOnFolder(aslSession.getUsername(),
|
||||
itemDescription.getId());
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
} else {
|
||||
FilesStorage fileStorage = new FilesStorage();
|
||||
fileStorage.deleteItemOnFolder(aslSession.getUsername(),
|
||||
itemDescription.getId());
|
||||
}
|
||||
return project;
|
||||
} else {
|
||||
throw new StatAlgoImporterServiceException("No project open!");
|
||||
}
|
||||
checkProjectInfoForDelete(itemDescription,aslSession, session, project);
|
||||
FilesStorage fileStorage = new FilesStorage();
|
||||
fileStorage.deleteItemOnFolder(
|
||||
aslSession.getUsername(),
|
||||
itemDescription.getId());
|
||||
return project;
|
||||
|
||||
} catch (StatAlgoImporterServiceException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -370,6 +356,86 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
|||
|
||||
}
|
||||
|
||||
private void checkProjectInfoForDelete(ItemDescription itemDescription,
|
||||
ASLSession aslSession, HttpSession session, Project project)
|
||||
throws StatAlgoImporterSessionExpiredException,
|
||||
StatAlgoImporterServiceException {
|
||||
if (project != null) {
|
||||
if (project.getMainCode() != null
|
||||
&& project.getMainCode().getItemDescription() != null
|
||||
&& project.getMainCode().getItemDescription().getId()
|
||||
.compareTo(itemDescription.getId()) == 0) {
|
||||
project.setMainCode(null);
|
||||
project.setInputData(null);
|
||||
project.setProjectTarget(null);
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
} else {
|
||||
if (project.getProjectTarget() != null
|
||||
&& project.getProjectTarget().getFolder() != null
|
||||
&& project.getProjectTarget().getFolder().getId()
|
||||
.compareTo(itemDescription.getId()) == 0) {
|
||||
project.setProjectTarget(null);
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
} else {
|
||||
if (project.getProjectTarget() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectCompile() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectCompile().getFolder() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectCompile().getFolder()
|
||||
.getId()
|
||||
.compareTo(itemDescription.getId()) == 0) {
|
||||
project.getProjectTarget().setProjectCompile(null);
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
} else {
|
||||
if (project.getProjectTarget() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectDeploy() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectDeploy().getFolder() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectDeploy().getFolder()
|
||||
.getId()
|
||||
.compareTo(itemDescription.getId()) == 0) {
|
||||
project.getProjectTarget().setProjectDeploy(
|
||||
null);
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
} else {
|
||||
if (project.getProjectTarget() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectDeploy() != null
|
||||
&& project.getProjectTarget()
|
||||
.getProjectDeploy()
|
||||
.getPackageProject() != null
|
||||
&& project
|
||||
.getProjectTarget()
|
||||
.getProjectDeploy()
|
||||
.getPackageProject()
|
||||
.getId()
|
||||
.compareTo(
|
||||
itemDescription.getId()) == 0) {
|
||||
project.getProjectTarget()
|
||||
.getProjectDeploy()
|
||||
.setPackageProject(null);
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new StatAlgoImporterServiceException("No project open!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveProject(InputData inputData)
|
||||
throws StatAlgoImporterServiceException {
|
||||
|
@ -441,7 +507,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
|||
+ ", code:" + code);
|
||||
Project project = SessionUtil.getProjectSession(session);
|
||||
if (project != null && project.getProjectFolder() != null
|
||||
&& project.getProjectFolder().getItemDescription() != null) {
|
||||
&& project.getProjectFolder().getFolder() != null) {
|
||||
MainCodeSave mainCodeSave = new MainCodeSave();
|
||||
ItemDescription mainCodeItemDescription = mainCodeSave.saveNew(
|
||||
aslSession, fileDescription, code, project);
|
||||
|
@ -476,8 +542,8 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
|||
project.setInputData(inputData);
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectBuilder projectBuilder = new ProjectBuilder(project,
|
||||
aslSession, session);
|
||||
project = projectBuilder.build();
|
||||
aslSession);
|
||||
project = projectBuilder.buildTarget();
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
} else {
|
||||
|
@ -527,12 +593,12 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
|||
ArrayList<Recipient> recipients = SessionUtil.getRecipients(session
|
||||
.getServletContext());
|
||||
Project project = SessionUtil.getProjectSession(session);
|
||||
if (project != null && project.getProjectTarget() != null
|
||||
&& project.getProjectTarget().getTargetFolder() != null
|
||||
&& project.getProjectTarget().getCodeJar() != null
|
||||
&& project.getProjectTarget().getCodeSource() != null
|
||||
&& project.getProjectTarget().getIntegrationInfo() != null
|
||||
&& project.getProjectTarget().getPackageUrl() != null) {
|
||||
if (project != null) {
|
||||
ProjectBuilder projectBuilder = new ProjectBuilder(project,
|
||||
aslSession);
|
||||
project = projectBuilder.buildDeploy();
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
AlgorithmNotification notify = new AlgorithmNotification(
|
||||
aslSession, project, recipients);
|
||||
notify.run();
|
||||
|
@ -553,4 +619,34 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void repackageSoftware() throws StatAlgoImporterServiceException {
|
||||
try {
|
||||
HttpSession session = this.getThreadLocalRequest().getSession();
|
||||
ASLSession aslSession = SessionUtil.getAslSession(session);
|
||||
logger.debug("RepackageSoftware()");
|
||||
Project project = SessionUtil.getProjectSession(session);
|
||||
if (project != null) {
|
||||
ProjectBuilder projectBuilder = new ProjectBuilder(project,
|
||||
aslSession);
|
||||
project = projectBuilder.buildRepackage();
|
||||
SessionUtil.setProjectSession(session, project);
|
||||
ProjectArchiver.archive(project, aslSession);
|
||||
} else {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"The script was not packaged correctly!");
|
||||
}
|
||||
|
||||
return;
|
||||
} catch (StatAlgoImporterServiceException e) {
|
||||
e.printStackTrace();
|
||||
throw e;
|
||||
} catch (Throwable e) {
|
||||
logger.error("repackageSoftware(): " + e.getLocalizedMessage(), e);
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -271,12 +271,12 @@ public class AlgorithmGenerator {
|
|||
}
|
||||
|
||||
private String retrieveMainScriptRelativePath() {
|
||||
String projectPath = project.getProjectFolder().getItemDescription()
|
||||
String projectPath = project.getProjectFolder().getFolder()
|
||||
.getPath();
|
||||
String mainCodePath = project.getMainCode().getItemDescription()
|
||||
.getPath();
|
||||
|
||||
String relativePath = project.getProjectFolder().getItemDescription()
|
||||
String relativePath = project.getProjectFolder().getFolder()
|
||||
.getName()
|
||||
+ mainCodePath.substring(projectPath.length());
|
||||
return relativePath;
|
||||
|
@ -285,10 +285,11 @@ public class AlgorithmGenerator {
|
|||
|
||||
private String retrievePackageUrl() {
|
||||
String packageUrl = "";
|
||||
if (project.getProjectTarget() != null
|
||||
&& project.getProjectTarget().getPackageUrl() != null) {
|
||||
if (project.getProjectTarget().getPackageUrl().getPublicLink() != null) {
|
||||
packageUrl = project.getProjectTarget().getPackageUrl()
|
||||
if (project.getProjectTarget()!=null&&
|
||||
project.getProjectTarget().getProjectDeploy() != null
|
||||
&& project.getProjectTarget().getProjectDeploy().getPackageProject() != null) {
|
||||
if (project.getProjectTarget().getProjectDeploy().getPackageProject().getPublicLink() != null) {
|
||||
packageUrl = project.getProjectTarget().getProjectDeploy().getPackageProject()
|
||||
.getPublicLink();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,8 +12,6 @@ import java.nio.file.StandardOpenOption;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.gcube.application.framework.core.session.ASLSession;
|
||||
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
||||
|
@ -22,6 +20,8 @@ import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
|
|||
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.project.Project;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectCompile;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectDeploy;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectTarget;
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -34,6 +34,13 @@ import org.slf4j.LoggerFactory;
|
|||
*
|
||||
*/
|
||||
public class ProjectBuilder {
|
||||
private static final String STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME = "Target";
|
||||
private static final String STATISTICAL_ALGORITHM_TARGET_FOLDER_DESCRIPTION = "Project Target";
|
||||
private static final String STATISTICAL_ALGORITHM_DEPLOY_FOLDER_NAME = "Deploy";
|
||||
private static final String STATISTICAL_ALGORITHM_DEPLOY_FOLDER_DESCRIPTION = "Project Deploy";
|
||||
private static final String STATISTICAL_ALGORITHM_COMPILE_FOLDER_NAME = "Compile";
|
||||
private static final String STATISTICAL_ALGORITHM_COMPILE_FOLDER_DESCRIPTION = "Project Compile";
|
||||
|
||||
private static final String ALGORITHM_MIMETYPE = "text/plain";
|
||||
private static final String ALGORITHM_DESCRIPTION = "Statistical Algorithm Java Code";
|
||||
private static final String ALGORITHM_EXTENTION = ".java";
|
||||
|
@ -60,17 +67,142 @@ public class ProjectBuilder {
|
|||
|
||||
private Project project;
|
||||
private ASLSession aslSession;
|
||||
private ProjectTarget projectTarget;
|
||||
private Path algorithmJava;
|
||||
private Path infoTXT;
|
||||
|
||||
public ProjectBuilder(Project project, ASLSession aslSession,
|
||||
HttpSession session) {
|
||||
public ProjectBuilder(Project project, ASLSession aslSession) {
|
||||
this.project = project;
|
||||
this.aslSession = aslSession;
|
||||
}
|
||||
|
||||
private void checkInfo() throws StatAlgoImporterServiceException {
|
||||
public Project buildTarget() throws StatAlgoImporterServiceException {
|
||||
checkInfoForBuild();
|
||||
createTargetFolder();
|
||||
createDeployFolder();
|
||||
createProjectPackage();
|
||||
createCompileFolder();
|
||||
createAlgorithm();
|
||||
createIntegrationInfo();
|
||||
createProjectJarFile();
|
||||
|
||||
return project;
|
||||
|
||||
}
|
||||
|
||||
public Project buildDeploy() throws StatAlgoImporterServiceException {
|
||||
checkInfoForDeploy();
|
||||
copyJarInDeploy();
|
||||
return project;
|
||||
}
|
||||
|
||||
public Project buildRepackage() throws StatAlgoImporterServiceException {
|
||||
checkInfoForRepackage();
|
||||
repackageProjectPackage();
|
||||
return project;
|
||||
}
|
||||
|
||||
private void repackageProjectPackage()
|
||||
throws StatAlgoImporterServiceException {
|
||||
FilesStorage filesStorage = new FilesStorage();
|
||||
|
||||
List<String> idsToExclude = new ArrayList<String>();
|
||||
if (project.getProjectTarget() != null
|
||||
&& project.getProjectTarget().getFolder() != null
|
||||
&& project.getProjectTarget().getFolder().getId() != null
|
||||
&& !project.getProjectTarget().getFolder().getId().isEmpty()) {
|
||||
idsToExclude.add(project.getProjectTarget().getFolder().getId());
|
||||
}
|
||||
|
||||
File projectPackageFile = filesStorage.zipFolder(
|
||||
aslSession.getUsername(), project.getProjectFolder()
|
||||
.getFolder().getId(), idsToExclude);
|
||||
|
||||
InputStream inputStream;
|
||||
try {
|
||||
inputStream = Files.newInputStream(projectPackageFile.toPath(),
|
||||
StandardOpenOption.READ);
|
||||
} catch (IOException e) {
|
||||
logger.error("Error input stream generation for project package file: "
|
||||
+ e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
|
||||
filesStorage.saveInputStreamInItem(
|
||||
aslSession.getUsername(), project.getProjectTarget()
|
||||
.getProjectDeploy().getPackageProject().getId(),
|
||||
inputStream);
|
||||
|
||||
|
||||
WorkspaceItem packageProject=filesStorage.retrieveItemInfoOnWorkspace(aslSession.getUsername(), project.getProjectTarget()
|
||||
.getProjectDeploy().getPackageProject().getId());
|
||||
|
||||
ItemDescription packageProjectItemDescription;
|
||||
try {
|
||||
packageProjectItemDescription = new ItemDescription(packageProject.getId(),
|
||||
packageProject.getName(), packageProject
|
||||
.getOwner().getPortalLogin(),
|
||||
packageProject.getPath(), packageProject
|
||||
.getType().name());
|
||||
packageProjectItemDescription.setPublicLink(packageProject.getPublicLink(true));
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
|
||||
}
|
||||
|
||||
project.getProjectTarget().getProjectDeploy().setPackageProject(packageProjectItemDescription);
|
||||
logger.debug("ProjectDeploy: "
|
||||
+ project.getProjectTarget().getProjectDeploy());
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void copyJarInDeploy() throws StatAlgoImporterServiceException {
|
||||
FilesStorage filesStorage = new FilesStorage();
|
||||
if (project.getProjectTarget().getProjectDeploy().getCodeJar() != null
|
||||
&& project.getProjectTarget().getProjectDeploy().getCodeJar()
|
||||
.getId() != null
|
||||
&& !project.getProjectTarget().getProjectDeploy().getCodeJar()
|
||||
.getId().isEmpty()) {
|
||||
filesStorage
|
||||
.deleteItemOnFolder(aslSession.getUsername(), project
|
||||
.getProjectTarget().getProjectDeploy().getCodeJar()
|
||||
.getId());
|
||||
}
|
||||
|
||||
WorkspaceItem deployableCodeJarItem = filesStorage.copyItemOnFolder(
|
||||
aslSession.getUsername(), project.getProjectTarget()
|
||||
.getProjectCompile().getCodeJar().getId(), project
|
||||
.getProjectTarget().getProjectDeploy().getFolder()
|
||||
.getId());
|
||||
|
||||
logger.debug("DeployableCodeJarItem:" + deployableCodeJarItem);
|
||||
|
||||
ItemDescription dCodeJar;
|
||||
try {
|
||||
dCodeJar = new ItemDescription(deployableCodeJarItem.getId(),
|
||||
deployableCodeJarItem.getName(), deployableCodeJarItem
|
||||
.getOwner().getPortalLogin(),
|
||||
deployableCodeJarItem.getPath(), deployableCodeJarItem
|
||||
.getType().name());
|
||||
dCodeJar.setPublicLink(deployableCodeJarItem.getPublicLink(true));
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
|
||||
}
|
||||
|
||||
project.getProjectTarget().getProjectDeploy().setCodeJar(dCodeJar);
|
||||
logger.debug("ProjectDeploy: "
|
||||
+ project.getProjectTarget().getProjectDeploy());
|
||||
}
|
||||
|
||||
private void checkInfoForRepackage()
|
||||
throws StatAlgoImporterServiceException {
|
||||
if (project == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Found!");
|
||||
|
@ -81,6 +213,139 @@ public class ProjectBuilder {
|
|||
"Attention No Project Folder Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Target Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getFolder() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Target Folder Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectDeploy() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Deploy Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectDeploy().getFolder() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Deploy Folder Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectDeploy().getPackageProject() == null
|
||||
|| project.getProjectTarget().getProjectDeploy()
|
||||
.getPackageProject().getId() == null
|
||||
|| project.getProjectTarget().getProjectDeploy()
|
||||
.getPackageProject().getId().isEmpty()) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Package Found. Try to create software before!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void checkInfoForDeploy() 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.getProjectTarget() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Target Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getFolder() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Target Folder Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectDeploy() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Deploy Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectDeploy().getFolder() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Deploy Folder Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectDeploy().getPackageProject() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Package Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectCompile().getFolder() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Compile Folder Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectCompile().getCodeSource() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Source Code Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectCompile().getCodeJar() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Jar Code Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectTarget().getProjectCompile().getIntegrationInfo() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Integration Info Found!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void createDeployFolder() throws StatAlgoImporterServiceException {
|
||||
FilesStorage filesStorage = new FilesStorage();
|
||||
filesStorage.deleteFolder(aslSession.getUsername(), project
|
||||
.getProjectTarget().getFolder().getId(),
|
||||
STATISTICAL_ALGORITHM_DEPLOY_FOLDER_NAME);
|
||||
|
||||
WorkspaceFolder deployFolder = filesStorage.createFolder(
|
||||
aslSession.getUsername(), project.getProjectTarget()
|
||||
.getFolder().getId(),
|
||||
STATISTICAL_ALGORITHM_DEPLOY_FOLDER_NAME,
|
||||
STATISTICAL_ALGORITHM_DEPLOY_FOLDER_DESCRIPTION);
|
||||
logger.debug("PublicFolder:" + deployFolder);
|
||||
|
||||
ItemDescription pFolder;
|
||||
try {
|
||||
pFolder = new ItemDescription(deployFolder.getId(),
|
||||
deployFolder.getName(), deployFolder.getOwner()
|
||||
.getPortalLogin(), deployFolder.getPath(),
|
||||
deployFolder.getType().name());
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
|
||||
}
|
||||
ProjectDeploy projectDeploy = new ProjectDeploy(pFolder);
|
||||
project.getProjectTarget().setProjectDeploy(projectDeploy);
|
||||
|
||||
}
|
||||
|
||||
private void checkInfoForBuild() throws StatAlgoImporterServiceException {
|
||||
if (project == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Found!");
|
||||
}
|
||||
|
||||
if (project.getProjectFolder() == null
|
||||
|| project.getProjectFolder().getFolder() == null
|
||||
|| project.getProjectFolder().getFolder().getId() == null
|
||||
|| project.getProjectFolder().getFolder().getId().isEmpty()) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Project Folder Found!");
|
||||
}
|
||||
|
||||
if (project.getInputData() == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Attention No Input Set!");
|
||||
|
@ -131,18 +396,121 @@ public class ProjectBuilder {
|
|||
|
||||
}
|
||||
|
||||
public Project build() throws StatAlgoImporterServiceException {
|
||||
checkInfo();
|
||||
createProjectPackage();
|
||||
createAlgorithm();
|
||||
createIntegrationInfo();
|
||||
createProjectJarFile();
|
||||
private void createProjectPackage() throws StatAlgoImporterServiceException {
|
||||
FilesStorage filesStorage = new FilesStorage();
|
||||
|
||||
return project;
|
||||
List<String> idsToExclude = new ArrayList<String>();
|
||||
if (project.getProjectTarget() != null
|
||||
&& project.getProjectTarget().getFolder() != null
|
||||
&& project.getProjectTarget().getFolder().getId() != null
|
||||
&& !project.getProjectTarget().getFolder().getId().isEmpty()) {
|
||||
idsToExclude.add(project.getProjectTarget().getFolder().getId());
|
||||
}
|
||||
|
||||
File projectPackageFile = filesStorage.zipFolder(
|
||||
aslSession.getUsername(), project.getProjectFolder()
|
||||
.getFolder().getId(), idsToExclude);
|
||||
|
||||
InputStream inputStream;
|
||||
try {
|
||||
inputStream = Files.newInputStream(projectPackageFile.toPath(),
|
||||
StandardOpenOption.READ);
|
||||
} catch (IOException e) {
|
||||
logger.error("Error input stream generation for project package file: "
|
||||
+ e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
WorkspaceItem projectPackageItem;
|
||||
|
||||
projectPackageItem = filesStorage.createItemOnWorkspace(
|
||||
aslSession.getUsername(), inputStream, project.getInputData()
|
||||
.getProjectInfo().getAlgorithmNameToClassName()
|
||||
+ PROJECT_PACKAGE_EXTENTION,
|
||||
PROJECT_PACKAGE_DESCRIPTION, PROJECT_PACKAGE_MIMETYPE, project
|
||||
.getProjectTarget().getProjectDeploy().getFolder()
|
||||
.getId());
|
||||
|
||||
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());
|
||||
|
||||
}
|
||||
project.getProjectTarget().getProjectDeploy().setPackageProject(packageUrl);
|
||||
}
|
||||
|
||||
private void createTargetFolder() throws StatAlgoImporterServiceException {
|
||||
FilesStorage filesStorage = new FilesStorage();
|
||||
filesStorage.deleteFolder(aslSession.getUsername(), project
|
||||
.getProjectFolder().getFolder().getId(),
|
||||
STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME);
|
||||
|
||||
WorkspaceFolder targetFolder = filesStorage.createFolder(
|
||||
aslSession.getUsername(), project.getProjectFolder()
|
||||
.getFolder().getId(),
|
||||
STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME,
|
||||
STATISTICAL_ALGORITHM_TARGET_FOLDER_DESCRIPTION);
|
||||
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 projectTarget = new ProjectTarget(tFolder);
|
||||
project.setProjectTarget(projectTarget);
|
||||
|
||||
}
|
||||
|
||||
protected void createAlgorithm() throws StatAlgoImporterServiceException {
|
||||
private void createCompileFolder() throws StatAlgoImporterServiceException {
|
||||
FilesStorage filesStorage = new FilesStorage();
|
||||
filesStorage.deleteFolder(aslSession.getUsername(), project
|
||||
.getProjectTarget().getFolder().getId(),
|
||||
STATISTICAL_ALGORITHM_COMPILE_FOLDER_NAME);
|
||||
|
||||
WorkspaceFolder compileFolder = filesStorage.createFolder(
|
||||
aslSession.getUsername(), project.getProjectTarget()
|
||||
.getFolder().getId(),
|
||||
STATISTICAL_ALGORITHM_COMPILE_FOLDER_NAME,
|
||||
STATISTICAL_ALGORITHM_COMPILE_FOLDER_DESCRIPTION);
|
||||
logger.debug("CompileFolder:" + compileFolder);
|
||||
|
||||
ItemDescription cFolder;
|
||||
try {
|
||||
cFolder = new ItemDescription(compileFolder.getId(),
|
||||
compileFolder.getName(), compileFolder.getOwner()
|
||||
.getPortalLogin(), compileFolder.getPath(),
|
||||
compileFolder.getType().name());
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
|
||||
}
|
||||
|
||||
ProjectCompile projectCompile = new ProjectCompile(cFolder);
|
||||
project.getProjectTarget().setProjectCompile(projectCompile);
|
||||
}
|
||||
|
||||
private void createAlgorithm() throws StatAlgoImporterServiceException {
|
||||
AlgorithmGenerator algorithmGenerator = new AlgorithmGenerator(project);
|
||||
algorithmJava = algorithmGenerator.createAlgorithm();
|
||||
|
||||
|
@ -156,7 +524,7 @@ public class ProjectBuilder {
|
|||
.getProjectInfo().getAlgorithmNameToClassName()
|
||||
+ ALGORITHM_EXTENTION, ALGORITHM_DESCRIPTION,
|
||||
ALGORITHM_MIMETYPE, project.getProjectTarget()
|
||||
.getTargetFolder().getId());
|
||||
.getProjectCompile().getFolder().getId());
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
|
@ -178,84 +546,10 @@ public class ProjectBuilder {
|
|||
|
||||
}
|
||||
|
||||
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()
|
||||
.getAlgorithmNameToClassName()
|
||||
+ 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);
|
||||
project.getProjectTarget().getProjectCompile()
|
||||
.setCodeSource(codeSource);
|
||||
logger.debug("ProjectCompile: "
|
||||
+ project.getProjectTarget().getProjectCompile());
|
||||
|
||||
}
|
||||
|
||||
|
@ -272,8 +566,8 @@ public class ProjectBuilder {
|
|||
aslSession.getUsername(),
|
||||
Files.newInputStream(infoTXT, StandardOpenOption.READ),
|
||||
INFO_NAME + INFO_EXTENTION, INFO_DESCRIPTION,
|
||||
INFO_MIMETYPE, project.getProjectTarget().getTargetFolder()
|
||||
.getId());
|
||||
INFO_MIMETYPE, project.getProjectTarget()
|
||||
.getProjectCompile().getFolder().getId());
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
|
@ -295,9 +589,10 @@ public class ProjectBuilder {
|
|||
|
||||
}
|
||||
|
||||
projectTarget.setIntegrationInfo(integrationItemDescription);
|
||||
logger.debug("ProjectTarget: " + projectTarget);
|
||||
project.setProjectTarget(projectTarget);
|
||||
project.getProjectTarget().getProjectCompile()
|
||||
.setIntegrationInfo(integrationItemDescription);
|
||||
logger.debug("ProjectCompile: "
|
||||
+ project.getProjectTarget().getProjectCompile());
|
||||
|
||||
}
|
||||
|
||||
|
@ -406,7 +701,7 @@ public class ProjectBuilder {
|
|||
.getAlgorithmNameToClassName()
|
||||
+ JAR_EXTENTION, CODE_JAR_DESCRIPTION,
|
||||
CODE_JAR_MIMETYPE, project.getProjectTarget()
|
||||
.getTargetFolder().getId());
|
||||
.getProjectCompile().getFolder().getId());
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
|
@ -429,9 +724,10 @@ public class ProjectBuilder {
|
|||
|
||||
}
|
||||
|
||||
projectTarget.setCodeJar(codeJarItemDescription);
|
||||
logger.debug("ProjectTarget: " + projectTarget);
|
||||
project.setProjectTarget(projectTarget);
|
||||
project.getProjectTarget().getProjectCompile()
|
||||
.setCodeJar(codeJarItemDescription);
|
||||
logger.debug("ProjectCompile: "
|
||||
+ project.getProjectTarget().getProjectCompile());
|
||||
|
||||
}
|
||||
|
||||
|
@ -527,4 +823,5 @@ public class ProjectBuilder {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ public class AlgorithmNotification extends Thread {
|
|||
+ "\n\n has requested to publish the algorithm "
|
||||
+ project.getInputData().getProjectInfo()
|
||||
.getAlgorithmName() + " with the following jar "
|
||||
+ project.getProjectTarget().getCodeJar().getPublicLink();
|
||||
+ project.getProjectTarget().getProjectDeploy().getCodeJar().getPublicLink();
|
||||
|
||||
String messageId;
|
||||
|
||||
|
|
|
@ -42,8 +42,9 @@ public class FilesStorage {
|
|||
private static final String STATISTICAL_ALGORITHM_PROJECT_MIMETYPE = "text/xml";
|
||||
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION = "Statistical Algorithm Project File";
|
||||
private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_NAME = "stat_algo.project";
|
||||
private static final String STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME = "Target";
|
||||
|
||||
|
||||
|
||||
|
||||
public static final Logger logger = LoggerFactory
|
||||
.getLogger(FilesStorage.class);
|
||||
|
||||
|
@ -93,7 +94,7 @@ public class FilesStorage {
|
|||
* Folder id
|
||||
* @throws StatAlgoImporterServiceException
|
||||
*/
|
||||
public void copyItemOnFolder(String user, String itemId, String folderId)
|
||||
public WorkspaceItem copyItemOnFolder(String user, String itemId, String folderId)
|
||||
throws StatAlgoImporterServiceException {
|
||||
Workspace ws;
|
||||
try {
|
||||
|
@ -105,9 +106,9 @@ public class FilesStorage {
|
|||
"Destination is not a folder!");
|
||||
}
|
||||
|
||||
ws.copy(itemId, folderId);
|
||||
WorkspaceItem item=ws.copy(itemId, folderId);
|
||||
|
||||
return;
|
||||
return item;
|
||||
} catch (WrongDestinationException | ItemAlreadyExistException
|
||||
| InsufficientPrivilegesException
|
||||
| WorkspaceFolderNotFoundException | InternalErrorException
|
||||
|
@ -145,28 +146,29 @@ public class FilesStorage {
|
|||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param user
|
||||
* User
|
||||
* @param folderId
|
||||
* @param parentId
|
||||
* Foler id
|
||||
* @throws StatAlgoImporterServiceException
|
||||
*/
|
||||
public void deleteTargetFolder(String user, String folderId)
|
||||
public void deleteFolder(String user, String parentId,String folderName)
|
||||
throws StatAlgoImporterServiceException {
|
||||
Workspace ws;
|
||||
try {
|
||||
ws = HomeLibrary.getUserWorkspace(user);
|
||||
|
||||
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
||||
WorkspaceItem workSpaceItem = ws.getItem(parentId);
|
||||
if (!workSpaceItem.isFolder()) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"No valid project folder!");
|
||||
}
|
||||
|
||||
WorkspaceItem target = ws.find(
|
||||
STATISTICAL_ALGORITHM_TARGET_FOLDER_NAME, folderId);
|
||||
folderName, parentId);
|
||||
|
||||
if (target != null) {
|
||||
ws.removeItems(target.getId());
|
||||
|
@ -182,30 +184,34 @@ public class FilesStorage {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param user
|
||||
* User
|
||||
* @param folderId
|
||||
* @param parentId
|
||||
* Destination folder id
|
||||
* @return Folder
|
||||
* @throws StatAlgoImporterServiceException
|
||||
*/
|
||||
public WorkspaceFolder createTargetFolder(String user, String folderId)
|
||||
public WorkspaceFolder createFolder(String user, String parentId, String folderName, String folderDescription)
|
||||
throws StatAlgoImporterServiceException {
|
||||
Workspace ws;
|
||||
try {
|
||||
ws = HomeLibrary.getUserWorkspace(user);
|
||||
|
||||
WorkspaceItem workSpaceItem = ws.getItem(folderId);
|
||||
WorkspaceItem workSpaceItem = ws.getItem(parentId);
|
||||
if (!workSpaceItem.isFolder()) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"No valid project folder!");
|
||||
}
|
||||
|
||||
WorkspaceFolder projectTargetFolder = ws.createFolder("Target",
|
||||
"Project Target", folderId);
|
||||
WorkspaceFolder projectTargetFolder = ws.createFolder(folderName,
|
||||
folderDescription, parentId);
|
||||
|
||||
return projectTargetFolder;
|
||||
} catch (WorkspaceFolderNotFoundException | InternalErrorException
|
||||
|
@ -535,7 +541,7 @@ public class FilesStorage {
|
|||
* String to save
|
||||
* @throws StatAlgoImporterServiceException
|
||||
*/
|
||||
public void saveItem(String user, String itemId, String data)
|
||||
public void saveStringInItem(String user, String itemId, String data)
|
||||
throws StatAlgoImporterServiceException {
|
||||
Workspace ws;
|
||||
try {
|
||||
|
@ -548,7 +554,7 @@ public class FilesStorage {
|
|||
} else {
|
||||
if (workSpaceItem.isFolder()) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Item is not valid folder!");
|
||||
"Item is a folder!");
|
||||
} else {
|
||||
|
||||
}
|
||||
|
@ -568,6 +574,40 @@ public class FilesStorage {
|
|||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void saveInputStreamInItem(String user, String itemId, InputStream is)
|
||||
throws StatAlgoImporterServiceException {
|
||||
Workspace ws;
|
||||
try {
|
||||
ws = HomeLibrary.getUserWorkspace(user);
|
||||
|
||||
WorkspaceItem workSpaceItem = ws.getItem(itemId);
|
||||
if (workSpaceItem == null) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"No item retrieved on workspace!");
|
||||
} else {
|
||||
if (workSpaceItem.isFolder()) {
|
||||
throw new StatAlgoImporterServiceException(
|
||||
"Item is a folder!");
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
// convert String into InputStream
|
||||
ws.updateItem(itemId, is);
|
||||
|
||||
return;
|
||||
|
||||
} catch (WorkspaceFolderNotFoundException | InternalErrorException
|
||||
| HomeNotFoundException | ItemNotFoundException
|
||||
| InsufficientPrivilegesException | ItemAlreadyExistException
|
||||
| WrongDestinationException e) {
|
||||
e.printStackTrace();
|
||||
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public File zipFolder(String user, String folderId)
|
||||
throws StatAlgoImporterServiceException {
|
||||
|
@ -650,4 +690,6 @@ public class FilesStorage {
|
|||
out.close();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public class MainCodeSave {
|
|||
public void save(ASLSession aslSession, ItemDescription file,
|
||||
String code, Project project) throws StatAlgoImporterServiceException{
|
||||
FilesStorage filesStorage = new FilesStorage();
|
||||
filesStorage.saveItem(aslSession.getUsername(), file.getId(), code);
|
||||
filesStorage.saveStringInItem(aslSession.getUsername(), file.getId(), code);
|
||||
}
|
||||
|
||||
|
||||
|
@ -94,7 +94,7 @@ public class MainCodeSave {
|
|||
aslSession.getUsername(),
|
||||
Files.newInputStream(tempFile, StandardOpenOption.READ),
|
||||
file.getName(), ALGORITHM_DESCRIPTION, ALGORITHM_MIMETYPE,
|
||||
project.getProjectFolder().getItemDescription().getId());
|
||||
project.getProjectFolder().getFolder().getId());
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -42,7 +42,7 @@ public class ProjectArchiver {
|
|||
FilesStorage filesStorage = new FilesStorage();
|
||||
filesStorage.saveStatisticalAlgorithmProject(aslSession.getUsername(),
|
||||
byteArrayInputStream, project.getProjectFolder()
|
||||
.getItemDescription().getId());
|
||||
.getFolder().getId());
|
||||
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,7 @@ public class ProjectArchiver {
|
|||
if (project != null
|
||||
&& project.getProjectFolder() != null
|
||||
&& newProjectFolder.compareInfo(project.getProjectFolder()
|
||||
.getItemDescription())) {
|
||||
.getFolder())) {
|
||||
|
||||
} else {
|
||||
project.setProjectFolder(new ProjectFolder(newProjectFolder));
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Giancarlo Panichi email: <a
|
||||
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||
*
|
||||
*/
|
||||
public class ProjectCompile implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4603210015575691417L;
|
||||
private ItemDescription folder;
|
||||
private ItemDescription codeSource;
|
||||
private ItemDescription integrationInfo;
|
||||
private ItemDescription codeJar;
|
||||
|
||||
public ProjectCompile() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ProjectCompile(ItemDescription folder) {
|
||||
super();
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
public ItemDescription getFolder() {
|
||||
return folder;
|
||||
}
|
||||
|
||||
public void setFolder(ItemDescription folder) {
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
public ItemDescription getCodeSource() {
|
||||
return codeSource;
|
||||
}
|
||||
|
||||
public void setCodeSource(ItemDescription codeSource) {
|
||||
this.codeSource = codeSource;
|
||||
}
|
||||
|
||||
public ItemDescription getCodeJar() {
|
||||
return codeJar;
|
||||
}
|
||||
|
||||
public void setCodeJar(ItemDescription codeJar) {
|
||||
this.codeJar = codeJar;
|
||||
}
|
||||
|
||||
public ItemDescription getIntegrationInfo() {
|
||||
return integrationInfo;
|
||||
}
|
||||
|
||||
public void setIntegrationInfo(ItemDescription integrationInfo) {
|
||||
this.integrationInfo = integrationInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProjectCompile [folder=" + folder + ", codeSource="
|
||||
+ codeSource + ", integrationInfo=" + integrationInfo
|
||||
+ ", codeJar=" + codeJar + "]";
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Giancarlo Panichi email: <a
|
||||
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||
*
|
||||
*/
|
||||
public class ProjectDeploy implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -3403842661465451760L;
|
||||
private ItemDescription folder;
|
||||
private ItemDescription packageProject;
|
||||
private ItemDescription codeJar;
|
||||
|
||||
public ProjectDeploy() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ProjectDeploy(ItemDescription folder) {
|
||||
super();
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
public ItemDescription getFolder() {
|
||||
return folder;
|
||||
}
|
||||
|
||||
public void setFolder(ItemDescription folder) {
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
public ItemDescription getPackageProject() {
|
||||
return packageProject;
|
||||
}
|
||||
|
||||
public void setPackageProject(ItemDescription packageProject) {
|
||||
this.packageProject = packageProject;
|
||||
}
|
||||
|
||||
public ItemDescription getCodeJar() {
|
||||
return codeJar;
|
||||
}
|
||||
|
||||
public void setCodeJar(ItemDescription codeJar) {
|
||||
this.codeJar = codeJar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProjectDeploy [folder=" + folder + ", packageProject="
|
||||
+ packageProject + ", codeJar=" + codeJar + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -13,31 +13,28 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.It
|
|||
public class ProjectFolder implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 3698120963507381801L;
|
||||
private ItemDescription itemDescription;
|
||||
|
||||
public ProjectFolder(){
|
||||
private ItemDescription folder;
|
||||
|
||||
public ProjectFolder() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ProjectFolder(ItemDescription itemDescription) {
|
||||
public ProjectFolder(ItemDescription folder) {
|
||||
super();
|
||||
this.itemDescription = itemDescription;
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
public ItemDescription getItemDescription() {
|
||||
return itemDescription;
|
||||
public ItemDescription getFolder() {
|
||||
return folder;
|
||||
}
|
||||
|
||||
public void setItemDescription(ItemDescription itemDescription) {
|
||||
this.itemDescription = itemDescription;
|
||||
public void setFolder(ItemDescription folder) {
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProjectFolder [itemDescription=" + itemDescription + "]";
|
||||
return "ProjectFolder [folder=" + folder + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -13,72 +13,49 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.It
|
|||
public class ProjectTarget implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 480665662744105383L;
|
||||
private ItemDescription targetFolder;
|
||||
private ItemDescription packageUrl;
|
||||
private ItemDescription codeSource;
|
||||
private ItemDescription integrationInfo;
|
||||
private ItemDescription codeJar;
|
||||
private ItemDescription folder;
|
||||
private ProjectCompile projectCompile;
|
||||
private ProjectDeploy projectDeploy;
|
||||
|
||||
public ProjectTarget() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ProjectTarget(ItemDescription targetFolder) {
|
||||
public ProjectTarget(ItemDescription folder) {
|
||||
super();
|
||||
this.targetFolder = targetFolder;
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
public ItemDescription getTargetFolder() {
|
||||
return targetFolder;
|
||||
public ItemDescription getFolder() {
|
||||
return folder;
|
||||
}
|
||||
|
||||
public void setTargetFolder(ItemDescription targetFolder) {
|
||||
this.targetFolder = targetFolder;
|
||||
public void setFolder(ItemDescription folder) {
|
||||
this.folder = folder;
|
||||
}
|
||||
|
||||
public ItemDescription getPackageUrl() {
|
||||
return packageUrl;
|
||||
public ProjectCompile getProjectCompile() {
|
||||
return projectCompile;
|
||||
}
|
||||
|
||||
public void setPackageUrl(ItemDescription packageUrl) {
|
||||
this.packageUrl = packageUrl;
|
||||
public void setProjectCompile(ProjectCompile projectCompile) {
|
||||
this.projectCompile = projectCompile;
|
||||
}
|
||||
|
||||
public ItemDescription getCodeSource() {
|
||||
return codeSource;
|
||||
public ProjectDeploy getProjectDeploy() {
|
||||
return projectDeploy;
|
||||
}
|
||||
|
||||
public void setCodeSource(ItemDescription codeSource) {
|
||||
this.codeSource = codeSource;
|
||||
}
|
||||
|
||||
public ItemDescription getCodeJar() {
|
||||
return codeJar;
|
||||
}
|
||||
|
||||
public void setCodeJar(ItemDescription codeJar) {
|
||||
this.codeJar = codeJar;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public ItemDescription getIntegrationInfo() {
|
||||
return integrationInfo;
|
||||
}
|
||||
|
||||
public void setIntegrationInfo(ItemDescription integrationInfo) {
|
||||
this.integrationInfo = integrationInfo;
|
||||
public void setProjectDeploy(ProjectDeploy projectDeploy) {
|
||||
this.projectDeploy = projectDeploy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProjectTarget [targetFolder=" + targetFolder + ", packageUrl="
|
||||
+ packageUrl + ", codeSource=" + codeSource
|
||||
+ ", integrationInfo=" + integrationInfo + ", codeJar="
|
||||
+ codeJar + "]";
|
||||
return "ProjectTarget [folder=" + folder + ", projectCompile="
|
||||
+ projectCompile + ", projectDeploy=" + projectDeploy + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 897 B |
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
Loading…
Reference in New Issue