/*
* 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.*;
/**
* A description of a conference call that can be dialed into. Contains an
* URI and additional parameters to use.
*
* @author Boris Grozev
*/
public class ConferenceDescription
{
/**
* The URI of the conference.
*/
private String uri;
/**
* The subject of the conference.
*/
private String subject;
/**
* The call ID to use to call into the conference.
*/
private String callId;
/**
* The password to use to call into the conference.
*/
private String password;
/**
* The name of the conference.
*/
private String displayName;
/**
* Whether the conference is available or not.
*/
private boolean available = true;
/**
* The transport methods supported for calling into the conference.
*
* If the set is empty, the intended interpretation is that it is up to the
* caller to chose an appropriate transport.
*/
private Set<String> transports = new HashSet<String>();
/**
* Creates a new instance with the specified <tt>uri</tt>, <tt>callId</tt>
* and <tt>password</tt>.
* @param uri the <tt>uri</tt> to set.
* @param callId the <tt>callId</tt> to set.
* @param password the <tt>auth</tt> to set.
*/
public ConferenceDescription(String uri, String callId, String password)
{
this.uri = uri;
this.callId = callId;
this.password = password;
}
/**
* Creates a new instance with the specified <tt>uri</tt> and <tt>callId</tt>
* @param uri the <tt>uri</tt> to set.
* @param callId the <tt>callId</tt> to set.
*/
public ConferenceDescription(String uri, String callId)
{
this(uri, callId, null);
}
/**
* Creates a new instance with the specified <tt>uri</tt>.
* @param uri the <tt>uri</tt> to set.
*/
public ConferenceDescription(String uri)
{
this(uri, null, null);
}
/**
* Creates a new instance.
*/
public ConferenceDescription()
{
this(null, null, null);
}
/**
* Returns the display name of the conference.
* @return the display name
*/
public String getDisplayName()
{
return displayName;
}
/**
* Sets the display name of the conference.
* @param displayName the display name to set
*/
public void setDisplayName(String displayName)
{
this.displayName = displayName;
}
/**
* Gets the uri of this <tt>ConferenceDescription</tt>.
* @return the uri of this <tt>ConferenceDescription</tt>.
*/
public String getUri()
{
return uri;
}
/**
* Sets the uri of this <tt>ConferenceDescription</tt>.
* @param uri the value to set
*/
public void setUri(String uri)
{
this.uri = uri;
}
/**
* Gets the subject of this <tt>ConferenceDescription</tt>.
* @return the subject of this <tt>ConferenceDescription</tt>.
*/
public String getSubject()
{
return subject;
}
/**
* Sets the subject of this <tt>ConferenceDescription</tt>.
* @param subject the value to set
*/
public void setSubject(String subject)
{
this.subject = subject;
}
/**
* Gets the call ID of this <tt>ConferenceDescription</tt>
* @return the call ID of this <tt>ConferenceDescription</tt>
*/
public String getCallId()
{
return callId;
}
/**
* Sets the call ID of this <tt>ConferenceDescription</tt>.
* @param callId the value to set
*/
public void setCallId(String callId)
{
this.callId = callId;
}
/**
* Gets the password of this <tt>ConferenceDescription</tt>
* @return the password of this <tt>ConferenceDescription</tt>
*/
public String getPassword()
{
return password;
}
/**
* Sets the auth of this <tt>ConferenceDescription</tt>.
* @param password the value to set
*/
public void setPassword(String password)
{
this.password = password;
}
/**
* Checks if the conference is available.
* @return <tt>true</tt> iff the conference is available.
*/
public boolean isAvailable()
{
return available;
}
/**
* Sets the availability of this <tt>ConferenceDescription</tt>.
* @param available the value to set
*/
public void setAvailable(boolean available)
{
this.available = available;
}
/**
* Adds a <tt>Transport</tt> to the set of <tt>Transport</tt>s supported
* by the conference.
* @param transport the <tt>Transport</tt> to add.
*/
public void addTransport(String transport)
{
transports.add(transport);
}
/**
* Checks whether <tt>transport</tt> is supported by this
* <tt>ConferenceDescription</tt>. If the set of transports for this
* <tt>ConferenceDescription</tt> is empty, always returns true.
* @param transport the <tt>Transport</tt> to check.
* @return <tt>true</tt> if <tt>transport</tt> is supported by this
* <tt>ConferenceDescription</tt>
*/
public boolean supportsTransport(String transport)
{
/*
* An empty list means that all transports are supported.
*/
if (transports.isEmpty())
return true;
return transports.contains(transport);
}
/**
* Returns the transports supported by this <tt>ConferenceDescription</tt>
* @return the supported by this <tt>ConferenceDescription</tt>
*/
public Set<String> getSupportedTransports()
{
return new HashSet<String>(transports);
}
/**
* {@inheritDoc}
*/
@Override
public String toString()
{
return "ConferenceDescription(uri="+uri+"; callid="+callId+")";
}
/**
* Checks if two <tt>ConferenceDescription</tt> instances have the same
* call id, URI and supported transports.
*
* @param cd1 the first <tt>ConferenceDescription</tt> instance.
* @param cd2 the second <tt>ConferenceDescription</tt> instance.
* @return <tt>true</tt> if the <tt>ConferenceDescription</tt> instances
* have the same call id, URI and supported transports. Otherwise
* <tt>false</tt> is returned.
*/
public boolean compareConferenceDescription(ConferenceDescription cd)
{
return (getCallId().equals(cd.getCallId())
&& getUri().equals(cd.getUri())
&& getSupportedTransports().equals(
cd.getSupportedTransports()));
}
}