From 7f1933576bc07ed07e0d3201386cd8adfb332c29 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Thu, 29 Apr 2021 01:11:16 +0200 Subject: [PATCH] Exchange object progress --- .../java/se/koc/trader/TraderContext.java | 10 +- src/main/java/se/koc/trader/TraderServer.java | 19 + .../koc/trader/page/ExchangeConfigPage.java | 12 +- .../trader/struct/ClassConfigurationData.java | 18 + .../java/se/koc/trader/struct/Exchange.java | 4 + src/main/resources/trader-default.db | Bin 25600 -> 25600 bytes src/main/resources/web/exchange_config.tmpl | 78 +- src/main/resources/web/js/jquery.js | 10881 ++++++++++++++++ src/main/resources/web/js/jquery.min.js | 2 + src/main/resources/web/js/trader.js | 15 +- src/main/resources/web/js/trader_chart.js | 10 +- src/main/resources/web/main.tmpl | 1 + src/main/resources/web/symbol_config.tmpl | 6 +- trader.db | Bin 15360 -> 16384 bytes trader.db.0001 | Bin 0 -> 15360 bytes 15 files changed, 11013 insertions(+), 43 deletions(-) create mode 100644 src/main/java/se/koc/trader/struct/ClassConfigurationData.java create mode 100644 src/main/resources/web/js/jquery.js create mode 100644 src/main/resources/web/js/jquery.min.js create mode 100644 trader.db.0001 diff --git a/src/main/java/se/koc/trader/TraderContext.java b/src/main/java/se/koc/trader/TraderContext.java index a330bed..961a357 100644 --- a/src/main/java/se/koc/trader/TraderContext.java +++ b/src/main/java/se/koc/trader/TraderContext.java @@ -15,9 +15,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; +import java.util.*; import java.util.logging.Logger; /** @@ -49,7 +47,6 @@ public class TraderContext { private static Properties dbConf = new Properties(); - public static void initialize(){ try { // Read conf @@ -76,7 +73,10 @@ public class TraderContext { dbConf = db.exec("SELECT * FROM conf", new PropertiesSQLResult()); } - // Upgrade DB needed? + // -------------------------------------------- + // Upgrade DB + // -------------------------------------------- + DBConnection referenceDB = new DBConnection(DBConnection.DBMS.SQLite, DEFAULT_DB_FILE); Properties defaultDBConf = referenceDB.exec("SELECT * FROM conf", new PropertiesSQLResult()); diff --git a/src/main/java/se/koc/trader/TraderServer.java b/src/main/java/se/koc/trader/TraderServer.java index fd28c40..6f75689 100644 --- a/src/main/java/se/koc/trader/TraderServer.java +++ b/src/main/java/se/koc/trader/TraderServer.java @@ -1,8 +1,10 @@ package se.koc.trader; +import se.koc.trader.api.ExchangeConfig; import se.koc.trader.endpoint.AlertEndpoint; import se.koc.trader.api.TraderApiEndpoint; import se.koc.trader.daemon.TraderMarketUpdateManager; +import se.koc.trader.struct.Exchange; import se.koc.trader.struct.PluginConfig; import se.koc.trader.api.TraderPage; import zutil.db.DBConnection; @@ -15,6 +17,7 @@ import zutil.plugin.PluginData; import zutil.plugin.PluginManager; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.Executors; @@ -29,6 +32,7 @@ public class TraderServer { private static ScheduledExecutorService daemonExecutor; private static HttpServer http; + private static List> availableExchangeConfigs = new ArrayList<>(); public static void main(String[] args) throws SQLException { // init logging @@ -69,6 +73,16 @@ public class TraderServer { TraderMarketUpdateManager marketUpdateManager = new TraderMarketUpdateManager(); marketUpdateManager.initialize(daemonExecutor); + // ------------------------------------ + // Init plugins configurations + // ------------------------------------ + + // Exchange + + for (Iterator> it = pluginManager.getClassIterator(ExchangeConfig.class); it.hasNext(); ) { + availableExchangeConfigs.add(it.next()); + } + // ------------------------------------ // Init http server // ------------------------------------ @@ -98,4 +112,9 @@ public class TraderServer { public static void registerPage(TraderPage page){ http.setPage(page.getId(), page); } + + + public static List> getAvailableExchangeConfigs() { + return availableExchangeConfigs; + } } diff --git a/src/main/java/se/koc/trader/page/ExchangeConfigPage.java b/src/main/java/se/koc/trader/page/ExchangeConfigPage.java index e93a202..d5c093f 100644 --- a/src/main/java/se/koc/trader/page/ExchangeConfigPage.java +++ b/src/main/java/se/koc/trader/page/ExchangeConfigPage.java @@ -1,7 +1,9 @@ package se.koc.trader.page; import se.koc.trader.TraderContext; +import se.koc.trader.TraderServer; import se.koc.trader.api.TraderPage; +import se.koc.trader.struct.ClassConfigurationData; import se.koc.trader.struct.Exchange; import se.koc.trader.struct.Symbol; import zutil.ObjectUtil; @@ -10,6 +12,7 @@ import zutil.io.file.FileUtil; import zutil.log.LogUtil; import zutil.parser.Templator; +import java.util.ArrayList; import java.util.Map; import java.util.logging.Logger; @@ -20,10 +23,14 @@ public class ExchangeConfigPage extends TraderPage { private static final Logger logger = LogUtil.getLogger(); private static final String TEMPLATE = TraderContext.RESOURCE_WEB_ROOT + "/exchange_config.tmpl"; + private ArrayList classConfigurations = new ArrayList<>(); public ExchangeConfigPage() { super("exchange_config"); super.getRootNav().createSubNav("Settings").createSubNav(this.getId(), "Exchange Settings").setWeight(100); + + for (Class c : TraderServer.getAvailableExchangeConfigs()) + classConfigurations.add(new ClassConfigurationData(c)); } @Override @@ -51,6 +58,7 @@ public class ExchangeConfigPage extends TraderPage { if (exchange != null) { logger.info("Modifying exchange: " + exchange.getName()); exchange.setName(request.get("name")); + exchange.setObjectClass(request.get("type")); exchange.getObjectConfigurator().setValues(request).applyConfiguration(); exchange.save(db); @@ -81,7 +89,9 @@ public class ExchangeConfigPage extends TraderPage { // Output Templator tmpl = new Templator(FileUtil.find(TEMPLATE)); - tmpl.set("exchanges", Symbol.getSymbols(db)); + tmpl.set("exchanges", Exchange.getExchanges(db)); + tmpl.set("exchangeConfigClasses", TraderServer.getAvailableExchangeConfigs()); + tmpl.set("exchangeObjectConfigs", classConfigurations); return tmpl; diff --git a/src/main/java/se/koc/trader/struct/ClassConfigurationData.java b/src/main/java/se/koc/trader/struct/ClassConfigurationData.java new file mode 100644 index 0000000..28cbdb2 --- /dev/null +++ b/src/main/java/se/koc/trader/struct/ClassConfigurationData.java @@ -0,0 +1,18 @@ +package se.koc.trader.struct; + +import zutil.ui.Configurator; +import zutil.ui.Configurator.ConfigurationParam; + +/** + * A Data class used by the dynamic class configuration pages + */ +public class ClassConfigurationData { + public Class clazz; + public ConfigurationParam[] params; + + + public ClassConfigurationData(Class clazz) { + this.clazz = clazz; + this.params = Configurator.getConfiguration(clazz); + } +} \ No newline at end of file diff --git a/src/main/java/se/koc/trader/struct/Exchange.java b/src/main/java/se/koc/trader/struct/Exchange.java index 624991e..da56156 100644 --- a/src/main/java/se/koc/trader/struct/Exchange.java +++ b/src/main/java/se/koc/trader/struct/Exchange.java @@ -6,6 +6,7 @@ import zutil.db.bean.DBBean; import zutil.db.bean.DBBeanObjectDSO; import java.sql.SQLException; +import java.util.List; /** * Object representing a single exchange endpoint. @@ -16,6 +17,9 @@ public class Exchange extends DBBeanObjectDSO { private String name; + public static List getExchanges(DBConnection db) throws SQLException { + return DBBean.load(db, Exchange.class); + } public static Exchange getExchange(DBConnection db, long id) throws SQLException { return DBBean.load(db, Exchange.class, id); } diff --git a/src/main/resources/trader-default.db b/src/main/resources/trader-default.db index c4c350d0ca0943ea1dd46cd6355b79cd6d25bf16..4fc8c73f8d12160573e52cf3bd1955c81c96eade 100644 GIT binary patch delta 267 zcmZoT!Pszuae}nq1qKENNgx&lVm1Z_M%#%x#*7y>CM@9>VPjs%!2Ff@B=b7veav^6 z7cx&{p0-(#C7yY5xv-)b^JNAxj^e_cByJ04S&r0-mn0_Tq=HP0 zFGvxK-tgiL;?sNgx&lVm1Z_MyrWB#*F7SCM@9>VP#&&!2Ff@B=b7veav^6 zr!!Aup0-(#C7yY5xv-+xWd?D^;=-Jy_>$Dzg7}ieq@2`vL+;7zgrm5apD_Pq{>1#6 z`7TiTDP|QmR&G`X4o(hM7FGsMAjJjYaRMn04pufWZEd_P%`<^N`3Uqwc)M)6#Baamc$CdSE*exi&*ljr#OPcCNE-h9r_mywZevrNDf FVE`H&HVXg% diff --git a/src/main/resources/web/exchange_config.tmpl b/src/main/resources/web/exchange_config.tmpl index 3738078..f96bf1e 100644 --- a/src/main/resources/web/exchange_config.tmpl +++ b/src/main/resources/web/exchange_config.tmpl @@ -5,8 +5,8 @@
@@ -21,7 +21,7 @@ Name Type Configuration - Actions + Actions @@ -30,26 +30,25 @@ {{.getName()}} {{.getClass().getSimpleName()}} {{.getDeviceConfig()}} - +
-
- -
@@ -67,28 +66,41 @@ -