📄 meetingmanager.java
字号:
/**
*
*/
package agenda.model;
import java.util.*;
import agenda.ctrl.ParseInput;
/**
* implementation of manager design pattern for meeting entity
*
* @author Cyberpet
*
*/
public class MeetingManager {
/*
* storage for meeting
*/
private ArrayList<Meeting> meetingList = new ArrayList<Meeting>();
/*
* add a meeting
*/
public boolean addMeeting(Meeting meet) throws InfoException {
if (this.getMeetingByID(meet.getUser(), meet.getTitle()) == null
&& this.isUserValid(meet) && this.isDateValid(meet))
return this.meetingList.add(meet);
else
throw new InfoException(
"Users or date conflict while adding meeting\n");
}
/*
* remove a meeting information by meeting id
*/
public boolean removeMeetingByID(String name, String title) {
return this.meetingList.remove(this.getMeetingByID(name, title));
}
/*
* remove meeting record by meeting name
*/
public boolean removeMeetingByName(String name) {
boolean res = false;
ArrayList<Meeting> tmp = MeetingManager.getInstance()
.getMeetingByUserName(name);
tmp.addAll(0, MeetingManager.getInstance().getMeetingByOtherName(name));
for (Meeting met : tmp)
res &= this.meetingList.remove(met);
return res;
}
/*
* retrieve meeting information by meeting id
*/
public Meeting getMeetingByID(String name, String title) {
for (Meeting meet : this.meetingList)
if (meet.getUser().compareTo(name) == 0
&& meet.getTitle().compareTo(title) == 0)
return meet;
return null;
}
/*
* retrieve meeting information by meeting date
*/
public ArrayList<Meeting> getMeetingByDate(String name, Date start, Date end) {
ArrayList<Meeting> tmp = new ArrayList<Meeting>();
for (Meeting met : this.meetingList)
if ((met.getUser().compareTo(name) == 0 || met.getOther()
.compareTo(name) == 0)
&& !(met.getStart().after(end) || met.getEnd()
.before(start)))
tmp.add(met);
return tmp;
}
/*
* retrieve meeting information by user name
*/
public ArrayList<Meeting> getMeetingByUserName(String name) {
ArrayList<Meeting> tmp = new ArrayList<Meeting>();
for (Meeting meet : this.meetingList)
if (meet.getUser().compareTo(name) == 0)
tmp.add(meet);
return tmp;
}
/*
* retrieve meeting information by attendance user
*/
public ArrayList<Meeting> getMeetingByOtherName(String name) {
ArrayList<Meeting> tmp = new ArrayList<Meeting>();
for (Meeting meet : this.meetingList)
if (meet.getOther().compareTo(name) == 0)
tmp.add(meet);
return tmp;
}
/*
* get meeting index of array by id
*/
public int getIndexByID(String name, String title) {
return this.meetingList.indexOf(this.getMeetingByID(name, title));
}
/*
* judge a user validate
*/
public boolean isUserValid(Meeting meet) {
return ClientManager.getInstance().isContained(meet.getUser())
&& ClientManager.getInstance().isContained(meet.getOther());
}
/*
* judge date information
*/
public boolean isDateValid(Meeting meet) {
boolean res = true;
for (Meeting met : this.meetingList)
if (met.getUser().compareTo(meet.getUser()) == 0
|| met.getUser().compareTo(meet.getOther()) == 0)
res &= met.getStart().after(meet.getEnd())
|| met.getEnd().before(meet.getStart());
return res;
}
/**
* static class for Singleton design pattern, instance of MeetingManager
* will be created when the first time you make a call to
* MeetingManager.getInstance
*
* @author Cyberpet
* @see MeetingManager#getInstance()
*/
static class MeetingManagerSingletonHolder {
static MeetingManager instance = new MeetingManager();
}
/**
* get the only instance of MeetingManager
*
* @return MeetingManager
* @see MeetingManager
*/
public static MeetingManager getInstance() {
return MeetingManagerSingletonHolder.instance;
}
public String toString() {
String res = new String();
for (Meeting met : this.meetingList)
res += met.toString();
return res;
}
/**
* @param args
* @return void
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Client clt1 = new Client("", "");
Client clt2 = new Client("abc", "0");
Client clt3 = new Client("123", "wert");
ClientManager.getInstance().addUser(clt1);
ClientManager.getInstance().addUser(clt2);
// ClientManager.getInstance().addUser(clt3);
System.out.println(ClientManager.getInstance().toString());
Meeting meet1;
try {
// meet1 = new Meeting(clt1.getName(), clt1.getName(), "m1",
// ParseInput.getInstance().StingToDate("12-08-2008"),
// ParseInput.getInstance().StingToDate("12-09-2008")
// );
meet1 = new Meeting(clt1.getName(), clt2.getName(), "m1",
ParseInput.getInstance().StingToDate("12-08-2008"),
ParseInput.getInstance().StingToDate("12-13-2008"));
MeetingManager.getInstance().addMeeting(meet1);
} catch (InfoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Meeting meet2;
try {
meet2 = new Meeting(clt1.getName(), clt2.getName(), "m2",
ParseInput.getInstance().StingToDate("12-14-2008"),
ParseInput.getInstance().StingToDate("12-31-2008"));
MeetingManager.getInstance().addMeeting(meet2);
} catch (InfoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(MeetingManager.getInstance().toString());
ArrayList<Meeting> tmp = MeetingManager.getInstance()
.getMeetingByUserName("default");
System.out.println(tmp.toString());
Meeting meet3;
try {
meet3 = new Meeting(clt2.getName(), clt1.getName(), "m3",
ParseInput.getInstance().StingToDate("12-14-2007"),
ParseInput.getInstance().StingToDate("12-31-2007"));
MeetingManager.getInstance().addMeeting(meet3);
} catch (InfoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(MeetingManager.getInstance().toString());
ArrayList<Meeting> tmp1 = MeetingManager.getInstance()
.getMeetingByUserName("default");
tmp1.addAll(0, MeetingManager.getInstance().getMeetingByOtherName(
"default"));
System.out.println(tmp1.toString());
// MeetingManager.getInstance().removeMeetingByID("abc", "m3");
// System.out.println(MeetingManager.getInstance().toString());
// MeetingManager.getInstance().removeMeetingByName("default");
// System.out.println("Res:" + MeetingManager.getInstance().toString());
System.out.println(MeetingManager.getInstance().getMeetingByDate(
"default", ParseInput.getInstance().StingToDate("12-14-2008"),
ParseInput.getInstance().StingToDate("12-14-2009")).toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -