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:
Giancarlo Panichi 2017-07-07 18:43:12 +00:00
parent 884f2f4609
commit 25f7b58415
9 changed files with 37 additions and 60 deletions

View File

@ -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);
} }

View File

@ -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) {

View File

@ -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) {

View File

@ -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);

View File

@ -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);
} }

View File

@ -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 {

View File

@ -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;
} }
} }

View File

@ -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);

View File

@ -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 {