www.pudn.com > ssd8-exc4.rar > RMIClass.java


import java.io.*; 
import java.util.*; 
import java.rmi.*; 
import java.rmi.server.*; 
 
public class RMIClass extends UnicastRemoteObject implements Serializable, 
		RMIInterface { 
 
	private static Hashtable users; 
 
	private static Vector meetings; 
 
	private int counter = 0; 
 
	private int deleted = 0; 
 
	public RMIClass() throws RemoteException { 
		users = new Hashtable(); 
		meetings = new Vector(); 
	} 
 
	public boolean login(String username, String password) 
			throws RemoteException { 
 
		if (!users.containsKey(username)) { 
			return false; 
		} 
		String p = (String)users.get(username); 
		if (p.equals(password)) 
			return true; 
		return false; 
	} 
 
	public boolean register(String username, String password) 
			throws RemoteException { 
 
		if (users.containsKey(username)) 
			return false; 
		if (password == null) 
			return false; 
 
		users.put(username, password); 
		return true; 
	} 
 
	public boolean add(String username, String password, String otherusername, 
			String title, Date start, Date end) throws RemoteException { 
 
		if (!login(username, password)) 
			return false; 
		if (start.after(end)) 
			return false; 
 
		Meeting m; 
		String[] u = new String[2]; 
		Date s; 
		Date e; 
 
		for (Iterator it = meetings.iterator(); it.hasNext();) { 
			m = (Meeting) it.next(); 
			u = m.getUser(); 
			if (u[0].equals(username) || u[1].equals(username) 
					|| u[0].equals(otherusername) || u[1].equals(otherusername)) { 
				s = m.getStart(); 
				e = m.getEnd(); 
				if (!(start.after(e) || end.before(s))) 
					return false; 
			} 
		} 
 
		counter++; 
		u[0] = username; 
		u[1] = otherusername; 
		meetings.add(new Meeting(counter, u, title, start, end)); 
 
		return true; 
	} 
 
	public boolean delete(String username, String password, int id) 
			throws RemoteException { 
 
		if (!login(username, password)) 
			return false; 
 
		Meeting m; 
		int i; 
		String[] u; 
 
		for (int j = 0; j < meetings.size(); j++) { 
			m = meetings.get(j); 
			i = m.getId(); 
			u = m.getUser(); 
			if (i == id && u[0].equals(username) || u[1].equals(username)) { 
				meetings.remove(j); 
				j--; 
				deleted++; 
				return true; 
			} 
		} 
 
		return false; 
	} 
 
	public boolean clear(String username, String password) 
			throws RemoteException { 
 
		if (!login(username, password)) 
			return false; 
 
		Meeting m; 
		String[] u; 
 
		for (int i = 0; i < meetings.size(); i++) { 
			m = meetings.get(i); 
			u = m.getUser(); 
			if (u[0].equals(username) || u[1].equals(username)) { 
				meetings.remove(i); 
				i--; 
				deleted++; 
			} 
		} 
 
		return true; 
	} 
 
	public Vector query(String username, String password, Date start, 
			Date end) throws RemoteException { 
 
		if (!login(username, password)) 
			return null; 
		if (start.after(end)) 
			return null; 
 
		Meeting m; 
		String[] u = new String[2]; 
		Date s; 
		Date e; 
		Vector v = new Vector(); 
 
		for (Iterator it = meetings.iterator(); it.hasNext();) { 
			m = (Meeting) it.next(); 
			u = m.getUser(); 
			if (u[0].equals(username) || u[1].equals(username)) { 
				s = m.getStart(); 
				e = m.getEnd(); 
				if (!(s.after(end) || e.before(start))) 
					v.add(m); 
			} 
		} 
 
		return v; 
	} 
}