⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 meetingmanager.java

📁 Java 议程管理系统。使用GoF设计模式进行系统设计
💻 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 + -