package extlib.services; import com.ibm.xsp.extlib.social.Person; import com.ibm.xsp.extlib.social.impl.AbstractPeopleDataProvider; import com.ibm.xsp.extlib.social.impl.PersonImpl; /** * Member Data Provider. * * This data provider provides information for a set of user in the database. */ public class MemberDataProvider extends AbstractPeopleDataProvider { private static class MemberData extends PersonImpl.Properties { String thumbnailUrl; } public MemberDataProvider() { } public String getName() { return "Demo App Provider"; } public Object getValue(PersonImpl person, Object prop) { if(prop.equals(Person.FIELD_THUMBNAIL_URL)) { return getData(person).thumbnailUrl; } return null; } public Class<?> getType(PersonImpl person, Object prop) { if(prop.equals(Person.FIELD_THUMBNAIL_URL)) { return String.class; } return null; } public void readValues(PersonImpl[] persons) { for(int i=0; i<persons.length; i++) { getData(persons[i]); } } private MemberData getData(PersonImpl person) { String id = person.getId(); MemberData data = (MemberData)getProperties(id,MemberData.class); if(data==null) { synchronized(getSyncObject()) { data = (MemberData)getProperties(id,MemberData.class); if(data==null) { data = new MemberData(); // Read the thumbnail URL if(id.equals("CN=Frank Adams/O=renovations")) { data.thumbnailUrl = "/FrankAdams.png"; } else if(id.equals("CN=Betty Zechman/O=renovations")) { data.thumbnailUrl = "/BettyZechman.png"; } else if(id.equals("CN=Ted Amado/O=renovations")) { data.thumbnailUrl = "/TedAmado.png"; } else { // We don't have a picture... let's return an unknown one data.thumbnailUrl = "/thumbNoPhoto.png"; } addProperties(id,data); } } } return data; } }