From 9c30355b4a7d87fbfee34fc66c2712746c8d3973 Mon Sep 17 00:00:00 2001 From: pbattin Date: Tue, 17 Jan 2017 17:36:33 -0500 Subject: [PATCH 1/7] Started Access Control Lab --- .gitignore | 2 + .idea/compiler.xml | 16 +++ .idea/libraries/Maven__junit_junit_4_12.xml | 13 +++ .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 +++ Access_Control_Lab.iml | 17 +++ pom.xml | 36 ++++++ .../battin/preston/AccessControl/Account.java | 104 ++++++++++++++++++ .../preston/AccessControl/Checking.java | 60 ++++++++++ .../battin/preston/AccessControl/Main.java | 13 +++ .../preston/AccessControl/AccountTest.java | 51 +++++++++ 10 files changed, 325 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 Access_Control_Lab.iml create mode 100644 pom.xml create mode 100644 src/main/java/battin/preston/AccessControl/Account.java create mode 100644 src/main/java/battin/preston/AccessControl/Checking.java create mode 100644 src/main/java/battin/preston/AccessControl/Main.java create mode 100644 src/test/java/battin/preston/AccessControl/AccountTest.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4db2a73 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.idea +target diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..55e21b6 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Access_Control_Lab.iml b/Access_Control_Lab.iml new file mode 100644 index 0000000..5cf6df2 --- /dev/null +++ b/Access_Control_Lab.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..b5c240d --- /dev/null +++ b/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + battin.preston + AccessControl + 1.0-SNAPSHOT + + + + junit + junit + 4.12 + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.0 + + 1.8 + 1.8 + + + + + + + \ No newline at end of file diff --git a/src/main/java/battin/preston/AccessControl/Account.java b/src/main/java/battin/preston/AccessControl/Account.java new file mode 100644 index 0000000..b4bb913 --- /dev/null +++ b/src/main/java/battin/preston/AccessControl/Account.java @@ -0,0 +1,104 @@ +package battin.preston.AccessControl; + +/** + * Created by prestonbattin on 1/17/17. + */ +public class Account { + + + protected String accountType, holdersName, status, overDraftProtection; + protected int checkingAccountNumber, savingAccountNumber; + protected double balance, rate; + static protected int totalCheckingAccounts = 0, totalSavingAccount = 0; + + protected Account() { + } + + ; + + protected Account(String type, String name) { + if (type.equals("Checking")) { + this.checkingAccountNumber = totalCheckingAccounts; + this.accountType = type; + totalCheckingAccounts++; + } else if (type.equals("Saving")) { + this.savingAccountNumber = totalSavingAccount; + this.accountType = type; + totalSavingAccount++; + } + + this.holdersName = name; + + } + + protected void setName(String holdersName) { + + this.holdersName = holdersName; + } + + protected String getHoldersName() { + + return this.holdersName; + } + + protected void setStatus(String status) { + + if (status.equals("Open")) + this.status = status; + + else if (status.equals("Closed")) + this.status = status; + + else + this.status = "OFAC Freeze"; + + } + + protected String getStatus() { + + return this.status; + } + + protected void setOverDraftProtection(String set) { + + this.overDraftProtection = set; + } + + protected String getOverDraftProtection() { + + return this.overDraftProtection; + } + + protected void setRate() { + + this.rate = this.accountType.equals("Savings") ? .06 : .05; + + } + + protected double getRate() { + + return this.rate; + } + + protected void setBalance(double deposit) { + + this.balance = deposit; + } + + protected double getBalance() { + + return this.balance; + } + + protected int getCheckingAccountNumber() { + + return this.checkingAccountNumber; + } + + protected int getSavingAccountNumber() { + + return this.savingAccountNumber; + } + + +} diff --git a/src/main/java/battin/preston/AccessControl/Checking.java b/src/main/java/battin/preston/AccessControl/Checking.java new file mode 100644 index 0000000..5100969 --- /dev/null +++ b/src/main/java/battin/preston/AccessControl/Checking.java @@ -0,0 +1,60 @@ +package battin.preston.AccessControl; + +import java.util.ArrayList; + +/** + * Created by prestonbattin on 1/17/17. + */ +public class Checking extends Account { + + private ArrayList withdrawals = new ArrayList<>(), deposits = new ArrayList<>(), + transfers = new ArrayList<>(), statuses = new ArrayList<>(), + names = new ArrayList<>(), interestRates = new ArrayList<>(); + + + public Checking(String type, String name){ + super(type, name); + } + + public int getAccountNumber(){ + + return this.checkingAccountNumber; + + } + + public double getCheckingBalance(){ + + return this.balance; + } + + public void creditAccount(double credit){ + + this.balance += credit; + deposits.add(credit); + System.out.println("Account successfully credited +" + credit); + } + + public void debitAccount(double debit){ + + this.balance -= debit; + withdrawals.add(-debit); + System.out.println("Account successfully debited -" + debit); + } + + public ArrayList getDeposits(){ + + return deposits; + } + + public ArrayList getWithdrawls(){ + + return withdrawals; + } + + + + + + + +} diff --git a/src/main/java/battin/preston/AccessControl/Main.java b/src/main/java/battin/preston/AccessControl/Main.java new file mode 100644 index 0000000..cb673da --- /dev/null +++ b/src/main/java/battin/preston/AccessControl/Main.java @@ -0,0 +1,13 @@ +package battin.preston.AccessControl; + +/** + * Created by prestonbattin on 1/17/17. + */ +public class Main { + + public static void main(String[] args) { + + + + } +} diff --git a/src/test/java/battin/preston/AccessControl/AccountTest.java b/src/test/java/battin/preston/AccessControl/AccountTest.java new file mode 100644 index 0000000..f3afc9b --- /dev/null +++ b/src/test/java/battin/preston/AccessControl/AccountTest.java @@ -0,0 +1,51 @@ +package battin.preston.AccessControl; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Created by prestonbattin on 1/17/17. + */ +public class AccountTest { + + @Test + public void AccountCreationTest() { + + Checking test = new Checking("Checking", "Sally"); + Checking test2 = new Checking("Checking", "Steve"); + int expected = 1; + int actual = test2.checkingAccountNumber; + Assert.assertEquals(expected, actual); + Assert.assertEquals("Sally", test.holdersName); + + } + + @Test + public void CheckingBalanceTest(){ + Checking test = new Checking("Checking", "SAlly"); + double expected = 0; + double actual = test.balance; + Assert.assertEquals(expected,actual,0); + } + + @Test + public void TestCreditAccount(){ + Checking test = new Checking("Checking", "Sally"); + test.creditAccount(100.0); + double expected = 100; + double actual = test.balance; + Assert.assertEquals(expected, actual,0); + Assert.assertEquals(expected, test.getDeposits().get(0),0); + } + + @Test + public void TestDebitAccount(){ + Checking test = new Checking("Checking", "Foo"); + test.debitAccount(100); + double expected = -100; + double actual = test.balance; + Assert.assertEquals(expected,actual,0); + Assert.assertEquals(expected, test.getWithdrawls().get(0),0); + + } +} From 8e512fc7bb20683a90b451ee873c70e4a1dcce29 Mon Sep 17 00:00:00 2001 From: pbattin Date: Tue, 17 Jan 2017 18:43:53 -0500 Subject: [PATCH 2/7] Added all getters and setters --- .../battin/preston/AccessControl/Account.java | 68 +------- .../preston/AccessControl/Checking.java | 118 +++++++++++-- .../battin/preston/AccessControl/Savings.java | 158 ++++++++++++++++++ 3 files changed, 274 insertions(+), 70 deletions(-) create mode 100644 src/main/java/battin/preston/AccessControl/Savings.java diff --git a/src/main/java/battin/preston/AccessControl/Account.java b/src/main/java/battin/preston/AccessControl/Account.java index b4bb913..0813463 100644 --- a/src/main/java/battin/preston/AccessControl/Account.java +++ b/src/main/java/battin/preston/AccessControl/Account.java @@ -1,5 +1,7 @@ package battin.preston.AccessControl; +import java.util.ArrayList; + /** * Created by prestonbattin on 1/17/17. */ @@ -10,95 +12,41 @@ public class Account { protected int checkingAccountNumber, savingAccountNumber; protected double balance, rate; static protected int totalCheckingAccounts = 0, totalSavingAccount = 0; + protected ArrayList transfers = new ArrayList<>(); + protected ArrayList withdrawals = new ArrayList<>(), deposits = new ArrayList<>(), + interestRates = new ArrayList<>(); + protected ArrayList statuses = new ArrayList<>(), names = new ArrayList<>(); + protected Account() { } - ; - protected Account(String type, String name) { if (type.equals("Checking")) { this.checkingAccountNumber = totalCheckingAccounts; this.accountType = type; totalCheckingAccounts++; - } else if (type.equals("Saving")) { + } else if (type.equals("Savings")) { this.savingAccountNumber = totalSavingAccount; this.accountType = type; totalSavingAccount++; } this.holdersName = name; - - } - - protected void setName(String holdersName) { - - this.holdersName = holdersName; - } - - protected String getHoldersName() { - - return this.holdersName; } - protected void setStatus(String status) { - if (status.equals("Open")) - this.status = status; - else if (status.equals("Closed")) - this.status = status; - else - this.status = "OFAC Freeze"; - - } - protected String getStatus() { - return this.status; - } - protected void setOverDraftProtection(String set) { - this.overDraftProtection = set; - } - protected String getOverDraftProtection() { - return this.overDraftProtection; - } - protected void setRate() { - this.rate = this.accountType.equals("Savings") ? .06 : .05; - } - - protected double getRate() { - - return this.rate; - } - - protected void setBalance(double deposit) { - - this.balance = deposit; - } - - protected double getBalance() { - - return this.balance; - } - - protected int getCheckingAccountNumber() { - - return this.checkingAccountNumber; - } - - protected int getSavingAccountNumber() { - - return this.savingAccountNumber; - } } diff --git a/src/main/java/battin/preston/AccessControl/Checking.java b/src/main/java/battin/preston/AccessControl/Checking.java index 5100969..e38e65a 100644 --- a/src/main/java/battin/preston/AccessControl/Checking.java +++ b/src/main/java/battin/preston/AccessControl/Checking.java @@ -7,24 +7,16 @@ */ public class Checking extends Account { - private ArrayList withdrawals = new ArrayList<>(), deposits = new ArrayList<>(), - transfers = new ArrayList<>(), statuses = new ArrayList<>(), - names = new ArrayList<>(), interestRates = new ArrayList<>(); - public Checking(String type, String name){ super(type, name); + setRate(); } public int getAccountNumber(){ - return this.checkingAccountNumber; - - } - - public double getCheckingBalance(){ + return this.savingAccountNumber; - return this.balance; } public void creditAccount(double credit){ @@ -51,10 +43,116 @@ public ArrayList getWithdrawls(){ return withdrawals; } + public void setAccountHoldersName(String name){ + + this.holdersName = name; + this.names.add(name); + } + + public ArrayList getTransfers(){ + return transfers; + } + + public void makeTransfer(Account receiving, double money){ + + if((this.holdersName.equals(receiving.holdersName)) && (this.balance > money)){ + this.balance -= money; + receiving.balance += money; + this.transfers.add(-money); + receiving.transfers.add(money); + } else + System.out.println("Not enough money to transfer."); + } + + public ArrayList getStatuses(){ + + return statuses; + } + public ArrayList getNames(){ + return names; + } + + public ArrayList getInterestRates(){ + + return interestRates; + } + + public void setInterestRates(double rate){ + + this.rate = rate; + this.transfers.add(rate); + } + + protected void setStatus(String status) { + + if (status.equals("Open")) { + this.status = status; + } + + else if (status.equals("Closed")) { + this.status = status; + } + + else { + this.status = "OFAC Freeze"; + } + + this.statuses.add(status); + } + protected String getStatus() { + return this.status; + } + + protected void setOverDraftProtection(String set) { + + this.overDraftProtection = set; + } + + protected String getOverDraftProtection() { + + return this.overDraftProtection; + } + + protected double getRate() { + + return this.rate; + } + + protected double getBalance() { + + return this.balance; + } + + protected int getCheckingAccountNumber() { + + return this.checkingAccountNumber; + } + + protected int getSavingAccountNumber() { + + return this.savingAccountNumber; + } + + protected String getHoldersName() { + + return this.holdersName; + } + + protected void setRate() { + + if(this.accountType.equals("Savings")) { + this.rate = .06; + this.interestRates.add(.06); + } + else + this.rate = .05; + this.interestRates.add(.05); + + } } diff --git a/src/main/java/battin/preston/AccessControl/Savings.java b/src/main/java/battin/preston/AccessControl/Savings.java new file mode 100644 index 0000000..204074e --- /dev/null +++ b/src/main/java/battin/preston/AccessControl/Savings.java @@ -0,0 +1,158 @@ +package battin.preston.AccessControl; + +import java.util.ArrayList; + +/** + * Created by prestonbattin on 1/17/17. + */ +public class Savings extends Account { + + + + + public Savings(String type, String name){ + super(type, name); + setRate(); + } + + public int getAccountNumber(){ + + return this.savingAccountNumber; + + } + + public void creditAccount(double credit){ + + this.balance += credit; + deposits.add(credit); + System.out.println("Account successfully credited +" + credit); + } + + public void debitAccount(double debit){ + + this.balance -= debit; + withdrawals.add(-debit); + System.out.println("Account successfully debited -" + debit); + } + + public ArrayList getDeposits(){ + + return deposits; + } + + public ArrayList getWithdrawls(){ + + return withdrawals; + } + + public void setAccountHoldersName(String name){ + + this.holdersName = name; + this.names.add(name); + } + + public ArrayList getTransfers(){ + + return transfers; + } + + public void makeTransfer(Account receiving, double money){ + + if((this.holdersName.equals(receiving.holdersName)) && (this.balance > money)){ + this.balance -= money; + receiving.balance += money; + this.transfers.add(-money); + receiving.transfers.add(money); + } else + System.out.println("Not enough money to transfer."); + } + + public ArrayList getStatuses(){ + + return statuses; + } + + public ArrayList getNames(){ + + return names; + } + + public ArrayList getInterestRates(){ + + return interestRates; + } + + public void setInterestRates(double rate){ + + this.rate = rate; + this.transfers.add(rate); + } + + protected void setStatus(String status) { + + if (status.equals("Open")) { + this.status = status; + } + + else if (status.equals("Closed")) { + this.status = status; + } + + else { + this.status = "OFAC Freeze"; + } + + this.statuses.add(status); + } + + protected String getStatus() { + + return this.status; + } + + protected void setOverDraftProtection(String set) { + + this.overDraftProtection = set; + } + + protected String getOverDraftProtection() { + + return this.overDraftProtection; + } + + protected void setRate() { + + if(this.accountType.equals("Savings")) { + this.rate = .06; + this.interestRates.add(.06); + } + else + this.rate = .05; + this.interestRates.add(.05); + + } + + protected double getRate() { + + return this.rate; + } + + protected double getBalance() { + + return this.balance; + } + + protected int getCheckingAccountNumber() { + + return this.checkingAccountNumber; + } + + protected int getSavingAccountNumber() { + + return this.savingAccountNumber; + } + +} + + + From faca940c0a4eab709610c9ee6e59e69f0aea86d8 Mon Sep 17 00:00:00 2001 From: pbattin Date: Tue, 17 Jan 2017 20:01:44 -0500 Subject: [PATCH 3/7] Moved the getters and setters into account class --- .../battin/preston/AccessControl/Account.java | 141 ++++++++++++++++- .../preston/AccessControl/Checking.java | 142 +----------------- .../battin/preston/AccessControl/Main.java | 6 + .../battin/preston/AccessControl/Savings.java | 134 +---------------- .../preston/AccessControl/AccountTest.java | 78 +++++++++- 5 files changed, 219 insertions(+), 282 deletions(-) diff --git a/src/main/java/battin/preston/AccessControl/Account.java b/src/main/java/battin/preston/AccessControl/Account.java index 0813463..971b3d1 100644 --- a/src/main/java/battin/preston/AccessControl/Account.java +++ b/src/main/java/battin/preston/AccessControl/Account.java @@ -10,11 +10,10 @@ public class Account { protected String accountType, holdersName, status, overDraftProtection; protected int checkingAccountNumber, savingAccountNumber; + protected static int totalSavingAccount, totalCheckingAccounts; protected double balance, rate; - static protected int totalCheckingAccounts = 0, totalSavingAccount = 0; - protected ArrayList transfers = new ArrayList<>(); protected ArrayList withdrawals = new ArrayList<>(), deposits = new ArrayList<>(), - interestRates = new ArrayList<>(); + interestRates = new ArrayList<>(), transfers = new ArrayList<>(); protected ArrayList statuses = new ArrayList<>(), names = new ArrayList<>(); @@ -36,17 +35,153 @@ protected Account(String type, String name) { } + public int getAccountNumber(){ + return this.savingAccountNumber; + } + + public void creditAccount(double credit){ + + this.balance += credit; + deposits.add(credit); + System.out.println("Account successfully credited +" + credit); + } + + public void debitAccount(double debit){ + + this.balance -= debit; + withdrawals.add(-debit); + System.out.println("Account successfully debited -" + debit); + } + + public ArrayList getDeposits(){ + + return deposits; + } + + public ArrayList getWithdrawls(){ + + return withdrawals; + } + + public void setAccountHoldersName(String name){ + + this.holdersName = name; + this.names.add(name); + } + + public ArrayList getTransfers(){ + + return transfers; + } + + public void makeTransfer(Account receiving, double money){ + + if((this.holdersName.equals(receiving.holdersName)) && (this.balance > money)){ + this.balance -= money; + receiving.balance += money; + this.transfers.add(-money); + receiving.transfers.add(money); + } else + System.out.println("Not enough money to transfer."); + } + + public ArrayList getStatuses(){ + + return statuses; + } + + public ArrayList getNames(){ + + return names; + } + + public ArrayList getInterestRates(){ + + return interestRates; + } + + + public void setInterestRates(double rate){ + + this.rate = rate; + this.interestRates.add(rate); + } + + protected void setStatus(String status) { + if (status.equals("Open")) { + this.status = status; + } + + else if (status.equals("Closed")) { + this.status = status; + } + + else { + this.status = "OFAC Freeze"; + } + this.statuses.add(status); + } + protected String getStatus() { + return this.status; + } + protected void setOverDraftProtection(String set) { + this.overDraftProtection = set; + } + protected String getOverDraftProtection() { + + return this.overDraftProtection; + } + protected double getRate() { + return this.rate; + } + + protected double getBalance() { + + return this.balance; + } + + + + protected String getHoldersName() { + + return this.holdersName; + } + protected void setRate() { + + if(this.accountType.equals("Savings")) { + this.rate = .06; + this.interestRates.add(.06); + } + else + this.rate = .05; + this.interestRates.add(.05); + + } } + + + + + + + + + + + + + + diff --git a/src/main/java/battin/preston/AccessControl/Checking.java b/src/main/java/battin/preston/AccessControl/Checking.java index e38e65a..0466a3d 100644 --- a/src/main/java/battin/preston/AccessControl/Checking.java +++ b/src/main/java/battin/preston/AccessControl/Checking.java @@ -1,7 +1,5 @@ package battin.preston.AccessControl; -import java.util.ArrayList; - /** * Created by prestonbattin on 1/17/17. */ @@ -11,148 +9,12 @@ public class Checking extends Account { public Checking(String type, String name){ super(type, name); setRate(); - } - - public int getAccountNumber(){ - - return this.savingAccountNumber; - - } - - public void creditAccount(double credit){ - - this.balance += credit; - deposits.add(credit); - System.out.println("Account successfully credited +" + credit); - } - - public void debitAccount(double debit){ - - this.balance -= debit; - withdrawals.add(-debit); - System.out.println("Account successfully debited -" + debit); - } - - public ArrayList getDeposits(){ - - return deposits; - } - - public ArrayList getWithdrawls(){ - - return withdrawals; - } - - public void setAccountHoldersName(String name){ - - this.holdersName = name; - this.names.add(name); - } - - public ArrayList getTransfers(){ - - return transfers; - } - - public void makeTransfer(Account receiving, double money){ - - if((this.holdersName.equals(receiving.holdersName)) && (this.balance > money)){ - this.balance -= money; - receiving.balance += money; - this.transfers.add(-money); - receiving.transfers.add(money); - } else - System.out.println("Not enough money to transfer."); - } - - public ArrayList getStatuses(){ - - return statuses; - } - - public ArrayList getNames(){ - - return names; - } - - public ArrayList getInterestRates(){ - - return interestRates; - } - - public void setInterestRates(double rate){ - - this.rate = rate; - this.transfers.add(rate); - } - - protected void setStatus(String status) { - - if (status.equals("Open")) { - this.status = status; - } - - else if (status.equals("Closed")) { - this.status = status; - } - - else { - this.status = "OFAC Freeze"; - } - - this.statuses.add(status); - } - - protected String getStatus() { - - return this.status; - } - - protected void setOverDraftProtection(String set) { - - this.overDraftProtection = set; - } - - protected String getOverDraftProtection() { - - return this.overDraftProtection; - } - - protected double getRate() { - - return this.rate; - } - - protected double getBalance() { - - return this.balance; + setStatus("Open"); + setOverDraftProtection("On"); } protected int getCheckingAccountNumber() { return this.checkingAccountNumber; } - - protected int getSavingAccountNumber() { - - return this.savingAccountNumber; - } - - protected String getHoldersName() { - - return this.holdersName; - } - - protected void setRate() { - - if(this.accountType.equals("Savings")) { - this.rate = .06; - this.interestRates.add(.06); - } - else - this.rate = .05; - this.interestRates.add(.05); - - } - } diff --git a/src/main/java/battin/preston/AccessControl/Main.java b/src/main/java/battin/preston/AccessControl/Main.java index cb673da..16e057b 100644 --- a/src/main/java/battin/preston/AccessControl/Main.java +++ b/src/main/java/battin/preston/AccessControl/Main.java @@ -7,6 +7,12 @@ public class Main { public static void main(String[] args) { +Checking test = new Checking("Checking", "foo"); + + test.balance = 8; + + Savings test1 = new Savings("Savings", "bar"); + test1.rate = 9; } diff --git a/src/main/java/battin/preston/AccessControl/Savings.java b/src/main/java/battin/preston/AccessControl/Savings.java index 204074e..212d31b 100644 --- a/src/main/java/battin/preston/AccessControl/Savings.java +++ b/src/main/java/battin/preston/AccessControl/Savings.java @@ -1,7 +1,5 @@ package battin.preston.AccessControl; -import java.util.ArrayList; - /** * Created by prestonbattin on 1/17/17. */ @@ -13,139 +11,11 @@ public class Savings extends Account { public Savings(String type, String name){ super(type, name); setRate(); + setStatus("Open"); + setOverDraftProtection("On"); } - public int getAccountNumber(){ - - return this.savingAccountNumber; - - } - - public void creditAccount(double credit){ - - this.balance += credit; - deposits.add(credit); - System.out.println("Account successfully credited +" + credit); - } - - public void debitAccount(double debit){ - - this.balance -= debit; - withdrawals.add(-debit); - System.out.println("Account successfully debited -" + debit); - } - - public ArrayList getDeposits(){ - - return deposits; - } - - public ArrayList getWithdrawls(){ - - return withdrawals; - } - - public void setAccountHoldersName(String name){ - - this.holdersName = name; - this.names.add(name); - } - - public ArrayList getTransfers(){ - - return transfers; - } - - public void makeTransfer(Account receiving, double money){ - - if((this.holdersName.equals(receiving.holdersName)) && (this.balance > money)){ - this.balance -= money; - receiving.balance += money; - this.transfers.add(-money); - receiving.transfers.add(money); - } else - System.out.println("Not enough money to transfer."); - } - - public ArrayList getStatuses(){ - - return statuses; - } - - public ArrayList getNames(){ - - return names; - } - - public ArrayList getInterestRates(){ - - return interestRates; - } - - public void setInterestRates(double rate){ - - this.rate = rate; - this.transfers.add(rate); - } - - protected void setStatus(String status) { - - if (status.equals("Open")) { - this.status = status; - } - - else if (status.equals("Closed")) { - this.status = status; - } - - else { - this.status = "OFAC Freeze"; - } - - this.statuses.add(status); - } - - protected String getStatus() { - - return this.status; - } - - protected void setOverDraftProtection(String set) { - - this.overDraftProtection = set; - } - - protected String getOverDraftProtection() { - - return this.overDraftProtection; - } - - protected void setRate() { - - if(this.accountType.equals("Savings")) { - this.rate = .06; - this.interestRates.add(.06); - } - else - this.rate = .05; - this.interestRates.add(.05); - - } - - protected double getRate() { - - return this.rate; - } - - protected double getBalance() { - return this.balance; - } - - protected int getCheckingAccountNumber() { - - return this.checkingAccountNumber; - } protected int getSavingAccountNumber() { diff --git a/src/test/java/battin/preston/AccessControl/AccountTest.java b/src/test/java/battin/preston/AccessControl/AccountTest.java index f3afc9b..b7468f0 100644 --- a/src/test/java/battin/preston/AccessControl/AccountTest.java +++ b/src/test/java/battin/preston/AccessControl/AccountTest.java @@ -14,9 +14,9 @@ public void AccountCreationTest() { Checking test = new Checking("Checking", "Sally"); Checking test2 = new Checking("Checking", "Steve"); int expected = 1; - int actual = test2.checkingAccountNumber; + int actual = test2.getCheckingAccountNumber(); Assert.assertEquals(expected, actual); - Assert.assertEquals("Sally", test.holdersName); + Assert.assertEquals("Sally", test.getHoldersName()); } @@ -24,7 +24,7 @@ public void AccountCreationTest() { public void CheckingBalanceTest(){ Checking test = new Checking("Checking", "SAlly"); double expected = 0; - double actual = test.balance; + double actual = test.getBalance(); Assert.assertEquals(expected,actual,0); } @@ -39,13 +39,77 @@ public void TestCreditAccount(){ } @Test - public void TestDebitAccount(){ + public void TestDebitAccount() { Checking test = new Checking("Checking", "Foo"); test.debitAccount(100); double expected = -100; double actual = test.balance; - Assert.assertEquals(expected,actual,0); - Assert.assertEquals(expected, test.getWithdrawls().get(0),0); + Assert.assertEquals(expected, actual, 0); + Assert.assertEquals(expected, test.getWithdrawls().get(0), 0); + } + + @Test + public void TestSetAccountHoldersName(){ + Checking test = new Checking("Checking", "Foo"); + test.setAccountHoldersName("Bar"); + String expected = "Bar"; + String actual = test.getHoldersName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void TestTansfers(){ + Checking test = new Checking("Checking", "Foo"); + Savings testFoo = new Savings("Savings", "Foo"); + test.creditAccount(5000); + test.makeTransfer(testFoo, 600); + double expected = 600; + double actual = testFoo.getBalance(); + Assert.assertEquals(expected,actual,0); + System.out.println(test.getTransfers()); + System.out.println(testFoo.getTransfers()); + } + + + @Test + public void TestInterestRates(){ + Checking test = new Checking("Checking", "Foo"); + double expected = .05; + double actual = test.getRate(); + Assert.assertEquals(expected,actual,0); + test.setInterestRates(100); + Assert.assertEquals(100, test.getRate(),0); + + } + + @Test + public void TestSetName(){ + Checking test = new Checking("Checking", "Foo"); + test.setAccountHoldersName("Kevin"); + String expected = "Kevin"; + String actual = test.getHoldersName(); + Assert.assertEquals(expected,actual); + + } + + + @Test + public void TestSetStatus(){ + Checking test = new Checking("Checking", "Foo"); + String expected = "Open"; + String actual = test.getStatus(); + Assert.assertEquals(expected,actual); + Assert.assertEquals(expected, test.getStatuses().get(0)); + } + + + @Test + public void TestOverDraftProtection(){ + Checking test = new Checking("Checking", "Foo"); + String expected = "On"; + String actaul = test.getOverDraftProtection(); + Assert.assertEquals(expected, actaul ); + } } -} + From 7dd8ebf92c964c7045f27178f2bf85e21b7a53f6 Mon Sep 17 00:00:00 2001 From: pbattin Date: Tue, 17 Jan 2017 21:23:08 -0500 Subject: [PATCH 4/7] Added UML --- Access Control UML.png | Bin 0 -> 71718 bytes .../battin/preston/AccessControl/Account.java | 38 +++++++++--------- .../battin/preston/AccessControl/Main.java | 6 +-- 3 files changed, 21 insertions(+), 23 deletions(-) create mode 100644 Access Control UML.png diff --git a/Access Control UML.png b/Access Control UML.png new file mode 100644 index 0000000000000000000000000000000000000000..d0b04b835d8dc9ce61d4ca634840d5c42a652819 GIT binary patch literal 71718 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

e=hK_ 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 literal 0 HcmV?d00001 diff --git a/src/main/java/battin/preston/AccessControl/Account.java b/src/main/java/battin/preston/AccessControl/Account.java index 971b3d1..dea6a4f 100644 --- a/src/main/java/battin/preston/AccessControl/Account.java +++ b/src/main/java/battin/preston/AccessControl/Account.java @@ -8,13 +8,13 @@ public class Account { - protected String accountType, holdersName, status, overDraftProtection; - protected int checkingAccountNumber, savingAccountNumber; - protected static int totalSavingAccount, totalCheckingAccounts; - protected double balance, rate; - protected ArrayList withdrawals = new ArrayList<>(), deposits = new ArrayList<>(), + private String accountType, holdersName, status, overDraftProtection; + private int checkingAccountNumber, savingAccountNumber; + private static int totalSavingAccount, totalCheckingAccounts; + private double balance, rate; + private ArrayList withdrawals = new ArrayList<>(), deposits = new ArrayList<>(), interestRates = new ArrayList<>(), transfers = new ArrayList<>(); - protected ArrayList statuses = new ArrayList<>(), names = new ArrayList<>(); + private ArrayList statuses = new ArrayList<>(), names = new ArrayList<>(); protected Account() { @@ -35,48 +35,48 @@ protected Account(String type, String name) { } - public int getAccountNumber(){ + protected int getAccountNumber(){ return this.savingAccountNumber; } - public void creditAccount(double credit){ + protected void creditAccount(double credit){ this.balance += credit; deposits.add(credit); System.out.println("Account successfully credited +" + credit); } - public void debitAccount(double debit){ + protected void debitAccount(double debit){ this.balance -= debit; withdrawals.add(-debit); System.out.println("Account successfully debited -" + debit); } - public ArrayList getDeposits(){ + protected ArrayList getDeposits(){ return deposits; } - public ArrayList getWithdrawls(){ + protected ArrayList getWithdrawls(){ return withdrawals; } - public void setAccountHoldersName(String name){ + protected void setAccountHoldersName(String name){ this.holdersName = name; this.names.add(name); } - public ArrayList getTransfers(){ + protected ArrayList getTransfers(){ return transfers; } - public void makeTransfer(Account receiving, double money){ + protected void makeTransfer(Account receiving, double money){ if((this.holdersName.equals(receiving.holdersName)) && (this.balance > money)){ this.balance -= money; @@ -87,23 +87,23 @@ public void makeTransfer(Account receiving, double money){ System.out.println("Not enough money to transfer."); } - public ArrayList getStatuses(){ + protected ArrayList getStatuses(){ return statuses; } - public ArrayList getNames(){ + protected ArrayList getNames(){ return names; } - public ArrayList getInterestRates(){ + protected ArrayList getInterestRates(){ return interestRates; } - public void setInterestRates(double rate){ + protected void setInterestRates(double rate){ this.rate = rate; this.interestRates.add(rate); @@ -151,8 +151,6 @@ protected double getBalance() { return this.balance; } - - protected String getHoldersName() { return this.holdersName; diff --git a/src/main/java/battin/preston/AccessControl/Main.java b/src/main/java/battin/preston/AccessControl/Main.java index 16e057b..f476791 100644 --- a/src/main/java/battin/preston/AccessControl/Main.java +++ b/src/main/java/battin/preston/AccessControl/Main.java @@ -9,11 +9,11 @@ public static void main(String[] args) { Checking test = new Checking("Checking", "foo"); - test.balance = 8; + test.creditAccount(4); Savings test1 = new Savings("Savings", "bar"); - test1.rate = 9; - + test1.creditAccount(4545); + test.creditAccount(6); } } From a8fc382bd40c71f8f5c1dd9dc6460ee789e68c26 Mon Sep 17 00:00:00 2001 From: pbattin Date: Tue, 17 Jan 2017 21:27:16 -0500 Subject: [PATCH 5/7] Changed the getters --- src/main/java/battin/preston/AccessControl/Checking.java | 2 +- src/main/java/battin/preston/AccessControl/Savings.java | 2 +- src/test/java/battin/preston/AccessControl/AccountTest.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/battin/preston/AccessControl/Checking.java b/src/main/java/battin/preston/AccessControl/Checking.java index 0466a3d..c67d865 100644 --- a/src/main/java/battin/preston/AccessControl/Checking.java +++ b/src/main/java/battin/preston/AccessControl/Checking.java @@ -15,6 +15,6 @@ public Checking(String type, String name){ protected int getCheckingAccountNumber() { - return this.checkingAccountNumber; + return this.getCheckingAccountNumber(); } } diff --git a/src/main/java/battin/preston/AccessControl/Savings.java b/src/main/java/battin/preston/AccessControl/Savings.java index 212d31b..6408189 100644 --- a/src/main/java/battin/preston/AccessControl/Savings.java +++ b/src/main/java/battin/preston/AccessControl/Savings.java @@ -19,7 +19,7 @@ public Savings(String type, String name){ protected int getSavingAccountNumber() { - return this.savingAccountNumber; + return this.getSavingAccountNumber(); } } diff --git a/src/test/java/battin/preston/AccessControl/AccountTest.java b/src/test/java/battin/preston/AccessControl/AccountTest.java index b7468f0..166c58c 100644 --- a/src/test/java/battin/preston/AccessControl/AccountTest.java +++ b/src/test/java/battin/preston/AccessControl/AccountTest.java @@ -33,7 +33,7 @@ public void TestCreditAccount(){ Checking test = new Checking("Checking", "Sally"); test.creditAccount(100.0); double expected = 100; - double actual = test.balance; + double actual = test.getBalance(); Assert.assertEquals(expected, actual,0); Assert.assertEquals(expected, test.getDeposits().get(0),0); } @@ -43,7 +43,7 @@ public void TestDebitAccount() { Checking test = new Checking("Checking", "Foo"); test.debitAccount(100); double expected = -100; - double actual = test.balance; + double actual = test.getBalance(); Assert.assertEquals(expected, actual, 0); Assert.assertEquals(expected, test.getWithdrawls().get(0), 0); } From c91eb4e5734f9ad54b4a388970934f0422e5b3d0 Mon Sep 17 00:00:00 2001 From: pbattin Date: Tue, 17 Jan 2017 22:08:46 -0500 Subject: [PATCH 6/7] Added some user interface --- .../battin/preston/AccessControl/Main.java | 31 +++++++++-- .../preston/AccessControl/MainMenu.java | 52 +++++++++++++++++++ .../preston/AccessControl/OpenAccount.java | 20 +++++++ 3 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 src/main/java/battin/preston/AccessControl/MainMenu.java create mode 100644 src/main/java/battin/preston/AccessControl/OpenAccount.java diff --git a/src/main/java/battin/preston/AccessControl/Main.java b/src/main/java/battin/preston/AccessControl/Main.java index f476791..d7eb349 100644 --- a/src/main/java/battin/preston/AccessControl/Main.java +++ b/src/main/java/battin/preston/AccessControl/Main.java @@ -1,19 +1,40 @@ package battin.preston.AccessControl; +import java.util.ArrayList; +import java.util.Scanner; + /** * Created by prestonbattin on 1/17/17. */ public class Main { + static Scanner input = new Scanner(System.in); + static ArrayList checkingAccount = new ArrayList<>(); + static ArrayList savingsAccount = new ArrayList<>(); + public static void main(String[] args) { -Checking test = new Checking("Checking", "foo"); + String choice, name; + + + System.out.println("Would you like to open a Checking or Savings account?"); + choice = input.nextLine(); + System.out.println("What is your full name?"); + name = input.nextLine(); + + OpenAccount.openAccount(choice, name); + + System.out.println("What would you like to do today " + name + "?"); + choice = input.nextLine(); + MainMenu.MenuItems(choice); + + + + + + - test.creditAccount(4); - Savings test1 = new Savings("Savings", "bar"); - test1.creditAccount(4545); - test.creditAccount(6); } } diff --git a/src/main/java/battin/preston/AccessControl/MainMenu.java b/src/main/java/battin/preston/AccessControl/MainMenu.java new file mode 100644 index 0000000..0ee4b40 --- /dev/null +++ b/src/main/java/battin/preston/AccessControl/MainMenu.java @@ -0,0 +1,52 @@ +package battin.preston.AccessControl; + +/** + * Created by prestonbattin on 1/17/17. + */ +public class MainMenu { + + static void MenuItems(String pick){ + + switch(pick){ + + case "Transfer": + + + break; + + case "Inquiries": + + break; + + case "Credit": + + break; + + case "Debit": + + break; + + case "Change Name": + + break; + + case "Close": + + break; + + case "Freeze": + + break; + + default: + + System.out.println("Options: Transfer, Inquiries, Credit, Debit, Change Name, Close, Freeze."); + + + + + } + + } + +} diff --git a/src/main/java/battin/preston/AccessControl/OpenAccount.java b/src/main/java/battin/preston/AccessControl/OpenAccount.java new file mode 100644 index 0000000..0e71f5c --- /dev/null +++ b/src/main/java/battin/preston/AccessControl/OpenAccount.java @@ -0,0 +1,20 @@ +package battin.preston.AccessControl; + +import static battin.preston.AccessControl.Main.checkingAccount; +import static battin.preston.AccessControl.Main.savingsAccount; + +/** + * Created by prestonbattin on 1/17/17. + */ +public class OpenAccount { + + public static void openAccount(String choice, String name) { + if (choice.equals("Checking")) { + Checking account = new Checking(choice, name); + checkingAccount.add(account); + } else if (choice.equals("Savings")) { + Savings account = new Savings(choice, name); + savingsAccount.add(account); + } + } +} From ef2403211877da37c75646882fc83940464946e1 Mon Sep 17 00:00:00 2001 From: pbattin Date: Tue, 17 Jan 2017 22:46:27 -0500 Subject: [PATCH 7/7] Added some more functionality --- .../battin/preston/AccessControl/Checking.java | 3 ++- .../java/battin/preston/AccessControl/Main.java | 16 +++++++--------- .../battin/preston/AccessControl/MainMenu.java | 17 +++++++++++++++++ .../preston/AccessControl/OpenAccount.java | 17 ++++++++++++++--- 4 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/main/java/battin/preston/AccessControl/Checking.java b/src/main/java/battin/preston/AccessControl/Checking.java index c67d865..52ff47e 100644 --- a/src/main/java/battin/preston/AccessControl/Checking.java +++ b/src/main/java/battin/preston/AccessControl/Checking.java @@ -13,8 +13,9 @@ public Checking(String type, String name){ setOverDraftProtection("On"); } - protected int getCheckingAccountNumber() { + public int getCheckingAccountNumber() { return this.getCheckingAccountNumber(); } + } diff --git a/src/main/java/battin/preston/AccessControl/Main.java b/src/main/java/battin/preston/AccessControl/Main.java index d7eb349..21880cc 100644 --- a/src/main/java/battin/preston/AccessControl/Main.java +++ b/src/main/java/battin/preston/AccessControl/Main.java @@ -11,22 +11,20 @@ public class Main { static Scanner input = new Scanner(System.in); static ArrayList checkingAccount = new ArrayList<>(); static ArrayList savingsAccount = new ArrayList<>(); + static int i; public static void main(String[] args) { - String choice, name; + OpenAccount openedAccount = new OpenAccount(); + openedAccount.getNameandAccountType(); + openedAccount.openAccount(); + + + - System.out.println("Would you like to open a Checking or Savings account?"); - choice = input.nextLine(); - System.out.println("What is your full name?"); - name = input.nextLine(); - OpenAccount.openAccount(choice, name); - System.out.println("What would you like to do today " + name + "?"); - choice = input.nextLine(); - MainMenu.MenuItems(choice); diff --git a/src/main/java/battin/preston/AccessControl/MainMenu.java b/src/main/java/battin/preston/AccessControl/MainMenu.java index 0ee4b40..488074c 100644 --- a/src/main/java/battin/preston/AccessControl/MainMenu.java +++ b/src/main/java/battin/preston/AccessControl/MainMenu.java @@ -1,10 +1,27 @@ package battin.preston.AccessControl; +import static battin.preston.AccessControl.Main.*; +import static battin.preston.AccessControl.OpenAccount.choice; + /** * Created by prestonbattin on 1/17/17. */ public class MainMenu { + static void decideChecking(){ + + System.out.println("What would you like to do today " + checkingAccount.get(i).getHoldersName() + "?"); + choice = input.nextLine(); + MainMenu.MenuItems(choice); + } + + static void decideSavings(){ + + System.out.println("What would you like to do today " + savingsAccount.get(i).getHoldersName() + "?"); + choice = input.nextLine(); + MainMenu.MenuItems(choice); + } + static void MenuItems(String pick){ switch(pick){ diff --git a/src/main/java/battin/preston/AccessControl/OpenAccount.java b/src/main/java/battin/preston/AccessControl/OpenAccount.java index 0e71f5c..ae1408f 100644 --- a/src/main/java/battin/preston/AccessControl/OpenAccount.java +++ b/src/main/java/battin/preston/AccessControl/OpenAccount.java @@ -1,20 +1,31 @@ package battin.preston.AccessControl; -import static battin.preston.AccessControl.Main.checkingAccount; -import static battin.preston.AccessControl.Main.savingsAccount; +import static battin.preston.AccessControl.Main.*; /** * Created by prestonbattin on 1/17/17. */ public class OpenAccount { - public static void openAccount(String choice, String name) { + protected static String choice, name; + + public static void getNameandAccountType() { + + System.out.println("Would you like to open a Checking or Savings account?"); + choice = input.nextLine(); + System.out.println("What is your full name?"); + name = input.nextLine(); + } + + public void openAccount() { if (choice.equals("Checking")) { Checking account = new Checking(choice, name); checkingAccount.add(account); + MainMenu.decideChecking(); } else if (choice.equals("Savings")) { Savings account = new Savings(choice, name); savingsAccount.add(account); + MainMenu.decideSavings(); } } }