Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/
38 changes: 38 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,44 @@
<groupId>ch.engenius</groupId>
<artifactId>accounts</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>3.6.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>


</project>
31 changes: 0 additions & 31 deletions src/main/java/ch/engenius/bank/Account.java

This file was deleted.

12 changes: 12 additions & 0 deletions src/main/java/ch/engenius/bank/Application.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ch.engenius.bank;

import ch.engenius.bank.exception.AccountNotFoundException;
import ch.engenius.bank.runner.BankRunner;

public class Application {

public static void main(String[] args) throws AccountNotFoundException, InterruptedException {
BankRunner runner = new BankRunner();
runner.run();
}
}
18 changes: 0 additions & 18 deletions src/main/java/ch/engenius/bank/Bank.java

This file was deleted.

71 changes: 0 additions & 71 deletions src/main/java/ch/engenius/bank/BankRunner.java

This file was deleted.

31 changes: 31 additions & 0 deletions src/main/java/ch/engenius/bank/context/DataContext.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package ch.engenius.bank.context;

import ch.engenius.bank.exception.AccountNotFoundException;
import ch.engenius.bank.model.Account;
import ch.engenius.bank.model.Bank;
import lombok.Getter;

import java.util.HashMap;

@Getter
public class DataContext {
private final Bank bank;


public DataContext() {
bank = new Bank();
}

public Account getAccount(int number) throws AccountNotFoundException {
return bank.getAccount(number);
}

public HashMap<Integer, Account> getAllAccounts() {
return bank.getAllAccounts();
}

public Account saveAccount(int number, Account account) {
bank.getAccounts().put(number, account);
return account;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ch.engenius.bank.exception;

public class AccountNotFoundException extends RuntimeException {
public AccountNotFoundException(int accountNumber) {
super(String.format("Account with id %d cannot be found!", accountNumber));
}
}
14 changes: 14 additions & 0 deletions src/main/java/ch/engenius/bank/model/Account.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ch.engenius.bank.model;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;

@AllArgsConstructor
@Getter
@Setter
public class Account {
private BigDecimal money;
}
26 changes: 26 additions & 0 deletions src/main/java/ch/engenius/bank/model/Bank.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ch.engenius.bank.model;

import ch.engenius.bank.exception.AccountNotFoundException;
import lombok.Getter;

import java.util.HashMap;

@Getter
public class Bank {
private HashMap<Integer, Account> accounts;

public Bank() {
accounts = new HashMap<>();
}

public Account getAccount( int number) throws AccountNotFoundException {
Account account = accounts.get(number);
if(account == null)
throw new AccountNotFoundException(number);
return account;
}

public HashMap<Integer, Account> getAllAccounts() {
return accounts;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ch.engenius.bank.repository.account;

import ch.engenius.bank.exception.AccountNotFoundException;
import ch.engenius.bank.model.Account;

import java.util.HashMap;

public interface AccountRepository {
Account getAccount(int accountNumber) throws AccountNotFoundException;
HashMap<Integer, Account> getAllAccounts();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package ch.engenius.bank.repository.account;

import ch.engenius.bank.context.DataContext;
import ch.engenius.bank.exception.AccountNotFoundException;
import ch.engenius.bank.model.Account;

import java.util.HashMap;

public class AccountRepositoryImpl implements AccountRepository {
private DataContext dataContext;

public AccountRepositoryImpl(DataContext dataContext) {
this.dataContext = dataContext;
}

public Account getAccount(int accountNumber) throws AccountNotFoundException {
return dataContext.getAccount(accountNumber);
}

public HashMap<Integer, Account> getAllAccounts() {
return dataContext.getAllAccounts();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ch.engenius.bank.repository.bank;

import ch.engenius.bank.model.Account;

public interface BankRepository {
Account saveAccount(int accountNumber, Account account);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package ch.engenius.bank.repository.bank;

import ch.engenius.bank.context.DataContext;
import ch.engenius.bank.model.Account;

public class BankRepositoryImpl implements BankRepository {
private DataContext dataContext;

public BankRepositoryImpl(DataContext dataContext) {
this.dataContext = dataContext;
}

public Account saveAccount(int accountNumber, Account account) {
Account savedAccount = dataContext.saveAccount(accountNumber, account);
return savedAccount;
}

}
Loading