package org.mobicents.javax.media.mscontrol;
import java.util.ArrayList;
import java.util.List;
import javax.media.mscontrol.MediaConfig;
import javax.media.mscontrol.MediaConfigException;
import javax.media.mscontrol.Parameter;
import javax.media.mscontrol.Parameters;
import javax.media.mscontrol.SupportedFeatures;
import javax.media.mscontrol.join.JoinableStream.StreamType;
import org.mobicents.javax.media.mscontrol.mediagroup.PlayerEventDetectorFactory;
import org.mobicents.javax.media.mscontrol.mediagroup.RecorderEventDetectorFactory;
import org.mobicents.javax.media.mscontrol.mediagroup.signals.SignalDetectorEventDetectorFactory;
import org.mobicents.jsr309.mgcp.MgcpWrapper;
public class MediaConfigImpl implements MediaConfig {
private SupportedFeaturesImpl suppFeat = null;
private MgcpWrapper mgcpWrapper = null;
private List<DefaultEventGeneratorFactory> playerGeneFactList = null;
private List<PlayerEventDetectorFactory> playerDetFactList = null;
private List<DefaultEventGeneratorFactory> recorderGeneFactList = null;
private List<RecorderEventDetectorFactory> recorderDetFactList = null;
private List<DefaultEventGeneratorFactory> sigDeteEveGeneFactList = null;
private List<SignalDetectorEventDetectorFactory> SigDeteEveDetFactList = null;
private boolean recorder = false;
private boolean player = false;
private boolean signalgenerator = false;
private boolean signaldetector = false;
private ParametersImpl parameters = null;
private XMLParser parser = null;
public MediaConfigImpl(MgcpWrapper mgcpWrapper) {
this.mgcpWrapper = mgcpWrapper;
this.parser = new XMLParser();
}
public MediaConfig createCustomizedClone(Parameters argParams) throws MediaConfigException {
ParametersImpl newParams = new ParametersImpl();
newParams.putAll(this.parameters);
// TODO : What about new Parameter which are not existing in this params? Ignore or add them as well? As of now
// its ignored
for (Parameter argP : argParams.keySet()) {
for (Parameter p : newParams.keySet()) {
if (p.equals(argP)) {
newParams.put(p, argParams.get(p));
}
}
}
MediaConfigImpl configClone = new MediaConfigImpl(this.mgcpWrapper);
SupportedFeaturesImpl supFeat = new SupportedFeaturesImpl();
supFeat.setParameter(newParams.keySet());
configClone.setParameters(newParams);
if (this.playerGeneFactList != null) {
List<DefaultEventGeneratorFactory> list = new ArrayList<DefaultEventGeneratorFactory>();
list.addAll(this.playerGeneFactList);
configClone.setPlayerGeneFactList(list);
configClone.setPlayer(true);
}
if (this.playerDetFactList != null) {
List<PlayerEventDetectorFactory> list = new ArrayList<PlayerEventDetectorFactory>();
list.addAll(playerDetFactList);
configClone.setPlayerDetFactList(list);
}
if (this.recorderGeneFactList != null) {
List<DefaultEventGeneratorFactory> list = new ArrayList<DefaultEventGeneratorFactory>();
list.addAll(this.recorderGeneFactList);
configClone.setRecorderGeneFactList(list);
configClone.setRecorder(true);
}
if (this.recorderDetFactList != null) {
List<RecorderEventDetectorFactory> list = new ArrayList<RecorderEventDetectorFactory>();
list.addAll(recorderDetFactList);
configClone.setRecorderDetFactList(list);
}
if (this.sigDeteEveGeneFactList != null) {
List<DefaultEventGeneratorFactory> list = new ArrayList<DefaultEventGeneratorFactory>();
list.addAll(this.sigDeteEveGeneFactList);
configClone.setSigDeteEveGeneFactList(list);
configClone.setSignaldetector(true);
}
if (this.SigDeteEveDetFactList != null) {
List<SignalDetectorEventDetectorFactory> list = new ArrayList<SignalDetectorEventDetectorFactory>();
list.addAll(SigDeteEveDetFactList);
configClone.setSigDeteEveDetFactList(list);
configClone.setSignaldetector(true);
}
return configClone;
}
public SupportedFeatures getSupportedFeatures() {
return suppFeat;
}
protected void setSupportedFeatures(SupportedFeatures suppFeat) {
this.suppFeat = (SupportedFeaturesImpl) suppFeat;
}
public boolean hasStream(StreamType arg0) {
// TODO Auto-generated method stub
return false;
}
public String marshall() {
return this.parser.serialize(this);
}
public List<DefaultEventGeneratorFactory> getPlayerGeneFactList() {
return playerGeneFactList;
}
protected void setPlayerGeneFactList(List<DefaultEventGeneratorFactory> playerGeneFactList) {
this.playerGeneFactList = playerGeneFactList;
}
public List<PlayerEventDetectorFactory> getPlayerDetFactList() {
return playerDetFactList;
}
protected void setPlayerDetFactList(List<PlayerEventDetectorFactory> playerDetFactList) {
this.playerDetFactList = playerDetFactList;
}
public List<DefaultEventGeneratorFactory> getRecorderGeneFactList() {
return recorderGeneFactList;
}
protected void setRecorderGeneFactList(List<DefaultEventGeneratorFactory> recorderGeneFactList) {
this.recorderGeneFactList = recorderGeneFactList;
}
public List<RecorderEventDetectorFactory> getRecorderDetFactList() {
return recorderDetFactList;
}
protected void setRecorderDetFactList(List<RecorderEventDetectorFactory> recorderDetFactList) {
this.recorderDetFactList = recorderDetFactList;
}
public boolean isRecorder() {
return recorder;
}
protected void setRecorder(boolean recorder) {
this.recorder = recorder;
}
public boolean isPlayer() {
return player;
}
protected void setPlayer(boolean player) {
this.player = player;
}
public boolean isSignalgenerator() {
return signalgenerator;
}
protected void setSignalgenerator(boolean signalgenerator) {
this.signalgenerator = signalgenerator;
}
public boolean isSignaldetector() {
return signaldetector;
}
protected void setSignaldetector(boolean signaldetector) {
this.signaldetector = signaldetector;
}
public ParametersImpl getParameters() {
return parameters;
}
protected void setParameters(ParametersImpl parameters) {
this.parameters = parameters;
}
public List<DefaultEventGeneratorFactory> getSigDeteEveGeneFactList() {
return sigDeteEveGeneFactList;
}
protected void setSigDeteEveGeneFactList(List<DefaultEventGeneratorFactory> sigDeteEveGeneFactList) {
this.sigDeteEveGeneFactList = sigDeteEveGeneFactList;
}
public List<SignalDetectorEventDetectorFactory> getSigDeteEveDetFactList() {
return SigDeteEveDetFactList;
}
protected void setSigDeteEveDetFactList(List<SignalDetectorEventDetectorFactory> sigDeteEveDetFactList) {
SigDeteEveDetFactList = sigDeteEveDetFactList;
}
}