From 25f7b584158e5debcb41478cc309e2d7650210bb Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 7 Jul 2017 18:43:12 +0000 Subject: [PATCH] ref 8819: Extend The Algorithms Importer to Manage Many Processes as Black Boxes https://support.d4science.org/issues/8819 Updated the support for Processes as Black Boxes git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@150968 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/StatAlgoImporterController.java | 2 +- .../client/maindata/CodeEditPanel.java | 5 +-- .../client/project/ProjectManager.java | 10 +++-- .../server/StatAlgoImporterServiceImpl.java | 16 ++++---- .../GeneralPurposeScriptProducer.java | 5 +-- .../server/blackbox/MainGenerator.java | 2 +- .../server/generator/InfoGenerator.java | 14 +++---- .../server/is/BuildSAIDescriptor.java | 5 ++- .../{MainCodeSave.java => CodeSave.java} | 38 +++---------------- 9 files changed, 37 insertions(+), 60 deletions(-) rename src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/{MainCodeSave.java => CodeSave.java} (78%) diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java index 63ab6a2..b0bfe65 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java @@ -462,7 +462,7 @@ public class StatAlgoImporterController { private void doSetNewMainCodeEvent(NewCodeEvent event) { monitor = new StatAlgoImporterMonitor(); - pm.setNewMainCode(event, monitor); + pm.setNewCode(event, monitor); } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java index 3470769..4e20990 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/maindata/CodeEditPanel.java @@ -326,10 +326,7 @@ public class CodeEditPanel extends ContentPanel { } } else { - editor.setShowPrintMargin(false); - editor.setMode(AceEditorMode.R); - editor.setTheme(AceEditorTheme.ECLIPSE); - editor.setText(""); + } if (project != null) { diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java index 8abd219..6e71e29 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java @@ -522,8 +522,8 @@ public class ProjectManager { } - public void setNewMainCode(NewCodeEvent newMainCodeEvent, final StatAlgoImporterMonitor monitor) { - StatAlgoImporterServiceAsync.INSTANCE.setNewCode(newMainCodeEvent.getFile(), newMainCodeEvent.getCode(), + public void setNewCode(NewCodeEvent newCodeEvent, final StatAlgoImporterMonitor monitor) { + StatAlgoImporterServiceAsync.INSTANCE.setNewCode(newCodeEvent.getFile(), newCodeEvent.getCode(), new AsyncCallback() { @Override @@ -532,7 +532,7 @@ public class ProjectManager { if (caught instanceof StatAlgoImporterSessionExpiredException) { eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER)); } else { - Log.error("Error on save new main code: " + caught.getLocalizedMessage()); + Log.error("Error on save new code: " + caught.getLocalizedMessage()); UtilsGXT3.alert("Error", caught.getLocalizedMessage()); } caught.printStackTrace(); @@ -548,6 +548,10 @@ public class ProjectManager { }); } + + + + public void setBinaryCode(final InputData inputData,final ItemDescription itemDescription) { if (project != null) { diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java index 2f66d98..f3ea471 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java @@ -17,7 +17,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.server.is.BuildSAID import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.AlgorithmNotification; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.Recipient; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage; -import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.MainCodeSave; +import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.CodeSave; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.ProjectArchiver; import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials; import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData; @@ -543,7 +543,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements if (mainCode == null || mainCode.getItemDescription() == null) { throw new StatAlgoImporterServiceException("No main code set!"); } else { - MainCodeSave mainCodeSave = new MainCodeSave(); + CodeSave mainCodeSave = new CodeSave(); mainCodeSave.save(serviceCredentials, mainCode.getItemDescription(), code); } } else { @@ -553,7 +553,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements if (projectSupportBashEdit == null || projectSupportBashEdit.getBinaryItem() == null) { throw new StatAlgoImporterServiceException("No binary code set!"); } else { - MainCodeSave mainCodeSave = new MainCodeSave(); + CodeSave mainCodeSave = new CodeSave(); mainCodeSave.save(serviceCredentials, projectSupportBashEdit.getBinaryItem(), code); } @@ -588,15 +588,15 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements try { HttpServletRequest httpRequest = this.getThreadLocalRequest(); ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest); - logger.debug("saveCode(): itemDescription" + fileDescription + ", code:" + code); + logger.debug("saveNewCode(): itemDescription" + fileDescription + ", code:" + code); Project project = SessionUtil.getProjectSession(httpRequest, serviceCredentials); if (project != null && project.getProjectFolder() != null && project.getProjectFolder().getFolder() != null) { if (project.getProjectConfig() != null && project.getProjectConfig().getProjectSupport() != null) { if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) { - MainCodeSave mainCodeSave = new MainCodeSave(); - ItemDescription mainCodeItemDescription = mainCodeSave.saveNew(serviceCredentials, + CodeSave codeSave = new CodeSave(); + ItemDescription mainCodeItemDescription = codeSave.saveNew(serviceCredentials, fileDescription, code, project.getProjectFolder().getFolder().getId()); MainCode mainCode = new MainCode(mainCodeItemDescription); project.setMainCode(mainCode); @@ -609,8 +609,8 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements ProjectSupportBashEdit projectSupportBashEdit = (ProjectSupportBashEdit) project .getProjectConfig().getProjectSupport(); - MainCodeSave mainCodeSave = new MainCodeSave(); - ItemDescription binaryCodeItemDescription = mainCodeSave.saveNew(serviceCredentials, + CodeSave codeSave = new CodeSave(); + ItemDescription binaryCodeItemDescription = codeSave.saveNew(serviceCredentials, fileDescription, code, project.getProjectFolder().getFolder().getId()); projectSupportBashEdit.setBinaryItem(binaryCodeItemDescription); project.setProjectTarget(null); diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/GeneralPurposeScriptProducer.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/GeneralPurposeScriptProducer.java index 20f8667..5e9dfa7 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/GeneralPurposeScriptProducer.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/GeneralPurposeScriptProducer.java @@ -21,8 +21,7 @@ public class GeneralPurposeScriptProducer { private static final Logger logger = LoggerFactory.getLogger(GeneralPurposeScriptProducer.class); public static final String REMOTE_TEMPLATE_FILE = "http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/RConfiguration/RD4SFunctions/SAITemplateForExternalInvocation.R"; - public static final String PRE_INSTALLED = "Pre-Installed"; - + // name,type,default public class Triple { @@ -61,7 +60,7 @@ public class GeneralPurposeScriptProducer { String URLtoSoftware) throws Exception { String mainSoftwareName = mainSoftware; - if (softwareType.equals(PRE_INSTALLED)) { + if (URLtoSoftware!=null) { mainSoftwareName = URLReader(URLtoSoftware); } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/MainGenerator.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/MainGenerator.java index 9994209..792bfa5 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/MainGenerator.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/blackbox/MainGenerator.java @@ -76,7 +76,7 @@ public class MainGenerator { Path producedScript = null; - if (project.getProjectConfig().getLanguage().compareTo(GeneralPurposeScriptProducer.PRE_INSTALLED) == 0) { + if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBashEdit){ producedScript = s.generateScript(input, output, binarySoftware.getName(), project.getProjectConfig().getLanguage(), binarySoftware.getPublicLink()); } else { diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/InfoGenerator.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/InfoGenerator.java index 1d5983b..1864ada 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/InfoGenerator.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/generator/InfoGenerator.java @@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory; */ public class InfoGenerator { private static final String INFO_NAME = "Info"; - private static final String INFO_EXTENTION = ".txt"; + private static final String INFO_TXT_EXTENTION = ".txt"; public static final Logger logger = LoggerFactory.getLogger(InfoGenerator.class); private Project project; @@ -43,9 +43,9 @@ public class InfoGenerator { public Path createInfo() throws StatAlgoImporterServiceException { try { - Path tempFile = Files.createTempFile(INFO_NAME, INFO_EXTENTION); + Path tempFile = Files.createTempFile(INFO_NAME, INFO_TXT_EXTENTION); - List lines = createInfoData(); + List lines = createInfoTxtData(); Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE); logger.debug(tempFile.toString()); return tempFile; @@ -58,7 +58,7 @@ public class InfoGenerator { } - private List createInfoData() { + private List createInfoTxtData() { ArrayList infos = new ArrayList(); if (serviceCredentials != null) { if (serviceCredentials.getUserName() != null && !serviceCredentials.getUserName().isEmpty()) { @@ -84,8 +84,8 @@ public class InfoGenerator { } infos.add(""); - if (project.getProjectConfig()!=null) { - if(project.getProjectConfig().getLanguage()!=null){ + if (project.getProjectConfig() != null) { + if (project.getProjectConfig().getLanguage() != null) { infos.add("Language: " + project.getProjectConfig().getLanguage()); } else { infos.add("Language: "); @@ -94,7 +94,6 @@ public class InfoGenerator { infos.add("Language: "); } - if (project.getInputData() != null) { if (project.getInputData().getProjectInfo() != null) { if (project.getInputData().getProjectInfo().getAlgorithmName() != null) { @@ -156,4 +155,5 @@ public class InfoGenerator { return infos; } + } diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/is/BuildSAIDescriptor.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/is/BuildSAIDescriptor.java index b8e160a..2fc748f 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/is/BuildSAIDescriptor.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/is/BuildSAIDescriptor.java @@ -25,6 +25,7 @@ public class BuildSAIDescriptor { SAIDescriptor saiDescriptor = null; if (Constants.DEBUG_MODE) { + logger.info("Debug Mode"); ArrayList availableProjectConfigurations = new ArrayList<>(); ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT); availableProjectConfigurations.add(r); @@ -46,6 +47,7 @@ public class BuildSAIDescriptor { availableProjectConfigurations.add(preInstalled); saiDescriptor = new SAIDescriptor(availableProjectConfigurations); } else { + logger.info("Production Mode"); SAIDescriptorJAXB saiDescriptorJAXB = null; try { saiDescriptorJAXB = InformationSystemUtils.retrieveSAIDescriptor(scope); @@ -62,7 +64,7 @@ public class BuildSAIDescriptor { for (AvailableProjectConfigJAXB availableProjectConfigJAXB : saiDescriptorJAXB .getAvailableprojectconfiguration()) { - type = ProjectSupportType.valueOf(availableProjectConfigJAXB.getSupport()); + type = ProjectSupportType.valueFromLabel(availableProjectConfigJAXB.getSupport()); if (type != null) { availableProjectConfigurations .add(new ProjectSetup(availableProjectConfigJAXB.getLanguage(), type)); @@ -70,6 +72,7 @@ public class BuildSAIDescriptor { } } } else { + logger.info("Production Mode Default"); logger.info("SAIDescriptorJAXB use default configuration for scope: " + scope); ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT); diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/MainCodeSave.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/CodeSave.java similarity index 78% rename from src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/MainCodeSave.java rename to src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/CodeSave.java index fb3dc7a..c271f34 100644 --- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/MainCodeSave.java +++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/CodeSave.java @@ -19,53 +19,27 @@ import org.slf4j.LoggerFactory; * * */ -public class MainCodeSave { +public class CodeSave { private static final String ALGORITHM_DESCRIPTION = "Algorithm"; private static final String ALGORITHM_MIMETYPE = "text/plain"; - public static final Logger logger = LoggerFactory.getLogger(MainCodeSave.class); + public static final Logger logger = LoggerFactory.getLogger(CodeSave.class); - public MainCodeSave() { + public CodeSave() { } - /** - * - * @param serviceCredentials - * Service credentials - * @param file - * File - * @param code - * Code - * @param project - * Prject - * @throws StatAlgoImporterServiceException - * Exception - */ public void save(ServiceCredentials serviceCredentials, ItemDescription file, String code) throws StatAlgoImporterServiceException { FilesStorage filesStorage = new FilesStorage(); filesStorage.saveStringInItem(serviceCredentials.getUserName(), file.getId(), code); } - /** - * - * @param serviceCredentials - * Service credentials - * @param file - * Description of destination file - * @param code - * Code to insert in the file - * @param project - * Project - * @return ItemDescription Item description - * @throws StatAlgoImporterServiceException - * exception - */ + public ItemDescription saveNew(ServiceCredentials serviceCredentials, ItemDescription file, String code, String folderId) throws StatAlgoImporterServiceException { Path tempFile = createTempFile(file, code); - ItemDescription mainCode = saveInWorkspace(tempFile, serviceCredentials, file, folderId); - return mainCode; + ItemDescription codeItem = saveInWorkspace(tempFile, serviceCredentials, file, folderId); + return codeItem; } private Path createTempFile(ItemDescription file, String code) throws StatAlgoImporterServiceException {