001: /*
002: JSPWiki - a JSP-based WikiWiki clone.
003:
004: Copyright (C) 2001-2006 Janne Jalkanen (Janne.Jalkanen@iki.fi)
005:
006: This program is free software; you can redistribute it and/or modify
007: it under the terms of the GNU Lesser General Public License as published by
008: the Free Software Foundation; either version 2.1 of the License, or
009: (at your option) any later version.
010:
011: This program is distributed in the hope that it will be useful,
012: but WITHOUT ANY WARRANTY; without even the implied warranty of
013: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: GNU Lesser General Public License for more details.
015:
016: You should have received a copy of the GNU Lesser General Public License
017: along with this program; if not, write to the Free Software
018: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: */
020:
021: package com.ecyrd.jspwiki.event;
022:
023: import java.util.EventObject;
024:
025: /**
026: * Abstract parent class for wiki events.
027: *
028: * @author Murray Altheim
029: * @author Andrew Jaquith
030: * @since 2.3.79
031: */
032: public abstract class WikiEvent extends EventObject {
033: private static final long serialVersionUID = 1829433967558773960L;
034:
035: /** Indicates a exception or error state. */
036: public static final int ERROR = -99;
037:
038: /** Indicates an undefined state. */
039: public static final int UNDEFINED = -98;
040:
041: private int m_type = UNDEFINED;
042:
043: private final long m_when;
044:
045: // ............
046:
047: /**
048: * Constructs an instance of this event.
049: * @param src the Object that is the source of the event.
050: * @param type the event type.
051: */
052: public WikiEvent(Object src, int type) {
053: super (src);
054: m_when = System.currentTimeMillis();
055: setType(type);
056: }
057:
058: /**
059: * Returns the timestamp of when this WikiEvent occurred.
060: *
061: * @return this event's timestamp
062: * @since 2.4.74
063: */
064: public long getWhen() {
065: return m_when;
066: }
067:
068: /**
069: * Sets the type of this event. Validation of acceptable
070: * type values is the responsibility of each subclass.
071: *
072: * @param type the type of this WikiEvent.
073: */
074: protected void setType(int type) {
075: m_type = type;
076: }
077:
078: /**
079: * Returns the type of this event.
080: *
081: * @return the type of this WikiEvent. See the enumerated values
082: * defined in {@link com.ecyrd.jspwiki.event.WikiEvent}).
083: */
084: public int getType() {
085: return m_type;
086: }
087:
088: /** Returns a String (human-readable) description of an event type.
089: * This should be subclassed as necessary.
090: * @return the String description
091: */
092: public String getTypeDescription() {
093: switch (m_type) {
094: case ERROR:
095: return "exception or error event";
096: case UNDEFINED:
097: return "undefined event type";
098: default:
099: return "unknown event type (" + m_type + ")";
100: }
101: }
102:
103: /**
104: * Returns true if the int value is a valid WikiEvent type.
105: * Because the WikiEvent class does not itself any event types,
106: * this method returns true if the event type is anything except
107: * {@link #ERROR} or {@link #UNDEFINED}. This method is meant to
108: * be subclassed as appropriate.
109: */
110: public static boolean isValidType(int type) {
111: return type != ERROR && type != UNDEFINED;
112: }
113:
114: /**
115: * Returns a textual representation of an event type.
116: * @return the String representation
117: */
118: public String eventName() {
119: switch (m_type) {
120: case ERROR:
121: return "ERROR";
122: case UNDEFINED:
123: return "UNDEFINED";
124: default:
125: return "UNKNOWN (" + m_type + ")";
126: }
127: }
128:
129: /**
130: * Prints a String (human-readable) representation of this object.
131: * This should be subclassed as necessary.
132: * @see java.lang.Object#toString()
133: * @return the String representation
134: */
135: public String toString() {
136: StringBuffer out = new StringBuffer();
137: out.append("WikiEvent.");
138: out.append(eventName());
139: out.append(" [source=");
140: out.append(getSource().toString());
141: out.append("]");
142: return out.toString();
143: }
144:
145: }
|