// Path: src/main/java/net/combase/desktopcrm/domain/Settings.java
// public class Settings implements Serializable
// {
//     /**
//      * 
//      */
//     private static final long serialVersionUID = -2756760963012353808L;
//     private String crmUrl;
//     private String user;
//     private String password;
//     private int gmtOffset = 0;
//     private String accountCriteria;
//     private String asteriskHost;
//     private String asteriskUser;
//     private String asteriskPassword;
//     private String asteriskExtension;
// 
//     private String dialUrl;
// 
//     private boolean callReminder = true;
//     private boolean meetingReminder = true;
//     private boolean taskReminder = true;
//     private boolean leadReminder = true;
//     private boolean opportunityReminder = true;
//     private boolean caseReminder = true;
// 
//     public boolean isMeetingReminder()
//     {
// 	return meetingReminder;
//     }
// 
//     public void setMeetingReminder(boolean meetingReminder)
//     {
// 	this.meetingReminder = meetingReminder;
//     }
// 
//     public String getDialUrl()
//     {
// 	return dialUrl;
//     }
// 
//     public void setDialUrl(String dialUrl)
//     {
// 	this.dialUrl = dialUrl;
//     }
// 
//     public String getAsteriskHost()
//     {
// 	return asteriskHost;
//     }
// 
//     public void setAsteriskHost(String asteriskHost)
//     {
// 	this.asteriskHost = asteriskHost;
//     }
// 
//     public String getAsteriskUser()
//     {
// 	return asteriskUser;
//     }
// 
//     public void setAsteriskUser(String asteriskUser)
//     {
// 	this.asteriskUser = asteriskUser;
//     }
// 
//     public String getAsteriskPassword()
//     {
// 	return asteriskPassword;
//     }
// 
//     public void setAsteriskPassword(String asteriskPassword)
//     {
// 	this.asteriskPassword = asteriskPassword;
//     }
// 
//     public String getAsteriskExtension()
//     {
// 	return asteriskExtension;
//     }
// 
//     public void setAsteriskExtension(String asteriskExtension)
//     {
// 	this.asteriskExtension = asteriskExtension;
//     }
// 
//     public boolean isCallReminder()
//     {
// 	return callReminder;
//     }
// 
//     public void setCallReminder(boolean callReminder)
//     {
// 	this.callReminder = callReminder;
//     }
// 
//     public boolean isTaskReminder()
//     {
// 	return taskReminder;
//     }
// 
//     public void setTaskReminder(boolean taskReminder)
//     {
// 	this.taskReminder = taskReminder;
//     }
// 
//     public boolean isLeadReminder()
//     {
// 	return leadReminder;
//     }
// 
//     public void setLeadReminder(boolean leadReminder)
//     {
// 	this.leadReminder = leadReminder;
//     }
// 
//     public boolean isOpportunityReminder()
//     {
// 	return opportunityReminder;
//     }
// 
//     public void setOpportunityReminder(boolean opportunityReminder)
//     {
// 	this.opportunityReminder = opportunityReminder;
//     }
// 
//     public boolean isCaseReminder()
//     {
// 	return caseReminder;
//     }
// 
//     public void setCaseReminder(boolean caseReminder)
//     {
// 	this.caseReminder = caseReminder;
//     }
// 
//     public String getAccountCriteria()
//     {
// 	return accountCriteria;
//     }
// 
//     public void setAccountCriteria(String accountCriteria)
//     {
// 	this.accountCriteria = accountCriteria;
//     }
// 
//     public int getGmtOffset()
//     {
// 	return gmtOffset;
//     }
// 
//     public void setGmtOffset(int gmtOffset)
//     {
// 	this.gmtOffset = gmtOffset;
//     }
// 
//     public String getCrmUrl()
//     {
// 	return crmUrl;
//     }
// 
//     public void setCrmUrl(String crmUrl)
//     {
// 	this.crmUrl = crmUrl;
//     }
// 
//     public String getUser()
//     {
// 	return user;
//     }
// 
//     public void setUser(String user)
//     {
// 	this.user = user;
//     }
// 
//     public String getPassword()
//     {
// 	return password;
//     }
// 
//     public void setPassword(String password)
//     {
// 	this.password = password;
//     }
// 
// }


import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
import org.asteriskjava.live.AsteriskChannel;
import org.asteriskjava.live.AsteriskServer;
import org.asteriskjava.live.AsteriskServerListener;
import org.asteriskjava.live.CallerId;
import org.asteriskjava.live.DefaultAsteriskServer;
import org.asteriskjava.live.Extension;
import org.asteriskjava.live.ManagerCommunicationException;
import org.asteriskjava.live.MeetMeUser;
import net.combase.desktopcrm.domain.Settings;
/**
 * 
 */
package net.combase.desktopcrm.data;






/**
 * yealink call url:
 * http://10.1.0.11/cgi-bin/ConfigManApp.com?number=
 * 
 * @author "Till Freier"
 */
public final class AsteriskManager
{

	public interface AsteriskCallEventListener
	{
		public void incomingCall(String number);

		public void outgoingCall(String number);
	}

	private static AsteriskServer asteriskServer = null;

	private static String extension = "";

	private static List<AsteriskCallEventListener> listeners = new ArrayList<>();

	private AsteriskManager()
	{
		super();
	}


