Skip to content
Snippets Groups Projects
Commit 214be38b authored by felmer's avatar felmer
Browse files

SSDM-579: Bug fixed: Databases for data sets in trash can have been deleted.

SVN: 32058
parent c5754b11
No related branches found
No related tags found
No related merge requests found
...@@ -58,7 +58,9 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.IConfigProvider; ...@@ -58,7 +58,9 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.IConfigProvider;
import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
import ch.systemsx.cisd.openbis.dss.generic.shared.IHierarchicalContentProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.IHierarchicalContentProvider;
import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
import ch.systemsx.cisd.openbis.dss.generic.shared.utils.BlastUtils;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletedDataSet;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria;
/** /**
...@@ -70,16 +72,12 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria ...@@ -70,16 +72,12 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria
public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
{ {
static final String DATASET_TYPES_PROPERTY = "dataset-types"; static final String DATASET_TYPES_PROPERTY = "dataset-types";
static final String BLAST_TOOLS_DIRECTORY_PROPERTY = "blast-tools-directory";
static final String BLAST_DATABASES_FOLDER_PROPERTY = "blast-databases-folder";
static final String BLAST_TEMP_FOLDER_PROPERTY = "blast-temp-folder"; static final String BLAST_TEMP_FOLDER_PROPERTY = "blast-temp-folder";
static final String LAST_SEEN_DATA_SET_FILE_PROPERTY = "last-seen-data-set-file"; static final String LAST_SEEN_DATA_SET_FILE_PROPERTY = "last-seen-data-set-file";
static final String FILE_TYPES_PROPERTY = "file-types"; static final String FILE_TYPES_PROPERTY = "file-types";
private static final String DEFAULT_LAST_SEEN_DATA_SET_FILE = "last-seen-data-set-for-BLAST-database-creation"; private static final String DEFAULT_LAST_SEEN_DATA_SET_FILE = "last-seen-data-set-for-BLAST-database-creation";
private static final String DEFAULT_FILE_TYPES = ".fasta .fa .fsa .fastq"; private static final String DEFAULT_FILE_TYPES = ".fasta .fa .fsa .fastq";
private static final String DEFAULT_BLAST_DATABASES_FOLDER = "blast-databases";
private static final Logger operationLog = private static final Logger operationLog =
LogFactory.getLogger(LogCategory.OPERATION, BlastDatabaseCreationMaintenanceTask.class); LogFactory.getLogger(LogCategory.OPERATION, BlastDatabaseCreationMaintenanceTask.class);
private static final Logger machineLog = private static final Logger machineLog =
...@@ -115,12 +113,13 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask ...@@ -115,12 +113,13 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
lastSeenDataSetFile = getFile(properties, LAST_SEEN_DATA_SET_FILE_PROPERTY, DEFAULT_LAST_SEEN_DATA_SET_FILE); lastSeenDataSetFile = getFile(properties, LAST_SEEN_DATA_SET_FILE_PROPERTY, DEFAULT_LAST_SEEN_DATA_SET_FILE);
setUpBlastDatabasesFolder(properties); setUpBlastDatabasesFolder(properties);
setUpBlastTempFolder(properties); setUpBlastTempFolder(properties);
String blastToolDirectory = getBLASTToolDirectory(properties); String blastToolDirectory = BlastUtils.getBLASTToolDirectory(properties);
makeblastdb = blastToolDirectory + "makeblastdb"; makeblastdb = blastToolDirectory + "makeblastdb";
if (process(makeblastdb, "-version") == false) if (process(makeblastdb, "-version") == false)
{ {
operationLog.error("BLAST isn't installed or property '" + BLAST_TOOLS_DIRECTORY_PROPERTY operationLog.error("BLAST isn't installed or property '" + BlastUtils.BLAST_TOOLS_DIRECTORY_PROPERTY
+ "' hasn't been correctly specified."); + "' hasn't been correctly specified.");
makeblastdb = null;
} }
makembindex = blastToolDirectory + "makembindex"; makembindex = blastToolDirectory + "makembindex";
...@@ -128,7 +127,7 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask ...@@ -128,7 +127,7 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
private void setUpBlastDatabasesFolder(Properties properties) private void setUpBlastDatabasesFolder(Properties properties)
{ {
blastDatabasesFolder = getFile(properties, BLAST_DATABASES_FOLDER_PROPERTY, DEFAULT_BLAST_DATABASES_FOLDER); blastDatabasesFolder = BlastUtils.getBlastDatabaseFolder(properties, getConfigProvider().getStoreRoot());
operationLog.info("BLAST databases folder: " + blastDatabasesFolder); operationLog.info("BLAST databases folder: " + blastDatabasesFolder);
if (blastDatabasesFolder.exists()) if (blastDatabasesFolder.exists())
{ {
...@@ -146,7 +145,7 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask ...@@ -146,7 +145,7 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
} }
} }
} }
private void setUpBlastTempFolder(Properties properties) private void setUpBlastTempFolder(Properties properties)
{ {
String tempFolderProperty = properties.getProperty(BLAST_TEMP_FOLDER_PROPERTY); String tempFolderProperty = properties.getProperty(BLAST_TEMP_FOLDER_PROPERTY);
...@@ -174,23 +173,16 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask ...@@ -174,23 +173,16 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
private File getFile(Properties properties, String pathProperty, String defaultPath) private File getFile(Properties properties, String pathProperty, String defaultPath)
{ {
String path = properties.getProperty(pathProperty); return BlastUtils.getFile(properties, pathProperty, defaultPath, getConfigProvider().getStoreRoot());
return path == null ? new File(getConfigProvider().getStoreRoot(), defaultPath) : new File(path);
}
private String getBLASTToolDirectory(Properties properties)
{
String blastToolsDirectory = properties.getProperty(BLAST_TOOLS_DIRECTORY_PROPERTY, "");
if (blastToolsDirectory.endsWith("/") || blastToolsDirectory.isEmpty())
{
return blastToolsDirectory;
}
return blastToolsDirectory + "/";
} }
@Override @Override
public void execute() public void execute()
{ {
if (makeblastdb == null)
{
return;
}
IEncapsulatedOpenBISService service = getOpenBISService(); IEncapsulatedOpenBISService service = getOpenBISService();
Map<SequenceType, VirtualDatabase> virtualDatabases = loadVirtualDatabases(service); Map<SequenceType, VirtualDatabase> virtualDatabases = loadVirtualDatabases(service);
...@@ -233,13 +225,14 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask ...@@ -233,13 +225,14 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
} }
if (dataSetCodes.isEmpty() == false) if (dataSetCodes.isEmpty() == false)
{ {
for (AbstractExternalData dataSet : service.listDataSetsByCode(new ArrayList<String>(dataSetCodes))) Set<String> deletedDataSetCodes = new HashSet<String>();
for (DeletedDataSet deletedDataSet : service.listDeletedDataSets(null, null))
{ {
dataSetCodes.remove(dataSet.getCode()); deletedDataSetCodes.add(deletedDataSet.getCode());
} }
for (VirtualDatabase virtualDatabase : virtualDatabases.values()) for (VirtualDatabase virtualDatabase : virtualDatabases.values())
{ {
virtualDatabase.removeDeletedDataSets(dataSetCodes); virtualDatabase.removeDeletedDataSets(deletedDataSetCodes);
} }
} }
return virtualDatabases; return virtualDatabases;
...@@ -470,9 +463,10 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask ...@@ -470,9 +463,10 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
{ {
for (String dataSetCode : deletedDataSets) for (String dataSetCode : deletedDataSets)
{ {
dataSetCodes.remove(dataSetCode); if (dataSetCodes.remove(dataSetCode))
final String databaseName = dataSetCode + postfix; {
File[] files = databaseFolder.listFiles(new FilenameFilter() final String databaseName = dataSetCode + postfix;
File[] files = databaseFolder.listFiles(new FilenameFilter()
{ {
@Override @Override
public boolean accept(File dir, String name) public boolean accept(File dir, String name)
...@@ -480,19 +474,20 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask ...@@ -480,19 +474,20 @@ public class BlastDatabaseCreationMaintenanceTask implements IMaintenanceTask
return name.startsWith(databaseName); return name.startsWith(databaseName);
} }
}); });
if (files != null) if (files != null)
{
boolean success = true;
for (File file : files)
{ {
if (FileUtilities.delete(file) == false) boolean success = true;
for (File file : files)
{ {
operationLog.warn("File deletion failed: " + file); if (FileUtilities.delete(file) == false)
{
operationLog.warn("File deletion failed: " + file);
}
}
if (success)
{
operationLog.info("BLAST database " + databaseName + " successfully deleted.");
} }
}
if (success)
{
operationLog.info("BLAST database " + databaseName + " successfully deleted.");
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment