Skip to Content.
Sympa Menu

grouper-users - Re: [grouper-users] composite value for the description attribute of person subjects?

Subject: Grouper Users - Open Discussion List

List archive

Re: [grouper-users] composite value for the description attribute of person subjects?


Chronological Thread 
  • From: "GW Brown, Information Systems and Computing" <>
  • To: ,
  • Subject: Re: [grouper-users] composite value for the description attribute of person subjects?
  • Date: Tue, 16 Feb 2010 16:28:45 +0000

Hi Dominique,

Responses below.

Gary

--On 16 February 2010 16:30 +0100 Dominique Petitpierre <> wrote:

Hello,

On the Grouper Wiki I noticed that some sites display a composite
value for each person subject members of a group, e.g.

Michael Christopher Hyzer (chyzer, 12345678) Pennpay, Staff

This is very informative and helps group managers to avoid confusion
between homonyms.

It is possible to construct a "description" attribute from many source
fields with a SQL query when the JDBC source adapter is used, but I
did not find a simple way to configure Grouper to do this when using
the JNDI source adapter, and adding a new attribute on the LDAP side
is not a practical option.

This was discussed on grouper-users some time ago in the following
thread (item 3.):
https://mail.internet2.edu/wws/arc/grouper-users/2008-07/msg00032.html

Chris Hyzer <
>
mentionned
(cf.
https://mail.internet2.edu/wws/arc/grouper-users/2008-07/msg00035.html):

| Or we could make a change request to allow multiple fields in this
| config or the media.properties one...

and "GW Brown, Information Systems and Computing" <
>
added
(cf
https://mail.internet2.edu/wws/arc/grouper-users/2008-07/msg00039.html):

| Rather than add UI configuration through media.properties, having
| 'virtual attributes' in the Subject API may be preferable so that
| any Subject API client can use the same mechanism to combine
| attributes.

It would be a useful feature for sites that use the JNDI source
adapter for the Subject API.

- Has this been done? I.e. is there a way to specify a composite value
for the description attribute when using the JNDI source adapter?
No I don't think this has been done, and it would be useful.


Not finding a way to configure it I followed the advice to modify the
JSP code for the Admin UI (and the java code for the new Lite UI), to
display the "name" and "subjectId" Grouper attributes in addition to
the "description" attribute:

diff grouper-ui-1.5.1/webapp/WEB-INF/jsp/subjectView.jsp{.01,}
12c12
< /></c:if><c:if test="${empty inLink}"><span class="<c:out
value="${viewObject.subjectType}"/>Subject"></c:if><c:out
value="${viewObject[mediaMap[attrKey]]}" /><c:if test="${empty
inLink}"></span></c:if>
---
/></c:if><c:if test="${empty inLink}"><span class="<c:out
value="${viewObject.subjectType}"/>Subject"></c:if><c:if
test="${viewObject.subjectType=='person'}"><c:out
value="${viewObject['description']} (${viewObject['name']},
${viewObject['subjectId']})" /></c:if><c:if
test="${viewObject.subjectType!='person'}"><c:out
value="${viewObject[mediaMap[attrKey]]}" /></c:if><c:if
test="${empty inLink}"></span></c:if>

This displays the person subjects in the Admin UI as
description (name, subjectId)
e.g.
Michael Christopher Hyzer (chyzer, 12345678)

diff
grouper-ui-1.5.1/java/src/edu/internet2/middleware/grouper/ui/util/Groupe
rUiUtils.java{.01,} 1006c1006,1011
< label = subject.getDescription();
---
if ("person".equals(subject.getType().getName())) {
label = subject.getDescription() + " (" + subject.getName() + ")";
} else {
label = subject.getDescription();
}


and this displays the person subjects in the Lite UI as
description (name)
e.g.
Michael Christopher Hyzer (chyzer)

- Is this workaround reasonable? (i.e. will it work in all cases and
not break anything)?
The Admin UI was designed so that different templates could be used in different contexts - so I consider it valid to adapt templates in the way described on the Wiki. Once you do start to use different templates then it may be necessary to make changes in more than one place, though is often possible to construct new templates by including existing templates.

I don't consider changing Java to be that reasonable - unless it has been designed to use interfaces / subclasses to override some features.

We haven't looked at more closely integrating some of the templates for the Admin and Lite UIs, but the use of virtual attributes is likely to be an easier solution

- Should "webapp/WEB-INF/jsp/subjectSearchResultView.jsp" also be
modified? (It does not seem to be used anywhere.)

It is used when displaying 'Search' results - if you look in the source you'll see:
<!-- view=subjectSearchResult
object type=I2miSubject
from key=subject.view.subjectSearchResult
dynamicTile=/WEB-INF/jsp/subjectSearchResultView.jsp
--> <!--start:/WEB-INF/jsp/subjectSearchResultView.jsp-->



Currently this workaround is limited to use only the three Grouper
attributes defined in the subject API source.xml configuration file
(SubjectID_AttributeType, Name_AttributeType,
Description_AttributeType).

- Is there a way to use the other attributes declared in source.xml
(e.g <attribute>employeeType</attribute>) in this JSP or java code?
You should be able to use getAttribute methods on subject objects - though bear in mind that these are allowed to be multi-valued

In any case, modifying source code instead of configuring in
properties or xml files might not be very stable across releases and I
hope that the feature discussed above will be available!
Hopefully we can discuss this on the next conference call.

Best regards,
Dominique
--
Mr Dominique Petitpierre, Dominique.Petitpierre(at)unige.ch
Division Informatique, University of Geneva, Switzerland



----------------------
GW Brown, Information Systems and Computing




Archive powered by MHonArc 2.6.16.

Top of Page