/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/common/trunk/impl/src/java/org/sakaiproject/component/common/edu/person/InetOrgPersonImpl.java $ * $Id: InetOrgPersonImpl.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation. * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.component.common.edu.person; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Blob; import java.sql.SQLException; import org.hibernate.Hibernate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.api.common.edu.person.InetOrgPerson; import org.sakaiproject.api.common.edu.person.OrganizationalPerson; import org.sakaiproject.api.common.edu.person.Person; import org.sakaiproject.component.cover.ServerConfigurationService; /** * @author <a href="mailto:lance@indiana.edu">Lance Speelmon </a> */ public class InetOrgPersonImpl extends OrganizationalPersonImpl implements Person, OrganizationalPerson, InetOrgPerson { private static final Log LOG = LogFactory.getLog(InetOrgPersonImpl.class); /** * @see org.sakaiproject.service.profile.InetOrgPerson#getAudio() */ public BufferedInputStream getAudio() { // TODO implement audio return null; } /** * @param audio * The audio to set. */ public void setAudio(BufferedOutputStream audio) { // TODO implement audio ; } protected String givenName; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getGivenName() */ public String getGivenName() { return givenName; } /** * @param givenName * The givenName to set. */ public void setGivenName(String givenName) { this.givenName = givenName; } protected String homePhone; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getHomePhone() */ public String getHomePhone() { return homePhone; } /** * @param homePhone * The homePhone to set. */ public void setHomePhone(String homePhone) { this.homePhone = homePhone; } protected String homePostalAddress; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getHomePostalAddress() */ public String getHomePostalAddress() { return homePostalAddress; } /** * @param homePostalAddress * The homePostalAddress to set. */ public void setHomePostalAddress(String homePostalAddress) { this.homePostalAddress = homePostalAddress; } protected String initials; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getInitials() */ public String getInitials() { return initials; } /** * @param initials * The initials to set. */ public void setInitials(String initials) { this.initials = initials; } protected byte[] jpegPhoto; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getJpegPhoto() */ public byte[] getJpegPhoto() { return jpegPhoto; } /** * @param jpegPhoto * The jpegPhoto to set. */ public void setJpegPhoto(byte[] jpegPhoto) { this.jpegPhoto = jpegPhoto; } protected String labeledURI; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getLabeledURI() */ public String getLabeledURI() { return labeledURI; } /** * @param labeledURI * The labeledURI to set. */ public void setLabeledURI(String labeledURI) { this.labeledURI = labeledURI; } protected String mail; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getMail() */ public String getMail() { return mail; } /** * @param mail * The mail to set. */ public void setMail(String mail) { this.mail = mail; } protected String manager; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getManager() */ public String getManager() { return manager; } /** * @param manager * The manager to set. */ public void setManager(String manager) { this.manager = manager; } protected String mobile; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getMobile() */ public String getMobile() { return mobile; } /** * @param mobile * The mobile to set. */ public void setMobile(String mobile) { this.mobile = mobile; } protected String organization; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getOrganization() */ public String getOrganization() { return organization; } /** * @param organization * The organization to set. */ public void setOrganization(String organization) { this.organization = organization; } protected String pager; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getPager() */ public String getPager() { return pager; } /** * @param pager * The pager to set. */ public void setPager(String pager) { this.pager = pager; } protected String preferredLanguage; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getPreferredLanguage() */ public String getPreferredLanguage() { return preferredLanguage; } /** * @param preferredLanguage * The preferredLanguage to set. */ public void setPreferredLanguage(String preferredLanguage) { this.preferredLanguage = preferredLanguage; } protected String uid; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getUid() */ public String getUid() { return uid; } /** * @param uid * The uid to set. */ public void setUid(String uid) { this.uid = uid; } protected byte[] userCertificate; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getUserCertificate() */ public byte[] getUserCertificate() { return userCertificate; } /** * @param userCertificate * The userCertificate to set. */ public void setUserCertificate(byte[] userCertificate) { this.userCertificate = userCertificate; } protected byte[] userSMIMECertificate; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getUserSMIMECertificate() */ public byte[] getUserSMIMECertificate() { return userSMIMECertificate; } /** * @param userSMIMECertificate * The userSMIMECertificate to set. */ public void setUserSMIMECertificate(byte[] userSMIMECertificate) { this.userSMIMECertificate = userSMIMECertificate; } protected String carLicense; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getCarLicense() */ public String getCarLicense() { return carLicense; } /** * @param carLicense * The carLicense to set. */ public void setCarLicense(String carLicense) { this.carLicense = carLicense; } protected String displayName; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getDisplayName() */ public String getDisplayName() { return displayName; } /** * @param displayName * The displayName to set. */ public void setDisplayName(String displayName) { this.displayName = displayName; } protected String departmentNumber; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getDepartmentNumber() */ public String getDepartmentNumber() { return departmentNumber; } /** * @param departmentNumber * The departmentNumber to set. */ public void setDepartmentNumber(String departmentNumber) { this.departmentNumber = departmentNumber; } protected String employeeNumber; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getEmployeeNumber() */ public String getEmployeeNumber() { return employeeNumber; } /** * @param employeeNumber * The employeeNumber to set. */ public void setEmployeeNumber(String employeeNumber) { this.employeeNumber = employeeNumber; } protected String employeeType; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getEmployeeType() */ public String getEmployeeType() { return employeeType; } /** * @param employeeType * The employeeType to set. */ public void setEmployeeType(String employeeType) { this.employeeType = employeeType; } protected byte[] userPKCS12; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getUserPKCS12() */ public byte[] getUserPKCS12() { return userPKCS12; } /** * @param userPKCS12 * The userPKCS12 to set. */ public void setUserPKCS12(byte[] userPKCS12) { this.userPKCS12 = userPKCS12; } protected String businessCategory; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getBusinessCategory() */ public String getBusinessCategory() { return businessCategory; } /** * @param businessCategory * The businessCategory to set. */ public void setBusinessCategory(String businessCategory) { this.businessCategory = businessCategory; } protected String x500UniqueIdentifier; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getX500UniqueIdentifier() */ public String getX500UniqueIdentifier() { return x500UniqueIdentifier; } /** * @param uniqueIdentifier * The x500UniqueIdentifier to set. */ public void setX500UniqueIdentifier(String uniqueIdentifier) { x500UniqueIdentifier = uniqueIdentifier; } protected String roomNumber; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getRoomNumber() */ public String getRoomNumber() { return roomNumber; } /** * @param roomNumber * The roomNumber to set. */ public void setRoomNumber(String roomNumber) { this.roomNumber = roomNumber; } protected String secretary; /** * @see org.sakaiproject.service.profile.InetOrgPerson#getSecretary() */ public String getSecretary() { return secretary; } /** * @param secretary * The secretary to set. */ public void setSecretary(String secretary) { this.secretary = secretary; } public Blob getBlobImage() { if (this.jpegPhoto == null || jpegPhoto.length < 1 || ServerConfigurationService.getString("profile.photoRepositoryPath", null) != null) { return null; } return Hibernate.createBlob(this.jpegPhoto); } public void setBlobImage(Blob blobImage) { this.jpegPhoto = toByteArray(blobImage); } private byte[] toByteArray(Blob fromBlob) { if (LOG.isDebugEnabled()) { LOG.debug("toByteArray(Blob " + fromBlob + ")"); } try { if (fromBlob == null || fromBlob.length() < 1) { return null; } } catch (SQLException e1) { LOG.error(e1.getMessage(), e1); } ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { return toByteArray(fromBlob, baos); } catch (Exception e) { LOG.error(e.getMessage(), e); throw new RuntimeException(e); } finally { if (baos != null) { try { baos.close(); } catch (IOException ex) { LOG.error(ex.getMessage(), ex); } } } } private byte[] toByteArray(Blob fromBlob, ByteArrayOutputStream baos) throws SQLException, IOException { if (LOG.isDebugEnabled()) { LOG.debug("toByteArray(Blob " + fromBlob + ", ByteArrayOutputStream " + baos + ")"); } if (fromBlob == null || fromBlob.length() < 1 || ServerConfigurationService.getString("profile.photoRepositoryPath", null) != null) { return null; } byte[] buf = new byte[4000]; InputStream is = fromBlob.getBinaryStream(); try { for (;;) { int dataSize = is.read(buf); if (dataSize == -1) break; baos.write(buf, 0, dataSize); } } finally { if (is != null) { try { is.close(); } catch (IOException ex) { LOG.error(ex.getMessage(), ex); } } } return baos.toByteArray(); } }