From 4db1f866f36bfac45158df132f95c39c7734cdba Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Mon, 19 Apr 2021 01:03:18 +0200 Subject: [PATCH] Working on Exchange config --- .../{exchange => api}/ExchangeConfig.java | 4 +- .../{exchange => api}/ExchangeMarket.java | 2 +- .../se/koc/trader/api/ExchangeWallet.java | 4 + .../daemon/TraderMarketUpdateManager.java | 4 +- .../se/koc/trader/exchange/ExchangeOrder.java | 4 - .../exchange/binance/BinanceExchange.java | 8 +- .../exchange/binance/BinanceMarket.java | 2 +- .../koc/trader/exchange/binance/plugin.json | 2 +- .../koc/trader/page/ExchangeConfigPage.java | 45 ++++++++ .../se/koc/trader/page/SymbolConfigPage.java | 5 +- .../java/se/koc/trader/struct/Exchange.java | 36 +++++++ .../java/se/koc/trader/struct/Symbol.java | 3 +- src/main/resources/trader-default.db | Bin 25600 -> 25600 bytes src/main/resources/web/exchange_config.tmpl | 98 ++++++++++++++++++ src/main/resources/web/symbol_config.tmpl | 36 +++++-- src/main/resources/web/symbol_overview.tmpl | 1 + 16 files changed, 226 insertions(+), 28 deletions(-) rename src/main/java/se/koc/trader/{exchange => api}/ExchangeConfig.java (89%) rename src/main/java/se/koc/trader/{exchange => api}/ExchangeMarket.java (89%) create mode 100644 src/main/java/se/koc/trader/api/ExchangeWallet.java delete mode 100644 src/main/java/se/koc/trader/exchange/ExchangeOrder.java create mode 100644 src/main/java/se/koc/trader/struct/Exchange.java create mode 100644 src/main/resources/web/exchange_config.tmpl diff --git a/src/main/java/se/koc/trader/exchange/ExchangeConfig.java b/src/main/java/se/koc/trader/api/ExchangeConfig.java similarity index 89% rename from src/main/java/se/koc/trader/exchange/ExchangeConfig.java rename to src/main/java/se/koc/trader/api/ExchangeConfig.java index d31802e..376252b 100644 --- a/src/main/java/se/koc/trader/exchange/ExchangeConfig.java +++ b/src/main/java/se/koc/trader/api/ExchangeConfig.java @@ -1,4 +1,4 @@ -package se.koc.trader.exchange; +package se.koc.trader.api; import zutil.db.bean.DBBean; @@ -16,7 +16,7 @@ public abstract class ExchangeConfig extends DBBean { public abstract ExchangeMarket getExchangeMarket(); - public abstract ExchangeOrder getExchangeOrder(); + public abstract ExchangeWallet getExchangeOrder(); // ---------------------------------------------------- // Common logic diff --git a/src/main/java/se/koc/trader/exchange/ExchangeMarket.java b/src/main/java/se/koc/trader/api/ExchangeMarket.java similarity index 89% rename from src/main/java/se/koc/trader/exchange/ExchangeMarket.java rename to src/main/java/se/koc/trader/api/ExchangeMarket.java index 5d2d7cf..30671a7 100644 --- a/src/main/java/se/koc/trader/exchange/ExchangeMarket.java +++ b/src/main/java/se/koc/trader/api/ExchangeMarket.java @@ -1,4 +1,4 @@ -package se.koc.trader.exchange; +package se.koc.trader.api; import se.koc.trader.struct.Symbol; diff --git a/src/main/java/se/koc/trader/api/ExchangeWallet.java b/src/main/java/se/koc/trader/api/ExchangeWallet.java new file mode 100644 index 0000000..04539cf --- /dev/null +++ b/src/main/java/se/koc/trader/api/ExchangeWallet.java @@ -0,0 +1,4 @@ +package se.koc.trader.api; + +public interface ExchangeWallet { +} diff --git a/src/main/java/se/koc/trader/daemon/TraderMarketUpdateManager.java b/src/main/java/se/koc/trader/daemon/TraderMarketUpdateManager.java index cf1f435..9ef726c 100644 --- a/src/main/java/se/koc/trader/daemon/TraderMarketUpdateManager.java +++ b/src/main/java/se/koc/trader/daemon/TraderMarketUpdateManager.java @@ -1,8 +1,8 @@ package se.koc.trader.daemon; import se.koc.trader.TraderContext; -import se.koc.trader.exchange.ExchangeConfig; -import se.koc.trader.exchange.ExchangeMarket; +import se.koc.trader.api.ExchangeConfig; +import se.koc.trader.api.ExchangeMarket; import se.koc.trader.struct.Symbol; import zutil.db.DBConnection; import zutil.log.LogUtil; diff --git a/src/main/java/se/koc/trader/exchange/ExchangeOrder.java b/src/main/java/se/koc/trader/exchange/ExchangeOrder.java deleted file mode 100644 index b331517..0000000 --- a/src/main/java/se/koc/trader/exchange/ExchangeOrder.java +++ /dev/null @@ -1,4 +0,0 @@ -package se.koc.trader.exchange; - -public interface ExchangeOrder { -} diff --git a/src/main/java/se/koc/trader/exchange/binance/BinanceExchange.java b/src/main/java/se/koc/trader/exchange/binance/BinanceExchange.java index a6dd1cc..402a813 100644 --- a/src/main/java/se/koc/trader/exchange/binance/BinanceExchange.java +++ b/src/main/java/se/koc/trader/exchange/binance/BinanceExchange.java @@ -1,8 +1,8 @@ package se.koc.trader.exchange.binance; -import se.koc.trader.exchange.ExchangeConfig; -import se.koc.trader.exchange.ExchangeMarket; -import se.koc.trader.exchange.ExchangeOrder; +import se.koc.trader.api.ExchangeConfig; +import se.koc.trader.api.ExchangeMarket; +import se.koc.trader.api.ExchangeWallet; public class BinanceExchange extends ExchangeConfig { private BinanceMarket market; @@ -15,7 +15,7 @@ public class BinanceExchange extends ExchangeConfig { } @Override - public ExchangeOrder getExchangeOrder() { + public ExchangeWallet getExchangeOrder() { return null; } } diff --git a/src/main/java/se/koc/trader/exchange/binance/BinanceMarket.java b/src/main/java/se/koc/trader/exchange/binance/BinanceMarket.java index 6bed07a..3f49fe6 100644 --- a/src/main/java/se/koc/trader/exchange/binance/BinanceMarket.java +++ b/src/main/java/se/koc/trader/exchange/binance/BinanceMarket.java @@ -1,6 +1,6 @@ package se.koc.trader.exchange.binance; -import se.koc.trader.exchange.ExchangeMarket; +import se.koc.trader.api.ExchangeMarket; import se.koc.trader.struct.Symbol; import zutil.net.ws.rest.RESTClientFactory; diff --git a/src/main/java/se/koc/trader/exchange/binance/plugin.json b/src/main/java/se/koc/trader/exchange/binance/plugin.json index 3373f40..8514aa5 100644 --- a/src/main/java/se/koc/trader/exchange/binance/plugin.json +++ b/src/main/java/se/koc/trader/exchange/binance/plugin.json @@ -3,6 +3,6 @@ "name": "Exchange-Binance", "description": "Plugin contains core Binance connectivity.", "interfaces": [ - {"se.koc.trader.exchange.ExchangeConfig": "se.koc.trader.exchange.binance.BinanceExchange"} + {"se.koc.trader.api.ExchangeConfig": "se.koc.trader.exchange.binance.BinanceExchange"} ] } diff --git a/src/main/java/se/koc/trader/page/ExchangeConfigPage.java b/src/main/java/se/koc/trader/page/ExchangeConfigPage.java index 12ace39..e93a202 100644 --- a/src/main/java/se/koc/trader/page/ExchangeConfigPage.java +++ b/src/main/java/se/koc/trader/page/ExchangeConfigPage.java @@ -2,6 +2,7 @@ package se.koc.trader.page; import se.koc.trader.TraderContext; import se.koc.trader.api.TraderPage; +import se.koc.trader.struct.Exchange; import se.koc.trader.struct.Symbol; import zutil.ObjectUtil; import zutil.db.DBConnection; @@ -34,6 +35,50 @@ public class ExchangeConfigPage extends TraderPage { DBConnection db = TraderContext.getDB(); + if (request.containsKey("action")) { + int id = (ObjectUtil.isEmpty(request.get("id")) ? -1 : Integer.parseInt(request.get("id"))); + Exchange exchange = null; + + if (id >= 0) + exchange = Exchange.getExchange(db, id); + + switch(request.get("action")) { + case "create_exchange": + logger.info("Creating symbol: " + request.get("name")); + exchange = new Exchange(); + /* FALLTHROUGH */ + case "modify_exchange": + if (exchange != null) { + logger.info("Modifying exchange: " + exchange.getName()); + exchange.setName(request.get("name")); + exchange.getObjectConfigurator().setValues(request).applyConfiguration(); + exchange.save(db); + + TraderContext.getMessageManager().add(new UserMessage( + MessageLevel.SUCCESS, "Successfully saved exchange: " + exchange.getName(), MessageTTL.ONE_VIEW)); + } else { + logger.warning("Unknown exchange id: " + id); + TraderContext.getMessageManager().add(new UserMessage( + MessageLevel.ERROR, "Unknown exchange id: " + id, MessageTTL.ONE_VIEW)); + } + break; + + case "remove_exchange": + if (exchange != null) { + logger.warning("Removing exchange: " + exchange.getName()); + exchange.delete(db); + + TraderContext.getMessageManager().add(new UserMessage( + MessageLevel.SUCCESS, "Successfully removed exchange: " + exchange.getName(), MessageTTL.ONE_VIEW)); + } else { + logger.warning("Unknown exchange id: " + id); + TraderContext.getMessageManager().add(new UserMessage( + MessageLevel.ERROR, "Unknown exchange id: " + id, MessageTTL.ONE_VIEW)); + } + break; + } + } + // Output Templator tmpl = new Templator(FileUtil.find(TEMPLATE)); tmpl.set("exchanges", Symbol.getSymbols(db)); diff --git a/src/main/java/se/koc/trader/page/SymbolConfigPage.java b/src/main/java/se/koc/trader/page/SymbolConfigPage.java index e6b11d0..e8c711c 100644 --- a/src/main/java/se/koc/trader/page/SymbolConfigPage.java +++ b/src/main/java/se/koc/trader/page/SymbolConfigPage.java @@ -43,11 +43,10 @@ public class SymbolConfigPage extends TraderPage { symbol = Symbol.getSymbol(db, id); switch(request.get("action")) { - // Local Sensors case "create_symbol": logger.info("Creating symbol: " + request.get("name")); symbol = new Symbol(); - + /* FALLTHROUGH */ case "modify_symbol": if (symbol != null) { logger.info("Modifying sensor: " + symbol.getName()); @@ -55,7 +54,7 @@ public class SymbolConfigPage extends TraderPage { symbol.save(db); TraderContext.getMessageManager().add(new UserMessage( - MessageLevel.SUCCESS, "Successfully saved symbol: "+symbol.getName(), MessageTTL.ONE_VIEW)); + MessageLevel.SUCCESS, "Successfully saved symbol: " + symbol.getName(), MessageTTL.ONE_VIEW)); } else { logger.warning("Unknown sensor id: " + id); TraderContext.getMessageManager().add(new UserMessage( diff --git a/src/main/java/se/koc/trader/struct/Exchange.java b/src/main/java/se/koc/trader/struct/Exchange.java new file mode 100644 index 0000000..624991e --- /dev/null +++ b/src/main/java/se/koc/trader/struct/Exchange.java @@ -0,0 +1,36 @@ +package se.koc.trader.struct; + +import se.koc.trader.api.ExchangeConfig; +import zutil.db.DBConnection; +import zutil.db.bean.DBBean; +import zutil.db.bean.DBBeanObjectDSO; + +import java.sql.SQLException; + +/** + * Object representing a single exchange endpoint. + */ +@DBBean.DBTable(value = "exchange", superBean = true) +public class Exchange extends DBBeanObjectDSO { + + private String name; + + + public static Exchange getExchange(DBConnection db, long id) throws SQLException { + return DBBean.load(db, Exchange.class, id); + } + + + public Exchange() { } + public Exchange(ExchangeConfig exchangeConfig) { + this.setObject(exchangeConfig); + } + + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/se/koc/trader/struct/Symbol.java b/src/main/java/se/koc/trader/struct/Symbol.java index e0f53eb..e4a211c 100644 --- a/src/main/java/se/koc/trader/struct/Symbol.java +++ b/src/main/java/se/koc/trader/struct/Symbol.java @@ -1,8 +1,9 @@ package se.koc.trader.struct; -import se.koc.trader.exchange.ExchangeConfig; +import se.koc.trader.api.ExchangeConfig; import zutil.db.DBConnection; import zutil.db.bean.DBBean; +import zutil.db.bean.DBBeanObjectDSO; import java.sql.SQLException; import java.util.List; diff --git a/src/main/resources/trader-default.db b/src/main/resources/trader-default.db index 38bd66b697e9c0f0a2366afbd9fbfe4313c9eef6..c4c350d0ca0943ea1dd46cd6355b79cd6d25bf16 100644 GIT binary patch delta 621 zcmY*XO=uHQ5T3~-o83)QNn^4NF|sU(jYPs~s6V%)?4f95jazI_YtnAhK(a}bR4rcG zo&`-8>P^&x$AIirJhzuza`7UF2vtx#d9V@mZK{wmeDlXQ%*VX9wU1l-_%t5s0YHo) z!oUIG^-k(C_TJok>5t=c@IfD_OF4=mu++8JkcM<88*x;=hVI0pyK3j-r2Q7pds#K@ z913wR+6NzXfqv2f8-GV1=o#(No)hvKWIqVY67@mC)_S#Mw9Q(>XctRW(@+C;H+(L` zl!&-eGVYtvE2JK0%~qvu8EchRyWZRk2$v|vH>w-uiWOvR@Pgw%eIzk8$9d{ke3$o* zBMpEC^lfN|Z25b-;ByB~xlVMQFGxTj1o10y7zR4<3_Lwg2E+Kn4tf8G+jlI#q^h`c z+y0J8H9S+$vbrYg+1yP{R)!)^NK@n~Q5fmlSB1p*YQ4E^8XJvrv$$d^_G8akb-pk= zmn|&GH?*ax5xOF07xY`RdA4Rw%j-!o$ux2c>6yCy0&~;RZK>v$5((VF;l<2{%WFle zZ2pfEC*}QX+fVqYVijwqBIw$po?-&qn~jlbxo)ji%Jw>5bb9$~81b>ClME7r`!~iI uIOoj#XWGrUS3UC3Z~8K{Pwc9FigSSg<4lO6%N7Ke&#~7a;`vvLV}AjBouID( delta 266 zcmZoT!Pszuae}nqDFy}xNgx&lVs-`wMze`J#*C*nCM;x^28&!~U|z@U#4O49m~kE> z1H)y8WeoZZ`V$>RHyd)~GH#y77{Rpp8#fP&*lPw>=5-9rmzlpZp9E^z$2^018uPTx zf-LdOlgot_#9uS-V-VvgF3d@aFGE$%2K2i<#*h1M^9y-%RI# z7WFVOr-bTHd>}D-j=JRLbAFbLqHI9T5 + +
+
+
+
+ +
+
+
Exchange Instances
+
+ +
+
+ + + + + + + + + + + {{#exchanges}} + + + + + + + {{/exchanges}} + +
NameTypeConfigurationActions
{{.getName()}}{{.getClass().getSimpleName()}}{{.getDeviceConfig()}} +
+ + +
+ + + +
+
+
+
+
+
+ + + + + + + + diff --git a/src/main/resources/web/symbol_config.tmpl b/src/main/resources/web/symbol_config.tmpl index 920555e..f2dcd1c 100644 --- a/src/main/resources/web/symbol_config.tmpl +++ b/src/main/resources/web/symbol_config.tmpl @@ -1,12 +1,27 @@ -

Symbol Configuration

+
+
+
+
+
- +