import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
/**
*
* @author chenxu
*
*/
public class Meetings extends UnicastRemoteObject implements Meets {
private static final long serialVersionUID = 1L;
private HashMap<String,Meeting> meetings;
private HashMap<String,Person> users;
private HashMap<String,ArrayList<String>> person_meetings;
private static Meetings mets;
public static int counts;
final String NEW_LINE = System.getProperty("line.separator");
private Meetings() throws RemoteException {
meetings = new HashMap<String, Meeting>();
users = new HashMap<String, Person>();
person_meetings = new HashMap<String, ArrayList<String>>();
counts =1;
}
/**
*
* @return
* @throws RemoteException
*/
public static Meetings getMeetings() throws RemoteException {
if (mets == null) {
mets = new Meetings();
return mets;
} else
return mets;
}
/**
*
*/
// public boolean login(String name, String passWard) {
// Person newperson = new Person(name, passWard);
// for (int i = 0; i < users.size(); i++) {
// Person person = users.get(i);
// if (person.equalPerson(newperson))
// System.out.println("login succeful");
// return true;
// }
// System.out.println("login failed usename or passward error");
// return false;
// }
///**
// *
// * @param username
// * @return
// */
public boolean addPerson(String name, String passWard)throws RemoteException {
Person newperson = null;
newperson = users.get(name);
if(newperson==null){
newperson= new Person(name, passWard);
if(users.put(name, newperson)!=null);
return true;
}
return false;
}
/**
* addperson
*/
public String quaryMeeting(String begin, String end)throws RemoteException {
Meeting meeting = new Meeting(null, begin, end, null);
String str = new String();
Iterator ite = meetings.keySet().iterator();
while (ite.hasNext()) {
Meeting met = meetings.get(ite.next());
if (met.equalMeeting(meeting)){
str += ( met.getMeetingTitle() + " start:"
+ met.getMeetingBegindate() + " end:"
+ met.getMeetingenddate() + " username:" + met.getuser()+NEW_LINE);
}
}
return str;
}
/**
* quary
*/
public boolean addmeetings(String username, String start, String end,
String title) throws RemoteException{
Meeting met = new Meeting(title, start, end, username);
Person person = null;
person = users.get(username);
meetings.put(Integer.toString(counts), met);
person.addMeeting(Integer.toString(counts));
person_meetings.put(username, person.getPersonAllMeetings());
counts++;
return true;
}
/**
* add meeting
*/
public String displayMeeting(String username)throws RemoteException{
System.out.println("meetings:");
Person person = users.get(username);
String str = new String();
ArrayList<String> person_meetings = person.getPersonAllMeetings();
for (int i = 0; i < person_meetings.size(); i++) {
str+=(person_meetings.get(i) + " " + meetings.get(person_meetings.get(i)).getMeetingTitle()
+ NEW_LINE);
}
return str+("please input meeting_id:");
}
public boolean removeMeeting(String username, String passward, String meeting_Id)throws RemoteException {
Person person = users.get(username);
if(meetings.remove(meeting_Id,meetings.get(meeting_Id))&&person.removeMeeting(meeting_Id)){
return true;
}
return false;
}
/**
* delete;
*/
public boolean removeAll(String username, String passWard)
throws RemoteException {
Person person = users.get(username);
ArrayList<String> person_meetings = person.getPersonAllMeetings();
for (int i = 0; i < person_meetings.size(); i++) {
meetings.remove(person_meetings.get(i));
}
person.removeAll();
return true;
}
/**
* clear all;
*/
}