22
33import org .apache .commons .collections4 .MultiValuedMap ;
44import org .apache .logging .log4j .Logger ;
5+ import org .labkey .api .collections .CaseInsensitiveHashMap ;
56import org .labkey .api .collections .CaseInsensitiveKeyedHashSetValuedMap ;
67import org .labkey .api .data .AbstractTableInfo ;
78import org .labkey .api .data .TableCustomizer ;
@@ -20,15 +21,26 @@ public void customize(TableInfo tableInfo)
2021 MultiValuedMap <String , String > props = new CaseInsensitiveKeyedHashSetValuedMap <>();
2122 if (tableInfo .getPkColumnNames ().size () > 1 )
2223 {
23- if (tableInfo .getPkColumnNames ().contains ("objectId" ))
24+ final CaseInsensitiveHashMap <String > keys = new CaseInsensitiveHashMap <>();
25+ tableInfo .getPkColumnNames ().forEach (x -> keys .put (x , x ));
26+
27+ if (keys .containsKey ("objectId" ))
2428 {
25- props .put ("primaryKeyField" , "objectId" );
29+ props .put ("primaryKeyField" , keys . get ( "objectId" ) );
2630 }
2731 else if (tableInfo instanceof DatasetTable ds )
2832 {
2933 if (ds .getDataset ().isDemographicData ())
3034 {
31- props .put ("primaryKeyField" , ds .getDataset ().getStudy ().getSubjectColumnName ());
35+ String subjectCol = ds .getDataset ().getStudy ().getSubjectColumnName ();
36+ if (keys .containsKey (subjectCol ))
37+ {
38+ props .put ("primaryKeyField" , keys .get (subjectCol ));
39+ }
40+ else
41+ {
42+ _log .error ("Demographics dataset does not list subject col (" + subjectCol + ") as a PK. Table: " + tableInfo .getName ());
43+ }
3244 }
3345 }
3446 }
0 commit comments