From 5642ea8d5bc2303e9e076ebb50b90bad07feb358 Mon Sep 17 00:00:00 2001 From: labkey-jeckels Date: Sat, 9 May 2026 11:28:37 -0700 Subject: [PATCH] Auto-refactor lint cleanup SequencedCollections: get(0) -> getFirst(), etc Add missing @NotNull/@Nullable Simplify test assertions Map operation simplification Remove redundant throws clause Switch to parameterized log message C-style array -> Java-style array declaration Delete overridden methods identical to parent Switch statement -> enhanced switch statement Remove redundant imports --- .../OConnorExperimentsController.java | 37 +++++++++---------- .../query/OConnorExperimentsUserSchema.java | 3 +- .../genotyping/GenotypingController.java | 12 ++---- .../genotyping/GenotypingQuerySchema.java | 4 +- .../genotyping/HaplotypeAssayProvider.java | 1 - .../genotyping/HaplotypeDataHandler.java | 9 ++--- .../genotyping/IlluminaFastqParser.java | 14 +++---- .../genotyping/ImportPacBioReadsJob.java | 12 +++--- .../src/org/labkey/genotyping/ReadsJob.java | 2 +- .../src/org/labkey/genotyping/Status.java | 1 - .../genotyping/galaxy/GalaxyServer.java | 2 +- .../org/labkey/test/tests/GenotypingTest.java | 2 - .../org/labkey/test/tests/IlluminaTest.java | 3 +- .../src/org/labkey/test/tests/PacBioTest.java | 2 +- 14 files changed, 46 insertions(+), 58 deletions(-) diff --git a/OConnorExperiments/src/org/labkey/oconnorexperiments/OConnorExperimentsController.java b/OConnorExperiments/src/org/labkey/oconnorexperiments/OConnorExperimentsController.java index 8458a6e3..efd03727 100644 --- a/OConnorExperiments/src/org/labkey/oconnorexperiments/OConnorExperimentsController.java +++ b/OConnorExperiments/src/org/labkey/oconnorexperiments/OConnorExperimentsController.java @@ -60,7 +60,6 @@ import org.labkey.api.util.URLHelper; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HtmlView; -import org.labkey.api.view.HttpView; import org.labkey.api.view.JspView; import org.labkey.api.view.NavTree; import org.labkey.api.view.NotFoundException; @@ -85,6 +84,7 @@ public class OConnorExperimentsController extends SpringActionController { public static final String EXPERIMENTS = "Experiments"; private static final DefaultActionResolver _actionResolver = new DefaultActionResolver(OConnorExperimentsController.class); + public static final org.apache.logging.log4j.Logger LOG = LogManager.getLogger(OConnorExperimentsController.class); public OConnorExperimentsController() { @@ -110,7 +110,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception { if (form.isFinalMigration()) { - LogManager.getLogger(OConnorExperimentsController.class).info("Final migration to be performed - file move events will be performed (irreversible)."); + LOG.info("Final migration to be performed - file move events will be performed (irreversible)."); } // global containers @@ -160,7 +160,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception newType.put("Name", currentType); newType.put("Enabled", true); List> newTypes = typeUpdateService.insertRows(getUser(), getContainer(), Collections.singletonList(newType), new BatchValidationException(), null, null); - targetType = (Integer) newTypes.get(0).get("RowId"); + targetType = (Integer) newTypes.getFirst().get("RowId"); } } @@ -178,7 +178,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception User user = UserManager.getUserByDisplayName((String) databaseMap.get("initials")); if (user == null) { - LogManager.getLogger(OConnorExperimentsController.class).warn("User '" + databaseMap.get("initials") + "' not found for experiment " + databaseMap.get("expnumber")); + LOG.warn("User '{}' not found for experiment {}", databaseMap.get("initials"), databaseMap.get("expnumber")); effectiveUser = getUser(); } else @@ -188,7 +188,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception } databaseMap.put("EffectiveUser", effectiveUser); - LogManager.getLogger(OConnorExperimentsController.class).info("Insert on experiment " + databaseMap.get("expnumber")); + LOG.info("Insert on experiment {}", databaseMap.get("expnumber")); List> updateResult; try { @@ -197,18 +197,18 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception catch (Exception e) { // log the error to the logfile and continue - LogManager.getLogger(OConnorExperimentsController.class).warn("Error inserting expNumber " + expNumber + " with exception " + e.getMessage()); + LOG.warn("Error inserting expNumber {} with exception {}", expNumber, e.getMessage()); continue; } if (batchErrors.hasErrors()) { // throw batchErrors.getLastRowError(); - LogManager.getLogger(OConnorExperimentsController.class).warn("Error inserting expNumber " + expNumber); + LOG.warn("Error inserting expNumber {}", expNumber); } - Container workbookContainer = ContainerManager.getForId((String)updateResult.get(0).get("EntityId")); + Container workbookContainer = ContainerManager.getForId((String)updateResult.getFirst().get("EntityId")); databaseMap.put("ContainerObj", workbookContainer); - databaseMap.put("ContainerStr", updateResult.get(0).get("EntityId")); + databaseMap.put("ContainerStr", updateResult.getFirst().get("EntityId")); // We don't want these fields to be spoofable through the QueryUpdateService (and hence the Client API), // so preserve the value from the source data manually @@ -218,7 +218,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception // Move files File sourceFile = new File(fileContentService.getFileRoot(sourceContainer).getPath() + File.separator + "@files", databaseMap.get("expnumber").toString()); File targetDir = new File(fileContentService.getFileRoot(targetContainer).getPath() + File.separator + databaseMap.get("expnumber").toString() + File.separator + "@files"); - LogManager.getLogger(OConnorExperimentsController.class).info("Copy from file '" + sourceFile + "' to directory '" + targetDir +"'" ); + LOG.info("Copy from file '{}' to directory '{}'", sourceFile, targetDir); if (sourceFile.exists()) { FileUtils.copyDirectory(sourceFile, targetDir); @@ -260,7 +260,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception } else { - LogManager.getLogger(OConnorExperimentsController.class).warn("child container not found: " + parents[i] + " for experiment " + databaseMap.get("expnumber") + " with username " + databaseMap.get("initials")); + LOG.warn("child container not found: {} for experiment {} with username {}", parents[i], databaseMap.get("expnumber"), databaseMap.get("initials")); } } } @@ -269,7 +269,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception map.put("ParentExperiments", parentsEntityId.toArray(new String[0])); // workaround, pass user, container - databaseMap.get("Container"), singleton list - LogManager.getLogger(OConnorExperimentsController.class).info("Update rows on experiment " + databaseMap.get("expnumber")); + LOG.info("Update rows on experiment {}", databaseMap.get("expnumber")); try { queryUpdateService.updateRows(getUser(), targetContainer, Collections.singletonList(map), null, null, null); @@ -277,8 +277,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception catch (Exception e) { // log the error to the logfile and continue - LogManager.getLogger(OConnorExperimentsController.class).warn("Error updating parent experiments for experiment number " + expNumber + " with exception " + e.getMessage()); - continue; + LOG.warn("Error updating parent experiments for experiment number {} with exception {}", expNumber, e.getMessage()); } } @@ -304,7 +303,7 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception Container workbookContainer = targetContainer.getChild(databaseMap.get("expnumber").toString()); if (workbookContainer == null) { - LogManager.getLogger(OConnorExperimentsController.class).warn("Updating wiki, container not found: " + databaseMap.get("expnumber")); + LOG.warn("Updating wiki, container not found: {}", databaseMap.get("expnumber")); } else { @@ -320,14 +319,14 @@ public boolean handlePost(UserForm form, BindException errors) throws Exception catch (Exception e) { // log the error to the logfile and continue - LogManager.getLogger(OConnorExperimentsController.class).warn("Error wiki for experiment number " + expNumber + " with exception " + e.getMessage()); + LOG.warn("Error wiki for experiment number {} with exception {}", expNumber, e.getMessage()); continue; } finally { in.closeInputStream(); } - LogManager.getLogger(OConnorExperimentsController.class).info("Inserting wiki for experiment " + databaseMap.get("expnumber")); + LOG.info("Inserting wiki for experiment {}", databaseMap.get("expnumber")); } } } @@ -439,7 +438,7 @@ public boolean handlePost(Object o, BindException errors) throws Exception if (result != null && !result.isEmpty()) { - String entityId = (String)result.get(0).get("Container"); + String entityId = (String)result.getFirst().get("Container"); newExperiment = ContainerManager.getForId(entityId); return true; } @@ -464,7 +463,7 @@ public ApiResponse execute(Object o, BindException errors) throws Exception ApiSimpleResponse resp = new ApiSimpleResponse(); if (result != null && !result.isEmpty()) { - Map exp = result.get(0); + Map exp = result.getFirst(); resp.put("success", true); resp.put("experiment", exp); diff --git a/OConnorExperiments/src/org/labkey/oconnorexperiments/query/OConnorExperimentsUserSchema.java b/OConnorExperiments/src/org/labkey/oconnorexperiments/query/OConnorExperimentsUserSchema.java index dd916571..38131bc5 100644 --- a/OConnorExperiments/src/org/labkey/oconnorexperiments/query/OConnorExperimentsUserSchema.java +++ b/OConnorExperiments/src/org/labkey/oconnorexperiments/query/OConnorExperimentsUserSchema.java @@ -16,6 +16,7 @@ package org.labkey.oconnorexperiments.query; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.NotNull; import org.labkey.api.collections.Sets; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerFilter; @@ -139,7 +140,7 @@ private TableInfo createParentExperimentsTable(String name, ContainerFilter cf) } @Override - public QueryView createView(ViewContext context, QuerySettings settings, BindException errors) + public @NotNull QueryView createView(ViewContext context, QuerySettings settings, BindException errors) { if (OConnorExperimentsController.EXPERIMENTS.equalsIgnoreCase(settings.getQueryName())) { diff --git a/genotyping/src/org/labkey/genotyping/GenotypingController.java b/genotyping/src/org/labkey/genotyping/GenotypingController.java index f7b486bd..d5c30f2e 100644 --- a/genotyping/src/org/labkey/genotyping/GenotypingController.java +++ b/genotyping/src/org/labkey/genotyping/GenotypingController.java @@ -125,7 +125,6 @@ import java.math.BigInteger; import java.net.MalformedURLException; import java.net.URL; -import java.nio.file.Path; import java.nio.file.Paths; import java.sql.ResultSet; import java.sql.SQLException; @@ -381,7 +380,7 @@ public boolean handlePost(ReturnUrlForm returnUrlForm, BindException errors) { long startTime = System.currentTimeMillis(); SequenceManager.get().loadSequences(getContainer(), getUser()); - LOG.info(DateUtil.formatDuration(System.currentTimeMillis() - startTime) + " to load sequences"); + LOG.info("{} to load sequences", DateUtil.formatDuration(System.currentTimeMillis() - startTime)); return true; } @@ -1299,7 +1298,7 @@ public void validateForm(ImportAnalysisForm form, Errors errors) @Override public Object execute(ImportAnalysisForm form, BindException errors) throws Exception { - LOG.info("Galaxy signaled the completion of analysis " + form.getAnalysis()); + LOG.info("Galaxy signaled the completion of analysis {}", form.getAnalysis()); String message; // Send any exceptions back to the Galaxy task so it can log it as well. @@ -1337,7 +1336,7 @@ public Object execute(ImportAnalysisForm form, BindException errors) throws Exce message = FAILURE_PREFACE + "Analysis path doesn't match import path (see system log for more details)"; // But log more detail to the administrator so they're aware - LOG.error(FAILURE_PREFACE + fnf.getMessage()); + LOG.error("{}{}", FAILURE_PREFACE, fnf.getMessage()); } catch (Exception e) { @@ -1657,11 +1656,6 @@ public static class RunForm extends QueryExportForm public enum Platforms{ LS454 { - @Override - public String getTableName() - { - return TableType.Reads.toString(); - } }, ILLUMINA { @Override diff --git a/genotyping/src/org/labkey/genotyping/GenotypingQuerySchema.java b/genotyping/src/org/labkey/genotyping/GenotypingQuerySchema.java index d9c99bd4..196c1c42 100644 --- a/genotyping/src/org/labkey/genotyping/GenotypingQuerySchema.java +++ b/genotyping/src/org/labkey/genotyping/GenotypingQuerySchema.java @@ -17,8 +17,8 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.NotNull; import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.collections.Sets; import org.labkey.api.data.*; @@ -952,7 +952,7 @@ public Set getTableNames() } @Override - public QueryView createView(ViewContext context, QuerySettings settings, BindException errors) + public @NotNull QueryView createView(ViewContext context, QuerySettings settings, BindException errors) { TableType type = findTableType(settings.getQueryName()); return type == null ? super.createView(context, settings, errors) : type.createQueryView(context, settings, errors, this); diff --git a/genotyping/src/org/labkey/genotyping/HaplotypeAssayProvider.java b/genotyping/src/org/labkey/genotyping/HaplotypeAssayProvider.java index 1d8ab95c..c0d437b7 100644 --- a/genotyping/src/org/labkey/genotyping/HaplotypeAssayProvider.java +++ b/genotyping/src/org/labkey/genotyping/HaplotypeAssayProvider.java @@ -55,7 +55,6 @@ import org.labkey.api.view.NavTree; import org.labkey.api.view.ViewContext; -import java.io.File; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashMap; diff --git a/genotyping/src/org/labkey/genotyping/HaplotypeDataHandler.java b/genotyping/src/org/labkey/genotyping/HaplotypeDataHandler.java index cab2c6c4..fc1765c0 100644 --- a/genotyping/src/org/labkey/genotyping/HaplotypeDataHandler.java +++ b/genotyping/src/org/labkey/genotyping/HaplotypeDataHandler.java @@ -49,7 +49,6 @@ import org.labkey.api.view.ViewBackgroundInfo; import org.labkey.vfs.FileLike; -import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -75,7 +74,7 @@ public void importFile(@NotNull ExpData data, @NotNull FileLike dataFile, @NotNu { if (!dataFile.exists()) { - log.warn("Could not find file " + dataFile + " on disk for data with LSID " + data.getLSID()); + log.warn("Could not find file {} on disk for data with LSID {}", dataFile, data.getLSID()); return; } ExpRun expRun = data.getRun(); @@ -226,7 +225,7 @@ private Map ensureAnimalIds(Map ids, Map ensureHaplotypeNames(List, FileInfo> parseFastqFiles(PipelineJob job) th long length = f.length(); if (length == 0) { - _logger.info("File " + f.getName() + " has no content to parse."); + _logger.info("File {} has no content to parse.", f.getName()); continue; } @@ -138,10 +138,10 @@ public Map, FileInfo> parseFastqFiles(PipelineJob job) th // good way to check if a file is truly local tempFile = FileUtil.createTempFile(FileUtil.getBaseName(f) + ".", "." + FileUtil.getExtension(f)); tempFile.deleteOnExit(); - _logger.debug("Copying to temp file " + tempFile + ", size is " + f.length() + " bytes"); + _logger.debug("Copying to temp file {}, size is {} bytes", tempFile, f.length()); FileUtil.copyFile(f, tempFile); - _logger.info("Beginning to parse file: " + f.getName()); + _logger.info("Beginning to parse file: {}", f.getName()); try (FastqReader reader = new FastqReader(tempFile)) { File targetDir = f.getParentFile(); @@ -197,7 +197,7 @@ public Map, FileInfo> parseFastqFiles(PipelineJob job) th } else if (reader.getLineNumber() == 1 && totalReads == 0 && !f.getName().contains("null"))//empty file { - _logger.warn("File " + fileName + " has no content to parse."); + _logger.warn("File {} has no content to parse.", fileName); reader.close(); continue; } @@ -223,7 +223,7 @@ else if (reader.getLineNumber() == 1 && totalReads == 0 && !f.getName().contains Pair key = Pair.of(sampleId, pairNumber); _fileInfo.put(key, new FileInfo(newFile, totalReads)); - _logger.info("Finished parsing file: " + f.getName()); + _logger.info("Finished parsing file: {}", f.getName()); } } } @@ -252,7 +252,7 @@ else if (reader.getLineNumber() == 1 && totalReads == 0 && !f.getName().contains File oldFile = entry.getKey(); File newFile = entry.getValue(); FileUtils.moveFile(oldFile, newFile); - _logger.info("Moved file " + oldFile.getName() + " to " + newFile.getName() ); + _logger.info("Moved file {} to {}", oldFile.getName(), newFile.getName()); } } catch (IOException e) @@ -317,7 +317,7 @@ private void checkForDuplicateTargets(Map filesToMove) throws Pipeli if (sourceFiles.size() > 1) { error = true; - _logger.error("Multiple input files map to the target file " + targetFile + " - they are: " + sourceFiles); + _logger.error("Multiple input files map to the target file {} - they are: {}", targetFile, sourceFiles); } } if (error) diff --git a/genotyping/src/org/labkey/genotyping/ImportPacBioReadsJob.java b/genotyping/src/org/labkey/genotyping/ImportPacBioReadsJob.java index 5ad11d00..f5229ca5 100644 --- a/genotyping/src/org/labkey/genotyping/ImportPacBioReadsJob.java +++ b/genotyping/src/org/labkey/genotyping/ImportPacBioReadsJob.java @@ -122,7 +122,7 @@ private void importReads() throws PipelineJobException, SQLException //error if no pools were found and no fastq files were found to parse if (_pools.isEmpty()) - getLogger().warn("No pools/FASTQ files" + (_fastqPrefix == null ? "" : " matching the prefix '" + _fastqPrefix + "'") + " were found. Check that files are under a 'poolX' directory"); + getLogger().warn("No pools/FASTQ files{} were found. Check that files are under a 'poolX' directory", _fastqPrefix == null ? "" : " matching the prefix '" + _fastqPrefix + "'"); persistPacBioPoolRecords(sampleNameSampleIdMap); } @@ -219,7 +219,7 @@ private void collectFastqFilesAsPools() } else { - getLogger().warn("Directory name '" + sampleSheetRootFolder.getName() + "' did not contain '" + _dirSubstring + "', skipping"); + getLogger().warn("Directory name '{}' did not contain '" + _dirSubstring + "', skipping", sampleSheetRootFolder.getName()); } } } @@ -302,11 +302,11 @@ public Integer getNumReads(File fastqFile, int fileNum, int poolNum) if(fastqFile.length() == 0) { - _logger.info("File " + fastqFile.getName() + " has no content to parse."); + _logger.info("File {} has no content to parse.", fastqFile.getName()); return 0; } - _logger.info("Beginning to parse file: " + fastqFile.getName()); + _logger.info("Beginning to parse file: {}", fastqFile.getName()); FastqReader reader = new FastqReader(fastqFile); while (reader.hasNext()) @@ -319,13 +319,13 @@ public Integer getNumReads(File fastqFile, int fileNum, int poolNum) catch(SAMException same) { setStatus("Error parsing " + fileNum + " in Pool " + poolNum + ". See Status."); - _logger.error("Error parsing " + fastqFile.getName() + " in Pool " + poolNum + ", read count may be inaccurate: " + same.getMessage()); + _logger.error("Error parsing {} in Pool {}, read count may be inaccurate: {}", fastqFile.getName(), poolNum, same.getMessage()); reader.close(); return totalReads; } } - _logger.info("Finished parsing file: " + fastqFile.getName()); + _logger.info("Finished parsing file: {}", fastqFile.getName()); reader.close(); diff --git a/genotyping/src/org/labkey/genotyping/ReadsJob.java b/genotyping/src/org/labkey/genotyping/ReadsJob.java index 9ef1d4bd..d7301a4e 100644 --- a/genotyping/src/org/labkey/genotyping/ReadsJob.java +++ b/genotyping/src/org/labkey/genotyping/ReadsJob.java @@ -85,7 +85,7 @@ public void updateRunStatus(Status status) } catch (RuntimeSQLException e) { - getLogger().error("Run " + _run.getMetaDataId() + " has already been processed"); + getLogger().error("Run {} has already been processed", _run.getMetaDataId()); return; } } diff --git a/genotyping/src/org/labkey/genotyping/Status.java b/genotyping/src/org/labkey/genotyping/Status.java index 999fce34..f3de6baf 100644 --- a/genotyping/src/org/labkey/genotyping/Status.java +++ b/genotyping/src/org/labkey/genotyping/Status.java @@ -17,7 +17,6 @@ import org.labkey.api.collections.IntHashMap; -import java.util.HashMap; import java.util.Map; /** diff --git a/genotyping/src/org/labkey/genotyping/galaxy/GalaxyServer.java b/genotyping/src/org/labkey/genotyping/galaxy/GalaxyServer.java index deac1c3f..e387a00f 100644 --- a/genotyping/src/org/labkey/genotyping/galaxy/GalaxyServer.java +++ b/genotyping/src/org/labkey/genotyping/galaxy/GalaxyServer.java @@ -153,7 +153,7 @@ public DataLibrary createLibrary(String name, @Nullable String description, @Nul assert 1 == list.size(); - return list.get(0); + return list.getFirst(); } diff --git a/genotyping/test/src/org/labkey/test/tests/GenotypingTest.java b/genotyping/test/src/org/labkey/test/tests/GenotypingTest.java index 01950213..8d49401c 100644 --- a/genotyping/test/src/org/labkey/test/tests/GenotypingTest.java +++ b/genotyping/test/src/org/labkey/test/tests/GenotypingTest.java @@ -26,8 +26,6 @@ import org.labkey.test.categories.OConnor; import org.openqa.selenium.NoSuchElementException; -import java.io.File; - @Category({CustomModules.class, OConnor.class}) @BaseWebDriverTest.ClassTimeout(minutes = 9) public class GenotypingTest extends GenotypingBaseTest diff --git a/genotyping/test/src/org/labkey/test/tests/IlluminaTest.java b/genotyping/test/src/org/labkey/test/tests/IlluminaTest.java index 51e25704..4c19411e 100644 --- a/genotyping/test/src/org/labkey/test/tests/IlluminaTest.java +++ b/genotyping/test/src/org/labkey/test/tests/IlluminaTest.java @@ -43,7 +43,6 @@ import java.util.zip.ZipFile; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; @Category({CustomModules.class, OConnor.class}) @BaseWebDriverTest.ClassTimeout(minutes = 8) @@ -187,7 +186,7 @@ private void verifyFASTQExport() throws Exception } int expectedLength = 1088; - assertTrue("Length of file doesn't match expected value of " + expectedLength + ", was: " + count, count == expectedLength); + assertEquals("Length of file doesn't match expected value of " + expectedLength + ", was: " + count, count, expectedLength); } } diff --git a/genotyping/test/src/org/labkey/test/tests/PacBioTest.java b/genotyping/test/src/org/labkey/test/tests/PacBioTest.java index eb3203ff..a02f1977 100644 --- a/genotyping/test/src/org/labkey/test/tests/PacBioTest.java +++ b/genotyping/test/src/org/labkey/test/tests/PacBioTest.java @@ -114,7 +114,7 @@ private void verifyRun(String poolName, Map> poolMap, int DataRegionTable reads = new DataRegionTable("Reads", this); List realRow = reads.getRowDataAsText(importCount); List correctRow = new ArrayList<>(); - correctRow.add(realRow.get(0)); + correctRow.add(realRow.getFirst()); correctRow.addAll(poolMap.get(importCount)); assertEquals("Imported data doesn't match expected for (0-based count) import " + importCount, correctRow, realRow); }