Skip to content

Commit b76890c

Browse files
Support BIGINT Primary Keys (#1006)
1 parent 13b2273 commit b76890c

12 files changed

Lines changed: 39 additions & 28 deletions

File tree

Viral_Load_Assay/src/org/labkey/viral_load_assay/assay/ABI7500ImportMethod.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.json.JSONException;
2828
import org.json.JSONObject;
2929
import org.labkey.api.collections.CaseInsensitiveHashMap;
30+
import org.labkey.api.collections.IntHashMap;
3031
import org.labkey.api.data.CompareType;
3132
import org.labkey.api.data.Container;
3233
import org.labkey.api.data.ConvertHelper;
@@ -573,7 +574,7 @@ public void doGenerateTemplate(JSONObject json, HttpServletRequest request, Http
573574
response.setHeader("Pragma", "private");
574575
response.setHeader("Cache-Control", "private");
575576

576-
Map<Integer, String[]> rowMap = new HashMap<>();
577+
Map<Integer, String[]> rowMap = new IntHashMap<>();
577578

578579
int rowIdx = 0;
579580
for (JSONObject row : results)

ehr/src/org/labkey/ehr/EHRManager.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.labkey.api.cache.CacheManager;
2525
import org.labkey.api.collections.CaseInsensitiveHashMap;
2626
import org.labkey.api.collections.CaseInsensitiveHashSet;
27+
import org.labkey.api.collections.IntHashMap;
2728
import org.labkey.api.data.CompareType;
2829
import org.labkey.api.data.Container;
2930
import org.labkey.api.data.ContainerManager;
@@ -108,6 +109,9 @@
108109
import java.util.Set;
109110
import java.util.TreeSet;
110111

112+
import static org.labkey.api.exp.api.ExperimentService.asInteger;
113+
import static org.labkey.api.exp.api.ExperimentService.asLong;
114+
111115
public class EHRManager
112116
{
113117
private static final EHRManager _instance = new EHRManager();
@@ -314,7 +318,7 @@ public List<String> ensureStudyQCStates(Container c, final User u, final boolean
314318
row.put("publicdata", qc[2]);
315319
row = Table.insert(u, ti, row);
316320

317-
qcMap.put((String)row.get("label"), (Integer)row.get("rowid"));
321+
qcMap.put((String)row.get("label"), asInteger(row.get("rowid")));
318322

319323
shouldClearCache = true;
320324
}
@@ -1110,24 +1114,24 @@ private void updatePropertyURI(Domain d, PropertyDescriptor pd) throws SQLExcept
11101114

11111115
//find propertyId
11121116
TableSelector ts = new TableSelector(propertyDescriptor, Collections.singleton("propertyid"), new SimpleFilter(FieldKey.fromString("PropertyURI"), pd.getPropertyURI()), null);
1113-
Integer[] ids = ts.getArray(Integer.class);
1117+
Long[] ids = ts.getArray(Long.class);
11141118
if (ids.length == 0)
11151119
{
11161120
throw new SQLException("Unknown propertyURI: " + pd.getPropertyURI());
11171121
}
1118-
int propertyId = ids[0];
1122+
long propertyId = ids[0];
11191123

11201124
//first ensure the propertyURI exists
11211125
SQLFragment sql = new SQLFragment("select propertyid from exp.propertydomain p where domainId = ? AND propertyid in (select propertyid from exp.propertydescriptor pd where pd.name " + (expSchema.getSqlDialect().isPostgreSQL() ? "ilike" : "like") + " ?)", d.getTypeId(), pd.getName());
11221126
SqlSelector selector = new SqlSelector(expSchema.getScope(), sql);
1123-
List<Integer> oldIds = new ArrayList<>();
1127+
List<Long> oldIds = new ArrayList<>();
11241128

11251129
try (TableResultSet results = selector.getResultSet())
11261130
{
11271131
while (results.next())
11281132
{
11291133
Map<String, Object> row = results.getRowMap();
1130-
oldIds.add((Integer) row.get("propertyid"));
1134+
oldIds.add(asLong(row.get("propertyid")));
11311135
}
11321136
}
11331137

@@ -1170,7 +1174,7 @@ private void updatePropertyURI(Domain d, PropertyDescriptor pd) throws SQLExcept
11701174
executor.execute(updateSql, propertyId, d.getTypeId(), oldIds, minSort);
11711175

11721176
oldIds.remove(propertyId);
1173-
for (Integer id : oldIds)
1177+
for (Long id : oldIds)
11741178
{
11751179
PropertyDescriptor toDelete = OntologyManager.getPropertyDescriptor(id);
11761180
if (toDelete != null)
@@ -1338,7 +1342,7 @@ public boolean canDiscardTask(Container c, User u, String taskId, List<String> e
13381342
{
13391343
DataEntryForm def = getDataEntryFormForTask(c, u, taskId);
13401344

1341-
Map<Integer, EHRQCState> qcStateMap = new HashMap<>();
1345+
Map<Integer, EHRQCState> qcStateMap = new IntHashMap<>();
13421346
for (EHRQCState qc : EHRManager.get().getQCStates(c))
13431347
{
13441348
qcStateMap.put(qc.getRowId(), qc);

ehr/src/org/labkey/ehr/history/DefaultEncountersDataSource.java

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

1818
import org.jetbrains.annotations.NotNull;
19+
import org.labkey.api.collections.StringHashMap;
1920
import org.labkey.api.data.BaseColumnInfo;
2021
import org.labkey.api.data.ColumnInfo;
2122
import org.labkey.api.data.CompareType;
@@ -39,7 +40,6 @@
3940
import java.sql.ResultSet;
4041
import java.sql.SQLException;
4142
import java.util.Date;
42-
import java.util.HashMap;
4343
import java.util.HashSet;
4444
import java.util.List;
4545
import java.util.Map;
@@ -185,7 +185,7 @@ protected Map<String, Map<Integer, Map<Integer, String>>> getSnomedTags(Containe
185185
final Map<FieldKey, ColumnInfo> columns = QueryService.get().getColumns(snomed, colKeys);
186186

187187
TableSelector ts = new TableSelector(snomed, columns.values(), newFilter, null);
188-
final Map<String, Map<Integer, Map<Integer, String>>> snomedMap = new HashMap<>();
188+
final Map<String, Map<Integer, Map<Integer, String>>> snomedMap = new StringHashMap<>();
189189

190190
ts.forEach(new Selector.ForEachBlock<>()
191191
{

ehr/src/org/labkey/ehr/utils/TriggerScriptHelper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.json.JSONArray;
2727
import org.labkey.api.collections.CaseInsensitiveHashMap;
2828
import org.labkey.api.collections.CaseInsensitiveHashSet;
29+
import org.labkey.api.collections.IntHashMap;
2930
import org.labkey.api.data.Aggregate;
3031
import org.labkey.api.data.ColumnInfo;
3132
import org.labkey.api.data.CompareType;
@@ -122,7 +123,7 @@ public class TriggerScriptHelper
122123
protected final static SimpleDateFormat _dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm");
123124

124125
//NOTE: consider moving these to SharedCache, to allow them to be shared across scripts, yet reset from admin console
125-
private final Map<Integer, String> _cachedAccounts = new HashMap<>();
126+
private final Map<Integer, String> _cachedAccounts = new IntHashMap<>();
126127
/**
127128
* Options that can be set in modules using EHR trigger scripts to opt in/out of or alter the behavior
128129
* of certain validations and business logic. If there are specific aspects of the core EHR trigger code that

ehr_billing/src/org/labkey/ehr_billing/query/EHRBillingTriggerHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.labkey.ehr_billing.query;
1717

18+
import org.labkey.api.collections.IntHashMap;
1819
import org.labkey.api.data.CompareType;
1920
import org.labkey.api.data.Container;
2021
import org.labkey.api.data.ContainerManager;
@@ -32,7 +33,6 @@
3233
import org.labkey.ehr_billing.EHR_BillingManager;
3334
import org.labkey.ehr_billing.EHR_BillingSchema;
3435

35-
import java.util.HashMap;
3636
import java.util.Map;
3737

3838
/**
@@ -43,7 +43,7 @@ public class EHRBillingTriggerHelper
4343
{
4444
private final Container _container;
4545
private final User _user;
46-
private final Map<Integer, Map<String, Object>> _cachedCharges = new HashMap<>();
46+
private final Map<Integer, Map<String, Object>> _cachedCharges = new IntHashMap<>();
4747

4848
public EHRBillingTriggerHelper(int userId, String containerId)
4949
{

snd/api-src/org/labkey/api/snd/Package.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.json.JSONArray;
2121
import org.json.JSONObject;
2222
import org.labkey.api.collections.ArrayListMap;
23+
import org.labkey.api.collections.IntHashMap;
2324
import org.labkey.api.data.Container;
2425
import org.labkey.api.gwt.client.model.GWTPropertyDescriptor;
2526
import org.labkey.api.security.User;
@@ -49,7 +50,7 @@ public class Package
4950
private boolean _hasEvent;
5051
private boolean _hasProject;
5152
private Date _modified; // column will be used as a timestamp
52-
private Map<Integer, String> _categories = new HashMap<>();
53+
private Map<Integer, String> _categories = new IntHashMap<>();
5354
private List<GWTPropertyDescriptor> _attributes = new ArrayList<>();
5455
private List<SuperPackage> _subpackages = new ArrayList<>();
5556
private Map<GWTPropertyDescriptor, Object> _extraFields = new HashMap<>();

snd/src/org/labkey/snd/PackageUserSchema.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.jetbrains.annotations.Nullable;
77
import org.labkey.api.collections.CaseInsensitiveHashSet;
88
import org.labkey.api.collections.CaseInsensitiveTreeSet;
9+
import org.labkey.api.collections.IntHashMap;
910
import org.labkey.api.data.AbstractTableInfo;
1011
import org.labkey.api.data.BaseColumnInfo;
1112
import org.labkey.api.data.ColumnInfo;
@@ -92,7 +93,7 @@ public Set<String> getTableNames()
9293
PackageTableInfo createPackageTable(String name)
9394
{
9495
// find domain for name
95-
Map<Integer,Package> pkgs = new HashMap<>();
96+
Map<Integer,Package> pkgs = new IntHashMap<>();
9697
visitAll(p -> {
9798
if (name.equalsIgnoreCase(p.description))
9899
pkgs.put(p.packageId, p);
@@ -291,7 +292,7 @@ void initPackages()
291292
List<SuperPkg> supers = new SqlSelector(getDbSchema(), new SQLFragment(
292293
new SQLFragment("SELECT SuperPkgId, ParentSuperPkgId, Pkgs.PkgId, Description FROM snd.Pkgs INNER JOIN snd.SuperPkgs ON Pkgs.PkgId = SuperPkgs.PkgId WHERE Pkgs.Container = ").appendValue(getContainer())
293294
)).getArrayList(SuperPkg.class);
294-
Map<Integer, Package> map = new HashMap<>();
295+
Map<Integer, Package> map = new IntHashMap<>();
295296
supers.forEach(superPkg -> {
296297
var package_ = map.computeIfAbsent(superPkg.pkgId, id ->
297298
{

snd/src/org/labkey/snd/SNDController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.labkey.api.action.SimpleRedirectAction;
2828
import org.labkey.api.action.SimpleViewAction;
2929
import org.labkey.api.action.SpringActionController;
30+
import org.labkey.api.collections.IntHashMap;
3031
import org.labkey.api.gwt.client.DefaultValueType;
3132
import org.labkey.api.gwt.client.model.GWTPropertyDescriptor;
3233
import org.labkey.api.module.Module;
@@ -188,7 +189,7 @@ public ApiResponse execute(SimpleApiJsonForm form, BindException errors)
188189
JSONArray jsonCategories = json.getJSONArray("categories");
189190
if (null != jsonCategories)
190191
{
191-
Map<Integer, String> categories = new HashMap<>();
192+
Map<Integer, String> categories = new IntHashMap<>();
192193
for (int j = 0; j < jsonCategories.length(); j++)
193194
{
194195
categories.put(jsonCategories.getInt(j), null);
@@ -227,7 +228,7 @@ public ApiResponse execute(SimpleApiJsonForm form, BindException errors)
227228
{
228229
// Get super packages
229230
JSONArray jsonSubPackages = json.getJSONArray("subPackages"); // only first-level children (as super package IDs) should be here
230-
Map<Integer, LinkedList<SuperPackageInfo>> superPkgIdToExtraInfoMap = new HashMap<>(); // uses lists because top-level super package IDs might show up multiple times
231+
Map<Integer, LinkedList<SuperPackageInfo>> superPkgIdToExtraInfoMap = new IntHashMap<>(); // uses lists because top-level super package IDs might show up multiple times
231232
List<Integer> uiSubSuperPkgIds = new ArrayList<>();
232233

233234
// create super package for root, if needed
@@ -301,7 +302,7 @@ public ApiResponse execute(SimpleApiJsonForm form, BindException errors)
301302
{
302303
topLevelSuperPkgs = SNDManager.convertToTopLevelSuperPkgs(getContainer(), getUser(), uiSubSuperPkgIds);
303304
List<SuperPackage> uiSuperPkgs = SNDManager.getSuperPkgs(getContainer(), getUser(), uiSubSuperPkgIds);
304-
Map<Integer, Integer> superPkgIdToPkgIdMap = new HashMap<>();
305+
Map<Integer, Integer> superPkgIdToPkgIdMap = new IntHashMap<>();
305306

306307
// need to get proper package IDs from db since they're not coming in from UI
307308
if (uiSuperPkgs != null)

snd/src/org/labkey/snd/SNDManager.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.labkey.api.cache.CacheManager;
3232
import org.labkey.api.collections.ArrayListMap;
3333
import org.labkey.api.collections.CaseInsensitiveHashMap;
34+
import org.labkey.api.collections.IntHashMap;
3435
import org.labkey.api.data.CompareType;
3536
import org.labkey.api.data.Container;
3637
import org.labkey.api.data.DbScope;
@@ -77,6 +78,7 @@
7778
import org.labkey.api.snd.EventNote;
7879
import org.labkey.api.snd.Package;
7980
import org.labkey.api.snd.PackageDomainKind;
81+
import org.labkey.api.snd.PlainTextNarrativeDisplayColumn;
8082
import org.labkey.api.snd.Project;
8183
import org.labkey.api.snd.ProjectItem;
8284
import org.labkey.api.snd.SNDDomainKind;
@@ -87,7 +89,6 @@
8789
import org.labkey.snd.query.PackagesTable;
8890
import org.labkey.snd.security.QCStateActionEnum;
8991
import org.labkey.snd.security.SNDSecurityManager;
90-
import org.labkey.api.snd.PlainTextNarrativeDisplayColumn;
9192
import org.labkey.snd.trigger.SNDTriggerManager;
9293

9394
import java.sql.SQLException;
@@ -552,7 +553,7 @@ private Map<Integer, String> getPackageCategories(Container c, User u, int pkgId
552553
sql.append(" WHERE PkgId = ?").add(pkgId);
553554
SqlSelector selector = new SqlSelector(schema.getDbSchema(), sql);
554555

555-
Map<Integer, String> categories = new HashMap<>();
556+
Map<Integer, String> categories = new IntHashMap<>();
556557
try (TableResultSet rs = selector.getResultSet())
557558
{
558559
for (Map<String, Object> r : rs)
@@ -592,7 +593,7 @@ private Map<Integer, Map<Integer, String>> getBulkPackageCategories(Container c,
592593
}
593594
SqlSelector selector = new SqlSelector(schema.getDbSchema(), sql);
594595

595-
Map<Integer, Map<Integer, String>> pkgCategoriesByPkgId = new HashMap<>();
596+
Map<Integer, Map<Integer, String>> pkgCategoriesByPkgId = new IntHashMap<>();
596597

597598
try (TableResultSet resultSet = selector.getResultSet())
598599
{
@@ -3364,7 +3365,7 @@ private String generateEventDataNarrative(Container c, User u, Event event, Even
33643365
{
33653366
List<GWTPropertyDescriptor> properties = superPackage.getPkg().getAttributes();
33663367
Map<String, GWTPropertyDescriptor> propsByName = new HashMap<>();
3367-
Map<Integer, GWTPropertyDescriptor> propsById = new HashMap<>();
3368+
Map<Integer, GWTPropertyDescriptor> propsById = new IntHashMap<>();
33683369
for (GWTPropertyDescriptor p : properties)
33693370
{
33703371
propsByName.put(p.getName(), p);
@@ -4210,7 +4211,7 @@ private Map<Integer, Map<Integer, Pair<SuperPackage, Integer>>> getNextLevelEven
42104211
));
42114212

42124213
// Prepare a map for the next level of SuperPackages
4213-
Map<Integer, Map<Integer, Pair<SuperPackage, Integer>>> nextLevelEventDataSuperPkgs = new HashMap<>();
4214+
Map<Integer, Map<Integer, Pair<SuperPackage, Integer>>> nextLevelEventDataSuperPkgs = new IntHashMap<>();
42144215
nextLevelEventDataSuperPkgs.put(eventData.getEventId(), new HashMap<>());
42154216

42164217
// Iterate over child event data and link it to the corresponding child SuperPackage

snd/src/org/labkey/snd/pipeline/SNDDataHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ public void deleteData(ExpData data, Container container, User user)
347347
}
348348

349349
@Override
350-
public void runMoved(ExpData newData, Container container, Container targetContainer, String oldRunLSID, String newRunLSID, User user, int oldDataRowID)
350+
public void runMoved(ExpData newData, Container container, Container targetContainer, String oldRunLSID, String newRunLSID, User user, long oldDataRowID)
351351
{
352352

353353
}

0 commit comments

Comments
 (0)