001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2003 Danet GmbH (www.danet.de), GS-AN.
004: * All rights reserved.
005: *
006: * This program is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published by
008: * the Free Software Foundation; either version 2 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 General Public License for more details.
015: *
016: * You should have received a copy of the GNU 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: * $Id: DefaultStateAuditEvent.java,v 1.3 2007/01/26 14:38:11 drmlipp Exp $
021: *
022: * $Log: DefaultStateAuditEvent.java,v $
023: * Revision 1.3 2007/01/26 14:38:11 drmlipp
024: * Minor updated to process close event delivery.
025: *
026: * Revision 1.2 2006/09/29 12:32:08 drmlipp
027: * Consistently using WfMOpen as projct name now.
028: *
029: * Revision 1.1.1.1 2003/06/30 20:05:15 drmlipp
030: * Initial import
031: *
032: * Revision 1.7 2003/06/27 08:51:45 lipp
033: * Fixed copyright/license information.
034: *
035: * Revision 1.6 2003/02/11 08:49:55 lipp
036: * Shortened toString repr.
037: *
038: * Revision 1.5 2003/02/06 16:39:51 lipp
039: * Fixed a state handling bug (must not expose running state for manually
040: * started activity).
041: *
042: * Revision 1.4 2002/10/02 11:27:07 barzik
043: * bug fixes and more ...
044: *
045: * Revision 1.3 2002/10/01 16:06:00 lipp
046: * Event queue activated.
047: *
048: * Revision 1.2 2002/10/01 11:03:14 barzik
049: * add toString()
050: *
051: * Revision 1.1 2002/10/01 09:10:38 lipp
052: * AuditEvent handling restructured.
053: *
054: * Revision 1.4 2002/10/01 06:45:23 barzik
055: * no message
056: *
057: * Revision 1.3 2002/09/30 12:42:05 barzik
058: * audit event handling using base event information
059: *
060: * Revision 1.2 2002/09/26 08:02:31 barzik
061: * Moved EventType to WfAuditEvent.java
062: *
063: * Revision 1.1 2002/09/24 12:23:02 barzik
064: * Initial implementation
065: *
066: */
067:
068: package de.danet.an.workflow.domain;
069:
070: import de.danet.an.workflow.omgcore.WfAuditEvent;
071: import de.danet.an.workflow.omgcore.WfStateAuditEvent;
072:
073: /**
074: * A <code>DefaultStateAuditEvent</code> implements an audit record of
075: * information for a <code>WfExecutionObject</code>'s state change.
076: */
077: public class DefaultStateAuditEvent extends DefaultAuditEvent implements
078: WfStateAuditEvent {
079:
080: /**
081: * The attribute <code>oldState</code>. It identifies the state of
082: * the execution object, before the state change. If the object was
083: * created, the value is <code>null</code>.
084: * Hence, setting the attribute is optional.
085: */
086: private String oldState = null;
087:
088: /**
089: * The attribute <code>newState</code>. It identifies the state of
090: * execution object, after the state change.
091: * Setting the attribute is mandatory.
092: */
093: private String newState = null;
094:
095: /**
096: * Creates a new <code>DefaultStateAuditEvent</code> assigning the given
097: * attributes.
098: * @param baseInfo a <code>WfAuditEvent</code> containing further
099: * information for the event.
100: * @param oldState the attribute <code>oldData</code>.
101: * @param newState the attribute <code>newData</code>.
102: * @throws IllegalArgumentException in case of a given illegal event
103: * type
104: */
105: public DefaultStateAuditEvent(WfAuditEvent baseInfo,
106: String oldState, String newState)
107: throws IllegalArgumentException {
108: this (baseInfo, oldState, newState, false);
109: }
110:
111: /**
112: * Creates a new <code>DefaultStateAuditEvent</code> assigning the given
113: * attributes.
114: * @param baseInfo a <code>WfAuditEvent</code> containing further
115: * information for the event.
116: * @param oldState the attribute <code>oldData</code>.
117: * @param newState the attribute <code>newData</code>.
118: * @param skip if <code>true</code> the event will not be processed
119: * (i.e. fed back to the engine) when retrieved from the event queue.
120: * @throws IllegalArgumentException in case of a given illegal event
121: * type
122: */
123: public DefaultStateAuditEvent(WfAuditEvent baseInfo,
124: String oldState, String newState, boolean skip)
125: throws IllegalArgumentException {
126:
127: // setup base attributes
128: super (baseInfo, skip);
129:
130: // check event type
131: if ((!eventType().equals(PROCESS_STATE_CHANGED))
132: && (!eventType().equals(ACTIVITY_STATE_CHANGED))) {
133: throw new IllegalArgumentException("Event type is '"
134: + eventType() + "' must either be '"
135: + PROCESS_STATE_CHANGED + "' or '"
136: + ACTIVITY_STATE_CHANGED + "' ");
137: }
138:
139: // check mandatory parameters
140: if (newState == null) {
141: throw new IllegalArgumentException(
142: "The argument 'newState' MUST be supplied.");
143: }
144:
145: // specialized attributes
146: this .oldState = oldState;
147: this .newState = newState;
148: }
149:
150: /**
151: * Creates a new <code>DefaultStateAuditEvent</code> with the
152: * given source and all other attributes copied from the given
153: * event.
154: * @param source the value for the source attribute.
155: * @param baseInfo a <code>DefaultStateAuditEvent</code>
156: * containing further information for the event.
157: */
158: protected DefaultStateAuditEvent(Object source,
159: DefaultStateAuditEvent baseInfo) {
160: super (source, baseInfo);
161: // specialized attributes
162: oldState = baseInfo.oldState;
163: newState = baseInfo.newState;
164: }
165:
166: /**
167: * Return a new audit event object with the source attribute
168: * replaced with the given object.
169: * @param source the new source attribute.
170: * @return the new audit event.
171: */
172: public DefaultAuditEvent replaceSource(Object source) {
173: return new DefaultStateAuditEvent(source, this );
174: }
175:
176: /**
177: * Returns the current value of the attribute <code>oldState</code>.
178: * @return the current value of the attribute.
179: */
180: public String oldState() {
181: return oldState;
182: }
183:
184: /**
185: * Returns the current value of the attribute <code>newState</code>.
186: * @return the current value of the attribute.
187: */
188: public String newState() {
189: return newState;
190: }
191:
192: /**
193: * Returns a textual representation of the event.
194: * @return the textual representation
195: */
196: public String toString() {
197: String event = "WfStateAuditEvent[";
198: return event + super .toString() + ", oldState=" + oldState
199: + ", newState=" + newState + "]";
200: }
201: }
|