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
This commit is contained in:
parent
884f2f4609
commit
25f7b58415
|
@ -462,7 +462,7 @@ public class StatAlgoImporterController {
|
||||||
|
|
||||||
private void doSetNewMainCodeEvent(NewCodeEvent event) {
|
private void doSetNewMainCodeEvent(NewCodeEvent event) {
|
||||||
monitor = new StatAlgoImporterMonitor();
|
monitor = new StatAlgoImporterMonitor();
|
||||||
pm.setNewMainCode(event, monitor);
|
pm.setNewCode(event, monitor);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -326,10 +326,7 @@ public class CodeEditPanel extends ContentPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
editor.setShowPrintMargin(false);
|
|
||||||
editor.setMode(AceEditorMode.R);
|
|
||||||
editor.setTheme(AceEditorTheme.ECLIPSE);
|
|
||||||
editor.setText("");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
|
|
|
@ -522,8 +522,8 @@ public class ProjectManager {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNewMainCode(NewCodeEvent newMainCodeEvent, final StatAlgoImporterMonitor monitor) {
|
public void setNewCode(NewCodeEvent newCodeEvent, final StatAlgoImporterMonitor monitor) {
|
||||||
StatAlgoImporterServiceAsync.INSTANCE.setNewCode(newMainCodeEvent.getFile(), newMainCodeEvent.getCode(),
|
StatAlgoImporterServiceAsync.INSTANCE.setNewCode(newCodeEvent.getFile(), newCodeEvent.getCode(),
|
||||||
new AsyncCallback<Project>() {
|
new AsyncCallback<Project>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -532,7 +532,7 @@ public class ProjectManager {
|
||||||
if (caught instanceof StatAlgoImporterSessionExpiredException) {
|
if (caught instanceof StatAlgoImporterSessionExpiredException) {
|
||||||
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
|
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
|
||||||
} else {
|
} 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());
|
UtilsGXT3.alert("Error", caught.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
caught.printStackTrace();
|
caught.printStackTrace();
|
||||||
|
@ -548,6 +548,10 @@ public class ProjectManager {
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void setBinaryCode(final InputData inputData,final ItemDescription itemDescription) {
|
public void setBinaryCode(final InputData inputData,final ItemDescription itemDescription) {
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
|
|
|
@ -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.AlgorithmNotification;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.Recipient;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.social.Recipient;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
|
||||||
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.storage.ProjectArchiver;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.util.ServiceCredentials;
|
||||||
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
|
||||||
|
@ -543,7 +543,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
||||||
if (mainCode == null || mainCode.getItemDescription() == null) {
|
if (mainCode == null || mainCode.getItemDescription() == null) {
|
||||||
throw new StatAlgoImporterServiceException("No main code set!");
|
throw new StatAlgoImporterServiceException("No main code set!");
|
||||||
} else {
|
} else {
|
||||||
MainCodeSave mainCodeSave = new MainCodeSave();
|
CodeSave mainCodeSave = new CodeSave();
|
||||||
mainCodeSave.save(serviceCredentials, mainCode.getItemDescription(), code);
|
mainCodeSave.save(serviceCredentials, mainCode.getItemDescription(), code);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -553,7 +553,7 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
||||||
if (projectSupportBashEdit == null || projectSupportBashEdit.getBinaryItem() == null) {
|
if (projectSupportBashEdit == null || projectSupportBashEdit.getBinaryItem() == null) {
|
||||||
throw new StatAlgoImporterServiceException("No binary code set!");
|
throw new StatAlgoImporterServiceException("No binary code set!");
|
||||||
} else {
|
} else {
|
||||||
MainCodeSave mainCodeSave = new MainCodeSave();
|
CodeSave mainCodeSave = new CodeSave();
|
||||||
mainCodeSave.save(serviceCredentials, projectSupportBashEdit.getBinaryItem(), code);
|
mainCodeSave.save(serviceCredentials, projectSupportBashEdit.getBinaryItem(), code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -588,15 +588,15 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
||||||
try {
|
try {
|
||||||
HttpServletRequest httpRequest = this.getThreadLocalRequest();
|
HttpServletRequest httpRequest = this.getThreadLocalRequest();
|
||||||
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest);
|
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);
|
Project project = SessionUtil.getProjectSession(httpRequest, serviceCredentials);
|
||||||
if (project != null && project.getProjectFolder() != null
|
if (project != null && project.getProjectFolder() != null
|
||||||
&& project.getProjectFolder().getFolder() != null) {
|
&& project.getProjectFolder().getFolder() != null) {
|
||||||
if (project.getProjectConfig() != null && project.getProjectConfig().getProjectSupport() != null) {
|
if (project.getProjectConfig() != null && project.getProjectConfig().getProjectSupport() != null) {
|
||||||
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) {
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) {
|
||||||
|
|
||||||
MainCodeSave mainCodeSave = new MainCodeSave();
|
CodeSave codeSave = new CodeSave();
|
||||||
ItemDescription mainCodeItemDescription = mainCodeSave.saveNew(serviceCredentials,
|
ItemDescription mainCodeItemDescription = codeSave.saveNew(serviceCredentials,
|
||||||
fileDescription, code, project.getProjectFolder().getFolder().getId());
|
fileDescription, code, project.getProjectFolder().getFolder().getId());
|
||||||
MainCode mainCode = new MainCode(mainCodeItemDescription);
|
MainCode mainCode = new MainCode(mainCodeItemDescription);
|
||||||
project.setMainCode(mainCode);
|
project.setMainCode(mainCode);
|
||||||
|
@ -609,8 +609,8 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
|
||||||
ProjectSupportBashEdit projectSupportBashEdit = (ProjectSupportBashEdit) project
|
ProjectSupportBashEdit projectSupportBashEdit = (ProjectSupportBashEdit) project
|
||||||
.getProjectConfig().getProjectSupport();
|
.getProjectConfig().getProjectSupport();
|
||||||
|
|
||||||
MainCodeSave mainCodeSave = new MainCodeSave();
|
CodeSave codeSave = new CodeSave();
|
||||||
ItemDescription binaryCodeItemDescription = mainCodeSave.saveNew(serviceCredentials,
|
ItemDescription binaryCodeItemDescription = codeSave.saveNew(serviceCredentials,
|
||||||
fileDescription, code, project.getProjectFolder().getFolder().getId());
|
fileDescription, code, project.getProjectFolder().getFolder().getId());
|
||||||
projectSupportBashEdit.setBinaryItem(binaryCodeItemDescription);
|
projectSupportBashEdit.setBinaryItem(binaryCodeItemDescription);
|
||||||
project.setProjectTarget(null);
|
project.setProjectTarget(null);
|
||||||
|
|
|
@ -21,8 +21,7 @@ public class GeneralPurposeScriptProducer {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(GeneralPurposeScriptProducer.class);
|
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 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
|
// name,type,default
|
||||||
public class Triple {
|
public class Triple {
|
||||||
|
@ -61,7 +60,7 @@ public class GeneralPurposeScriptProducer {
|
||||||
String URLtoSoftware) throws Exception {
|
String URLtoSoftware) throws Exception {
|
||||||
|
|
||||||
String mainSoftwareName = mainSoftware;
|
String mainSoftwareName = mainSoftware;
|
||||||
if (softwareType.equals(PRE_INSTALLED)) {
|
if (URLtoSoftware!=null) {
|
||||||
mainSoftwareName = URLReader(URLtoSoftware);
|
mainSoftwareName = URLReader(URLtoSoftware);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ public class MainGenerator {
|
||||||
|
|
||||||
Path producedScript = null;
|
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(),
|
producedScript = s.generateScript(input, output, binarySoftware.getName(),
|
||||||
project.getProjectConfig().getLanguage(), binarySoftware.getPublicLink());
|
project.getProjectConfig().getLanguage(), binarySoftware.getPublicLink());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory;
|
||||||
*/
|
*/
|
||||||
public class InfoGenerator {
|
public class InfoGenerator {
|
||||||
private static final String INFO_NAME = "Info";
|
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);
|
public static final Logger logger = LoggerFactory.getLogger(InfoGenerator.class);
|
||||||
|
|
||||||
private Project project;
|
private Project project;
|
||||||
|
@ -43,9 +43,9 @@ public class InfoGenerator {
|
||||||
public Path createInfo() throws StatAlgoImporterServiceException {
|
public Path createInfo() throws StatAlgoImporterServiceException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Path tempFile = Files.createTempFile(INFO_NAME, INFO_EXTENTION);
|
Path tempFile = Files.createTempFile(INFO_NAME, INFO_TXT_EXTENTION);
|
||||||
|
|
||||||
List<String> lines = createInfoData();
|
List<String> lines = createInfoTxtData();
|
||||||
Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE);
|
Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE);
|
||||||
logger.debug(tempFile.toString());
|
logger.debug(tempFile.toString());
|
||||||
return tempFile;
|
return tempFile;
|
||||||
|
@ -58,7 +58,7 @@ public class InfoGenerator {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> createInfoData() {
|
private List<String> createInfoTxtData() {
|
||||||
ArrayList<String> infos = new ArrayList<String>();
|
ArrayList<String> infos = new ArrayList<String>();
|
||||||
if (serviceCredentials != null) {
|
if (serviceCredentials != null) {
|
||||||
if (serviceCredentials.getUserName() != null && !serviceCredentials.getUserName().isEmpty()) {
|
if (serviceCredentials.getUserName() != null && !serviceCredentials.getUserName().isEmpty()) {
|
||||||
|
@ -84,8 +84,8 @@ public class InfoGenerator {
|
||||||
}
|
}
|
||||||
infos.add("");
|
infos.add("");
|
||||||
|
|
||||||
if (project.getProjectConfig()!=null) {
|
if (project.getProjectConfig() != null) {
|
||||||
if(project.getProjectConfig().getLanguage()!=null){
|
if (project.getProjectConfig().getLanguage() != null) {
|
||||||
infos.add("Language: " + project.getProjectConfig().getLanguage());
|
infos.add("Language: " + project.getProjectConfig().getLanguage());
|
||||||
} else {
|
} else {
|
||||||
infos.add("Language: ");
|
infos.add("Language: ");
|
||||||
|
@ -94,7 +94,6 @@ public class InfoGenerator {
|
||||||
infos.add("Language: ");
|
infos.add("Language: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (project.getInputData() != null) {
|
if (project.getInputData() != null) {
|
||||||
if (project.getInputData().getProjectInfo() != null) {
|
if (project.getInputData().getProjectInfo() != null) {
|
||||||
if (project.getInputData().getProjectInfo().getAlgorithmName() != null) {
|
if (project.getInputData().getProjectInfo().getAlgorithmName() != null) {
|
||||||
|
@ -156,4 +155,5 @@ public class InfoGenerator {
|
||||||
|
|
||||||
return infos;
|
return infos;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ public class BuildSAIDescriptor {
|
||||||
SAIDescriptor saiDescriptor = null;
|
SAIDescriptor saiDescriptor = null;
|
||||||
|
|
||||||
if (Constants.DEBUG_MODE) {
|
if (Constants.DEBUG_MODE) {
|
||||||
|
logger.info("Debug Mode");
|
||||||
ArrayList<ProjectSetup> availableProjectConfigurations = new ArrayList<>();
|
ArrayList<ProjectSetup> availableProjectConfigurations = new ArrayList<>();
|
||||||
ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT);
|
ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT);
|
||||||
availableProjectConfigurations.add(r);
|
availableProjectConfigurations.add(r);
|
||||||
|
@ -46,6 +47,7 @@ public class BuildSAIDescriptor {
|
||||||
availableProjectConfigurations.add(preInstalled);
|
availableProjectConfigurations.add(preInstalled);
|
||||||
saiDescriptor = new SAIDescriptor(availableProjectConfigurations);
|
saiDescriptor = new SAIDescriptor(availableProjectConfigurations);
|
||||||
} else {
|
} else {
|
||||||
|
logger.info("Production Mode");
|
||||||
SAIDescriptorJAXB saiDescriptorJAXB = null;
|
SAIDescriptorJAXB saiDescriptorJAXB = null;
|
||||||
try {
|
try {
|
||||||
saiDescriptorJAXB = InformationSystemUtils.retrieveSAIDescriptor(scope);
|
saiDescriptorJAXB = InformationSystemUtils.retrieveSAIDescriptor(scope);
|
||||||
|
@ -62,7 +64,7 @@ public class BuildSAIDescriptor {
|
||||||
|
|
||||||
for (AvailableProjectConfigJAXB availableProjectConfigJAXB : saiDescriptorJAXB
|
for (AvailableProjectConfigJAXB availableProjectConfigJAXB : saiDescriptorJAXB
|
||||||
.getAvailableprojectconfiguration()) {
|
.getAvailableprojectconfiguration()) {
|
||||||
type = ProjectSupportType.valueOf(availableProjectConfigJAXB.getSupport());
|
type = ProjectSupportType.valueFromLabel(availableProjectConfigJAXB.getSupport());
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
availableProjectConfigurations
|
availableProjectConfigurations
|
||||||
.add(new ProjectSetup(availableProjectConfigJAXB.getLanguage(), type));
|
.add(new ProjectSetup(availableProjectConfigJAXB.getLanguage(), type));
|
||||||
|
@ -70,6 +72,7 @@ public class BuildSAIDescriptor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
logger.info("Production Mode Default");
|
||||||
logger.info("SAIDescriptorJAXB use default configuration for scope: " + scope);
|
logger.info("SAIDescriptorJAXB use default configuration for scope: " + scope);
|
||||||
|
|
||||||
ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT);
|
ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT);
|
||||||
|
|
|
@ -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_DESCRIPTION = "Algorithm";
|
||||||
private static final String ALGORITHM_MIMETYPE = "text/plain";
|
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)
|
public void save(ServiceCredentials serviceCredentials, ItemDescription file, String code)
|
||||||
throws StatAlgoImporterServiceException {
|
throws StatAlgoImporterServiceException {
|
||||||
FilesStorage filesStorage = new FilesStorage();
|
FilesStorage filesStorage = new FilesStorage();
|
||||||
filesStorage.saveStringInItem(serviceCredentials.getUserName(), file.getId(), code);
|
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 {
|
public ItemDescription saveNew(ServiceCredentials serviceCredentials, ItemDescription file, String code, String folderId) throws StatAlgoImporterServiceException {
|
||||||
Path tempFile = createTempFile(file, code);
|
Path tempFile = createTempFile(file, code);
|
||||||
ItemDescription mainCode = saveInWorkspace(tempFile, serviceCredentials, file, folderId);
|
ItemDescription codeItem = saveInWorkspace(tempFile, serviceCredentials, file, folderId);
|
||||||
return mainCode;
|
return codeItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Path createTempFile(ItemDescription file, String code) throws StatAlgoImporterServiceException {
|
private Path createTempFile(ItemDescription file, String code) throws StatAlgoImporterServiceException {
|
Loading…
Reference in New Issue