Added base classes
This commit is contained in:
124
.idea/uiDesigner.xml
generated
Normal file
124
.idea/uiDesigner.xml
generated
Normal file
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
93
src/main/java/me/zacharias/bank/Account.java
Normal file
93
src/main/java/me/zacharias/bank/Account.java
Normal file
@@ -0,0 +1,93 @@
|
||||
package me.zacharias.bank;
|
||||
|
||||
import me.zacharias.bank.transaction.Transaction;
|
||||
import me.zacharias.bank.transaction.TransactionType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
public abstract class Account {
|
||||
ArrayList<Transaction> transactions;
|
||||
String name;
|
||||
double balance;
|
||||
UUID id;
|
||||
|
||||
public Account(String name, int balance) {
|
||||
this.name = name;
|
||||
this.balance = balance;
|
||||
transactions = new ArrayList<>();
|
||||
id = UUID.randomUUID();
|
||||
}
|
||||
|
||||
public void WithdrawTransaction(double amount, String description, UUID destination) {
|
||||
if(amount < 0) {
|
||||
throw new IllegalArgumentException("Amount cannot be negative");
|
||||
}
|
||||
if(balance < amount) {
|
||||
throw new IllegalArgumentException("Insufficient balance");
|
||||
}
|
||||
Transaction transaction = new Transaction(amount, description, destination, this.id, TransactionType.WITHDRAW);
|
||||
transactions.add(transaction);
|
||||
balance -= amount;
|
||||
}
|
||||
|
||||
public void DepositTransaction(double amount, String description, UUID originator) {
|
||||
if(amount < 0) {
|
||||
throw new IllegalArgumentException("Amount cannot be negative");
|
||||
}
|
||||
Transaction transaction = new Transaction(amount, description, this.id, originator, TransactionType.DEPOSIT);
|
||||
transactions.add(transaction);
|
||||
balance += amount;
|
||||
}
|
||||
|
||||
public void TransferTransaction(double amount, String description, UUID originator, UUID destination) {
|
||||
if(amount < 0 && balance < Math.abs(amount)) {
|
||||
throw new IllegalArgumentException("Insufficient balance");
|
||||
}
|
||||
Transaction transaction = new Transaction(amount, description, originator, destination, TransactionType.TRANSFER);
|
||||
transactions.add(transaction);
|
||||
balance += amount;
|
||||
}
|
||||
|
||||
public void handleTransaction(Transaction transaction) {
|
||||
if(transaction.getType() == TransactionType.WITHDRAW) {
|
||||
if(transaction.getAmount() < 0) {
|
||||
throw new IllegalArgumentException("Amount cannot be negative");
|
||||
}
|
||||
if(balance < transaction.getAmount()) {
|
||||
throw new IllegalArgumentException("Insufficient balance");
|
||||
}
|
||||
balance -= transaction.getAmount();
|
||||
} else if(transaction.getType() == TransactionType.DEPOSIT) {
|
||||
if(transaction.getAmount() < 0) {
|
||||
throw new IllegalArgumentException("Amount cannot be negative");
|
||||
}
|
||||
balance += transaction.getAmount();
|
||||
} else if(transaction.getType() == TransactionType.TRANSFER) {
|
||||
balance += transaction.getAmount();
|
||||
}
|
||||
transactions.add(transaction);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public double getBalance() {
|
||||
return balance;
|
||||
}
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public ArrayList<Transaction> getTransactions() {
|
||||
return transactions;
|
||||
}
|
||||
|
||||
abstract double getInterestRate();
|
||||
|
||||
public double getInterest() {
|
||||
return balance * (1+getInterestRate());
|
||||
}
|
||||
}
|
||||
12
src/main/java/me/zacharias/bank/BankAccount.java
Normal file
12
src/main/java/me/zacharias/bank/BankAccount.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package me.zacharias.bank;
|
||||
|
||||
public class BankAccount extends Account {
|
||||
public BankAccount(String name, int balance) {
|
||||
super(name, balance);
|
||||
}
|
||||
|
||||
@Override
|
||||
double getInterestRate() {
|
||||
return 0.001;
|
||||
}
|
||||
}
|
||||
5
src/main/java/me/zacharias/bank/Main.java
Normal file
5
src/main/java/me/zacharias/bank/Main.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package me.zacharias.bank;
|
||||
|
||||
public class Main {
|
||||
|
||||
}
|
||||
13
src/main/java/me/zacharias/bank/SavingsAccount.java
Normal file
13
src/main/java/me/zacharias/bank/SavingsAccount.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package me.zacharias.bank;
|
||||
|
||||
public class SavingsAccount extends Account{
|
||||
|
||||
public SavingsAccount(String name, int balance) {
|
||||
super(name, balance);
|
||||
}
|
||||
|
||||
@Override
|
||||
double getInterestRate() {
|
||||
return 0.05;
|
||||
}
|
||||
}
|
||||
42
src/main/java/me/zacharias/bank/User.java
Normal file
42
src/main/java/me/zacharias/bank/User.java
Normal file
@@ -0,0 +1,42 @@
|
||||
package me.zacharias.bank;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
public class User {
|
||||
UUID id;
|
||||
String name;
|
||||
String password;
|
||||
ArrayList<Account> accounts;
|
||||
|
||||
public User(String name, String password) {
|
||||
this.name = name;
|
||||
this.password = password;
|
||||
id = UUID.randomUUID();
|
||||
accounts = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void createAccount(String name, int balance) {
|
||||
Account account = new BankAccount(name, balance);
|
||||
accounts.add(account);
|
||||
}
|
||||
|
||||
public void createSavingsAccount(String name, int balance) {
|
||||
Account account = new SavingsAccount(name, balance);
|
||||
accounts.add(account);
|
||||
}
|
||||
|
||||
public void deleteAccount(Account account) {
|
||||
Account base = null;
|
||||
for(Account a : accounts) {
|
||||
if(a instanceof BankAccount) {
|
||||
base = a;
|
||||
}
|
||||
}
|
||||
if(base == null) {
|
||||
throw new IllegalArgumentException("No bank accounts found");
|
||||
}
|
||||
base.TransferTransaction(account.getBalance(), "Account closed", account.getId(), base.getId());
|
||||
accounts.remove(account);
|
||||
}
|
||||
}
|
||||
39
src/main/java/me/zacharias/bank/transaction/Transaction.java
Normal file
39
src/main/java/me/zacharias/bank/transaction/Transaction.java
Normal file
@@ -0,0 +1,39 @@
|
||||
package me.zacharias.bank.transaction;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class Transaction {
|
||||
double amount;
|
||||
String description;
|
||||
UUID originator;
|
||||
UUID destination;
|
||||
TransactionType type;
|
||||
|
||||
public Transaction(double amount, String description, UUID destination, UUID originator, TransactionType type) {
|
||||
this.amount = amount;
|
||||
this.description = description;
|
||||
this.originator = originator;
|
||||
this.destination = destination;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public double getAmount() {
|
||||
return amount;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public UUID getOriginator() {
|
||||
return originator;
|
||||
}
|
||||
|
||||
public UUID getDestination() {
|
||||
return destination;
|
||||
}
|
||||
|
||||
public TransactionType getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package me.zacharias.bank.transaction;
|
||||
|
||||
public enum TransactionType {
|
||||
WITHDRAW, DEPOSIT, TRANSFER
|
||||
}
|
||||
Reference in New Issue
Block a user