From c4e3b7f311b7e71c187d4193ead3103874386b92 Mon Sep 17 00:00:00 2001 From: iMoHax Date: Mon, 1 Dec 2014 17:30:10 +0300 Subject: [PATCH] temp commit --- .../controllers/GroupEditorController.java | 4 ++ .../controllers/ItemEditorController.java | 4 ++ .../ru/trader/store/berkeley/BDBItemStat.java | 69 +++++++++++++++++++ .../ru/trader/store/berkeley/BDBMarket.java | 35 +++++++++- 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 client/src/main/java/ru/trader/controllers/GroupEditorController.java create mode 100644 client/src/main/java/ru/trader/controllers/ItemEditorController.java create mode 100644 core/src/main/java/ru/trader/store/berkeley/BDBItemStat.java diff --git a/client/src/main/java/ru/trader/controllers/GroupEditorController.java b/client/src/main/java/ru/trader/controllers/GroupEditorController.java new file mode 100644 index 0000000..94fc0a7 --- /dev/null +++ b/client/src/main/java/ru/trader/controllers/GroupEditorController.java @@ -0,0 +1,4 @@ +package ru.trader.controllers; + +public class GroupEditorController { +} diff --git a/client/src/main/java/ru/trader/controllers/ItemEditorController.java b/client/src/main/java/ru/trader/controllers/ItemEditorController.java new file mode 100644 index 0000000..dc365e5 --- /dev/null +++ b/client/src/main/java/ru/trader/controllers/ItemEditorController.java @@ -0,0 +1,4 @@ +package ru.trader.controllers; + +public class ItemEditorController { +} diff --git a/core/src/main/java/ru/trader/store/berkeley/BDBItemStat.java b/core/src/main/java/ru/trader/store/berkeley/BDBItemStat.java new file mode 100644 index 0000000..8131a34 --- /dev/null +++ b/core/src/main/java/ru/trader/store/berkeley/BDBItemStat.java @@ -0,0 +1,69 @@ +package ru.trader.store.berkeley; + +import ru.trader.core.AbstractItemStat; +import ru.trader.core.Item; +import ru.trader.core.OFFER_TYPE; +import ru.trader.core.Offer; + +import java.util.NavigableSet; + + +//TODO: implement +public class BDBItemStat extends AbstractItemStat { + private final ItemProxy item; + private final OFFER_TYPE type; + private final BDBStore store; + + public BDBItemStat(ItemProxy item, OFFER_TYPE type, BDBStore store) { + this.item = item; + this.type = type; + this.store = store; + } + + synchronized void put(Offer offer){ + } + + synchronized void remove(Offer offer){ + } + + + @Override + public OFFER_TYPE getType() { + return type; + } + + @Override + public Item getItem() { + return item; + } + + @Override + public Offer getMin() { + return null; + } + + @Override + public double getAvg() { + return 0; + } + + @Override + public Offer getMax() { + return null; + } + + @Override + public Offer getBest() { + return null; + } + + @Override + public NavigableSet getOffers() { + return null; + } + + @Override + public boolean isEmpty() { + return false; + } +} diff --git a/core/src/main/java/ru/trader/store/berkeley/BDBMarket.java b/core/src/main/java/ru/trader/store/berkeley/BDBMarket.java index e335a2d..da9f9d7 100644 --- a/core/src/main/java/ru/trader/store/berkeley/BDBMarket.java +++ b/core/src/main/java/ru/trader/store/berkeley/BDBMarket.java @@ -5,11 +5,44 @@ import ru.trader.store.berkeley.entities.BDBGroup; import ru.trader.store.berkeley.entities.BDBItem; import ru.trader.store.berkeley.entities.BDBPlace; -import java.util.Collection; +import java.util.*; public class BDBMarket extends AbstractMarket { private final BDBStore store; + //caching + private final Map sellItems = new HashMap<>(); + private final Map buyItems = new HashMap<>(); + + + private Map getItemCache(OFFER_TYPE offerType){ + switch (offerType) { + case SELL: return sellItems; + case BUY: return buyItems; + default: + throw new IllegalArgumentException("Wrong offer type: "+offerType); + } + } + + private void put(Map cache, Offer offer){ + Item item = offer.getItem(); + BDBItemStat entry = cache.get(item); + if (entry == null){ + entry = new BDBItemStat((ItemProxy) item, offer.getType(), store); + cache.put(item, entry); + } + entry.put(offer); + } + + private void remove(Map cache, Offer offer){ + Item item = offer.getItem(); + BDBItemStat entry = cache.get(item); + if (entry!=null){ + entry.remove(offer); + if (entry.isEmpty()) + cache.remove(item); + } + } public BDBMarket(BDBStore store) { this.store = store;