001: /*
002: * <copyright>
003: *
004: * Copyright 1997-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: */
026:
027: package org.cougaar.lib.util;
028:
029: import java.util.Date;
030: import java.util.Enumeration;
031: import java.util.Vector;
032:
033: import org.cougaar.planning.ldm.PlanningFactory;
034: import org.cougaar.planning.ldm.plan.ItineraryElement;
035: import org.cougaar.planning.ldm.plan.Location;
036: import org.cougaar.planning.ldm.plan.NewItineraryElement;
037: import org.cougaar.planning.ldm.plan.Schedule;
038: import org.cougaar.planning.ldm.plan.Verb;
039:
040: public class UTILItinerary {
041:
042: /**
043: * Utility methods for creating a ItineraryElements, which will be
044: * indirectObjects to the PrepPhrase ItineraryOf.
045: * @param ldmf the PlanningFactory
046: * @param v the Verb that describes the role of the ItineraryElement
047: * @return NewItineraryElement
048: */
049: public NewItineraryElement makeItineraryElement(
050: PlanningFactory ldmf, Verb v) {
051: NewItineraryElement ie = ldmf.newItineraryElement();
052: ie.setRole(v);
053: return ie;
054: }
055:
056: /**
057: * sets a leg of the itinerary
058: * @param leg the itineraryElement to set
059: * @param startLoc starting location of the leg
060: * @param endLoc ending location of the leg, should be same as startLoc if
061: * the leg is either LOAD or UNLOAD
062: * @param start starting time of the leg
063: * @param end ending time of the leg
064: */
065: public void setItineraryLeg(NewItineraryElement leg,
066: Location startLoc, Location endLoc, Date start, Date end) {
067: leg.setStartLocation(startLoc);
068: leg.setEndLocation(endLoc);
069: leg.setStartDate(start);
070: leg.setEndDate(end);
071: }
072:
073: /**
074: * Return the first leg of this itinerary with the given role
075: *
076: * @param role role of the itinerary element to return
077: * @param itin itinerary through which to search
078: * @return the first itinerary leg found in the enumeration
079: * returned by the Schedule
080: * @return null if no element is found
081: */
082: public ItineraryElement getItineraryLeg(Verb role, Schedule itin) {
083: Enumeration schedule_elts = itin.getAllScheduleElements();
084: while (schedule_elts.hasMoreElements()) {
085: ItineraryElement itin_elt = (ItineraryElement) schedule_elts
086: .nextElement();
087:
088: if (itin_elt.getRole().equals(role))
089: return itin_elt;
090: }
091:
092: return null;
093: }
094:
095: /**
096: * Return all the legs of this itinerary with the given role
097: *
098: * NOTE that the vector is expected to be empty or at least
099: * initialized and ready to be added to- no initialization is done
100: *
101: * @param role role of the itinerary element to return
102: * @param itin itinerary through which to search
103: * @param vec_to_return of itinerary elements to return
104: */
105: public void getItineraryLeg(Verb role, Schedule itin,
106: Vector vec_to_return) {
107: Enumeration schedule_elts = itin.getAllScheduleElements();
108: while (schedule_elts.hasMoreElements()) {
109: ItineraryElement itin_elt = (ItineraryElement) schedule_elts
110: .nextElement();
111:
112: if (itin_elt.getRole().equals(role))
113: vec_to_return.add(itin_elt);
114: }
115:
116: }
117:
118: /**
119: * makes the itinerary
120: * @param ldmf The factory
121: * @param itineraryElements all the legs.
122: * @return Schedule the itinerary
123: */
124: public Schedule makeItinerary(PlanningFactory ldmf,
125: Enumeration itineraryElements) {
126: return ldmf.newSchedule(itineraryElements);
127: }
128: }
|