001: // Copyright %G% Sun Microsystems, Inc. All Rights Reserved.
002: // "%W% %E% Sun Microsystems"
003:
004: package com.sun.portal.wireless.taglibs.cal;
005:
006: import javax.servlet.jsp.*;
007: import javax.servlet.jsp.tagext.*;
008:
009: import com.sun.comclient.calendar.VEvent;
010: import com.sun.portal.wireless.taglibs.base.*;
011:
012: /**
013: * EventTag - tag that represents an ical Event bean
014: *
015: * @author Robert O'Brien
016: * @version 1.0
017: * @see com.sun.portal.calendar.Event
018: */
019:
020: public class EventTag extends BeanTag {
021:
022: /**
023: * The index attribute; specifies which Event to
024: * use from the context's current event list.
025: */
026: private Integer index;
027:
028: /**
029: * The default constructor
030: */
031: public EventTag() {
032: super ();
033: }
034:
035: /**
036: * Set the index into the context event list
037: *
038: * @param index index of Event to use
039: */
040: public void setIndex(String index) {
041: try {
042: this .index = new Integer(evalAttribute(index));
043: } catch (NumberFormatException e) {
044: index = null;
045: }
046: }
047:
048: /**
049: * Create a new Event bean object
050: *
051: * @return the Event object
052: */
053: public Object newBean() throws Exception {
054: CalContext calcontext;
055: EventBean event;
056:
057: calcontext = CalContext.getContext(pageContext);
058: if (calcontext == null) {
059: throw new Exception("No CalContext found");
060: }
061:
062: VEvent aEventInst = calcontext.getCalendar().createEvent();
063: event = calcontext.toEventBean(aEventInst);
064: if (event == null) {
065: throw new Exception(
066: "Not able to create new Event in EventTag.newBean");
067: }
068: return event;
069: }
070:
071: /**
072: * Find the event bean. If the index attribute is
073: * specified then retrieve the event from the
074: * context's current event collection. Otherwise
075: * use the default BeanTag behavior.
076: *
077: * @return the Event this tag represents
078: */
079: public Object findBean() throws Exception {
080:
081: if (index == null) {
082: return super .findBean();
083: }
084:
085: CalContext calcontext;
086: EventBean event;
087:
088: if ((calcontext = CalContext.getContext(pageContext)) == null) {
089: throw new Exception("No CalContext found");
090: }
091:
092: int indexval = index.intValue();
093:
094: if (indexval < 0) {
095: throw new Exception("Index out of range");
096: }
097:
098: event = calcontext.getEvent(indexval);
099:
100: if (event == null) {
101: throw new Exception("No Event found");
102: }
103: if (id != null) {
104: pageContext.setAttribute(id, event);
105: }
106:
107: return event;
108: }
109:
110: /**
111: * Cleanup
112: */
113: public void release() {
114: super.release();
115: index = null;
116: }
117: }
|