From 476f3708f40b3e5d08cb08bd49c9653017fb44d7 Mon Sep 17 00:00:00 2001 From: Seth Ladygo Date: Sat, 26 May 2018 23:02:31 -0700 Subject: [PATCH] change time rep from Long to Joda DateTime --- build.gradle | 2 ++ src/main/java/CSVReader.java | 5 +++++ src/main/java/EPLHelpers.java | 11 ++++------- src/main/java/EsperProcessor.java | 2 +- src/main/java/OANDAReader.java | 7 +++++-- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index 78f8197..29b0eb0 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,8 @@ dependencies { implementation 'ch.qos.logback:logback-classic:1.3.0-alpha4' implementation 'org.fusesource.jansi:jansi:1.8' implementation 'commons-cli:commons-cli:1.4' + implementation 'joda-time:joda-time:2.9.9' + implementation 'com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.5' } repositories { diff --git a/src/main/java/CSVReader.java b/src/main/java/CSVReader.java index 573edd9..b98039b 100644 --- a/src/main/java/CSVReader.java +++ b/src/main/java/CSVReader.java @@ -2,6 +2,7 @@ import java.io.File; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.datatype.joda.JodaModule; import com.espertech.esper.client.EPServiceProvider; import com.fasterxml.jackson.databind.MappingIterator; import com.fasterxml.jackson.dataformat.csv.CsvMapper; @@ -19,6 +20,10 @@ public class CSVReader implements TickStreamReader { public void run(TickProcessor processor) { CsvMapper mapper = new CsvMapper(); + + // allow deserializing Joda time classes + mapper.registerModule(new JodaModule()); + CsvSchema schema = mapper.schemaFor(TrueFXTickEvent.class); try { diff --git a/src/main/java/EPLHelpers.java b/src/main/java/EPLHelpers.java index fcb3218..79a41aa 100644 --- a/src/main/java/EPLHelpers.java +++ b/src/main/java/EPLHelpers.java @@ -1,12 +1,9 @@ -import java.util.Date; -import java.util.Calendar; +import org.joda.time.DateTime; public class EPLHelpers { - public static int getHour(Date date) { - Calendar c = Calendar.getInstance(); - c.setTime(date); - return c.get(Calendar.HOUR_OF_DAY); - } + public static int getHour(DateTime date) { + return date.getHourOfDay(); + } } diff --git a/src/main/java/EsperProcessor.java b/src/main/java/EsperProcessor.java index 8b892df..da52773 100644 --- a/src/main/java/EsperProcessor.java +++ b/src/main/java/EsperProcessor.java @@ -4,7 +4,6 @@ import com.espertech.esper.client.EPServiceProviderManager; import com.espertech.esper.client.EPStatement; import java.math.BigDecimal; import java.io.File; -import java.util.Date; import com.espertech.esper.client.time.CurrentTimeEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,6 +11,7 @@ import java.lang.reflect.Array; import java.util.Arrays; import java.util.stream.Stream; import java.util.stream.Collectors; +import org.joda.time.DateTime; public class EsperProcessor implements TickProcessor { diff --git a/src/main/java/OANDAReader.java b/src/main/java/OANDAReader.java index 2810430..d126fdb 100644 --- a/src/main/java/OANDAReader.java +++ b/src/main/java/OANDAReader.java @@ -9,6 +9,7 @@ import java.net.URLConnection; import java.net.URLEncoder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.datatype.joda.JodaModule; import javax.net.ssl.HttpsURLConnection; @@ -19,6 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class OANDAReader implements TickStreamReader { final Logger log = LoggerFactory.getLogger(OANDAReader.class); + ObjectMapper mapper; AccountInfo accountInfo; String[] instruments; @@ -26,6 +28,9 @@ public class OANDAReader implements TickStreamReader { public OANDAReader(AccountInfo accountInfo, String[] instruments) { this.accountInfo = accountInfo; this.instruments = instruments; + + mapper = new ObjectMapper(); + mapper.registerModule(new JodaModule()); } public void run(TickProcessor processor) { @@ -74,8 +79,6 @@ public class OANDAReader implements TickStreamReader { } } - static ObjectMapper mapper = new ObjectMapper(); // create once, reuse - private void processLine(String line, TickProcessor processor) { if (line.indexOf ("PRICE") > -1) { OANDATickEvent tick;