Skip to content

Commit 80f48d4

Browse files
Merge 24.11 to 25.3
2 parents a193995 + 24c3938 commit 80f48d4

File tree

6 files changed

+36
-41
lines changed

6 files changed

+36
-41
lines changed

ehr/src/org/labkey/ehr/query/EHRLookupsUserSchema.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@
3636
import org.labkey.api.query.FieldKey;
3737
import org.labkey.api.query.FilteredTable;
3838
import org.labkey.api.query.QueryForeignKey;
39-
import org.labkey.api.query.QueryService;
4039
import org.labkey.api.query.SimpleUserSchema;
41-
import org.labkey.api.query.UserSchema;
4240
import org.labkey.api.security.Group;
4341
import org.labkey.api.security.MemberType;
4442
import org.labkey.api.security.RoleAssignment;
@@ -68,15 +66,12 @@
6866
public class EHRLookupsUserSchema extends SimpleUserSchema
6967
{
7068
public static final String TABLE_AREAS = "areas";
71-
public static final String TABLE_BUILDINGS = "buildings";
7269
public static final String TABLE_CAGE = "cage";
7370
public static final String TABLE_CAGE_POSITIONS = "cage_positions";
7471
public static final String TABLE_CAGE_TYPE = "cage_type";
75-
public static final String TABLE_GEOGRAPHIC_ORIGINS = "geographic_origins";
7672
public static final String TABLE_ROOMS = "rooms";
7773
public static final String TABLE_SNOMED = "snomed";
7874
public static final String TABLE_SNOMED_SUBSET_CODES = "snomed_subset_codes";
79-
public static final String TABLE_TREATMENT_CODES = "treatment_codes";
8075
public static final String TABLE_VETERINARIANS = "veterinarians";
8176

8277
public EHRLookupsUserSchema(User user, Container container, DbSchema dbschema)
@@ -218,7 +213,7 @@ else if (EHRSchema.TABLE_LOOKUP_SETS.equalsIgnoreCase(name))
218213
// By default, any hard tables in the ehr_lookups schema not accounted for above will fall into one of the
219214
// two categories below. Both of these will add a check that makes sure the user has EHRDataAdminPermission
220215
// in order to insert/update/delete on the table. The ContainerScopedTable case is for those tables that
221-
// have a true DB PK or rowid but a User psedoPK that should be accounted for at the container level.
216+
// have a true DB PK or rowid but a User pseudoPK that should be accounted for at the container level.
222217
String pkColName = getPkColName(ti);
223218
if (pkColName != null && !"rowid".equalsIgnoreCase(pkColName) && ti.getColumn("container") != null)
224219
return getContainerScopedTable(name, cf, pkColName, EHRDataAdminPermission.class);
@@ -252,7 +247,7 @@ private String getPkColName(TableInfo ti)
252247

253248
private TableInfo createVeterinariansTable(String name, ContainerFilter cf)
254249
{
255-
FilteredTable ti = new FilteredTable<>(CoreSchema.getInstance().getTableInfoUsersData(), this, cf);
250+
FilteredTable<EHRLookupsUserSchema> ti = new FilteredTable<>(CoreSchema.getInstance().getTableInfoUsersData(), this, cf);
256251
ti.setPublicSchemaName(EHRSchema.EHR_LOOKUPS);
257252

258253
Set<Integer> userIds = new HashSet<>();
@@ -271,9 +266,9 @@ private TableInfo createVeterinariansTable(String name, ContainerFilter cf)
271266
else
272267
{
273268
Group assignedGroup = SecurityManager.getGroup(r.getUserId());
274-
if (assignedGroup != null && !assignedGroup.isProjectGroup())
269+
if (assignedGroup != null)
275270
{
276-
// Add all site groups
271+
// Add all groups, both site and project-scoped
277272
groupsToExpand.add(assignedGroup);
278273
}
279274
}
@@ -293,7 +288,7 @@ private TableInfo createVeterinariansTable(String name, ContainerFilter cf)
293288

294289
ti.addWrapColumn(ti.getRealTable().getColumn("UserId"));
295290
ti.addWrapColumn(ti.getRealTable().getColumn("DisplayName"));
296-
ti.getMutableColumn("UserId").setFk(new QueryForeignKey(QueryService.get().getUserSchema(getUser(), getContainer(), "core"), null, "Users", "UserId", "DisplayName"));
291+
ti.getMutableColumnOrThrow("UserId").setFk(new QueryForeignKey.Builder(this, getDefaultContainerFilter()).schema(CoreSchema.getInstance().getSchemaName()).table("Users"));
297292
ti.setName(name);
298293
ti.setTitle("Veterinarians");
299294

@@ -302,7 +297,7 @@ private TableInfo createVeterinariansTable(String name, ContainerFilter cf)
302297

303298
private TableInfo getContainerScopedTable(String name, ContainerFilter cf, String psuedoPk, @Nullable Class<? extends Permission> perm)
304299
{
305-
EHR_LookupsContainerScopedTable ret = new EHR_LookupsContainerScopedTable<>(this, this.createSourceTable(name), cf, psuedoPk);
300+
EHR_LookupsContainerScopedTable<?> ret = new EHR_LookupsContainerScopedTable<>(this, this.createSourceTable(name), cf, psuedoPk);
306301
if (perm != null)
307302
{
308303
ret.addPermissionMapping(InsertPermission.class, perm);
@@ -314,14 +309,14 @@ private TableInfo getContainerScopedTable(String name, ContainerFilter cf, Strin
314309

315310
private TableInfo getCustomPermissionTable(TableInfo schemaTable, ContainerFilter cf, Class<? extends Permission> perm)
316311
{
317-
EHR_LookupsCustomPermissionsTable ret = new EHR_LookupsCustomPermissionsTable<>(this, schemaTable, cf);
312+
EHR_LookupsCustomPermissionsTable<?> ret = new EHR_LookupsCustomPermissionsTable<>(this, schemaTable, cf);
318313
ret.addPermissionMapping(InsertPermission.class, perm);
319314
ret.addPermissionMapping(UpdatePermission.class, perm);
320315
ret.addPermissionMapping(DeletePermission.class, perm);
321316
return ret.init();
322317
}
323318

324-
private LookupSetTable createForPropertySet(UserSchema us, ContainerFilter cf, String setName, Map<String, Object> map)
319+
private LookupSetTable createForPropertySet(EHRLookupsUserSchema us, ContainerFilter cf, String setName, Map<String, Object> map)
325320
{
326321
SchemaTableInfo table = _dbSchema.getTable(EHRSchema.TABLE_LOOKUPS);
327322
LookupSetTable ret = new LookupSetTable(us, table, cf, setName, map);
@@ -331,7 +326,7 @@ private LookupSetTable createForPropertySet(UserSchema us, ContainerFilter cf, S
331326
return ret.init();
332327
}
333328

334-
private LabworkTypeTable createForLabwork(UserSchema us, ContainerFilter cf, String tableName, String typeName)
329+
private LabworkTypeTable createForLabwork(EHRLookupsUserSchema us, ContainerFilter cf, String tableName, String typeName)
335330
{
336331
SchemaTableInfo table = _dbSchema.getTable(EHRSchema.TABLE_LAB_TESTS);
337332
return new LabworkTypeTable(us, table, cf, tableName, typeName).init();

ehr/src/org/labkey/ehr/query/LabworkTypeTable.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.labkey.api.query.QueryUpdateServiceException;
3636
import org.labkey.api.query.SimpleTableDomainKind;
3737
import org.labkey.api.query.SimpleUserSchema;
38-
import org.labkey.api.query.UserSchema;
3938
import org.labkey.api.query.ValidationException;
4039
import org.labkey.api.security.User;
4140
import org.labkey.api.security.permissions.DeletePermission;
@@ -45,21 +44,21 @@
4544

4645
import java.sql.SQLException;
4746
import java.util.Map;
48-
import java.util.concurrent.Callable;
47+
import java.util.function.Supplier;
4948

5049
/**
5150
* User: bimber
5251
* Date: 3/27/13
5352
* Time: 6:20 PM
5453
*/
55-
public class LabworkTypeTable extends AbstractDataDefinedTable
54+
public class LabworkTypeTable extends AbstractDataDefinedTable<EHRLookupsUserSchema>
5655
{
5756
public static final String CACHE_KEY = LabworkTypeTable.class.getName() + "||types";
5857

5958
private static final String FILTER_FIELD = "testid";
6059
private static final String TYPE_FIELD = "type";
6160

62-
public LabworkTypeTable(UserSchema schema, SchemaTableInfo table, ContainerFilter cf, String tableName, String filterValue)
61+
public LabworkTypeTable(EHRLookupsUserSchema schema, SchemaTableInfo table, ContainerFilter cf, String tableName, String filterValue)
6362
{
6463
super(schema, table, cf, TYPE_FIELD, FILTER_FIELD, tableName, filterValue);
6564
addPermissionMapping(InsertPermission.class, EHRDataAdminPermission.class);
@@ -117,7 +116,7 @@ public QueryUpdateService getUpdateService()
117116

118117
private class LabWorkTableUpdateService extends UpdateService
119118
{
120-
public LabWorkTableUpdateService(SimpleUserSchema.SimpleTable ti)
119+
public LabWorkTableUpdateService(SimpleUserSchema.SimpleTable<EHRLookupsUserSchema> ti)
121120
{
122121
super(ti);
123122
}
@@ -188,19 +187,14 @@ protected void configureTranslator(DataIterator input, final SimpleTranslator it
188187
//append a column that will normalize whitespace in aliases
189188
ColumnInfo aliasColInfo = getRealTable().getColumn(aliasColName);
190189
final int inputIdx = aliasInputIdx;
191-
it.addColumn(aliasColInfo, new Callable()
192-
{
193-
@Override
194-
public Object call()
190+
it.addColumn(aliasColInfo, (Supplier<Object>) () -> {
191+
Object val = it.getInputColumnValue(inputIdx);
192+
if (val instanceof String s)
195193
{
196-
Object val = it.getInputColumnValue(inputIdx);
197-
if (val != null && val instanceof String)
198-
{
199-
val = normalizeAliasString((String)val);
200-
}
201-
202-
return val;
194+
val = normalizeAliasString(s);
203195
}
196+
197+
return val;
204198
});
205199
}
206200
}

ehr/src/org/labkey/ehr/query/LookupSetTable.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.labkey.api.ldk.table.AbstractDataDefinedTable;
2424
import org.labkey.api.query.QueryUpdateService;
2525
import org.labkey.api.query.SimpleUserSchema;
26-
import org.labkey.api.query.UserSchema;
2726

2827
import java.util.Map;
2928

@@ -32,7 +31,7 @@
3231
* Date: 1/31/13
3332
* Time: 4:33 PM
3433
*/
35-
public class LookupSetTable extends AbstractDataDefinedTable
34+
public class LookupSetTable extends AbstractDataDefinedTable<EHRLookupsUserSchema>
3635
{
3736
private static final String CACHE_KEY = LookupSetTable.class.getName() + "||values";
3837

@@ -46,7 +45,7 @@ public static String getCacheKey(Container c)
4645
return CACHE_KEY + "||" + c.getId();
4746
}
4847

49-
public LookupSetTable(UserSchema schema, SchemaTableInfo table, ContainerFilter cf, String setName, Map<String, Object> map)
48+
public LookupSetTable(EHRLookupsUserSchema schema, SchemaTableInfo table, ContainerFilter cf, String setName, Map<String, Object> map)
5049
{
5150
super(schema, table, cf, FILTER_COL, VALUE_COL, setName, setName);
5251

@@ -78,13 +77,13 @@ public LookupSetTable init()
7877
if (keyCol != null)
7978
{
8079
keyCol.setKeyField(true);
81-
getMutableColumn("rowid").setKeyField(false);
80+
getMutableColumnOrThrow("rowid").setKeyField(false);
8281
}
8382
}
8483
else
8584
{
86-
getMutableColumn(VALUE_COL).setKeyField(false);
87-
getMutableColumn("rowid").setKeyField(true);
85+
getMutableColumnOrThrow(VALUE_COL).setKeyField(false);
86+
getMutableColumnOrThrow("rowid").setKeyField(true);
8887
}
8988

9089
if (_titleColumn != null)
@@ -107,7 +106,7 @@ public QueryUpdateService getUpdateService()
107106

108107
protected class EHRLookupsUpdateService extends UpdateService
109108
{
110-
public EHRLookupsUpdateService(SimpleUserSchema.SimpleTable ti)
109+
public EHRLookupsUpdateService(SimpleUserSchema.SimpleTable<EHRLookupsUserSchema> ti)
111110
{
112111
super(ti);
113112
}

ehr/test/src/org/labkey/test/tests/ehr/AbstractEHRTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ abstract public class AbstractEHRTest extends BaseWebDriverTest implements Advan
114114
protected static EHRUser NON_PATHOLOGY_REPORT = new EHRUser("[email protected]","EHR Non Pathology", EHRRole.FULL_UPDATER);
115115
protected static EHRUser INVESTIGATOR = new EHRUser("[email protected]", "EHR Lab", EHRRole.REQUESTER);
116116
protected static EHRUser INVESTIGATOR_PRINCIPAL = new EHRUser("[email protected]", "EHR Lab", EHRRole.DATA_ADMIN);
117+
protected static EHRUser VET = new EHRUser("[email protected]", "EHR Vet", EHRRole.VETERINARIAN);
117118

118119
protected static String REQUESTER_USER = "[email protected]";
119120
protected static String REQUEST_ADMIN_USER ="[email protected]";
@@ -667,6 +668,7 @@ protected void createUsersandPermissions()
667668
_userHelper.createUser(NON_PATHOLOGY_REPORT.getEmail(), true, true);
668669
_userHelper.createUser(INVESTIGATOR.getEmail(), true, true);
669670
_userHelper.createUser(INVESTIGATOR_PRINCIPAL.getEmail(), true, true);
671+
_userHelper.createUser(VET.getEmail(), true, true);
670672
goToEHRFolder();
671673

672674
_permissionsHelper.createPermissionsGroup(DATA_ADMIN.getGroup(), DATA_ADMIN.getEmail());
@@ -679,6 +681,7 @@ protected void createUsersandPermissions()
679681
_permissionsHelper.createPermissionsGroup(NON_PATHOLOGY_REPORT.getGroup(), NON_PATHOLOGY_REPORT.getEmail());
680682
_permissionsHelper.createPermissionsGroup(INVESTIGATOR.getGroup(), INVESTIGATOR.getEmail());
681683
_permissionsHelper.createPermissionsGroup(INVESTIGATOR_PRINCIPAL.getGroup(), INVESTIGATOR_PRINCIPAL.getEmail());
684+
_permissionsHelper.createPermissionsGroup(VET.getGroup(), VET.getEmail());
682685

683686
if (!getContainerPath().equals(getProjectName()))
684687
_permissionsHelper.uncheckInheritedPermissions();
@@ -690,6 +693,7 @@ protected void createUsersandPermissions()
690693
_permissionsHelper.setPermissions(FULL_SUBMITTER.getGroup(), "EHR Data Entry");
691694
_permissionsHelper.setPermissions(FULL_UPDATER.getGroup(), "EHR Data Entry");
692695
_permissionsHelper.setPermissions(REQUEST_ADMIN.getGroup(), "EHR Data Entry");
696+
_permissionsHelper.setPermissions(VET.getGroup(), "EHR Veterinarian");
693697

694698
_permissionsHelper.setPermissions(REQUESTER.getGroup(), "EHR Requestor");
695699
_permissionsHelper.setPermissions(REQUEST_ADMIN.getGroup(), "EHR Request Admin");
@@ -1015,7 +1019,8 @@ public enum EHRRole
10151019
BASIC_SUBMITTER ("EHR Basic Submitter"),
10161020
FULL_SUBMITTER ("EHR Full Submitter"),
10171021
FULL_UPDATER ("EHR Full Updater"),
1018-
REQUEST_ADMIN ("EHR Request Admin");
1022+
REQUEST_ADMIN ("EHR Request Admin"),
1023+
VETERINARIAN("EHR Veterinarian");
10191024

10201025
private final String name;
10211026

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3884,7 +3884,7 @@ public Map<Integer, Event> getBulkEvents(Container c, User u, List<Integer> even
38843884
List<EventData> sortedEventData = eventData
38853885
.get(event.getEventId())
38863886
.stream()
3887-
.sorted(Comparator.comparing((EventData e) -> Integer.toString(e.getSuperPkgId()))).collect(Collectors.toList());
3887+
.sorted(Comparator.comparing((EventData e) -> Integer.toString(e.getEventDataId()))).collect(Collectors.toList());
38883888
event.setEventData(sortedEventData);
38893889
}
38903890

snd/src/org/labkey/snd/query/EventsTable.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,12 @@ public int mergeRows(User user, Container container, DataIteratorBuilder rows, B
146146
Set<Integer> eventIds = handleNarrativeCache(rows, configParameters, errors);
147147

148148
int result = 0;
149+
int maxMergeRows = SNDManager.MAX_MERGE_ROWS * 10;
150+
149151
// Large merge triggers importRows path
150-
if (eventIds.size() > SNDManager.MAX_MERGE_ROWS)
152+
if (eventIds.size() > maxMergeRows)
151153
{
152-
log.info("More than " + SNDManager.MAX_MERGE_ROWS + " rows. using importRows method.");
154+
log.info("More than " + maxMergeRows + " rows. using importRows method.");
153155
result = super.importRows(user, container, rows, errors, configParameters, extraScriptContext);
154156
}
155157
else

0 commit comments

Comments
 (0)