package org.cryptocoinpartners.command; import java.math.BigDecimal; import java.util.UUID; import javax.inject.Inject; import org.cryptocoinpartners.schema.Listing; import org.cryptocoinpartners.schema.Market; import org.cryptocoinpartners.schema.Order; import org.cryptocoinpartners.schema.SpecificOrder; import org.cryptocoinpartners.service.OrderService; import org.cryptocoinpartners.service.PortfolioService; /** * @author Tim Olson */ @CommandName("cancel") @SuppressWarnings("UnusedDeclaration") public class CancelCommand extends CommandBase { @Override public String getUsageHelp() { return "cancel {id}"; } @Override public void parse(String commandArguments) { try { id = UUID.fromString(commandArguments); // listing = Listing.forSymbol(commandArguments); } catch (IllegalArgumentException e) { console.println("Unknown listing " + commandArguments); } } @Override public String getExtraHelp() { String help = "Places an order for the given volume on the specified exchange." + "If a limit price is supplied, a limit order will be generated." + "Stop and stop-limit orders are not currently supported but no " + "error will be given."; if (isSell) help += "Selling is the same as buying with a negative volume."; return help; } @Override public void run() { SpecificOrder cancelledOrder = null; // so we need to get pending order by id //for (Portfolio portfolio : portfolioService.getPortfolios()) for (Order order : orderService.getOrderStateMap().keySet()) if (order instanceof SpecificOrder) if (order.getId().equals(id)) { cancelledOrder = (SpecificOrder) order; orderService.handleCancelSpecificOrder(cancelledOrder); } } @Inject OrderService orderService; @Inject private PortfolioService portfolioService; @Inject private ConsoleWriter console; private BigDecimal volume; private UUID id; private Market market; private Listing listing; private BigDecimal limit; private BigDecimal stop; private boolean isSell; }