/**********************************************************************************
* $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();
}
}