Archived
0

check demand and supply for order limit count

This commit is contained in:
iMoHax
2014-11-27 14:00:31 +03:00
parent 86c4abaa96
commit dd00f7be39
6 changed files with 88 additions and 69 deletions

View File

@@ -19,7 +19,6 @@ import ru.trader.view.support.Localization;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
@@ -39,7 +38,7 @@ public class OrdersController {
private TableColumn<OrderModel, Long> maxCount;
@FXML
private TableColumn<OfferModel, Double> curProfit;
private TableColumn<OfferModel, Number> curProfit;
@FXML
private TableColumn<OfferModel, Double> curDistance;
@@ -56,7 +55,7 @@ public class OrdersController {
tblBuyers.getSelectionModel().selectedItemProperty().addListener((v, o, n) -> setBuyer(n));
curProfit.setCellValueFactory(param -> {
OfferModel offer = param.getValue();
return order !=null ? order.getProfit(offer) : new SimpleDoubleProperty(Double.NaN).asObject();
return order !=null ? order.getProfit(offer) : new SimpleDoubleProperty(Double.NaN);
});
curDistance.setCellValueFactory(param -> {
OfferModel offer = param.getValue();

View File

@@ -3,6 +3,7 @@ package ru.trader.model;
import javafx.beans.binding.Bindings;
import javafx.beans.property.*;
import javafx.beans.value.ObservableValue;
import ru.trader.core.Order;
import ru.trader.graph.PathRoute;
import ru.trader.model.support.ModelBindings;
@@ -45,7 +46,7 @@ public class OrderModel {
public OrderModel(OfferModel offer, double balance, long limit) {
this(offer);
this.max.setValue(Math.min(offer.getCount(), Math.min(limit, (long) Math.floor(balance / offer.getPrice()))));
this.max.setValue(Order.getMaxCount(offer.getOffer(), balance, limit));
}
PathRoute getPath() {
@@ -131,8 +132,9 @@ public class OrderModel {
return profitProperty().get();
}
public ObservableValue<Double> getProfit(OfferModel buyer) {
return buyer.priceProperty().subtract(offer.priceProperty()).multiply(Bindings.min(max, buyer.countProperty())).asObject();
public ObservableValue<Number> getProfit(OfferModel buyer) {
return Bindings.createDoubleBinding(() -> offer.getPrice() * Order.getMaxCount(offer.getOffer(), buyer.getOffer(), max.get()),
buyer.priceProperty(), offer.priceProperty(), max, buyer.countProperty());
}
public ReadOnlyDoubleProperty profitProperty() {