aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberSourceContact.java
blob: d7ec804a40c0e27f10f30a71c75ce5e0b7d3193f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * 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.phonenumbercontactsource;

import net.java.sip.communicator.service.contactsource.*;
import net.java.sip.communicator.service.protocol.*;

import java.util.*;

/**
 * The <tt>PhoneNumberSourceContact</tt> extends the
 * <tt>GenericSourceContact</tt> and represents a contact in the
 * <tt>PhoneNumberContactSource</tt>.
 *
 * @author Yana Stamcheva
 */
public class PhoneNumberSourceContact
    extends SortedGenericSourceContact
{
    /**
     * The display details of this contact.
     */
    private String displayDetails;

    /**
     * The protocol contact we wrap.
     */
    private Contact contact;

    /**
     * Creates an instance of <tt>PhoneNumberSourceContact</tt>.
     *
     * @param parentQuery the parent contact query
     * @param contactSource the parent contact source
     * @param contact the protocol contact corresponding to this source contact
     * information about the phone number corresponding to this source contact
     * @param contactDetails the list of <tt>ContactDetail</tt>-s
     * @param detailDisplayName the display name of the phone number detail
     */
    public PhoneNumberSourceContact(ContactQuery parentQuery,
                                    PhoneNumberContactSource contactSource,
                                    Contact contact,
                                    List<ContactDetail> contactDetails,
                                    String detailDisplayName)
    {
        super(  parentQuery,
                contactSource,
                contact.getDisplayName(),
                contactDetails);

        this.contact = contact;
        displayDetails = detailDisplayName;
        setPresenceStatus(contact.getPresenceStatus());
        setImage(contact.getImage());
    }

    /**
     * Returns the display details of this search contact. This could be any
     * important information that should be shown to the user.
     *
     * @return the display details of the search contact
     */
    @Override
    public String getDisplayDetails()
    {
        return displayDetails;
    }

    /**
     * Compares object display names.
     */
    @Override
    public boolean equals(Object o)
    {
        if(this == o)
            return true;

        if(o == null)
            return false;

        if(o == null || getClass() != o.getClass())
            return false;

        PhoneNumberSourceContact that = (PhoneNumberSourceContact) o;

        String displayName = getDisplayName();
        if(displayName != null ?
                !displayName.equals(that.getDisplayName())
                : that.getDisplayName() != null)
            return false;

        return true;
    }

    @Override
    public int hashCode()
    {
        String dn = getDisplayName();
        if (dn != null)
        {
            return getDisplayName().hashCode();
        }

        return 37;
    }

    /**
     * Returns the protocol contact used.
     * @return the protocol contact used.
     */
    public Contact getContact()
    {
        return contact;
    }
}