package org.mobicents.ipbx.session.call.model;
import javax.servlet.sip.SipServletRequest;
import javax.servlet.sip.SipSession;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.mobicents.ipbx.entity.Binding;
import org.mobicents.ipbx.entity.CallState;
import org.mobicents.ipbx.entity.PstnGatewayAccount;
import org.mobicents.ipbx.entity.Registration;
import org.mobicents.mscontrol.MsConnection;
import org.mobicents.mscontrol.MsEndpoint;
import org.mobicents.mscontrol.MsLink;
@Name("callParticipant")
@Scope(ScopeType.STATELESS)
public class CallParticipant {
private MsConnection msConnection;
private MsLink msLink;
private String name;
private String uri;
private Conference conference;
private CallState callState;
private SipServletRequest initialRequest;
private Registration registration;
private boolean initiator;
private boolean muted;
private boolean onhold;
private Binding binding;
private PstnGatewayAccount pstnGatewayAccount;
public SipServletRequest getInitialRequest() {
return initialRequest;
}
public void setInitialRequest(SipServletRequest request) {
initialRequest = request;
}
CallParticipant() {
}
public SipSession getSipSession() {
if(initialRequest != null)
return initialRequest.getSession();
return null;
}
public CallState getCallState() {
return callState;
}
public void setCallState(CallState callState) {
this.callState = callState;
}
public Conference getConference() {
return conference;
}
public void setConference(Conference conference) {
if(conference == null) {
if(this.conference != null) {
this.conference.removeParticipant(this);
this.conference = conference;
}
} else {
this.conference = conference;
this.conference.addParticipant(this);
}
}
public MsConnection getMsConnection() {
return msConnection;
}
public void setMsConnection(MsConnection msConnection) {
this.msConnection = msConnection;
}
public MsLink getMsLink() {
return msLink;
}
public void setMsLink(MsLink msLink) {
this.msLink = msLink;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public MsEndpoint getPrEndpoint() {
if(msConnection != null) {
return msConnection.getEndpoint();
}
return null;
}
public Registration getRegistration() {
return registration;
}
public void setRegistration(Registration registration) {
this.registration = registration;
}
public boolean isInitiator() {
return initiator;
}
public void setInitiator(boolean initiator) {
this.initiator = initiator;
}
public boolean isMuted() {
return muted;
}
public void setMuted(boolean muted) {
this.muted = muted;
for(CallParticipant cp:conference.getParticipants()) {
WorkspaceStateManager.instance().getWorkspace(cp.getName()).makeStatusDirty();
}
}
public PstnGatewayAccount getPstnGatewayAccount() {
return pstnGatewayAccount;
}
public void setPstnGatewayAccount(PstnGatewayAccount pstnGatewayAccount) {
this.pstnGatewayAccount = pstnGatewayAccount;
}
public String toString() {
return "[uri=" + uri + ", conf=" + conference.getId() + ", name=" + name + "]";
}
public Binding getBinding() {
return binding;
}
public void setBinding(Binding binding) {
this.binding = binding;
}
public boolean isOnhold() {
return onhold;
}
public void setOnhold(boolean onhold) {
this.onhold = onhold;
}
}