01: /*
02: * <copyright>
03: *
04: * Copyright 1997-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26:
27: package org.cougaar.mlm.construction;
28:
29: import org.cougaar.glm.ldm.asset.Inventory;
30: import org.cougaar.glm.ldm.asset.Organization;
31: import org.cougaar.glm.plugins.TaskUtils;
32: import org.cougaar.glm.plugins.TimeUtils;
33: import org.cougaar.glm.plugins.inventory.GeneralInventoryManager;
34: import org.cougaar.glm.plugins.inventory.InventoryPlugin;
35: import org.cougaar.planning.ldm.plan.Allocation;
36: import org.cougaar.planning.ldm.plan.AllocationResult;
37: import org.cougaar.planning.ldm.plan.Task;
38:
39: /** Allocate SUPPLY tasks for construction supplies to local construction inventory
40: * (if there is any) or to the closest supplier.
41: *
42: **/
43: public class ConstructionInventoryManager extends
44: GeneralInventoryManager {
45:
46: /** Constructor */
47: public ConstructionInventoryManager(InventoryPlugin plugin,
48: Organization org, String type) {
49: super (plugin, org, type);
50: }
51:
52: protected int getPolicyForNextReorderDay(Task refill, int day,
53: Inventory inventory) {
54: // don't bother to ask for a refill earlier than the reported date of the
55: // failure
56: Allocation alloc = (Allocation) refill.getPlanElement();
57: AllocationResult ar = alloc.getReportedResult();
58: int skipDay = TimeUtils.getDaysBetween(startTime_,
59: (long) TaskUtils.getEndTime(ar));
60: if (day <= skipDay) {
61: // the failure was for amount, not time
62: // and we had predated the requested date so that it would arrive in time
63: skipDay += 7;
64: }
65: day = skipDay;
66: return day;
67: }
68:
69: /** Figures out time it will take (in days) to ship order.
70: * Order ship time currently hardcoded to 2.
71: */
72: public int getOrderShipTime() {
73: return 0; // eventually check for lead time
74: }
75:
76: }
|