Skip to content

Commit f5f929d

Browse files
committed
Working on #374
1 parent aad84d3 commit f5f929d

File tree

2 files changed

+47
-17
lines changed

2 files changed

+47
-17
lines changed

moneta-convert/moneta-convert-ecb/pom.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@
99
</parent>
1010
<artifactId>moneta-convert-ecb</artifactId>
1111
<packaging>jar</packaging>
12-
<properties>
13-
<maven.compiler.source>17</maven.compiler.source>
14-
<maven.compiler.target>17</maven.compiler.target>
15-
</properties>
1612
<dependencies>
1713
<dependency>
1814
<groupId>org.javamoney.moneta</groupId>
@@ -75,6 +71,16 @@
7571
</execution>
7672
</executions>
7773
</plugin>
74+
<plugin>
75+
<groupId>org.apache.maven.plugins</groupId>
76+
<artifactId>maven-surefire-plugin</artifactId>
77+
<version>3.0.0-M7</version>
78+
<configuration>
79+
<argLine>--illegal-access=permit</argLine>
80+
<argLine>--add-opens org.javamoney.moneta.convert.ecb/org.javamoney.moneta.convert.ecb=ALL-UNNAMED</argLine>
81+
<argLine>-Dillegal-access=permit</argLine>
82+
</configuration>
83+
</plugin>
7884
</plugins>
7985
</build>
8086
</project>

moneta-convert/moneta-convert-ecb/src/test/java/org/javamoney/moneta/convert/ecb/ECBHistoricRateProviderTest.java

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright (c) 2012, 2015, Credit Suisse (Anatole Tresch), Werner Keil and others by the @author tag.
2+
* Copyright (c) 2012, 2023, Werner Keil and others by the @author tag.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
55
* use this file except in compliance with the License. You may obtain a copy of
@@ -20,6 +20,8 @@
2020

2121
import java.math.BigDecimal;
2222
import java.time.LocalDate;
23+
import java.time.LocalDateTime;
24+
import java.time.temporal.ChronoField;
2325
import java.util.Objects;
2426

2527
import javax.money.CurrencyUnit;
@@ -156,23 +158,29 @@ public void shouldConvertDollarToBrazilian() {
156158
void selectFromECBWithGivenDate() {
157159
MonetaryAmount inEUR = Money.of(BigDecimal.TEN, "EUR");
158160

159-
CurrencyConversion conv2 = provider.getCurrencyConversion(ConversionQueryBuilder.of()
161+
final ExchangeRateProvider provider2 = getExchangeRateProvider(ExchangeRateType.ECB);
162+
LocalDateTime time = LocalDateTime.now();
163+
// As ECB rates are only updated on 4pm of each day, we check, if it's after 4 or the day is on a weekend (cannot get all bank holidays yet)
164+
if (isWeekend(time)) {
165+
time = time.minusDays(2);
166+
} else {
167+
if (time.getHour() < 16) {
168+
time = time.minusDays(1);
169+
}
170+
}
171+
CurrencyConversion conv2 = provider2.getCurrencyConversion(ConversionQueryBuilder.of()
160172
.setTermCurrency("USD")
161-
.set(LocalDate.now())
173+
.set(time)
162174
.build());
163-
/*CurrencyConversion conv2 = MonetaryConversions.getConversion(ConversionQueryBuilder.of()
164-
.setProviderName("ECB-HIST")
175+
/*
176+
CurrencyConversion conv2 = MonetaryConversions.getConversion(ConversionQueryBuilder.of()
177+
.setProviderName(ExchangeRateType.ECB_HIST90.name())
165178
.setTermCurrency("USD")
166179
.set(LocalDate.now())
167-
.build());*/
168-
169-
/*CurrencyConversion conv1 = MonetaryConversions.getConversion(
170-
ConversionQueryBuilder.of()
171-
.setProviderName("ECB-HIST")
172-
.setTermCurrency("USD")
173-
.set(LocalDate.of(2008, 1, 1))
174-
.build());
180+
.build());
175181
*/
182+
183+
176184
CurrencyConversion conv1 = provider.getCurrencyConversion(ConversionQueryBuilder.of()
177185
.setTermCurrency("USD")
178186
.set(LocalDate.of(2008, 1, 2))
@@ -183,4 +191,20 @@ void selectFromECBWithGivenDate() {
183191
assertNotEquals(inEUR.with(conv1), inEUR.with(conv2)); // <- failing step
184192
}
185193

194+
195+
/**
196+
* This method checks or verifies whether passed LocalDate is weekend or not considering
197+
*
198+
* - SATURDAY is 6
199+
* - SUNDAY is 7
200+
*
201+
* @param localDateTime
202+
* @return
203+
*/
204+
private static boolean isWeekend(LocalDateTime localDateTime) {
205+
206+
// get Day of week for the passed LocalDate
207+
return (localDateTime.get(ChronoField.DAY_OF_WEEK) == 6)
208+
|| (localDateTime.get(ChronoField.DAY_OF_WEEK) == 7);
209+
}
186210
}

0 commit comments

Comments
 (0)