package com.rhc.stock; import javax.annotation.Resource; import org.drools.logger.KnowledgeRuntimeLogger; import org.springframework.test.context.ContextConfiguration; import com.rhc.drools.reference.StatelessDroolsComponent; import com.rhc.trade.Trade; import com.rhc.trade.TradeRequest; import com.rhc.trade.TradeResponse; import cucumber.api.java.Before; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; @ContextConfiguration public class DayTraderSteps { @Resource(name = "stocksDroolsComponent") private StatelessDroolsComponent drools; static KnowledgeRuntimeLogger logger; private Stock stock = new Stock(); private StockDay day = new StockDay(); private TradeResponse tradeResponse; @Before public void init() { } @Given("^a current price of \"([^\"]*)\" for a stock \"([^\"]*)\"$") public void a_current_price_of_for_a_stock(String price, String name) throws Throwable { stock.setName(name); StockQuote quote = new StockQuote(); quote.setPrice(Float.valueOf(price)); quote.setStock(stock); stock.setQuote(quote); } @Given("^a day open of \"([^\"]*)\"$") public void a_day_open_of(String open) throws Throwable { day.setDayOpen(Float.valueOf(open)); day.setStock(stock); } @Given("^a daily volatility of \"([^\"]*)\" USD$") public void a_daily_volatility_of_USD(String volatility) throws Throwable { stock.getQuote().setVolatility(Float.valueOf(volatility)); } @When("^determining an action for stock \"([^\"]*)\"$") public void determining_an_action_for_stock(String arg1) throws Throwable { TradeRequest tradeRequest = new TradeRequest(); tradeRequest.setDay(day); tradeRequest.setQuote(stock.getQuote()); tradeResponse = drools.execute(tradeRequest, TradeResponse.class); } @Then("^ask to sell stock \"([^\"]*)\" for \"([^\"]*)\"$") public void ask_to_sell_stock_for(String name, String price) throws Throwable { Trade trade = tradeResponse.getSellTrade(); if (trade != null) { if (trade.getPrice().equals(Float.valueOf(price)) && trade.getStock().getName().equals(name)) System.out.println("Sell stock of " + name + " for " + price ); } } @Then("^bid to buy stock \"([^\"]*)\" for \"([^\"]*)\"$") public void bid_to_buy_stock_for(String name, String price) throws Throwable { Trade trade = tradeResponse.getBuyTrade(); if (trade != null) { if (trade.getPrice().equals(Float.valueOf(price)) && trade.getStock().getName().equals(name)) System.out.println("Buy stock of " + name + " for " + price ); } } @Then("^do not ask to sell stock \"([^\"]*)\"$") public void do_not_ask_to_sell_stock(String name) throws Throwable { Trade trade = tradeResponse.getSellTrade(); if (trade == null) { System.out.println("Don't sell stock of " + name ); } } @Then("^do not bid to buy stock \"([^\"]*)\"$") public void do_not_bid_to_buy_stock(String name) throws Throwable { Trade trade = tradeResponse.getBuyTrade(); if (trade == null) { System.out.println("Don't buy stock of " + name ); } } }