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.logistics.ui.inventory.data;
028:
029: import org.cougaar.util.log.Logging;
030: import org.cougaar.util.log.Logger;
031: import org.cougaar.util.log.LoggerFactory;
032:
033: import java.util.Date;
034: import org.cougaar.logistics.plugin.inventory.TimeUtils;
035:
036: /**
037: * <pre>
038: *
039: * The InventoryLevel is a concrete class that reflects a
040: * level csv in the xml. It contains start and endtime
041: * as well as reorder and inventory level for that given
042: * bucket.
043: *
044: *
045: **/
046:
047: public class InventoryLevel extends InventoryScheduleElement {
048:
049: protected double reorderLevel;
050: protected Double inventoryLevel;
051: protected Double targetLevel;
052:
053: protected String activityType;
054: protected String optempo;
055:
056: private static final int START_TIME_INDEX = CSV_START_INDEX + 1;
057: private static final int END_TIME_INDEX = CSV_START_INDEX + 2;
058: private static final int REORDER_LEVEL_INDEX = CSV_START_INDEX + 3;
059: private static final int INVENTORY_LEVEL_INDEX = CSV_START_INDEX + 4;
060: private static final int TARGET_LEVEL_INDEX = CSV_START_INDEX + 5;
061: private static final int ACTIVITY_TYPE_INDEX = CSV_START_INDEX + 6;
062: private static final int OPTEMPO_INDEX = CSV_START_INDEX + 7;
063:
064: public InventoryLevel(double aReorderLevel,
065: Double anInventoryLevel, Double aTargetLevel,
066: String anActivityType, String anOptempo, long aStartTime,
067: long anEndTime) {
068: super (aStartTime, anEndTime);
069: reorderLevel = aReorderLevel;
070: inventoryLevel = anInventoryLevel;
071: targetLevel = aTargetLevel;
072: activityType = anActivityType;
073: optempo = anOptempo;
074: }
075:
076: public double getReorderLevel() {
077: return reorderLevel;
078: }
079:
080: public Double getInventoryLevel() {
081: return inventoryLevel;
082: }
083:
084: public Double getTargetLevel() {
085: return targetLevel;
086: }
087:
088: public String getActivityType() {
089: return activityType;
090: }
091:
092: public String getOptempo() {
093: return optempo;
094: }
095:
096: public String getHRHeader() {
097: return "<Start Time,End Time,Reorder Level,Inventory Level, Target Level, Activity Type, Optempo>";
098: }
099:
100: public String toHRString() {
101: return "" + new Date(startTime) + "," + new Date(endTime) + ","
102: + getReorderLevel() + "," + getInventoryLevel() + ","
103: + getTargetLevel() + "," + getActivityType() + ","
104: + getOptempo();
105: }
106:
107: public String toString() {
108: return super .toString() + ",reorderLevel=" + getReorderLevel()
109: + ",inventoryLevel=" + getInventoryLevel()
110: + ",targetLevel=" + getTargetLevel() + ",activityType="
111: + getActivityType() + ",optempo=" + getOptempo();
112: }
113:
114: public static InventoryLevel createFromCSV(String csvString) {
115: String[] subStrings = csvString.split(SPLIT_REGEX);
116:
117: double aReorderLevel = (new Double(
118: subStrings[REORDER_LEVEL_INDEX])).doubleValue();
119: Double anInventoryLevel;
120: Double aTargetLevel;
121: String anActivityType;
122: String anOptempo;
123:
124: if ((subStrings.length == INVENTORY_LEVEL_INDEX)
125: || (subStrings[INVENTORY_LEVEL_INDEX].trim().equals(""))) {
126: anInventoryLevel = null;
127: } else {
128: anInventoryLevel = new Double(
129: subStrings[INVENTORY_LEVEL_INDEX]);
130: }
131:
132: if ((subStrings.length <= TARGET_LEVEL_INDEX)
133: || (subStrings[TARGET_LEVEL_INDEX].trim().equals(""))) {
134: aTargetLevel = null;
135: } else {
136: aTargetLevel = new Double(subStrings[TARGET_LEVEL_INDEX]);
137: }
138: if ((subStrings.length <= ACTIVITY_TYPE_INDEX)
139: || (subStrings[ACTIVITY_TYPE_INDEX].trim().equals(""))) {
140: anActivityType = null;
141: } else {
142: anActivityType = subStrings[ACTIVITY_TYPE_INDEX].intern();
143: }
144: if ((subStrings.length <= OPTEMPO_INDEX)
145: || (subStrings[OPTEMPO_INDEX].trim().equals(""))) {
146: anOptempo = null;
147: } else {
148: anOptempo = subStrings[OPTEMPO_INDEX].intern();
149: }
150: long aStartTime = -0L;
151: String startTimeStr = subStrings[START_TIME_INDEX].trim();
152: if (!(startTimeStr.equals(""))) {
153: aStartTime = (new Long(startTimeStr)).longValue();
154: }
155: long anEndTime = (new Long(subStrings[END_TIME_INDEX]))
156: .longValue();
157:
158: InventoryLevel newLevel = new InventoryLevel(aReorderLevel,
159: anInventoryLevel, aTargetLevel, anActivityType,
160: anOptempo, aStartTime, anEndTime);
161:
162: return newLevel;
163: }
164:
165: public static void main(String[] args) {
166: Date now = new Date();
167: long nowTime = now.getTime();
168: InventoryLevel level = InventoryLevel.createFromCSV(nowTime
169: + "," + nowTime + ","
170: + (nowTime + (3 * TimeUtils.MSEC_PER_DAY))
171: + ",42.0,123.0,0,DEFENSIVE,HIGH");
172: Logger logger = Logging.getLoggerFactory().createLogger(
173: InventoryLevel.class.getName());
174: logger.shout("InventoryLevel is " + level);
175: }
176:
177: }
|