From 71c67b5532bbda7b6fb1eafd474574237feacd76 Mon Sep 17 00:00:00 2001 From: reiss Date: Wed, 8 Nov 2017 15:34:00 +0100 Subject: [PATCH] Simplifications --- .../instrument/CrossInstrument.java | 20 +++++++------------ .../instrument/test/CrossInstrumentTest.java | 9 --------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/jforex/programming/instrument/CrossInstrument.java b/src/main/java/com/jforex/programming/instrument/CrossInstrument.java index 4b4210e8..0021e500 100644 --- a/src/main/java/com/jforex/programming/instrument/CrossInstrument.java +++ b/src/main/java/com/jforex/programming/instrument/CrossInstrument.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.Set; import com.dukascopy.api.ICurrency; import com.dukascopy.api.Instrument; @@ -19,30 +20,24 @@ public class CrossInstrument { private final Instrument secondInstrument; private final Instrument instrument; private final ICurrency crossCurrency; - private final boolean isEmpty; private final boolean shouldDivide; private final int pipScale; + private final Set crossInstruments; + private final RoundingMode roundingMode = RoundingMode.HALF_UP; public CrossInstrument(final Instrument firstInstrument, final Instrument secondInstrument) { this.firstInstrument = firstInstrument; this.secondInstrument = secondInstrument; + crossInstruments = Sets.newHashSet(firstInstrument, secondInstrument); final Maybe maybeCross = InstrumentFactory.maybeCross(firstInstrument, secondInstrument); - instrument = maybeCross.blockingGet(); - isEmpty = maybeCross - .isEmpty() - .blockingGet(); crossCurrency = calcCrossCurrency(); shouldDivide = shouldDivide(); pipScale = instrument.getPipScale() + 1; } - public boolean isValid() { - return !isEmpty; - } - public Instrument get() { return instrument; } @@ -63,11 +58,11 @@ public FxRate rate(final FxRate rateA, final double crossValue = shouldDivide ? bdcFirst.divide(bdcSecond, pipScale, - RoundingMode.HALF_UP) + roundingMode) .doubleValue() : bdcFirst .multiply(bdcSecond) - .setScale(pipScale, RoundingMode.HALF_UP) + .setScale(pipScale, roundingMode) .doubleValue(); return new FxRate(crossValue, instrument); @@ -77,8 +72,7 @@ private ICurrency calcCrossCurrency() { return CurrencyFactory .fromInstruments(firstInstrument, secondInstrument) .stream() - .filter(currency -> CurrencyUtil.isInAllInstruments(currency, - Sets.newHashSet(firstInstrument, secondInstrument))) + .filter(currency -> CurrencyUtil.isInAllInstruments(currency, crossInstruments)) .collect(toSet()) .iterator() .next(); diff --git a/src/test/java/com/jforex/programming/instrument/test/CrossInstrumentTest.java b/src/test/java/com/jforex/programming/instrument/test/CrossInstrumentTest.java index de941320..f3397a0f 100644 --- a/src/test/java/com/jforex/programming/instrument/test/CrossInstrumentTest.java +++ b/src/test/java/com/jforex/programming/instrument/test/CrossInstrumentTest.java @@ -2,7 +2,6 @@ import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; @@ -26,14 +25,6 @@ public void setUp() { crossInstrumentD = new CrossInstrument(instrumentEURGBP, instrumentGBPJPY); } - @Test - public void instanceIsValid() { - assertTrue(crossInstrumentA.isValid()); - assertTrue(crossInstrumentB.isValid()); - assertTrue(crossInstrumentC.isValid()); - assertTrue(crossInstrumentD.isValid()); - } - @Test public void instrumentIsCorrect() { assertThat(crossInstrumentA.get(), equalTo(instrumentEURGBP));