Skip to content

Commit 49cf837

Browse files
committed
Respect custom locations for sequence import
1 parent f98c8ea commit 49cf837

File tree

5 files changed

+28
-15
lines changed

5 files changed

+28
-15
lines changed

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/RefNtSequenceModel.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ public byte[] getSequenceBases()
418418

419419
public void createFileForSequence(User u, String sequence, @Nullable File outDir) throws IOException
420420
{
421-
File output = getExpectedSequenceFile();
421+
File output = getExpectedSequenceFile(outDir);
422422
if (output.exists())
423423
{
424424
output.delete();
@@ -443,9 +443,9 @@ public void createFileForSequence(User u, String sequence, @Nullable File outDir
443443
Table.update(u, ti, this, _rowid);
444444
}
445445

446-
public File getExpectedSequenceFile() throws IllegalArgumentException
446+
public File getExpectedSequenceFile(@Nullable File outDir) throws IllegalArgumentException
447447
{
448-
return FileUtil.appendName(getHashedDir(true), _rowid + ".txt.gz");
448+
return FileUtil.appendName(getSequenceFileBaseDir(outDir, true), _rowid + ".txt.gz");
449449
}
450450

451451
private Container getLabKeyContainer()
@@ -553,8 +553,13 @@ public File getOffsetsFile()
553553
return FileUtil.appendName(d.getFile().getParentFile(), getRowid() + "_offsets.txt");
554554
}
555555

556-
private File getHashedDir(boolean create)
556+
private File getSequenceFileBaseDir(@Nullable File outDir, boolean create)
557557
{
558+
if (outDir != null)
559+
{
560+
return outDir;
561+
}
562+
558563
File baseDir = getBaseSequenceDir();
559564
String digest = Crypt.MD5.digest(String.valueOf(getRowid()));
560565

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisMaintenanceTask.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,13 @@ private void processContainer(Container c, Logger log) throws IOException, Pipel
322322

323323
if (d.getFile().getAbsolutePath().toLowerCase().startsWith(sequenceDir.getAbsolutePath().toLowerCase()))
324324
{
325+
// File existence will be verified below:
325326
expectedSequences.add(d.getFile());
326327
}
328+
else if (!d.getFile().exists())
329+
{
330+
log.error("Missing sequence file {}", d.getFile().getPath());
331+
}
327332
});
328333

329334
if (sequenceDir.exists())

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisUpgradeCode.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ public void migrateSequenceDirs(final ModuleContext moduleContext)
242242
List<RefNtSequenceModel> nts = ts.getArrayList(RefNtSequenceModel.class);
243243
_log.info(nts.size() + " total sequences to migrate");
244244
int processed = 0;
245+
int totalMigrated = 0;
245246
for (RefNtSequenceModel nt : nts)
246247
{
247248
processed++;
@@ -267,11 +268,11 @@ public void migrateSequenceDirs(final ModuleContext moduleContext)
267268

268269
if (!RefNtSequenceModel.BASE_DIRNAME.equals(legacyFile.getParentFile().getName()))
269270
{
270-
_log.error("Sequence appears to have already been migrated, this might indicate a retry after a failed move: {}", legacyFile.getPath());
271+
// NOTE: this includes sequences imported to custom locations, such as refSequenceImport pipeline jobs
271272
continue;
272273
}
273274

274-
File newLocation = nt.getExpectedSequenceFile();
275+
File newLocation = nt.getExpectedSequenceFile(null);
275276
if (!newLocation.getParentFile().exists())
276277
{
277278
newLocation.getParentFile().mkdirs();
@@ -283,11 +284,14 @@ public void migrateSequenceDirs(final ModuleContext moduleContext)
283284
continue;
284285
}
285286

287+
totalMigrated++;
286288
FileUtils.copyFile(legacyFile, newLocation);
287289
legacyExpData.setDataFileURI(newLocation.toURI());
288290
legacyExpData.save(moduleContext.getUpgradeUser());
289291
legacyFile.delete();
290292
}
293+
294+
_log.info("Total sequences migrated: {}", totalMigrated);
291295
}
292296
catch (Exception e)
293297
{

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/ImportFastaSequencesPipelineJob.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.labkey.api.query.DetailsURL;
1313
import org.labkey.api.security.User;
1414
import org.labkey.api.security.permissions.InsertPermission;
15-
import org.labkey.api.assay.AssayFileWriter;
1615
import org.labkey.api.util.FileType;
1716
import org.labkey.api.util.FileUtil;
1817
import org.labkey.api.view.ActionURL;
@@ -56,23 +55,22 @@ public ImportFastaSequencesPipelineJob(Container c, User user, ActionURL url, Pi
5655
_libraryParams = libraryParams;
5756

5857
_outDir = createLocalDirectory(pipeRoot);
59-
setLogFile(new File(_outDir, FileUtil.makeFileNameWithTimestamp("fastaImport", "log")));
58+
setLogFile(FileUtil.appendName(_outDir, FileUtil.makeFileNameWithTimestamp("fastaImport", "log")));
6059
}
6160

6261
public static File createLocalDirectory(PipeRoot pipeRoot) throws IOException
6362
{
64-
File webserverOutDir = new File(pipeRoot.getRootPath(), _folderPrefix);
63+
File webserverOutDir = FileUtil.appendName(pipeRoot.getRootPath(), _folderPrefix);
6564
if (!webserverOutDir.exists())
6665
{
67-
webserverOutDir.mkdir();
66+
FileUtil.mkdir(webserverOutDir);
6867
}
6968

70-
AssayFileWriter writer = new AssayFileWriter();
7169
String folderName = "SequenceImport_" + FileUtil.getTimestamp();
7270
webserverOutDir = FileUtil.findUniqueFileName(folderName, webserverOutDir);
7371
if (!webserverOutDir.exists())
7472
{
75-
webserverOutDir.mkdirs();
73+
FileUtil.mkdirs(webserverOutDir);
7674
}
7775

7876
return webserverOutDir;
@@ -85,7 +83,7 @@ public String getDescription()
8583
}
8684

8785
@Override
88-
public TaskPipeline getTaskPipeline()
86+
public TaskPipeline<?> getTaskPipeline()
8987
{
9088
return PipelineJobService.get().getTaskPipeline(new TaskId(ImportFastaSequencesPipelineJob.class));
9189
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/ImportFastaSequencesTask.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.labkey.sequenceanalysis.pipeline;
1717

1818
import org.apache.commons.lang3.StringUtils;
19+
import org.jetbrains.annotations.NotNull;
1920
import org.labkey.api.pipeline.AbstractTaskFactory;
2021
import org.labkey.api.pipeline.AbstractTaskFactorySettings;
2122
import org.labkey.api.pipeline.PipelineJob;
@@ -71,7 +72,7 @@ public List<String> getProtocolActionNames()
7172
}
7273

7374
@Override
74-
public PipelineJob.Task createTask(PipelineJob job)
75+
public PipelineJob.Task<?> createTask(PipelineJob job)
7576
{
7677
return new ImportFastaSequencesTask(this, job);
7778
}
@@ -84,7 +85,7 @@ public boolean isJobComplete(PipelineJob job)
8485
}
8586

8687
@Override
87-
public RecordedActionSet run() throws PipelineJobException
88+
public @NotNull RecordedActionSet run() throws PipelineJobException
8889
{
8990
getJob().getLogger().info("Importing sequences from file(s): ");
9091
for (File f : getPipelineJob().getFastas())

0 commit comments

Comments
 (0)