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 com.ecyrd.jspwiki.workflow.Workflow;
024:
025: /**
026: * <p>
027: * WorkflowEvent indicates that a state change to a Workflow: started, running,
028: * waiting, completed, aborted. These correspond exactly to the states described
029: * in the {@link com.ecyrd.jspwiki.workflow.Workflow}. All events are logged
030: * with priority INFO.
031: * </p>
032: *
033: * @author Andrew Jaquith
034: * @since 2.3.79
035: */
036: public final class WorkflowEvent extends WikiEvent {
037:
038: private static final long serialVersionUID = 1L;
039:
040: /**
041: * After Workflow instantiation.
042: */
043: public static final int CREATED = 0;
044:
045: /**
046: * After the Workflow has been instantiated, but before it has been started
047: * using the {@link com.ecyrd.jspwiki.workflow.Workflow#start()} method.
048: */
049: public static final int STARTED = 10;
050:
051: /**
052: * fter the Workflow has been started (or re-started) using the
053: * {@link com.ecyrd.jspwiki.workflow.Workflow#start()} method,
054: * but before it has finished processing all Steps.
055: */
056: public static final int RUNNING = 20;
057:
058: /**
059: * When the Workflow has temporarily paused, for example because of a
060: * pending Decision.
061: */
062: public static final int WAITING = 30;
063:
064: /** After the Workflow has finished processing all Steps, without errors. */
065: public static final int COMPLETED = 40;
066:
067: /** If a Step has elected to abort the Workflow. */
068: public static final int ABORTED = 50;
069:
070: /**
071: * Constructs a new instance of this event type, which signals a security
072: * event has occurred. The <code>source</code> parameter is required, and
073: * may not be <code>null</code>. When the WikiSecurityEvent is
074: * constructed, the security logger {@link WikiSecurityEvent#log} is notified.
075: *
076: * @param src
077: * the source of the event, which can be any object: a wiki page,
078: * group or authentication/authentication/group manager.
079: * @param type
080: * the type of event
081: */
082: public WorkflowEvent(Object src, int type) {
083: super (src, type);
084: if (src == null) {
085: throw new IllegalArgumentException(
086: "Argument(s) cannot be null.");
087: }
088: }
089:
090: /**
091: * Convenience method that returns the Workflow to which the event applied.
092: *
093: * @return the Workflow
094: */
095: public final Workflow getWorkflow() {
096: return (Workflow) super .getSource();
097: }
098:
099: /**
100: * Prints a String (human-readable) representation of this object.
101: *
102: * @see java.lang.Object#toString()
103: */
104: public final String toString() {
105: StringBuffer msg = new StringBuffer();
106: msg.append("WorkflowEvent.");
107: msg.append(eventName(getType()));
108: msg.append(" [source=" + getSource().toString());
109: msg.append("]");
110: return msg.toString();
111: }
112:
113: /**
114: * Returns a textual representation of an event type.
115: *
116: * @param type
117: * the type
118: * @return the string representation
119: */
120: public final String eventName(int type) {
121: switch (type) {
122: case CREATED:
123: return "CREATED";
124: case ABORTED:
125: return "ABORTED";
126: case COMPLETED:
127: return "COMPLETED";
128: case RUNNING:
129: return "RUNNING";
130: case STARTED:
131: return "STARTED";
132: case WAITING:
133: return "WAITING";
134: default:
135: return super.eventName();
136: }
137: }
138:
139: }
|