MeetingManager.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:4k
源码类别:

Java编程

开发平台:

Java

  1. package com.borland.training.meetings.sessions;
  2. import java.util.*;
  3. import javax.ejb.*;
  4. import javax.naming.*;
  5. import com.borland.training.meetings.entities.*;
  6. class MeetingManager {
  7.   private static MeetingManager instance = null;
  8.   private MeetingValueFactory meetingValueFactory;
  9.   private RoomValueFactory roomValueFactory;
  10.   private AttendeeValueFactory attendeeValueFactory;
  11.   private EJBHomeFactory homeFactory;
  12.   private MeetingManager() throws NamingException {
  13.     homeFactory = EJBHomeFactory.getInstance();
  14.     meetingValueFactory = MeetingValueFactory.getInstance();
  15.     attendeeValueFactory = AttendeeValueFactory.getInstance();
  16.     roomValueFactory = RoomValueFactory.getInstance();
  17.   }
  18.   public static MeetingManager getInstance() throws NamingException {
  19.     if(instance == null) {
  20.       instance = new MeetingManager();
  21.     }
  22.     return instance;
  23.   }
  24.   public Long createMeeting(MeetingValue meetingValue)
  25.     throws FinderException, NamingException {
  26.     try {
  27.       MeetingHome meetingHome =
  28.         (MeetingHome) homeFactory.lookupByLocalEJBReference("Meeting");
  29.       Meeting meeting = meetingHome.create(meetingValue.getTopic(),
  30.         meetingValue.getStartTime(),
  31.         meetingValue.getFinishTime());
  32.       Room room = roomValueFactory.findRoom(meetingValue.getRoomName());
  33.       meeting.setRoom(room);
  34.       Iterator iterator = meetingValue.getAttendeeIds().iterator();
  35.       Long id;
  36.       Attendee attendee = null;
  37.       Collection meetingAttendees = meeting.getAttendees();
  38.       while(iterator.hasNext()) {
  39.         id = (Long) iterator.next();
  40.         attendee = attendeeValueFactory.findAttendee(id);
  41.         meetingAttendees.add(attendee);
  42.       }
  43.       return meeting.getId();
  44.     }
  45.     catch(Exception e) {
  46.       throw new EJBException(e);
  47.     }
  48.   }
  49.   public void updateMeeting(MeetingValue meetingValue)
  50.     throws FinderException, NamingException {
  51.     try {
  52.       Meeting meeting = meetingValueFactory.findMeeting(meetingValue.getId());
  53.       meeting.setTopic(meetingValue.getTopic());
  54.       meeting.setStartTime(meetingValue.getStartTime());
  55.       meeting.setFinishTime(meetingValue.getFinishTime());
  56.       if(!meeting.getRoom().getName().equals(meetingValue.getRoomName())) {
  57.         Room newRoom = roomValueFactory.findRoom(meetingValue.getRoomName());
  58.         meeting.setRoom(newRoom);
  59.       }
  60.       // Map attendee ids to references
  61.       Long id;
  62.       Attendee attendee = null;
  63.       Collection attendeeIds = meetingValue.getAttendeeIds();
  64.       Collection attendees = new Vector(attendeeIds.size());
  65.       Iterator iterator = attendeeIds.iterator();
  66.       while(iterator.hasNext()) {
  67.         id = (Long) iterator.next();
  68.         attendee = attendeeValueFactory.findAttendee(id);
  69.         attendees.add(attendee);
  70.       }
  71.       // Update the attendee list.
  72.       // Note: for large numbers of attendees, it might be more efficient to determine
  73.       // attendees that are beeing removed or added, and remove or add them individually.
  74.       meeting.setAttendees(attendees);
  75.     }
  76.     catch(Exception e) {
  77.       throw new EJBException(e);
  78.     }
  79.   }
  80.   public void removeMeeting(Long id)
  81.     throws FinderException, NamingException {
  82.     try {
  83.       Meeting meeting = meetingValueFactory.findMeeting(id);
  84.       Iterator iterator = meeting.getAttendees().iterator();
  85.       while(iterator.hasNext()) {
  86.         iterator.remove();
  87.       }
  88.       meeting.remove();
  89.     }
  90.     catch(Exception e) {
  91.       throw new EJBException(e);
  92.     }
  93.   }
  94.   public void removeAllMeetings()
  95.     throws FinderException, NamingException {
  96.     try {
  97.       Collection meetings = meetingValueFactory.findAllMeetings();
  98.       Iterator iterator = meetings.iterator();
  99.       Meeting meeting = null;
  100.       while(iterator.hasNext()) {
  101.         meeting = (Meeting) iterator.next();
  102.         meeting.remove();
  103.       }
  104.     }
  105.     catch(Exception e) {
  106.       throw new EJBException(e);
  107.     }
  108.   }
  109. }