Some operations in Grouper could be made possible or more efficient if more data were available in the Grouper DB.
- Browse a group's members and sort by name, and page results - currently in Grouper this is not possible for large groups without getting all members and resolving all subjects. An example here is the Grouper UI and looking at members of large groups and paging through them.
- Search for members of a group by substring of name, sort and page results - currently you find subjects in all sources by that substring, and then filter all the results to check for members of the group. An example here is a person finder to see people named "John" who are employees
- Unresolvable subjects are orphaned in Grouper and only the subjectId is known
One suggestion for addressing these use cases is to add some columns to the grouper_member table:
- sort_string0 - keep a string for how this data is sorted
- sort_string4 - keep multiple strings for how this data is sorted (up to 5?) [note, until the subject API is changed to take advantage of this, its not really all that useful)
- search_string_lower - all strings which cause results to be returned for this row
- name - to have information for unresolvable subjects
- description - to have information for unresolvable subjects
These could be used as follows:
- As new subjects are added, populate the fields
- When subjects are resolved, if the subject data is different than the DB data, then populate the fields
- Have a cron which cycles through the members and resolves them. JDBC sources could be very efficient for this
- Can have an interface (spml?) where subjects can be updated based on changes in the source system