package detective.core.testdsl.stock;
import java.util.Map;
import detective.core.Parameters;
import detective.core.TestTask;
import detective.core.config.ConfigException;
import detective.task.AbstractTask;
/**
* Sweater Stock Manager for testing. take below inputs:
* <ul>
* <li>sweater.black * : number</li>
* <li>sweater.blue * : number</li>
* <li>sweater.refund.blue : number</li>
* <li>sweater.refund.black : number</li>
* <li>sweater.replace.blue : number</li>
* <li>sweater.replace.black : number</li>
* </ul>
*
* outputs
* <ul>
* <li>sweater.black : number : how many black sweaters left on stock</li>
* <li>sweater.blue : number : how many blue sweaters left on stock</li>
* </ul>
*
* @author James Luo
*
*/
public class SweaterStockManagerTask extends AbstractTask implements TestTask{
@Override
protected void doExecute(Parameters config, Parameters output) {
Long blackSweater = this.readAsLong(config, "sweater.black", null, false, "sweater.black : number");
Long blueSweater = this.readAsLong(config, "sweater.blue", null, false, "sweater.blue : number");
Long backRefundSweater = this.readAsLong(config, "sweater.refund.black", null, true, null);
Long blueRefundSweater = this.readAsLong(config, "sweater.refund.blue", null, true, null);
Long backReplaceSweater = this.readAsLong(config, "sweater.Replace.black", null, true, null);
Long blueReplaceSweater = this.readAsLong(config, "sweater.Replace.blue", null, true, null);
if (backRefundSweater == null && blueRefundSweater == null && backReplaceSweater == null && blueReplaceSweater == null){
throw new ConfigException("sweater.refund.black sweater.refund.blue sweater.Replace.black sweater.Replace.blue at least one of them has value");
}
if (backRefundSweater != null)
blackSweater = blackSweater + backRefundSweater;
if (blueRefundSweater != null)
blueSweater = blueSweater + blueRefundSweater;
if (backReplaceSweater != null)
blackSweater = blackSweater + backReplaceSweater;
if (blueReplaceSweater != null)
blueSweater = blueSweater + blueReplaceSweater;
output.put("sweater.black", blackSweater);
output.put("sweater.blue", blueSweater);
}
}