ref 12977: SAI - Force the path of the project folder to be updated to a new format

https://support.d4science.org/issues/12977

Now, when the project is open the path is forced to be updated

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/statistical-algorithms-importer@174888 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2018-12-14 10:52:12 +00:00
parent 6f9cd6d4a0
commit 3595890e3e
1 changed files with 34 additions and 31 deletions

View File

@ -74,7 +74,6 @@ public class ProjectBuilder {
public static final Logger logger = LoggerFactory.getLogger(ProjectBuilder.class);
private Project project;
private String backupFolderId;
private ServiceCredentials serviceCredentials;
private SAIDescriptor saiDescriptor;
private Path algorithmJava;
@ -85,17 +84,19 @@ public class ProjectBuilder {
this.project = project;
this.serviceCredentials = serviceCredentials;
this.saiDescriptor = saiDescriptor;
this.algorithmJava = null;
this.infoTXT = null;
}
public Project buildTarget() throws StatAlgoImporterServiceException {
logger.debug("Project Builder: Build Target");
checkInfoForBuild();
createShareInfo();
createBackup();
String backupFolderId = createBackupOfPackageProject();
createMainCodeIfRequest();
createTargetFolder();
createDeployFolder();
createProjectPackage();
createProjectPackage(backupFolderId);
createCompileFolder();
createAlgorithm();
createIntegrationInfo();
@ -128,16 +129,12 @@ public class ProjectBuilder {
public Project buildRepackage() throws StatAlgoImporterServiceException {
logger.debug("Project Builder: Repackage");
checkInfoForRepackage();
createBackupOfPackageProject();
String backupFolderId = createBackupOfPackageProject();
createMainCodeIfRequest();
repackageProjectPackage();
repackageProjectPackage(backupFolderId);
return project;
}
private void createBackup() throws StatAlgoImporterServiceException {
createBackupOfPackageProject();
}
private void createMainCodeIfRequest() throws StatAlgoImporterServiceException {
if (project.getProjectConfig() != null && project.getProjectConfig().getProjectSupport() != null
&& (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBlackBox
@ -160,13 +157,13 @@ public class ProjectBuilder {
}
private void repackageProjectPackage() throws StatAlgoImporterServiceException {
private void repackageProjectPackage(String backupFolderId) throws StatAlgoImporterServiceException {
List<String> idsToExclude = new ArrayList<String>();
if (backupFolderId != null && !backupFolderId.isEmpty()) {
logger.debug("Exclude Backup Folder Id: " + backupFolderId);
idsToExclude.add(backupFolderId);
}
FilesStorage filesStorage = new FilesStorage();
if (project.getProjectTarget() != null && project.getProjectTarget().getFolder() != null
@ -214,28 +211,33 @@ public class ProjectBuilder {
}
private void createBackupOfPackageProject() throws StatAlgoImporterServiceException {
private String createBackupOfPackageProject() throws StatAlgoImporterServiceException {
String backupFolderId = null;
if (project.getProjectTarget() != null && project.getProjectTarget().getProjectDeploy() != null
&& project.getProjectTarget().getProjectDeploy().getPackageProject() != null
&& project.getProjectTarget().getProjectDeploy().getPackageProject().getId() != null
&& !project.getProjectTarget().getProjectDeploy().getPackageProject().getId().isEmpty()) {
logger.debug("Create Backup of PackageProject");
createBackupFolder();
backupFolderId = createBackupFolder();
if (backupFolderId != null && !backupFolderId.isEmpty()) {
FilesStorage filesStorage = new FilesStorage();
FilesStorage filesStorage = new FilesStorage();
GregorianCalendar now = new GregorianCalendar();
GregorianCalendar now = new GregorianCalendar();
String packageProjectNewName = project.getInputData().getProjectInfo().getAlgorithmNameToClassName()
+ "_backup_" + sdf.format(now.getTime()) + PROJECT_PACKAGE_EXTENTION;
String packageProjectNewName = project.getInputData().getProjectInfo().getAlgorithmNameToClassName()
+ "_backup_" + sdf.format(now.getTime()) + PROJECT_PACKAGE_EXTENTION;
filesStorage.copyItemOnFolderWithNewName(serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), backupFolderId,
packageProjectNewName);
filesStorage.copyItemOnFolderWithNewName(serviceCredentials.getUserName(),
project.getProjectTarget().getProjectDeploy().getPackageProject().getId(), backupFolderId,
packageProjectNewName);
} else {
logger.debug("BackupFolderId is null, backup not done");
}
} else {
logger.debug("First deploy, no backup needed");
}
return backupFolderId;
}
@ -435,7 +437,7 @@ public class ProjectBuilder {
}
private void createProjectPackage() throws StatAlgoImporterServiceException {
private void createProjectPackage(String backupFolderId) throws StatAlgoImporterServiceException {
List<String> idsToExclude = new ArrayList<String>();
if (backupFolderId != null && !backupFolderId.isEmpty()) {
@ -514,24 +516,25 @@ public class ProjectBuilder {
project.getProjectTarget().setProjectCompile(projectCompile);
}
private void createBackupFolder() throws StatAlgoImporterServiceException {
private String createBackupFolder() throws StatAlgoImporterServiceException {
FilesStorage filesStorage = new FilesStorage();
ItemDescription backupFolder = filesStorage.find(serviceCredentials.getUserName(),
project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME);
if (backupFolder == null) {
String backupFolderId = null;
if (backupFolder != null && backupFolder.getId() != null && !backupFolder.getId().isEmpty()) {
backupFolderId = backupFolder.getId();
} else {
ItemDescription newBackupFolder = filesStorage.createFolder(serviceCredentials.getUserName(),
project.getProjectFolder().getFolder().getId(), STATISTICAL_ALGORITHM_BACKUP_FOLDER_NAME,
STATISTICAL_ALGORITHM_BACKUP_FOLDER_DESCRIPTION);
logger.debug("BackupFolder created:" + backupFolder);
backupFolderId = newBackupFolder.getId();
} else {
backupFolderId = backupFolder.getId();
}
logger.debug("BackupFolderId: " + backupFolderId);
return backupFolderId;
}
@ -552,7 +555,7 @@ public class ProjectBuilder {
String pLink = filesStorage.getPublicLink(serviceCredentials.getUserName(), codeSource.getId());
codeSource.setPublicLink(pLink);
} catch (IOException e) {
logger.error(e.getLocalizedMessage(),e);
logger.error(e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
@ -594,7 +597,7 @@ public class ProjectBuilder {
try {
tempDirectory = Files.createTempDirectory("StatAlgorithmsJar");
} catch (IOException e) {
logger.error("Error creating temporal directory: " + e.getLocalizedMessage(),e);
logger.error("Error creating temporal directory: " + e.getLocalizedMessage(), e);
throw new StatAlgoImporterServiceException(e.getLocalizedMessage(), e);
}
logger.debug("TempDir: " + tempDirectory);