001: /*
002: * The contents of this file are subject to the terms of the Common Development
003: * and Distribution License (the License). You may not use this file except in
004: * compliance with the License.
005: *
006: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
007: * or http://www.netbeans.org/cddl.txt.
008: *
009: * When distributing Covered Code, include this CDDL Header Notice in each file
010: * and include the License file at http://www.netbeans.org/cddl.txt.
011: * If applicable, add the following below the CDDL Header, with the fields
012: * enclosed by brackets [] replaced by your own identifying information:
013: * "Portions Copyrighted [year] [name of copyright owner]"
014: *
015: * The Original Software is NetBeans. The Initial Developer of the Original
016: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
017: * Microsystems, Inc. All Rights Reserved.
018: */
019:
020: /**
021: *
022: */package org.netbeans.modules.bpel.model.api.events;
023:
024: import java.util.EventObject;
025:
026: import org.netbeans.modules.bpel.model.api.BpelEntity;
027:
028: /**
029: * Base class for events in BPEL OM. Contains common methods for each event.
030: *
031: * @author ads
032: */
033: public abstract class ChangeEvent extends EventObject {
034:
035: /**
036: * Constructor for ChangeEvent class.
037: *
038: * @param source
039: * this is reserved object that could point to source of event (
040: * who sent this event ).
041: * @param parent
042: * parent entity. Inside this parent event has occured.
043: * @param name
044: * name of attribute or tag. Not always have sense.
045: */
046: public ChangeEvent(Object source, BpelEntity parent, String name) {
047: super (source);
048: myParent = parent;
049: myName = name;
050: }
051:
052: /**
053: * @return parent for enitity or attribute in OM for which this event
054: * occurs.
055: */
056: public BpelEntity getParent() {
057: return myParent;
058: }
059:
060: /**
061: * @return name of tag or attribute of affected entity(ies).
062: */
063: public String getName() {
064: return myName;
065: }
066:
067: /**
068: * @return Is this event last in chain of events that are fired
069: * in one transaction.
070: */
071: public boolean isLastInAtomic() {
072: if (isNotLast == null) {
073: return true;
074: } else {
075: return !isNotLast;
076: }
077: }
078:
079: /**
080: * This method set flag for event that it is last event in chain of events.
081: * It could be used only one time. After setting flag it could not be changed.
082: */
083: public void setLast() {
084: if (isNotLast != null) {
085: throw new UnsupportedOperationException(
086: "Flag for this event " // NOI18N
087: + "is already set."); // NOI18N
088: }
089: isNotLast = false;
090: }
091:
092: /**
093: * This method set flag for event that it is not last event in chain of events.
094: * It could be used only one time. After setting flag it could not be changed.
095: */
096: public void setNotLast() {
097: if (isNotLast != null) {
098: throw new UnsupportedOperationException(
099: "Flag for this event " // NOI18N
100: + "is already set."); // NOI18N
101: }
102: isNotLast = true;
103: }
104:
105: private BpelEntity myParent;
106:
107: private String myName;
108:
109: /**
110: * This flag signals (if true) that more events will follow after this
111: * event. And those events could be handled as one atomic change of model.
112: * If this flag equals false then this is last event ( or just single at all ).
113: */
114: private Boolean isNotLast;
115: }
|