Giter Club home page Giter Club logo

jbanking's Introduction

Hi there, I'm Marc Wrobel, a developer from France πŸ‘‹

Github Linkedin StackOverflow Blog Mail

jbanking's People

Contributors

ckayser avatar dependabot[bot] avatar marcwrobel avatar opeti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jbanking's Issues

Add support for holidays

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.

Remove usage of IsoCountry and IsoCurrency enums from public API

Even if they can be useful IsoCountry and IsoCurrency enums must not be used in the public API :

  • They are here for convenience and are not absolutely required in the scope of this library.
  • The enum implementation is not the right solution because those standards are not "static" and may evolve over time. We do not want a new jbanking release each time one of those standard is updated.
  • The java platform already supports those standards for quite some times. See the Currency and the Locale classes for more informations.
  • There are some alternatives in case enums are really needed. See nv-i18n for instance.

Find BIC from IBAN

Add support for finding a BIC (and bank related information) from an IBAN.

Review ISO 3166 countries list

ISO countries list as not been reviewed since 2013. Before releasing a new version of jbanking the list must be updated if necessary.

Check BBAN number

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 jbanking serializable-friendly

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 :

  • frameworks that relies on serialization,
  • exceptions (the java.lang.Exception extends Serializable),
  • servlet containers (the servlet specification requires that all objects stored in the session be serializable),
  • ...

IBAN patterns

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"),

3.0.0 deprecated methods removal

  • IsoCountry.getCode() is now deprecated in favor or IsoCountry.getAlpha2Code() (since #43).
  • IsoCountry.fromCode(String) is now deprecated in favor or IsoCountry.fromAlpha2Code(String) (since #43).

Set jbanking Automatic-Module-Name

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).

Improve project's consumer POM with flatten-maven-plugin

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.

IsoCountry and IsoCurrency enums entries renaming with their alpha-code

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.

Could you contribute BIC validator to org.apache.commons.validator?

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?

Review ISO 4217 currencies list

ISO currencies list as not been reviewed since 2013. Before releasing a new version of jbanking the list must be updated if necessary.

Sonar analysis fails on merge requests

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.