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
1 change: 1 addition & 0 deletions Untitled Diagram.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="7.5.8" editor="www.draw.io" type="github"><diagram id="ecaec085-76ac-b8d3-91e6-9eb226e6dbba" name="Page-1">7V3ZbuM4Fv2aAOmHBKJ2PzpLTReQqg46GdTMo2IxthBZNCQ5S3/9kCKphaRs2aaUoIaNAjqiKWo55y68pO49c67X7//Ko83qB4phemZb8fuZc3Nm27bnuvh/pOWDtgDPDmjLMk9i1tY0PCT/QNZosdZtEsOi07FEKC2TTbdxgbIMLspOW5Tn6K3b7Rml3atuoiWUGh4WUSq3/kricsVagWU1P/wJk+WKXTr02A9P0eJlmaNtxq53ZjvP1X/053XEx2L9i1UUo7dWk3N75lznCJX0r/X7NUzJy+WvjZ73refX+r5zmJVDTrDpCa9RumWPPl8s8O2X7PbKD/5KirdknUYZPrp6Rln5wH4B+DhKk2WG/17gi8IcN7zCvEzw25yzH0q0wa2LVZLGd9EH2pJbK0r8qvjR1QrlyT942ChlY+Kf85IRw/Y7PR7ImbjZwq05LHCfe/68QGj6Eb13Ot5FRckaFihNo02RPNWPsY7yZZJdobJEa9aJP/S3JE2vUYry6l1wSJ0r9vbw48L3XgRAjSsWGIjWsMw/cBd+gu/RU5isuJZPj98a4jkBo8uqxTnckxGekX1Zj11f7m8sHFG2xI/YXG9mda7n+JZ0vVB1Ob97tSjFWGdRCa8I24s2y/AfrSdtmiruqXnoSDy8INeiXPx+c+bMSWdCS3wbDiDYtDpgBkbZAtJeMdoSTJUd/13AvKDd7pKCjJYS9pHmS3wrtr8sK1RV52LalVt2Mm6ih7fZdq3u/phHWREtygRlf+JLIfImxOu2+uy9/OPHBtYX5w308lb1xqxsS16pILaYmGUlTjl6gZzCGaJy3GI1a+KinMLnsleQi020SLLlXdXnxm1a/mZ0IU0In/ucVrptlcQxzIgQIvzSIipx5PE2CENa8cm7wv8w666tS+/Mwzd+jY9Bc4z/ke55eY0y/CxRUgkXxOL8BotyqCTaakn86DJ8n+DN3H6564jADr67Et8l5NKkQoQix60QOAq2NQYghQ1OjwTGmwsgYenIWDoK3NLoCab3qEgIc3FbTvsKeE4AGbBl5aXELDwdMk8B2VV16XIV59HbPIt/RC+wJdPnVBX9QcW29UNLwukYMdyQt3nKECX57RnmvWMQmbItZt6xuhkw5hJy1Xr+R49ypR03OUa3o+YeSty0VI14vDakQ0RPhE3Y6atGmzfKkN+jpB+NSjxevsJh8gWAfbqEASCJGLHMxhWdyBWtdRxD/wLI4AOVa+js8EQHgy9PRYj3s8UE4P7fc5JFqdIPJL1+RmvYo3t4l/uoKN5QHu/pxnSKwlFstGejnox22cG3HsLt8LhUBAs0eFxAnmIYl+sY0OogyD7UNPhcQOUnX3Us//fsGXHL3+N0FLC8/3VOf2Q9X1ElwoJnEcfzDJUrmBOz84hu37Ho43PYlc4l30k5yiKHeFb8E77x0wR/hJ1bx1nE01NUwMOuiJ+PKD/VExrldALPFb6PiueAa5KTmC5PLwgJv2FHF7GRjAs0gQsUhoIL5LkSC2zXU2g7XwMJ/L0+EEYCg8mdICPeO4D2DvU9lLiKcc+jcA2M76EFNM8eKIwaMAt7XA9q34lyPuf+hpWRuUcVX6mbNmyuwcyxciJr5HU49IplivHkdaY0xr/w3a4Q1sbGHE9kjgPQXaxSxXuBr4xHaQhJ8IspzHEVFFCuI5nAwCDYZ4caZyXMOoTdlqOOxjgfA5rCOCtB02CcOUSquEBlmaWJMxNNaTVinqbVojAJIVwZcR6HGQrbrWSGp0Npy3G+6xVcvDRxHGO9P2lriz/zZB/OUVlvS0PAV7HGrtxOQVcVru2zudVSEH2bLBaMS0Yf7FxVdA4170oeuDpooFq3N+b9cNACxQRMBZoO8y7HwcSwv1nwHwllOeitRFmL5y2Hxb5nr/hZ1vhujbGeOPLtdI11CCY11nK0TYOxTmo2GZ2wUycEX8dcy6E3Y66PAW1Cc+3IcTJjridCeUJz7ciBsofoFb/DwtjqaW21Y3Vt9cyZ0lY7cvBNg60uKJWMNthFC+fg/XSjGWrH7KfTA9qUhnr/djpjqEdCeUpDLYe8bt9LyL/Sa0OIG+fke1l89JQiYiKvcBOzocCnh8SSsbe6Ktfc2uInzz/+Q9rxa2SH/2Xd6HVgLH1lK1g428ImG5OPv5CdVu/CugSuBTqW72LXSmEO06hMXrv3sONryXtUbapq9oJ1F599V8CmQNt8AdlZDTzSQK5grn1fGIi+hB0D8Y7o+bmAnT7HfGspR9dGoMdQCuyCO/BmXbQVfo4utF1bF9rCQKH4aczEaMtBti+KduiHgnA7smnUBbcnyqQbHAe3OFDti38O3K7snM/3mPGeWZp18vRL4QP8rjMyryvzwOJUblPXHWtG5vaveUtoG6etBSqVloO2IalA1OG0ubJv3iyGGBRPQFG1L2k0FGXX+8EENk6GUDF7Gg9C2T3+nm22Jro52bYhzwKXTvu/roMVBhIZlN9l8UQ3J5FB9p5JrDOpCEE/yFlEWWb29u8Rb/9QO6v+0FyHeKu+6zBxy8NBU5jVsT4DdlWLwixuyXSzdf7wUZRwfZlkwsfARi6Phlixb1cJsY78D3wGJU9c25m2zNRVu7m9EDb+uDPZviqdrUBHUiV5TfmvDRYNI7U78PQsNaCfMGvlRqAdeSAJDGKD4AkITjlj9eS4QysRlwkajjnRsWZC7NhSrG+MFjX05FjFL5bLLjKJJHfLr/t1NLAcrrih2QQNhCdAOKkKloMMjyybo8HwBAynjBp6clihZUZNGp+J8wYIa/AB/xiwRQVPnctJx1RWDleQoGHZ8MFk8zlY1MNDLa4SXx2i7suRCgk7E0EcAJrCxipB0xBn8FVJHtrZm6OU5+mrkntaRE5fYb2xnaT2idb0b+vQtM4jjMyzPe8fuv17ldvw0CsbrXQ0wRXxUyXBfQ1Gx5cjMbtgNJ7HOJ5H6Hc9D0+xh81WTul1BNF9dR2NshvQoUJeqqI8nVzIrR5zqif6C2wonJv+dM3tgQ/Ktdw3SpWppc7zcmkyn+6mMNUVB31GolwA0BCE8k0lDD2gqdIyK1HT4U311cJYwnbdmz2pmY2EngC24nMSZWjD1oC2HJ5iutmENSZeqgVCXGPmDizRoGMvlL8zR4MJaRws4wdnXRhtU5Rvsi7oAW3CTVGBKgzVJCjmJQS23CFuRQOEUgRRz+f7RlqHAz/lVqlADmbNt+UK3yp+39ggG3s81QI+8L0dO5WBYu6vriChI/FlIAeALuqYYHeCLFWYbIcNu9VJjEroJ0egp7qRjmwMgcnGoAc0RTaG0Qx4XzaGFGFdRuXUamoMdAx5X5mBrSrNMR4Pa+oqL/KeMkK12MvXFX0F8RowqlXIuSlBpImMAysQcdV/EhvlmM59jjZ3KIpNCcav8u0TAKrq4EqXwtLhUqjrEW0wL1jAnv5ponoDxf3gkkTqGb8Oh8GUJNIDmjehw9BXkijFSvqeSqLFja8smZWNx1Za7GnM9KkUGGimeW6OkzggR+p+wGx7l2Qv8ifmxkqPZKXdWTdTjT/pTD+UI3/ELKMNUYa8MpGYd5H0iJNik0Yfj5Vsm28kBwr/waWKRpvlh3LgzxjtY0CbcJYfymE5tjmQCuNfldQW+0sYs47EcOObWKF9JYFvGmEfUPu4pRrEWzHK4XieTTiBD+UQIPEMfkavydKsCky6KsDVC2OBM3SOoMc7UNc9SjLckMS3JE3nbZ4juhzQcQ/WmC7zPI8+FLvx1szJNPXQhhAkPLj+0Xg+g6l/pAe0KX2G3vpH6BFRKSROAJXIXVZ9CUvS5ZwmmqyyFrHujTwbOT6eElOa995deKYs8WeXJXb8WSdoP7R8rZYqxeHObXnqQsX1Op8x5gOUwMH79EarVRyafXp6QJuwVvFMjtaJRRdMueIvJdFTliueybP2BbGYSbYzPzvaVC+yU46hztRuc1vMe8dJtEZZ/LhKMsFMA5c3tPK6kzTu3FfAr3qFliiL0tumdR89npg9voLvSUlKRIBLy/LYcVUj4jIIfXZ8D/MEvzbihNCr13UlztpVJaoiE/SVDKkrQdO3M5xoU7vUhL+31IQFgo6N57vfT807P+u6Dr6YcGBo3vnA2zPQtHnnZ3LUIYflNpe/PG1xtp83EtPjqFjBWOJ62CHMpRvM2qQBl8DxeYPEM8ZNVr6EM/N4loUKmvUsHJ5IImCJ4Ivfdwxl0SzYM1APi45hiByIUM1ZxqRH6An0IEI+FT1cBT16phkn00NAdQbc4+ghjRR6zmj8kIMen6BBAHAEigS9FBlOhE6Vo56cq6eCLhiWmXukSqh3rdeQh6NBLsc0poe862VYTqgXbqcn1eNXgdsW4RaTUWiEW45UfIKEW5YrQO7phnwkta4NcleAPBgPcjlgMbXRDxoFzjS6P5nR5zu+2uwIxlEItjBfAVZwZEUrW4hugnoqpJ8f9TblTyMImepZHZtv7WMH6MxkT5iXKnTHSBMGsbjdsfMFwK9dl02zx6OGvNvpdwqN6C+fqaYOQ866dOq8HbVgn+kIaTh8eYsHxB37OHIFQsFNR1weOSGkUe1raPVgIcfBD8Xvpe/eHU997w3/6R0cLw32/4U0gI4s1GaYu25+S/USS+72BBGPU8ihIoSzO1Bokfmh35WqQI9UhYJUiZp2qFQ5QkYyF3xq9Vlg/d4R7wFEvpCYrJXF3Na3WQx6MiU3xkGkm62FxYHgL7iOED8aXGbVFaqU8KXQT7ANvjBlBsxW9N271J+tJeizDZ8YfG9mTKCrm51QK6uBQjeDcSbanqAxLwKBa0NJ6wu1gS+APaw48H4S4MMcobLdPY82qx8ohqTH/wA=</diagram></mxfile>
9 changes: 9 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,14 @@
<artifactId>project-2-atm</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

