meetingmanager.java
来自「简单的会议议程系统,展示了Command 模式的应用」· Java 代码 · 共 208 行
JAVA
208 行
/*
* @(#)MeetingManager.java 2006/11/13
*
* Copyright (c) ZhiYang.
* All rights reserved.
*/
package agenda;
import java.util.*;
import java.text.*;
/**
* 会议记录管理
* @version 1.0
* @author 杨智 (MSE2006B-06250145)
*
*/
public class MeetingManager {
/*
* container of meeting records
*/
private Set meetings = new TreeSet();
/*
* exception
*/
public static class InvalidRecord extends Exception {
public InvalidRecord() {
super("The meeting record is invalid!");
}
}
public static class AlreadyExisted extends Exception {
public AlreadyExisted() {
super("Please give another meeting title!");
}
}
public static class TimeIsOverlapped extends Exception {
public TimeIsOverlapped() {
super("There is a meeting record overlapped with the given time!");
}
}
private boolean checkOverlapped( Meeting mt ) {
Iterator it = meetings.iterator();
while( it.hasNext() ) {
Meeting inmt = (Meeting) it.next();
if( inmt.isOverlapped(mt) ) {
return true;
}
}
return false;
}
/*
* add a meeting record
* @throws InvalidRecord, AlreadyExisted, TimeIsOverlapped
*/
public void addMeeting( Meeting mt ) throws InvalidRecord, AlreadyExisted, TimeIsOverlapped {
if( mt == null || !mt.isValid() ) {
throw new InvalidRecord();
}
else if( meetings.contains( mt ) ) {
throw new AlreadyExisted();
}
else if( checkOverlapped( mt ) ) {
throw new TimeIsOverlapped();
}
meetings.add ( mt );
}
/*
* query the given user's meeting records located in the time span
* @return ArrayList with Meeting objects
*/
public ArrayList queryMeeting( String strUser, Date startTime, Date endTime ) {
ArrayList ret = new ArrayList();
Iterator it = meetings.iterator();
while( it.hasNext() ) {
Meeting inmt = (Meeting) it.next();
if( inmt.isUserOverlapped(strUser) && inmt.isTimeOverlapped(startTime,endTime) ) {
ret.add( inmt.clone() );
}
}
return ret;
}
public ArrayList queryMeeting( String strUser, String startTime, String endTime ) throws ParseException {
Date sdt = Meeting.getDateFormat().parse( startTime );
Date edt = Meeting.getDateFormat().parse( endTime );
return queryMeeting ( strUser, sdt, edt );
}
/*
* delete a meeting record accroding to its title
*/
public boolean deleteMeeting( String title ) {
Meeting mt = new Meeting();
mt.title = title;
return meetings.remove( mt );
}
/*
* clear all of meeting records of given user
*/
public void clearMeeting( String strUser ) {
Iterator it = meetings.iterator();
while( it.hasNext() ) {
Meeting inmt = (Meeting) it.next();
if( inmt.isUserOverlapped(strUser) ) {
it.remove();
}
}
}
/*
* unit test
*/
public static void main( String argv[] ) {
try {
Meeting mt1 = new Meeting ( "test1", "op1", "sch1", "06-10-21 10:12:00", "06-10-21 10:32:00" );
Meeting mt2 = new Meeting ( "test2", "op1", "sch2", "06-10-21 13:16:00", "06-10-21 14:30:00" );
Meeting mt3 = new Meeting ( "test3", "op2", "sch2", "06-10-21 14:30:00", "06-10-21 15:39:00" );
Meeting mt4 = new Meeting ( "test2", "op1", "sch2", "06-10-21 10:12:00", "06-10-21 16:30:00" );
MeetingManager mgr = new MeetingManager();
try {
mgr.addMeeting(null);
}
catch ( Exception e ) {
System.out.println(e.getMessage());
}
try {
mgr.addMeeting( new Meeting ( "test2", "op1", "sch2", "06-10-21 10:12:00", "06-10-21 9:30:00" ) );
}
catch ( Exception e ) {
System.out.println(e.getMessage());
}
try {
mgr.addMeeting( mt1 );
System.out.println( mt1 + " added");
mgr.addMeeting( mt2 );
System.out.println( mt2 + " added");
mgr.addMeeting( mt3 );
System.out.println( mt3 + " added");
mgr.addMeeting( mt4 );
System.out.println( mt4 + " added");
}
catch ( Exception e ) {
System.out.println(e.getMessage());
}
ArrayList arr = mgr.queryMeeting ( "op1", "06-10-21 10:12:00", "06-10-21 16:30:00");
for(int i=0; i<arr.size(); ++i ) {
System.out.println( (Meeting)arr.get(i) + " found with op1");
}
arr = mgr.queryMeeting ( "sch2", "06-10-21 10:12:00", "06-10-21 16:30:00");
for(int i=0; i<arr.size(); ++i ) {
System.out.println( (Meeting)arr.get(i) + " found with sch2");
}
mgr.clearMeeting( "op1" );
System.out.println( "clear all meeting records of op1" );
try {
mgr.addMeeting( mt3 );
System.out.println( mt3 + " added");
mgr.addMeeting( mt4 );
System.out.println( mt4 + " added");
mgr.addMeeting( mt1 );
System.out.println( mt1 + " added");
mgr.addMeeting( mt2 );
System.out.println( mt2 + " added");
}
catch ( Exception e ) {
System.out.println(e.getMessage());
}
System.out.println( "delete test3 meeting record..." );
if( mgr.deleteMeeting("test3") )
System.out.println( "test3 deleted");
System.out.println( "delete test2 meeting record..." );
if( mgr.deleteMeeting("test2") )
System.out.println( "test2 deleted");
try {
mgr.addMeeting( mt4 );
System.out.println( mt4 + " added");
}
catch ( Exception e ) {
System.out.println(e.getMessage());
}
}
catch ( Exception e ) {
System.out.println( "has unknown exception: " +e.getMessage() );
return;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?