001: /**
002: * <copyright>
003: *
004: * Copyright 2002-2004 BBNT Solutions, LLC
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: */package org.cougaar.tools.csmart.society;
026:
027: import org.cougaar.tools.csmart.core.cdata.RelationshipData;
028: import org.cougaar.tools.csmart.core.property.ModifiableConfigurableComponent;
029: import org.cougaar.tools.csmart.core.property.Property;
030: import org.cougaar.tools.csmart.ui.viewer.CSMART;
031: import org.cougaar.util.log.Logger;
032:
033: import java.text.DateFormat;
034: import java.util.Date;
035:
036: /**
037: * RelationshipBase.java
038: *
039: * A component Representing a relationship.
040: * In a prototype-dat.ini file, a relationship is:
041: * <role> <item> <type> <otherAgent> <start time> <stop time>
042: *
043: * Created: Fri Feb 22 12:32:59 2002
044: *
045: */
046:
047: public class RelationshipBase extends ModifiableConfigurableComponent
048: implements RelationshipComponent {
049: private transient Logger log;
050:
051: public static final String PROP_TYPE = "Type";
052: public static final String PROP_TYPE_DESC = "Type of Relationship";
053:
054: public static final String PROP_ROLE = "Role";
055: public static final String PROP_ROLE_DESC = "Roles performed by this relationship";
056:
057: public static final String PROP_ITEM = "Item Id";
058: public static final String PROP_ITEM_DESC = "Item Identification";
059:
060: public static final String PROP_TYPEID = "Type Id";
061: public static final String PROP_TYPEID_DESC = "Type Identification";
062:
063: public static final String PROP_SUPPORTED = "Supported Agent";
064: public static final String PROP_SUPPORTED_DESC = "Agent Supported by this relationship";
065:
066: public static final String PROP_STARTTIME = "Start Time";
067: public static final String PROP_STARTTIME_DESC = "Time Relationship starts";
068:
069: public static final String PROP_STOPTIME = "Stop Time";
070: public static final String PROP_STOPTIME_DESC = "Time Relationship ends";
071:
072: private Property propType;
073: private Property propRole;
074: private Property propItem;
075: private Property propTypeId;
076: private Property propSupported;
077: private Property propStartTime;
078: private Property propStopTime;
079: private RelationshipData relationship;
080:
081: public RelationshipBase(RelationshipData relationship) {
082: super (relationship.getSupported());
083: createLogger();
084: this .relationship = relationship;
085: }
086:
087: private void createLogger() {
088: log = CSMART.createLogger(this .getClass().getName());
089: }
090:
091: // TODO: Roles are defined in org.cougaar.glm.ldm,
092: // which this doesn't build with -- should they be
093: // added here as allowedValues?
094: public void initProperties() {
095: if (relationship == null) {
096: if (log.isErrorEnabled()) {
097: log.error("Report under bug 1304: " + this
098: + " using CSMART " + CSMART.writeDebug()
099: + " got null relationship to create from",
100: new Throwable());
101: }
102: } else if (relationship.getType() == null) {
103: if (log.isErrorEnabled()) {
104: log
105: .error(
106: "Report under bug 1304: "
107: + this
108: + " using CSMART "
109: + CSMART.writeDebug()
110: + " got null relationship type to create from in relationship: "
111: + relationship, new Throwable());
112: }
113: }
114: propType = addProperty(PROP_TYPE, relationship.getType());
115: propType.setToolTip(PROP_TYPE_DESC);
116:
117: if (getProperty(PROP_TYPE) == null && log.isErrorEnabled()) {
118: log
119: .error(
120: "Please report bug 1304: Using CSMART "
121: + CSMART.writeDebug()
122: + " just finished setting Type and getProperty(type) returns null. Initializing from RelationshipData: "
123: + relationship, new Throwable());
124: }
125:
126: propRole = addProperty(PROP_ROLE, relationship.getRole());
127: propRole.setToolTip(PROP_ROLE_DESC);
128: propItem = addProperty(PROP_ITEM, relationship.getItemId());
129: propItem.setToolTip(PROP_ITEM_DESC);
130: propTypeId = addProperty(PROP_TYPEID, relationship.getTypeId());
131: propTypeId.setToolTip(PROP_TYPEID_DESC);
132: propSupported = addProperty(PROP_SUPPORTED, relationship
133: .getSupported());
134: propSupported.setToolTip(PROP_SUPPORTED_DESC);
135:
136: DateFormat format = DateFormat.getInstance();
137: propStartTime = addProperty(PROP_STARTTIME, format
138: .format(new Date(relationship.getStartTime())));
139: propStartTime.setToolTip(PROP_STARTTIME_DESC);
140:
141: propStopTime = addProperty(PROP_STOPTIME, format
142: .format(new Date(relationship.getEndTime())));
143: propStopTime.setToolTip(PROP_STOPTIME_DESC);
144: }
145:
146: }// RelationshipBase
|