marcwrobel / jbanking Goto Github PK
View Code? Open in Web Editor NEWA Java banking API
License: Apache License 2.0
A Java banking API
License: Apache License 2.0
Many calculations in banking require knowledge of whether a date is a business day or not (e.g. a holiday). Unfortunately this knowledge is difficult to to obtain because holidays depends on the location (geographical area, country, territorial organization...).
We want to support a generic way to provide such information in jbanking for some of the largest financial districts and for some of the most important financial systems (TARGET, NYSE...). Initial implementation will support at least :
Implementation must make use of java.time and to be easily programmatically extendable.
Even if they can be useful IsoCountry and IsoCurrency enums must not be used in the public API :
Simplify the Maven POM of jbanking by inheriting from fr.marcwrobel:parent.
Add support for finding a BIC (and bank related information) from an IBAN.
Configure the CI to perform a SonarQube analysis on each commit.
Knowing this information is useful when an application must support SEPA Direct Debits (SDD) or SEPA Credit Transfers (SCT).
For more information, see https://en.wikipedia.org/wiki/European_Union.
ISO countries list as not been reviewed since 2013. Before releasing a new version of jbanking the list must be updated if necessary.
Add support for composite calendars, e.g. calendars made of two or more calendars.
Add support to check the BBAN. Even if the IBAN is valid the BBAN might not (invalid bank code, invalid account number check digit, ...)
I have the data for Germany and could implement the necessary checks.
Make available, in IsoCountry, whether or not a country is independent according to the International Organization for Standardization.
For instance Γ land Islands is not an independent country : it is an autonomous province of Finland.
Serialization in java is a difficult thing to master and should be avoided if possible (see also Effective Java 3rd edition - Item 85 : Prefer alternatives to java serialization). Despite that, many classes in jbanking, such as Iban, Bic, CreditorIdentifier..., are good candidates for default serialized form.
Those classes should implement Serializable in order to make some parts of jbanking usable with :
java.lang.Exception
extends Serializable),Add credit card validation support.
Knowing this information is useful when an application must support SEPA Direct Debits (SDD) or SEPA Credit Transfers (SCT).
For more information, see https://en.wikipedia.org/wiki/European_Economic_Area.
From the test data I have it seems the Costa Rica pattern is wrong - should be "3!n15!n" (not 14!n ).
You are also missing Kosovo:
Iban Structure:
KOSOVO(IsoCountry.KOSOVO,"4!n10!n2!n")
ISoCountry:
KOSOVO("XK"),
Enrich ISOCountry enum with alpha-3 and numeric codes. See https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes.
Creating a class for Creditor Identifier handling : creation, validation, ...
See http://www.europeanpaymentscouncil.eu/article.cfm?articles_uuid=0A12B924-9CE2-06DC-D53E41A37079D396.
External URL, such as http://www.currency-iso.org/dam/downloads/dl_iso_table_a1.xml, were used to build and test completeness of country and currency enums. Those URL are not valid anymore and their use must be dropped.
Creating a class for IBAN handling : creation, validation, ...
Creating a class for BIC handling : creation, validation, ...
Semantic Versioning is a well known and widely adopted version scheme that convey the significance of changes between releases. jbanking must adopt Semantic Versioning 2.0.0 in order to give meaning to its versions.
Creating an enum for currencies having an ISO 4217 currency code.
More infos on http://www.iso.org/iso/home/standards/currency_codes.htm.
The list of SEPA COM Pacifique french territories can be found on https://www.cfonb.org/Default.aspx?lid=1&rid=122&rvid=239.
Set up git-code-format-maven-plugin
in order to automatically format code on commit.
Currently it is not possible to reliably use jbanking in the modularized application. No Automatic-Module-Name
is set in the jar manifest so the module name is derived from the JAR filename, which is rather fragile.
In order to fix this an Automatic-Module-Name
entry must be added to the mannifest. The module name will be the jbanking base package name : fr.marcwrobel.jbanking
(see https://blog.joda.org/2017/04/java-se-9-jpms-module-naming.html for more explanation).
Given this IBAN Value "JO69WXCV8898216666923864119419", The Iban.isValid() returns false.
Confirmed the mentioned iban was valid using IBANValidator of apache commons validator and from from https://www.ibancalculator.com/iban_validieren.html
Currently the build POM is the same the consumer POM (the one deployed on maven central). It forces user of jbanking to download unneeded dependencies, like the parent POM, the spring-boot-starter-parent POM, and so on. Moreover, because the POM is using a lot of properties, project's description and URL are not (or not properly) displayed on sites like mvnrepository.com.
In order to improve project's consumer POM use flatten-maven-plugin with oss flattenMode.
Since its inception, jbanking is using countries and currencies "full name" for naming IsoCountry and IsoCurrency enums entries. Every change to those names (see #47 for instance) breaks the compatibility of jbanking with previous version.
In order to prevent that IsoCountry and IsoCurrency enums entries should be renamed using their alpha-code instead of their full names. Alpha-code are indeed more stable than names.
Add the changes from IBAN release 87.
ST β Sao Tome and Principe
Add an editorconfig in order to maintain a consistent coding styles across the project.
I need to validate both IBAN and BIC just by simple format check and decided to use Apache Commons Validator instead of jbanking because don't wan't to have Guava as transitive dependency.
Commons Validator has the IBANValidator but it haven't anything to validate BIC.
Could you send PR to Commons Validator with your BIC validator?
ISO currencies list as not been reviewed since 2013. Before releasing a new version of jbanking the list must be updated if necessary.
Creating an enum for currencies having an ISO 4217 currency code.
More infos on http://www.iso.org/iso/home/standards/currency_codes.htm.
Upgrade BbanStructure to match the BBAN structures in IBAN Registry Release 86 (January 2020).
GitHub Actions is easier to use than Travis CI and has, of course, a better integration with GitHub.
According to https://www.swift.com/standards/data-standards/iban the BBAN Structure for Turkey changed to:
TURKEY(IsoCountry.TURKEY, "5!n1!n16!c"),
and a new structure was added for Vatican City:
VATICAN_CITY_STATE(IsoCountry.VATICAN_CITY_STATE, "3!n15!n")
Add ISO/IEC 7812 card number support.
Public updates for Oracle JDK 7 have ceased as of April 2015. And OpenJDK distributions have started to drop support for JDK 7 too (see https://rafael.codes/openjdk/).
It's time for jbanking to drop support for Java up to version 7.
Creating an enum for countries having an ISO 3166-1-alpha-2 code. Those codes are frequently used in banking area.
More infos on http://www.iso.org/iso/home/standards/country_codes.htm.
Sonar analysis fails on merge requests with the following error :
59323 [ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project jbanking: You're not authorized to run analysis. Please contact the project administrator. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project jbanking: You're not authorized to run analysis. Please contact the project administrator.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
This is because SonarCloud credentials are only available within the jbanking project, not within the jbanking forks. To fix this issue make sure SonarCloud analysis is triggered only on push
event in GitHub action, on pull_request
events.
See : https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes :
Create the project maven pom. No compile/runtime dependencies allowed.
Knowing this information is useful when an application must support SEPA Direct Debits (SDD) or SEPA Credit Transfers (SCT).
The list of SEPA countries can be found on https://www.europeanpaymentscouncil.eu/document-library/other/epc-list-sepa-scheme-countries.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.