</dependencies>

</project>
9 changes: 0 additions & 9 deletions src/main/java/Main.java

This file was deleted.

13 changes: 13 additions & 0 deletions src/main/java/com/zipcode/macrolabs/atm/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.zipcode.macrolabs.atm;

import com.zipcode.macrolabs.atm.navigation.BankAccountManager;

public class Main {

public static void main(String[] args) {

BankAccountManager bankAccountManager = new BankAccountManager();
bankAccountManager.run();

}
}
44 changes: 44 additions & 0 deletions src/main/java/com/zipcode/macrolabs/atm/RandomUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.zipcode.macrolabs.atm;

import java.util.Random;

public class RandomUtils {

private static final Random random = new Random();

public static Float createFloat(float min, float max) {
return random.nextFloat() * (max - min) + min;
}

public static Integer createInteger(Integer min, Integer max) {
return createFloat(min, max).intValue();
}

public static Boolean createBoolean(Integer skew){
int seed = createInteger(0, 100);
if (skew > seed){
return true;
} else { return false; }
}

public static Character createCharacter(char min, char max) {
return (char) createInteger((int) min, (int) max).intValue();
}

public static String createString(char min, char max, int stringLength) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < stringLength; i++) {
sb.append(createCharacter(min, max));
}
return sb.toString();
}

