diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..2a1782b --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +AccessControlLab \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..577caa2 --- /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/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..590a53b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..767d9ff --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..5ec4705 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,949 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1484677517447 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Access_Control_Lab.iml b/Access_Control_Lab.iml new file mode 100644 index 0000000..03320bd --- /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..088189b --- /dev/null +++ b/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + + + junit + junit + 4.12 + + + mozeik.gerrod + AccessControlLab + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/src/main/java/Access_Control_Lab.java b/src/main/java/Access_Control_Lab.java new file mode 100644 index 0000000..f19de4b --- /dev/null +++ b/src/main/java/Access_Control_Lab.java @@ -0,0 +1,6 @@ +/** + * Created by gerrodmozeik on 1/17/17. + */ +public class Access_Control_Lab { + +} \ No newline at end of file diff --git a/src/main/java/AccountStatus.java b/src/main/java/AccountStatus.java new file mode 100644 index 0000000..9906813 --- /dev/null +++ b/src/main/java/AccountStatus.java @@ -0,0 +1,6 @@ +/** + * Created by gerrodmozeik on 1/17/17. + */ +public enum AccountStatus { + OPEN, CLOSED, FROZEN +} diff --git a/src/main/java/AccountType.java b/src/main/java/AccountType.java new file mode 100644 index 0000000..9cccd5f --- /dev/null +++ b/src/main/java/AccountType.java @@ -0,0 +1,6 @@ +/** + * Created by gerrodmozeik on 1/17/17. + */ +public enum AccountType { + CHECKING, SAVINGS, INVESTMENT +} diff --git a/src/main/java/Bank.java b/src/main/java/Bank.java new file mode 100644 index 0000000..27866c7 --- /dev/null +++ b/src/main/java/Bank.java @@ -0,0 +1,11 @@ +/** + * Created by gerrodmozeik on 1/17/17. + * Worked on this with Bill Mattern. + */ +public class Bank { + + public static void main(String[] args) { + BankAccount bankAccount = new BankAccount(); + } + +} diff --git a/src/main/java/BankAccount.java b/src/main/java/BankAccount.java new file mode 100644 index 0000000..6d0a338 --- /dev/null +++ b/src/main/java/BankAccount.java @@ -0,0 +1,126 @@ +/** + * Created by gerrodmozeik on 1/17/17. + */ +public class BankAccount { + + private AccountType accountType; + private String accountNumber; + private double accountBalance; + private String accountHolderName; + private double interestRate; + private boolean overDraftProtection; + private boolean autoTransfer; + private String transactionRecord; + private ODPStatus odpStatus; + private AccountStatus accountStatus; + private AccountStatus newAccountStatus; + + public BankAccount() { + accountStatus = AccountStatus.OPEN; + } + + public void setAccountType(AccountType accountType) { + this.accountType = accountType; + writeToLog("Account Type Changed"); + } + + public AccountType getAccountType() { + return this.accountType; + } + + public void changeAccountHolderName(String accountHolderName) { + if (this.accountStatus == AccountStatus.OPEN) { + this.accountHolderName = accountHolderName; + writeToLog("Account Holder Name Changed"); + } else { + System.out.println("You can't change the name on this account."); + } + } + + public String getAccountHolderName() { + return this.accountHolderName; + } + + public boolean setAccountStatus(AccountStatus newAccountStatus) { + if (this.accountStatus == AccountStatus.CLOSED) { + System.out.println("You can not modify a closed account."); + return false; + } else if (this.accountStatus == AccountStatus.FROZEN && newAccountStatus == AccountStatus.FROZEN) { + System.out.println("This account is already frozen."); + return false; + } else if (this.accountStatus == AccountStatus.FROZEN && newAccountStatus == AccountStatus.CLOSED) { + System.out.println("You can't close a frozen account."); + return false; + } else if (this.accountStatus == AccountStatus.FROZEN && newAccountStatus == AccountStatus.OPEN) { + this.accountStatus = newAccountStatus; + System.out.println("Your account has been opened."); + writeToLog("Account Status Changed to " + this.accountStatus); + return true; + } else if (this.accountStatus == AccountStatus.OPEN && newAccountStatus == AccountStatus.OPEN) { + System.out.println("This account is already open."); + return false; + } else if (this.accountStatus == AccountStatus.OPEN && newAccountStatus == AccountStatus.FROZEN) { + this.accountStatus = newAccountStatus; + System.out.println("Your account has been frozen."); + writeToLog("Account Status Changed to " + this.accountStatus); + return true; + } else if (this.accountStatus == AccountStatus.OPEN && newAccountStatus == AccountStatus.CLOSED) { + if (this.accountBalance != 0) { + System.out.println("You must have a 0 balance to close an account."); + return false; + } else { + this.accountStatus = newAccountStatus; + System.out.println("Your account has been closed."); + return false; + } + } return true; + } + + public AccountStatus getAccountStatus() { + return this.accountStatus; + } + + public String getBalance() { + if (accountStatus == AccountStatus.FROZEN) { + return "Your account is frozen."; + } else { + writeToLog("Balance inquiry."); + return Double.toString(accountBalance); + } + } + + public boolean creditAccount(double creditAmount) { + if (accountStatus == AccountStatus.OPEN) { + this.accountBalance += creditAmount; + writeToLog("Your account has been credited by " + creditAmount); + return true; + } else { + return false; + } + } + + public boolean debitAccount(double debitAmount) { + if (accountStatus == AccountStatus.OPEN) { + if (odpStatus == ODPStatus.OFF) { + if (this.accountBalance < debitAmount) { + return false; + } else { + this.accountBalance -= debitAmount; + writeToLog("Your account has been debited by " + debitAmount); + return true; + } + } else { + this.accountBalance -= debitAmount; + writeToLog("Your account has been debited by " + debitAmount); + return true; + } + } else { + return false; + } + } + + public String writeToLog(String logItem) { + this.transactionRecord += logItem; + return transactionRecord; + } +} diff --git a/src/main/java/ODPStatus.java b/src/main/java/ODPStatus.java new file mode 100644 index 0000000..1f29fae --- /dev/null +++ b/src/main/java/ODPStatus.java @@ -0,0 +1,6 @@ +/** + * Created by gerrodmozeik on 1/17/17. + */ +public enum ODPStatus { + ON, OFF, AUTOTRANSFER +} diff --git a/src/main/java/SavingsAccount.java b/src/main/java/SavingsAccount.java new file mode 100644 index 0000000..78b4948 --- /dev/null +++ b/src/main/java/SavingsAccount.java @@ -0,0 +1,9 @@ +/** + * Created by gerrodmozeik on 1/17/17. + */ +public class SavingsAccount extends BankAccount { + + public SavingsAccount(String accountNumber, String accountHolderName, AccountType accountType, double interestRate) { + + } +} diff --git a/src/test/java/BankAccountTest.java b/src/test/java/BankAccountTest.java new file mode 100644 index 0000000..4cc2061 --- /dev/null +++ b/src/test/java/BankAccountTest.java @@ -0,0 +1,131 @@ +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by gerrodmozeik on 1/17/17. + */ +public class BankAccountTest { + + @Test + public void setAccountTypeTEST() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountType(AccountType.SAVINGS); + AccountType expected = AccountType.SAVINGS, actual = AccountType.SAVINGS; + assertEquals(expected, actual); + } + + @Test + public void changeAccountHolderNameForClosedAccountTest() { + BankAccount bankAccount = new BankAccount(); + bankAccount.changeAccountHolderName("BOB"); + bankAccount.setAccountStatus(AccountStatus.CLOSED); + bankAccount.changeAccountHolderName("STEVE"); + String expected = "BOB", actual = bankAccount.getAccountHolderName(); + assertEquals(expected, actual); + } + + @Test + public void changeAccountHolderNameForFrozenAccountTest() { + BankAccount bankAccount = new BankAccount(); + bankAccount.changeAccountHolderName("BOB"); + bankAccount.setAccountStatus(AccountStatus.FROZEN); + bankAccount.changeAccountHolderName("STEVE"); + String expected = "BOB", actual = bankAccount.getAccountHolderName(); + assertEquals(expected, actual); + } + + @Test + public void changeAccountHolderNameForOpenAccountTest() { + BankAccount bankAccount = new BankAccount(); + bankAccount.changeAccountHolderName("BOB"); + bankAccount.changeAccountHolderName("STEVE"); + String expected = "STEVE", actual = bankAccount.getAccountHolderName(); + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromFrozenToFrozen() { + BankAccount bankAccount = new BankAccount(); + System.out.println(bankAccount.getAccountStatus()); + bankAccount.setAccountStatus(AccountStatus.FROZEN); + System.out.println(bankAccount.getAccountStatus()); + bankAccount.setAccountStatus(AccountStatus.FROZEN); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromFrozenToClosed() { + BankAccount bankAccount = new BankAccount(); + System.out.println(bankAccount.getAccountStatus()); + bankAccount.setAccountStatus(AccountStatus.FROZEN); + System.out.println(bankAccount.getAccountStatus()); + boolean expected = false, actual = bankAccount.setAccountStatus(AccountStatus.CLOSED); + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromFrozenToOpen() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountStatus(AccountStatus.FROZEN); + bankAccount.setAccountStatus(AccountStatus.OPEN); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromOpenToOpen() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountStatus(AccountStatus.OPEN); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromOpenToClosed() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountStatus(AccountStatus.CLOSED); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromOpenToFrozen() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountStatus(AccountStatus.FROZEN); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromClosedToOpen() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountStatus(AccountStatus.CLOSED); + bankAccount.setAccountStatus(AccountStatus.OPEN); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromClosedToClosed() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountStatus(AccountStatus.CLOSED); + bankAccount.setAccountStatus(AccountStatus.CLOSED); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + public void setAccountTypeFromClosedToFrozen() { + BankAccount bankAccount = new BankAccount(); + bankAccount.setAccountStatus(AccountStatus.CLOSED); + bankAccount.setAccountStatus(AccountStatus.FROZEN); + Boolean expected = false, actual = false; + assertEquals(expected, actual); + } + + @Test + +} \ No newline at end of file diff --git a/target/classes/Access_Control_Lab.class b/target/classes/Access_Control_Lab.class new file mode 100644 index 0000000..3372e5f Binary files /dev/null and b/target/classes/Access_Control_Lab.class differ diff --git a/target/classes/AccountStatus.class b/target/classes/AccountStatus.class new file mode 100644 index 0000000..36315a5 Binary files /dev/null and b/target/classes/AccountStatus.class differ diff --git a/target/classes/AccountType.class b/target/classes/AccountType.class new file mode 100644 index 0000000..71beb40 Binary files /dev/null and b/target/classes/AccountType.class differ diff --git a/target/classes/Bank.class b/target/classes/Bank.class new file mode 100644 index 0000000..f89fdd6 Binary files /dev/null and b/target/classes/Bank.class differ diff --git a/target/classes/BankAccount.class b/target/classes/BankAccount.class new file mode 100644 index 0000000..dea5075 Binary files /dev/null and b/target/classes/BankAccount.class differ diff --git a/target/classes/ODPStatus.class b/target/classes/ODPStatus.class new file mode 100644 index 0000000..2e57318 Binary files /dev/null and b/target/classes/ODPStatus.class differ diff --git a/target/classes/SavingsAccount.class b/target/classes/SavingsAccount.class new file mode 100644 index 0000000..dca63de Binary files /dev/null and b/target/classes/SavingsAccount.class differ diff --git a/target/test-classes/BankAccountTest.class b/target/test-classes/BankAccountTest.class new file mode 100644 index 0000000..47f9cf1 Binary files /dev/null and b/target/test-classes/BankAccountTest.class differ