/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache 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.apache.org/licenses/LICENSE-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 net.java.sip.communicator.service.protocol;
import java.util.*;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.AddressDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.BirthDateDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.DisplayNameDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.EmailAddressDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.FirstNameDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenderDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.ImageDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.LastNameDetail;
import net.java.sip.communicator.service.protocol.ServerStoredDetails.WorkAddressDetail;
/**
* Utility class that would give to interested parties an easy access to some of
* most popular account details, like : first name, last name, birth date, image,
* etc.
*
* @author Yana Stamcheva
*/
public class AccountInfoUtils
{
/**
* Returns the first name of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the first name of the account, to which the given
* accountInfoOpSet belongs.
*/
public static String getFirstName(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
Iterator<GenericDetail> firstNameDetails
= accountInfoOpSet.getDetails(FirstNameDetail.class);
if (firstNameDetails.hasNext())
{
FirstNameDetail firstName
= (FirstNameDetail) firstNameDetails.next();
if (firstName != null)
return firstName.toString();
}
return null;
}
/**
* Returns the last name of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the last name of the account, to which the given
* accountInfoOpSet belongs.
*/
public static String getLastName(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
LastNameDetail lastName = null;
Iterator<GenericDetail> lastNameDetails
= accountInfoOpSet.getDetails(LastNameDetail.class);
if (lastNameDetails.hasNext())
lastName = (LastNameDetail) lastNameDetails.next();
if(lastName == null)
return null;
return lastName.getString();
}
/**
* Returns the display name of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the display name of the account, to which the given
* accountInfoOpSet belongs.
*/
public static String getDisplayName(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
DisplayNameDetail displayName = null;
Iterator<GenericDetail> displayNameDetails
= accountInfoOpSet.getDetails(DisplayNameDetail.class);
if (displayNameDetails.hasNext())
displayName = (DisplayNameDetail) displayNameDetails.next();
if(displayName == null)
return null;
return displayName.getString();
}
/**
* Returns the image of the account, to which the given accountInfoOpSet
* belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the image of the account, to which the given accountInfoOpSet
* belongs.
*/
public static byte[] getImage(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
ImageDetail image = null;
Iterator<GenericDetail> imageDetails
= accountInfoOpSet.getDetails(ImageDetail.class);
if (imageDetails.hasNext())
image = (ImageDetail) imageDetails.next();
return (image != null)
? image.getBytes()
: null;
}
/**
* Returns the birth date of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the birth date of the account, to which the given
* accountInfoOpSet belongs.
*/
public static Calendar getBirthDate(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
BirthDateDetail date = null;
Iterator<GenericDetail> dateDetails
= accountInfoOpSet.getDetails(BirthDateDetail.class);
if (dateDetails.hasNext())
date = (BirthDateDetail) dateDetails.next();
if(date == null)
return null;
return date.getCalendar();
}
/**
* Returns the gender of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the gender of the account, to which the given
* accountInfoOpSet belongs.
*/
public static String getGender(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
GenderDetail gender = null;
Iterator<GenericDetail> genderDetails
= accountInfoOpSet.getDetails(GenderDetail.class);
if (genderDetails.hasNext())
gender = (GenderDetail) genderDetails.next();
if(gender == null)
return null;
return gender.getGender();
}
/**
* Returns the address of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the address of the account, to which the given
* accountInfoOpSet belongs.
*/
public static String getAddress(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
AddressDetail address = null;
Iterator<GenericDetail> addressDetails
= accountInfoOpSet.getDetails(AddressDetail.class);
if (addressDetails.hasNext())
address = (AddressDetail) addressDetails.next();
if(address == null)
return null;
return address.getAddress();
}
/**
* Returns the work address of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the work address of the account, to which the given
* accountInfoOpSet belongs.
*/
public static String getWorkAddress(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
WorkAddressDetail address = null;
Iterator<GenericDetail> addressDetails
= accountInfoOpSet.getDetails(WorkAddressDetail.class);
if (addressDetails.hasNext())
address = (WorkAddressDetail) addressDetails.next();
if(address == null)
return null;
return address.getAddress();
}
/**
* Returns the email address of the account, to which the given
* accountInfoOpSet belongs.
*
* @param accountInfoOpSet The account info operation set corresponding to
* the searched account.
* @return the email address of the account, to which the given
* accountInfoOpSet belongs.
*/
public static String getEmailAddress(
OperationSetServerStoredAccountInfo accountInfoOpSet)
{
EmailAddressDetail address = null;
Iterator<GenericDetail> addressDetails
= accountInfoOpSet.getDetails(EmailAddressDetail.class);
if (addressDetails.hasNext())
address = (EmailAddressDetail) addressDetails.next();
if(address == null)
return null;
return address.getEMailAddress();
}
}