CS 519 Final Project Report
Internet Phone
Date: Sep. 30, 98
Name of Group : G1
Team members: Jing Deng, Rung-Hung Gau
Task: Accounting (#5)
Part 1: Get call information from signaling team and directory team, and then store the information in our database.
while (true) do
begin
// wait for a message from signaling team
wait_signaling(message_signal);
// run authenticate algorithm to verify the message
if (authenticate(message_signal)==true)
{
// get IP address of caller
caller_address=get_IP_address(message_signal);
// ask directory service to obtain the identity
message2=directory_service(caller_address);
// run authenticate algorithm to verify the message
if (authenticate(message_dir)==true)
{
// message_type can be call_initialize or call_finished, for example
message_type=get_message_type(message1);
// call_information includes all information that is necessary for accounting
purpose.
// For example, we would like to know a call is a usual telephone call or a
conference call
call_information=get_call_information(message1);
write_to_database(message_type, caller_identity, call_information);
}
}
end
Part 2: Create a bill when a customer request: this should be a event-driven algorithm in order to be efficient
Whenever a customer or a manager requests a telephone bill, do the following,
begin
// retrieve call record from database
call_record=retrieve_data(customer);
// execute pricing algorithms to create a bill
bill=create_bill(call_record);
// show telephone bill of a customer in a graphic user interface
show_bill(bill);
end
Our program will provide a graphic interface that allows end-user to input their user name and query their bills and detailed calling activities.
1. We need an interface from Signaling team (#2) to provide us the information for each call. The following are two functions that we will use to obtain call information from signaling team.
phoneCallInit(Service Type, Call Initializer, Call Destination(s), Time, Call ID)
phoneCallFinish(Call ID, Time)
2. We also need an interface from Directory team (#4) to provide us the corresponding user name for a specific IP address (if it exists at all). The following is the prototype of the function.
String getUserName(IP address)
Week |
Duration |
Planned task |
1 |
Sep. 28-Oct. 2 |
Learn JDBC, MS access, set up working environments. |
2 |
Oct. 5-Oct. 9 |
Write simple code to use MS access through JDBC on Java. |
3 |
Oct. 12-Oct. 16 |
One student works on end-user interface. Another student writes the interface with Signaling team (#2) and Directory team (#4). |
4 |
Oct. 19-Oct. 23 |
Test the interface and implement a simple price algorithm. Write testing codes for the interface with Signaling team (#2) and Directory team (#4), if needed. |
5 |
Oct. 26-Oct.30 |
Test the interface with other two teams. |
6 |
Nov. 2-Nov. 6 |
Further research on better authentication and pricing algorithm. |
7 |
Nov. 9-Nov. 13 |
Working with Signaling team (#2) and Directory team (#4) to cooperate on the interfaces. |
8 |
Nov. 16-Nov. 20 |
Documentation and package our software into our group system. |
9 |
Nov. 23-Nov. 27 |
Done |
We need a computer network environment that we can work. First, we need a personal computer with MS-Access, which acts as our accounting server. Windows 95 or Windows NT must be installed in the server since we want to use MS-Access as our database. Windows NT is preferred compared to Windows 95. Besides, a JDBC driver that supports MS-Access DBMS, such as IDS JDBC server and Symantec dbANYWHERE, must be installed in the accounting server. Of course, we need a JAVA compiler and JAVA virtual machine with all necessary classes. We already have the software. However, we need an administrator privilege to install the software.
Secondly, the accounting server must be connected to Internet since we have to communicate with signaling team and directory team. We have some experience about socket programming in Unix. Nevertheless, we do have any experience in network programming in Windows NT. We need some guidance on this topic. We have computer accounts in CS undergraduate lab. Therefore, it will convenient for us to work on the project if the required software can be installed in that lab.
[1] http://java.sun.com/products/jdbc provides information about current situation of JDBC.
[2] http://java.sun.com/products/jdbc/jdbc.drivers.html classifies JDBC drivers into four classes and provides a table composed of available JDBC drivers
[3] http://www.idssoftware.com/jdriver.htm is the homepage for the IDS JDBC driver, which can support MS-Access DBMS.
[4] http://www.symantec.com/dba is the homepage for Symantec dbANYWHERE server, which also supports MS-Access DBMS.
[5] http://java.sun.com/products/jdk/1.1 is the homepage we find a tutorial for JDBC programming.
[6] Barry Holmes, "Programming with JAVA" is the first book we used to learn JAVA.
[7] W. Richard Stevens, "Unix Network Programming" is the book we used to learn socket programming.