public static String createID(int idLength){
String id = "";
for (int i = 0; i < idLength; i++) {
id += i;
}
return id;
}

}
117 changes: 117 additions & 0 deletions src/main/java/com/zipcode/macrolabs/atm/bankaccount/Account.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.zipcode.macrolabs.atm.bankaccount;

import com.zipcode.macrolabs.atm.exceptions.BalanceTooLowException;
import com.zipcode.macrolabs.atm.exceptions.TransactionAmountIsZeroException;
import com.zipcode.macrolabs.atm.transaction.Transaction;
import com.zipcode.macrolabs.atm.transaction.TransactionFactory;
import com.zipcode.macrolabs.atm.transaction.TransactionType;
import com.zipcode.macrolabs.atm.user.User;

import java.nio.file.attribute.UserDefinedFileAttributeView;
import java.util.ArrayList;
import java.util.List;

public abstract class Account {

protected String accountID;
protected AccountType accountType;
private double accountBalance = 0.00d;
private List<User> accountUsers = new ArrayList<User>();
private AccountStatus accountStatus = AccountStatus.ACTIVE;
private List<Transaction> accountTransactionHistory = new ArrayList<Transaction>();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice declaration of the abstract type List and instantiation of concrete type ArrayList! 👍


@Override
public String toString(){
String accountInfo = String.format("Account - ID: %s | Type: %s | Balance: %,.2f | Status: %s | Users: %s ",
this.getAccountID(), this.getAccountType(), this.getBalance(),
this.getAccountStatus(), this.getAccountUsers());
return accountInfo;
}

public double getBalance() {
return this.accountBalance;
}

public void setBalance(double accountBalance) {
this.accountBalance = accountBalance;
}

public void setAccountID(int accountID) {
this.accountID = String.format( "%0" + AccountFactory.ACCOUNT_ID_LENGTH + "d", accountID);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 me gusta

}

public String getAccountID() {
return this.accountID;
}

public void addUser(User user) {
accountUsers.add(user);
}

public AccountStatus getAccountStatus() {
return accountStatus;
}


public void addTransactionToHistory(Transaction transaction){
this.getTransactionHistory().add(transaction);
}

public Transaction withdrawAndMakeTransaction(double amount) throws TransactionAmountIsZeroException, BalanceTooLowException {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice use of throws


if(amount >= 0.001) {
if (this.accountBalance >= amount) {
this.accountBalance -= amount;
Transaction newTransaction = TransactionFactory.createNewWithdrawal(amount, this);
addTransactionToHistory(newTransaction);
return newTransaction;
} else { throw new BalanceTooLowException(); }
} else { throw new TransactionAmountIsZeroException(); }

}

public Transaction depositAndMakeTransaction(double amount) throws TransactionAmountIsZeroException {

if(amount >= 0.001) {
this.accountBalance += amount;
Transaction newTransaction = TransactionFactory.createNewDeposit(amount, this);
addTransactionToHistory(newTransaction);
return newTransaction;
} else { throw new TransactionAmountIsZeroException(); }

}

public Transaction transferAndMakeTransaction(double amount, Account destinationAccount) throws TransactionAmountIsZeroException, BalanceTooLowException {
if(amount >= 0.001) {
if (this.accountBalance >= amount) {
this.accountBalance -= amount;
destinationAccount.accountBalance += amount;
Transaction newTransaction = TransactionFactory.createNewTransfer(amount, this, destinationAccount);
addTransactionToHistory(newTransaction);
return newTransaction;
} else { throw new BalanceTooLowException(); }
} else { throw new TransactionAmountIsZeroException(); }
}

public abstract AccountType getAccountType();

public void setAccountStatus(AccountStatus accountStatus){
this.accountStatus = accountStatus;
}

public ArrayList<User> getAccountUsers() {
return (ArrayList<User>) accountUsers;
}

public ArrayList<Transaction> getTransactionHistory() {
return (ArrayList<Transaction>) accountTransactionHistory;
}

public String printTransactionHistory(){
String history = "";
for (Transaction transaction: this.getTransactionHistory()) {
history += transaction.toString() + "\n";
}
return history;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.zipcode.macrolabs.atm.bankaccount;

import com.zipcode.macrolabs.atm.exceptions.NoMoreAccountsException;
import com.zipcode.macrolabs.atm.user.User;

public class AccountFactory {

static int iteratedAccountID = 0;
static final int ACCOUNT_ID_LENGTH = 9;

static int nextAccountID() throws NoMoreAccountsException {
if((""+ iteratedAccountID).length() <= ACCOUNT_ID_LENGTH) {
return iteratedAccountID++;
} else { throw new NoMoreAccountsException(); }
}

private static Account accountCreatorHelper(Account account, User user){
try {
account.setAccountID(nextAccountID());
} catch (NoMoreAccountsException e) {
e.printStackTrace();
}
account.addUser(user);
AccountWarehouse.addAccount(account);
return account;
}

public static CheckingAccount createNewCheckingAccount(User user) {
CheckingAccount account = new CheckingAccount();
return (CheckingAccount) accountCreatorHelper(account, user);
}

public static SavingsAccount createNewSavingsAccount(User user) {
SavingsAccount account = new SavingsAccount();
return (SavingsAccount) accountCreatorHelper(account, user);
}

public static InvestmentAccount createNewInvestmentAccount(User user) {
InvestmentAccount account = new InvestmentAccount();
return (InvestmentAccount) accountCreatorHelper(account, user);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.zipcode.macrolabs.atm.bankaccount;

public enum AccountStatus {

ACTIVE,
CLOSED

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.zipcode.macrolabs.atm.bankaccount;

public enum AccountType {

CHECKING,
SAVINGS,
INVESTMENT,
TEST

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.zipcode.macrolabs.atm.bankaccount;

import java.util.ArrayList;
import java.util.List;

public class AccountWarehouse {

private static final List<Account> accounts = new ArrayList<Account>();

public static void addAccount(Account account) {
accounts.add(account);
}

public static List<Account> getAccounts() {
return accounts;
}

public static Account findAccountByID(String accountID){
Account accountOut = null;
for (Account account: accounts){
if(accountID.equals(account.getAccountID())){
accountOut = account;
break;
}
}
return accountOut;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.zipcode.macrolabs.atm.bankaccount;

public class CheckingAccount extends Account {

public CheckingAccount(){ }

@Override
public AccountType getAccountType() {
return AccountType.CHECKING;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.zipcode.macrolabs.atm.bankaccount;

public class InvestmentAccount extends Account {

public InvestmentAccount(){ }

@Override
public AccountType getAccountType() {
return AccountType.INVESTMENT;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.zipcode.macrolabs.atm.bankaccount;

public class SavingsAccount extends Account {

public SavingsAccount(){ }

@Override
public AccountType getAccountType() {
return AccountType.SAVINGS;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.zipcode.macrolabs.atm.exceptions;

public class AccountNotEmptyException extends Exception{

public AccountNotEmptyException(){}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.zipcode.macrolabs.atm.exceptions;

public class BalanceTooLowException extends Exception {

public BalanceTooLowException(){}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.zipcode.macrolabs.atm.exceptions;

public class NoMoreAccountsException extends Exception {

public NoMoreAccountsException(){}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.zipcode.macrolabs.atm.exceptions;

public class NoMoreTransactionsException extends Exception {

public NoMoreTransactionsException(){}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.zipcode.macrolabs.atm.exceptions;

public class NoMoreUsersException extends Exception{

public NoMoreUsersException(){}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.zipcode.macrolabs.atm.exceptions;

public class TransactionAmountIsZeroException extends Exception{

public TransactionAmountIsZeroException(){
System.out.println("Please don't waste our time with $0.00 transactions.");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.zipcode.macrolabs.atm.navigation;

public class Authenticator {
}
Loading