001: /*
002: * <copyright>
003: *
004: * Copyright 1997-2004 Mobile Intelligence Corp
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.core.service.community;
028:
029: import java.util.EventObject;
030:
031: /**
032: * An event used to notify interested parties that a change
033: * has occurred in a community of interest.
034: * <p>
035: * The event contains a reference to the community generating
036: * the event. The event also contains attributes identifying the
037: * cheange type and affected entity. Since event generators may not
038: * generate separate events for each change these attributes can only
039: * be assumed to reflect the most recent change.
040: */
041: public class CommunityChangeEvent extends EventObject {
042:
043: // Defines the type of change
044: public static final int ADD_COMMUNITY = 1;
045: public static final int REMOVE_COMMUNITY = 2;
046: public static final int COMMUNITY_ATTRIBUTES_CHANGED = 3;
047: public static final int ADD_ENTITY = 4;
048: public static final int REMOVE_ENTITY = 5;
049: public static final int ENTITY_ATTRIBUTES_CHANGED = 6;
050:
051: protected Community community;
052: protected int type;
053: protected String whatChanged;
054:
055: /**
056: *
057: * @param community Changed community
058: * @param type Type of most recent change
059: * @param whatChanged Name of entity associated with most recent change
060: */
061: public CommunityChangeEvent(Community community, int type,
062: String whatChanged) {
063: super (community.getName());
064: this .community = community;
065: this .type = type;
066: this .whatChanged = whatChanged;
067: }
068:
069: /**
070: * Returns a reference to changed community.
071: * @return Reference to changed community
072: */
073: public Community getCommunity() {
074: return community;
075: }
076:
077: /**
078: * Returns name of community generating event.
079: * @return Name of changed community
080: */
081: public String getCommunityName() {
082: return community.getName();
083: }
084:
085: /**
086: * Returns a code indicating the type of the most recent change.
087: * @return Change code
088: */
089: public int getType() {
090: return type;
091: }
092:
093: /**
094: * Returns the name of the Entity associated with the most recent change.
095: * @return Entity name.
096: */
097: public String getWhatChanged() {
098: return whatChanged;
099: }
100:
101: /**
102: * Returns a string representation of the change code.
103: * @param changeType
104: * @return Change code as a string
105: */
106: public static String getChangeTypeAsString(int changeType) {
107: switch (changeType) {
108: case ADD_COMMUNITY:
109: return "ADD_COMMUNITY";
110: case REMOVE_COMMUNITY:
111: return "REMOVE_COMMUNITY";
112: case COMMUNITY_ATTRIBUTES_CHANGED:
113: return "COMMUNITY_ATTRIBUTES_CHANGED";
114: case ADD_ENTITY:
115: return "ADD_ENTITY";
116: case REMOVE_ENTITY:
117: return "REMOVE_ENTITY";
118: case ENTITY_ATTRIBUTES_CHANGED:
119: return "ENTITY_ATTRIBUTES_CHANGED";
120: }
121: return "INVALID_VALUE";
122: }
123:
124: /**
125: * Returns a string representation of the change event.
126: * @return Event as a string
127: */
128: public String toString() {
129: String communityName = getCommunityName();
130: return "CommunityChangeEvent:" + " community="
131: + (communityName == null ? "*" : communityName)
132: + " type=" + getChangeTypeAsString(type)
133: + " whatChanged=" + whatChanged;
134: }
135: }
|