12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
-
- Copyright (c) Xerox Corporation 1998-2002. All rights reserved.
-
- Use and copying of this software and preparation of derivative works based
- upon this software are permitted. Any distribution of this software or
- derivative works must comply with all applicable United States export control
- laws.
-
- This software is made available AS IS, and Xerox Corporation makes no warranty
- about the software, its performance or its conformity to any specification.
-
- |<--- this code is formatted to fit into 80 columns --->|
- |<--- this code is formatted to fit into 80 columns --->|
- |<--- this code is formatted to fit into 80 columns --->|
-
- */
- package telecom;
- import java.util.Vector;
- import java.util.Enumeration;
-
- /**
- * A call supports the process of a customer trying to
- * connect to others.
- */
- public class Call {
-
- private Customer caller, receiver;
- private Vector connections = new Vector();
-
- /**
- * Create a new call connecting caller to receiver
- * with a new connection. This should really only be
- * called by Customer.call(..)
- */
- public Call(Customer caller, Customer receiver) {
- this.caller = caller;
- this.receiver = receiver;
- Connection c;
- if (receiver.localTo(caller)) {
- c = new Local(caller, receiver);
- } else {
- c = new LongDistance(caller, receiver);
- }
- connections.addElement(c);
- }
-
- /**
- * picking up a call completes the current connection
- * (this means that you shouldnt merge calls until
- * they are completed)
- */
- public void pickup() {
- Connection connection = (Connection)connections.lastElement();
- connection.complete();
- }
-
-
- /**
- * Is the call in a connected state?
- */
- public boolean isConnected(){
- return ((Connection)connections.lastElement()).getState()
- == Connection.COMPLETE;
- }
-
- /**
- * hanging up a call drops the connection
- */
- public void hangup(Customer c) {
- for(Enumeration e = connections.elements(); e.hasMoreElements();) {
- ((Connection)e.nextElement()).drop();
- }
- }
-
- /**
- * is Customer c one of the customers in this call?
- */
- public boolean includes(Customer c){
- boolean result = false;
- for(Enumeration e = connections.elements(); e.hasMoreElements();) {
- result = result || ((Connection)e.nextElement()).connects(c);
- }
- return result;
- }
-
- /**
- * Merge all connections from call 'other' into 'this'
- */
- public void merge(Call other){
- for(Enumeration e = other.connections.elements(); e.hasMoreElements();){
- Connection conn = (Connection)e.nextElement();
- other.connections.removeElement(conn);
- connections.addElement(conn);
- }
- }
- }
|