From 5154b441cf5841c45822c44f95a7c116b1950885 Mon Sep 17 00:00:00 2001 From: labkey-nicka Date: Sun, 14 Dec 2025 12:30:34 -0800 Subject: [PATCH] Samples: query for each row to retain order --- .../api/SampleTypeUpdateServiceDI.java | 59 ------------------- 1 file changed, 59 deletions(-) diff --git a/experiment/src/org/labkey/experiment/api/SampleTypeUpdateServiceDI.java b/experiment/src/org/labkey/experiment/api/SampleTypeUpdateServiceDI.java index 1db58f8c260..691ae58ecd5 100644 --- a/experiment/src/org/labkey/experiment/api/SampleTypeUpdateServiceDI.java +++ b/experiment/src/org/labkey/experiment/api/SampleTypeUpdateServiceDI.java @@ -1254,12 +1254,6 @@ public List> getRows(User user, Container container, List> result = new ArrayList<>(keys.size()); for (Map k : keys) { @@ -1270,59 +1264,6 @@ public List> getRows(User user, Container container, List> keys) throws QueryUpdateServiceException - { - List rowIds = new ArrayList<>(); - List lsids = new ArrayList<>(); - Map> namesBySourceId = new HashMap<>(); - int nameCount = 0; - - // Each row could be keyed differently - for (Map row : keys) - { - Long rowId = getMaterialRowId(row); - if (rowId != null) - { - rowIds.add(rowId); - continue; - } - - String lsid = getMaterialLsid(row); - if (lsid != null) - { - lsids.add(lsid); - continue; - } - - String name = getMaterialName(row); - Long materialSourceId = getMaterialSourceId(row); - if (name != null && materialSourceId != null) - { - namesBySourceId.computeIfAbsent(materialSourceId, k -> new ArrayList<>()).add(name); - nameCount++; - continue; - } - - throw new QueryUpdateServiceException("Either RowId, LSID, or Name and MaterialSourceId is required to get Sample Type Material."); - } - - // But we can optimize if they all share the same filter - SimpleFilter filter = null; - if (rowIds.size() == keys.size()) - filter = new SimpleFilter(RowId.fieldKey(), rowIds, CompareType.IN); - else if (lsids.size() == keys.size()) - filter = new SimpleFilter(LSID.fieldKey(), lsids, CompareType.IN); - else if (nameCount == keys.size() && namesBySourceId.size() == 1) - { - // If all rows are being queried by name and share the same material source id, use a single filter - Map.Entry> entry = namesBySourceId.entrySet().iterator().next(); - filter = new SimpleFilter(MaterialSourceId.fieldKey(), entry.getKey()); - filter.addCondition(Name.fieldKey(), entry.getValue(), CompareType.IN); - } - - return filter; - } - @Override protected Map getRow(User user, Container container, Map keys) throws QueryUpdateServiceException {