/* * 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.plugin.addrbook.msoutlook; import net.java.sip.communicator.service.contactsource.*; import java.util.*; /** * Implements a custom <tt>ContactDetail</tt> for the Address Book of Microsoft * Outlook. * * @author Vincent Lucas */ public class MsOutlookAddrBookContactDetail extends EditableContactDetail { /** * The list of codes used by outlook to identify the property corresponding * to this contact detail. */ private Vector<Long> outlookPropId; /** * Initializes a new <tt>ContactDetail</tt> instance which is to represent a * specific contact address and which is to be optionally labeled with a * specific set of labels. * * @param contactDetailValue the contact detail value to be represented by * the new <tt>ContactDetail</tt> instance * @param category The category of this contact detail. * @param subCategories the set of sub categories with which the new * <tt>ContactDetail</tt> instance is to be labeled. * @param outlookPropId The identifier of the outlook property used to * get/set this contact detail. */ public MsOutlookAddrBookContactDetail( String contactDetailValue, Category category, SubCategory[] subCategories, long outlookPropId) { super(contactDetailValue, category, subCategories); this.outlookPropId = new Vector<Long>(1, 1); this.outlookPropId.add(new Long(outlookPropId)); } /** * If the given contact detail is similar to the current one (same category * and same detail value), then return true. False otherwise. * * @param contactDetail The contact detail to compare with. * * @return True, if the given contact detail is similar to the current one * (same category and same detail value). False otherwise. */ public boolean match(ContactDetail contactDetail) { boolean containsAll = true; if(contactDetail != null) { for(SubCategory subCategory: this.getSubCategories()) { containsAll &= contactDetail.containsSubCategory(subCategory); } for(SubCategory subCategory: contactDetail.getSubCategories()) { containsAll &= this.containsSubCategory(subCategory); } return (containsAll && this.getCategory() == contactDetail.getCategory() && this.getDetail().equals(contactDetail.getDetail())); } return false; } /** * Returns the list of outlook properties corresponding to this contact * detail. * * @return The list of outlook properties corresponding to this contact * detail. */ public Vector<Long> getOutlookPropId() { return this.outlookPropId; } }