2017-06-06 20:15:22 +02:00
|
|
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.is;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
|
2017-07-17 18:39:42 +02:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.PoolManagerConfig;
|
2017-06-30 18:51:18 +02:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.ProjectLanguageType;
|
2017-06-06 20:15:22 +02:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.ProjectSetup;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.ProjectSupportType;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.descriptor.SAIDescriptor;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @author Giancarlo Panichi
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public class BuildSAIDescriptor {
|
|
|
|
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(BuildSAIDescriptor.class);
|
|
|
|
|
|
|
|
public static SAIDescriptor build(String scope) throws StatAlgoImporterServiceException {
|
|
|
|
SAIDescriptor saiDescriptor = null;
|
|
|
|
|
|
|
|
if (Constants.DEBUG_MODE) {
|
2017-07-07 20:43:12 +02:00
|
|
|
logger.info("Debug Mode");
|
2017-07-17 18:39:42 +02:00
|
|
|
PoolManagerConfig poolManagerConfig = new PoolManagerConfig(false);
|
|
|
|
|
2017-06-06 20:15:22 +02:00
|
|
|
ArrayList<ProjectSetup> availableProjectConfigurations = new ArrayList<>();
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(r);
|
2017-07-17 18:39:42 +02:00
|
|
|
ProjectSetup rBlackBox = new ProjectSetup(ProjectLanguageType.R_BLACKBOX.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(rBlackBox);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup java = new ProjectSetup(ProjectLanguageType.JAVA.getId(), ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(java);
|
2017-07-17 18:39:42 +02:00
|
|
|
ProjectSetup knimeWorkflow = new ProjectSetup(ProjectLanguageType.KNIME_WORKFLOW.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(knimeWorkflow);
|
2017-07-17 18:39:42 +02:00
|
|
|
ProjectSetup linuxCompiled = new ProjectSetup(ProjectLanguageType.LINUX_COMPILED.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(linuxCompiled);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup octave = new ProjectSetup(ProjectLanguageType.OCTAVE.getId(), ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(octave);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup python = new ProjectSetup(ProjectLanguageType.PYTHON.getId(), ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(python);
|
2017-07-17 18:39:42 +02:00
|
|
|
ProjectSetup windowsCompiled = new ProjectSetup(ProjectLanguageType.WINDOWS_COMPILED.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(windowsCompiled);
|
2017-07-17 18:39:42 +02:00
|
|
|
ProjectSetup preInstalled = new ProjectSetup(ProjectLanguageType.PRE_INSTALLED.getId(),
|
|
|
|
ProjectSupportType.BASHEDIT);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(preInstalled);
|
2017-07-17 18:39:42 +02:00
|
|
|
saiDescriptor = new SAIDescriptor(poolManagerConfig, Constants.REMOTE_TEMPLATE_FILE,
|
2019-02-28 15:50:56 +01:00
|
|
|
Constants.ECOLOGICAL_ENGINE_JAR_URL, Constants.ECOLOGICAL_ENGINE_SMART_EXECUTOR_JAR_URL,
|
2017-07-17 18:39:42 +02:00
|
|
|
availableProjectConfigurations);
|
2017-06-06 20:15:22 +02:00
|
|
|
} else {
|
2017-07-07 20:43:12 +02:00
|
|
|
logger.info("Production Mode");
|
2017-06-06 20:15:22 +02:00
|
|
|
SAIDescriptorJAXB saiDescriptorJAXB = null;
|
|
|
|
try {
|
|
|
|
saiDescriptorJAXB = InformationSystemUtils.retrieveSAIDescriptor(scope);
|
|
|
|
} catch (StatAlgoImporterServiceException e) {
|
|
|
|
logger.info(e.getLocalizedMessage());
|
|
|
|
}
|
2017-07-17 18:39:42 +02:00
|
|
|
PoolManagerConfig poolManagerConfig;
|
|
|
|
String remoteTemplateFile;
|
2019-02-28 15:50:56 +01:00
|
|
|
String ecologicalEngineJarUrl;
|
|
|
|
String ecologicalEngineSmartExecutorJarUrl;
|
2017-06-06 20:15:22 +02:00
|
|
|
ArrayList<ProjectSetup> availableProjectConfigurations = new ArrayList<>();
|
|
|
|
|
|
|
|
logger.debug("SAIDescriptorJAXB: " + saiDescriptorJAXB);
|
2017-07-17 18:39:42 +02:00
|
|
|
if (saiDescriptorJAXB != null) {
|
|
|
|
if (saiDescriptorJAXB.getPoolmanager() != null) {
|
|
|
|
PoolManagerJAXB poolManagerJAXB = saiDescriptorJAXB.getPoolmanager();
|
|
|
|
poolManagerConfig = new PoolManagerConfig(poolManagerJAXB.isEnable());
|
|
|
|
} else {
|
|
|
|
logger.info("PoolManager disabled for scope: " + scope);
|
|
|
|
poolManagerConfig = new PoolManagerConfig(false);
|
|
|
|
}
|
|
|
|
|
2019-02-28 15:50:56 +01:00
|
|
|
if (saiDescriptorJAXB.getRemotetemplatefile() != null
|
|
|
|
&& !saiDescriptorJAXB.getRemotetemplatefile().isEmpty()) {
|
2017-07-17 18:39:42 +02:00
|
|
|
remoteTemplateFile = saiDescriptorJAXB.getRemotetemplatefile();
|
|
|
|
} else {
|
|
|
|
remoteTemplateFile = Constants.REMOTE_TEMPLATE_FILE;
|
|
|
|
}
|
2017-06-06 20:15:22 +02:00
|
|
|
|
2019-02-28 15:50:56 +01:00
|
|
|
if (saiDescriptorJAXB.getEcologicalenginejarurl() != null
|
|
|
|
&& !saiDescriptorJAXB.getEcologicalenginejarurl().isEmpty()) {
|
|
|
|
ecologicalEngineJarUrl = saiDescriptorJAXB.getEcologicalenginejarurl();
|
|
|
|
} else {
|
|
|
|
ecologicalEngineJarUrl = Constants.ECOLOGICAL_ENGINE_JAR_URL;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (saiDescriptorJAXB.getEcologicalenginesmartexecutorjarurl() != null
|
|
|
|
&& !saiDescriptorJAXB.getEcologicalenginesmartexecutorjarurl().isEmpty()) {
|
|
|
|
ecologicalEngineSmartExecutorJarUrl = saiDescriptorJAXB.getEcologicalenginesmartexecutorjarurl();
|
|
|
|
} else {
|
|
|
|
ecologicalEngineSmartExecutorJarUrl = Constants.ECOLOGICAL_ENGINE_SMART_EXECUTOR_JAR_URL;
|
|
|
|
}
|
|
|
|
|
2017-07-17 18:39:42 +02:00
|
|
|
if (saiDescriptorJAXB.getAvailableprojectconfiguration() != null
|
|
|
|
&& !saiDescriptorJAXB.getAvailableprojectconfiguration().isEmpty()) {
|
2017-06-06 20:15:22 +02:00
|
|
|
|
2017-07-17 18:39:42 +02:00
|
|
|
ProjectSupportType type;
|
2017-06-06 20:15:22 +02:00
|
|
|
|
2017-07-17 18:39:42 +02:00
|
|
|
for (AvailableProjectConfigJAXB availableProjectConfigJAXB : saiDescriptorJAXB
|
|
|
|
.getAvailableprojectconfiguration()) {
|
|
|
|
type = ProjectSupportType.valueFromLabel(availableProjectConfigJAXB.getSupport());
|
|
|
|
if (type != null) {
|
|
|
|
availableProjectConfigurations
|
|
|
|
.add(new ProjectSetup(availableProjectConfigJAXB.getLanguage(), type));
|
|
|
|
|
|
|
|
}
|
2017-06-06 20:15:22 +02:00
|
|
|
}
|
2017-07-17 18:39:42 +02:00
|
|
|
|
|
|
|
} else {
|
|
|
|
logger.info("Available Project Configuration use default configuration, scope: " + scope);
|
|
|
|
|
|
|
|
ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT);
|
|
|
|
availableProjectConfigurations.add(r);
|
|
|
|
ProjectSetup rBlackBox = new ProjectSetup(ProjectLanguageType.R_BLACKBOX.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
|
|
|
availableProjectConfigurations.add(rBlackBox);
|
|
|
|
ProjectSetup java = new ProjectSetup(ProjectLanguageType.JAVA.getId(), ProjectSupportType.BLACKBOX);
|
|
|
|
availableProjectConfigurations.add(java);
|
|
|
|
ProjectSetup knimeWorkflow = new ProjectSetup(ProjectLanguageType.KNIME_WORKFLOW.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
|
|
|
availableProjectConfigurations.add(knimeWorkflow);
|
|
|
|
ProjectSetup linuxCompiled = new ProjectSetup(ProjectLanguageType.LINUX_COMPILED.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
|
|
|
availableProjectConfigurations.add(linuxCompiled);
|
|
|
|
ProjectSetup octave = new ProjectSetup(ProjectLanguageType.OCTAVE.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
|
|
|
availableProjectConfigurations.add(octave);
|
|
|
|
ProjectSetup python = new ProjectSetup(ProjectLanguageType.PYTHON.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
|
|
|
availableProjectConfigurations.add(python);
|
|
|
|
ProjectSetup windowsCompiled = new ProjectSetup(ProjectLanguageType.WINDOWS_COMPILED.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
|
|
|
availableProjectConfigurations.add(windowsCompiled);
|
|
|
|
ProjectSetup preInstalled = new ProjectSetup(ProjectLanguageType.PRE_INSTALLED.getId(),
|
|
|
|
ProjectSupportType.BASHEDIT);
|
|
|
|
availableProjectConfigurations.add(preInstalled);
|
2017-06-06 20:15:22 +02:00
|
|
|
}
|
2017-07-17 18:39:42 +02:00
|
|
|
|
2017-06-06 20:15:22 +02:00
|
|
|
} else {
|
2017-07-07 20:43:12 +02:00
|
|
|
logger.info("Production Mode Default");
|
2017-06-06 20:15:22 +02:00
|
|
|
logger.info("SAIDescriptorJAXB use default configuration for scope: " + scope);
|
2017-07-17 18:39:42 +02:00
|
|
|
poolManagerConfig = new PoolManagerConfig(false);
|
|
|
|
remoteTemplateFile = Constants.REMOTE_TEMPLATE_FILE;
|
2019-02-28 15:50:56 +01:00
|
|
|
ecologicalEngineJarUrl = Constants.ECOLOGICAL_ENGINE_JAR_URL;
|
|
|
|
ecologicalEngineSmartExecutorJarUrl = Constants.ECOLOGICAL_ENGINE_SMART_EXECUTOR_JAR_URL;
|
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup r = new ProjectSetup(ProjectLanguageType.R.getId(), ProjectSupportType.REDIT);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(r);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup rBlackBox = new ProjectSetup(ProjectLanguageType.R_BLACKBOX.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(rBlackBox);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup java = new ProjectSetup(ProjectLanguageType.JAVA.getId(), ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(java);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup knimeWorkflow = new ProjectSetup(ProjectLanguageType.KNIME_WORKFLOW.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(knimeWorkflow);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup linuxCompiled = new ProjectSetup(ProjectLanguageType.LINUX_COMPILED.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(linuxCompiled);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup octave = new ProjectSetup(ProjectLanguageType.OCTAVE.getId(), ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(octave);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup python = new ProjectSetup(ProjectLanguageType.PYTHON.getId(), ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(python);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup windowsCompiled = new ProjectSetup(ProjectLanguageType.WINDOWS_COMPILED.getId(),
|
|
|
|
ProjectSupportType.BLACKBOX);
|
2017-06-06 20:15:22 +02:00
|
|
|
availableProjectConfigurations.add(windowsCompiled);
|
2017-06-30 18:51:18 +02:00
|
|
|
ProjectSetup preInstalled = new ProjectSetup(ProjectLanguageType.PRE_INSTALLED.getId(),
|
|
|
|
ProjectSupportType.BASHEDIT);
|
|
|
|
availableProjectConfigurations.add(preInstalled);
|
2017-06-09 18:35:45 +02:00
|
|
|
|
2017-06-06 20:15:22 +02:00
|
|
|
}
|
2017-06-09 18:35:45 +02:00
|
|
|
|
2019-02-28 15:50:56 +01:00
|
|
|
saiDescriptor = new SAIDescriptor(poolManagerConfig, remoteTemplateFile, ecologicalEngineJarUrl,
|
|
|
|
ecologicalEngineSmartExecutorJarUrl, availableProjectConfigurations);
|
2017-06-09 18:35:45 +02:00
|
|
|
|
2017-06-06 20:15:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
logger.debug("SAIDescriptor: " + saiDescriptor);
|
|
|
|
return saiDescriptor;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|