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) {
monitor = new StatAlgoImporterMonitor();
pm.setNewMainCode(event, monitor);
pm.setNewCode(event, monitor);
}

View File

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

View File

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

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

View File

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

View File

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

View File

@ -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<String> lines = createInfoData();
List<String> 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<String> createInfoData() {
private List<String> createInfoTxtData() {
ArrayList<String> infos = new ArrayList<String>();
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;
}
}

View File

@ -25,6 +25,7 @@ public class BuildSAIDescriptor {
SAIDescriptor saiDescriptor = null;
if (Constants.DEBUG_MODE) {
logger.info("Debug Mode");
ArrayList<ProjectSetup> 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);

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