	public static void dial(String number)
	{
// Path: src/main/java/net/combase/desktopcrm/domain/Settings.java
// public class Settings implements Serializable
// {
//     /**
//      * 
//      */
//     private static final long serialVersionUID = -2756760963012353808L;
//     private String crmUrl;
//     private String user;
//     private String password;
//     private int gmtOffset = 0;
//     private String accountCriteria;
//     private String asteriskHost;
//     private String asteriskUser;
//     private String asteriskPassword;
//     private String asteriskExtension;
// 
//     private String dialUrl;
// 
//     private boolean callReminder = true;
//     private boolean meetingReminder = true;
//     private boolean taskReminder = true;
//     private boolean leadReminder = true;
//     private boolean opportunityReminder = true;
//     private boolean caseReminder = true;
// 
//     public boolean isMeetingReminder()
//     {
// 	return meetingReminder;
//     }
// 
//     public void setMeetingReminder(boolean meetingReminder)
//     {
// 	this.meetingReminder = meetingReminder;
//     }
// 
//     public String getDialUrl()
//     {
// 	return dialUrl;
//     }
// 
//     public void setDialUrl(String dialUrl)
//     {
// 	this.dialUrl = dialUrl;
//     }
// 
//     public String getAsteriskHost()
//     {
// 	return asteriskHost;
//     }
// 
//     public void setAsteriskHost(String asteriskHost)
//     {
// 	this.asteriskHost = asteriskHost;
//     }
// 
//     public String getAsteriskUser()
//     {
// 	return asteriskUser;
//     }
// 
//     public void setAsteriskUser(String asteriskUser)
//     {
// 	this.asteriskUser = asteriskUser;
//     }
// 
//     public String getAsteriskPassword()
//     {
// 	return asteriskPassword;
//     }
// 
//     public void setAsteriskPassword(String asteriskPassword)
//     {
// 	this.asteriskPassword = asteriskPassword;
//     }
// 
//     public String getAsteriskExtension()
//     {
// 	return asteriskExtension;
//     }
// 
//     public void setAsteriskExtension(String asteriskExtension)
//     {
// 	this.asteriskExtension = asteriskExtension;
//     }
// 
//     public boolean isCallReminder()
//     {
// 	return callReminder;
//     }
// 
//     public void setCallReminder(boolean callReminder)
//     {
// 	this.callReminder = callReminder;
//     }
// 
//     public boolean isTaskReminder()
//     {
// 	return taskReminder;
//     }
// 
//     public void setTaskReminder(boolean taskReminder)
//     {
// 	this.taskReminder = taskReminder;
//     }
// 
//     public boolean isLeadReminder()
//     {
// 	return leadReminder;
//     }
// 
//     public void setLeadReminder(boolean leadReminder)
//     {
// 	this.leadReminder = leadReminder;
//     }
// 
//     public boolean isOpportunityReminder()
//     {
// 	return opportunityReminder;
//     }
// 
//     public void setOpportunityReminder(boolean opportunityReminder)
//     {
// 	this.opportunityReminder = opportunityReminder;
//     }
// 
//     public boolean isCaseReminder()
//     {
// 	return caseReminder;
//     }
// 
//     public void setCaseReminder(boolean caseReminder)
//     {
// 	this.caseReminder = caseReminder;
//     }
// 
//     public String getAccountCriteria()
//     {
// 	return accountCriteria;
//     }
// 
//     public void setAccountCriteria(String accountCriteria)
//     {
// 	this.accountCriteria = accountCriteria;
//     }
// 
//     public int getGmtOffset()
//     {
// 	return gmtOffset;
//     }
// 
//     public void setGmtOffset(int gmtOffset)
//     {
// 	this.gmtOffset = gmtOffset;
//     }
// 
//     public String getCrmUrl()
//     {
// 	return crmUrl;
//     }
// 
//     public void setCrmUrl(String crmUrl)
//     {
// 	this.crmUrl = crmUrl;
//     }
// 
//     public String getUser()
//     {
// 	return user;
//     }
// 
//     public void setUser(String user)
//     {
// 	this.user = user;
//     }
// 
//     public String getPassword()
//     {
// 	return password;
//     }
// 
//     public void setPassword(String password)
//     {
// 	this.password = password;
//     }
// 
// }


// Path: src/main/java/net/combase/desktopcrm/data/AsteriskManager.java
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
import org.asteriskjava.live.AsteriskChannel;
import org.asteriskjava.live.AsteriskServer;
import org.asteriskjava.live.AsteriskServerListener;
import org.asteriskjava.live.CallerId;
import org.asteriskjava.live.DefaultAsteriskServer;
import org.asteriskjava.live.Extension;
import org.asteriskjava.live.ManagerCommunicationException;
import org.asteriskjava.live.MeetMeUser;
import net.combase.desktopcrm.domain.Settings;

/**
 * 
 */
package net.combase.desktopcrm.data;






/**
 * yealink call url:
 * http://10.1.0.11/cgi-bin/ConfigManApp.com?number=
 * 
 * @author "Till Freier"
 */
public final class AsteriskManager
{

	public interface AsteriskCallEventListener
	{
		public void incomingCall(String number);

		public void outgoingCall(String number);
	}

	private static AsteriskServer asteriskServer = null;

	private static String extension = "";

	private static List<AsteriskCallEventListener> listeners = new ArrayList<>();

	private AsteriskManager()
	{
		super();
	}


	public static void dial(String number)
	{
		final Settings settings = DataStoreManager.getSettings();