From d0385218c6252eafc8bc4c93d08c12ecb05dd5b5 Mon Sep 17 00:00:00 2001 From: Liu Zengzeng Date: Mon, 17 Jul 2017 11:51:30 +0800 Subject: [PATCH 1/2] atm homework --- .../coderising/ood/atmSimulation/atm/Atm.java | 166 ++++++++++++++++++ .../ood/atmSimulation/atm/Main.java | 97 ++++++++++ .../atmSimulation/atm/console/Display.java | 13 ++ .../atmSimulation/atm/console/KeyBoard.java | 26 +++ .../atm/console/SuperKeypad.java | 45 +++++ .../ood/atmSimulation/atm/print/Printer.java | 17 ++ .../atmSimulation/atm/proxy/BankProxy.java | 29 +++ .../ood/atmSimulation/atm/proxy/Network.java | 20 +++ .../atmSimulation/atm/reader/CardReader.java | 18 ++ .../atmSimulation/atm/slot/CashDepensier.java | 16 ++ .../atmSimulation/atm/slot/DepositSlot.java | 12 ++ .../ood/atmSimulation/atm/slot/MoneySlot.java | 28 +++ .../atm/transaction/DepositTx.java | 43 +++++ .../atm/transaction/QueryBalanceTx.java | 42 +++++ .../atm/transaction/TransferTx.java | 44 +++++ .../atm/transaction/Trasaction.java | 17 ++ .../atm/transaction/WithdrawTx.java | 42 +++++ .../ood/atmSimulation/bank/Bank.java | 97 ++++++++++ .../atmSimulation/bank/account/Account.java | 49 ++++++ .../atmSimulation/bank/proxy/ATMProxy.java | 34 ++++ .../bank/transaction/DepositTx.java | 38 ++++ .../bank/transaction/QueryBalanceTx.java | 38 ++++ .../bank/transaction/TransferTx.java | 42 +++++ .../bank/transaction/Trasaction.java | 16 ++ .../bank/transaction/WithdrawTx.java | 39 ++++ .../ood/atmSimulation/card/Card.java | 17 ++ .../serialization/JsonConvert.java | 19 ++ .../serialization/NetPackage.java | 76 ++++++++ 28 files changed, 1140 insertions(+) create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Atm.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Main.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/Display.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/KeyBoard.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/SuperKeypad.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/print/Printer.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/BankProxy.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/Network.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/reader/CardReader.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/CashDepensier.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/DepositSlot.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/MoneySlot.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/DepositTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/QueryBalanceTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/TransferTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/Trasaction.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/WithdrawTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/Bank.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/account/Account.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/proxy/ATMProxy.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/DepositTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/QueryBalanceTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/TransferTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/Trasaction.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/WithdrawTx.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/card/Card.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/JsonConvert.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/NetPackage.java diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Atm.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Atm.java new file mode 100644 index 0000000000..9728b39bfb --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Atm.java @@ -0,0 +1,166 @@ +package com.coderising.ood.atmSimulation.atm; + +import com.coderising.ood.atmSimulation.atm.console.SuperKeypad; +import com.coderising.ood.atmSimulation.atm.print.Printer; +import com.coderising.ood.atmSimulation.atm.proxy.BankProxy; +import com.coderising.ood.atmSimulation.atm.reader.CardReader; +import com.coderising.ood.atmSimulation.atm.slot.CashDepensier; +import com.coderising.ood.atmSimulation.atm.slot.DepositSlot; +import com.coderising.ood.atmSimulation.atm.transaction.*; +import com.coderising.ood.atmSimulation.card.Card; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class Atm { + //存钱口 + private DepositSlot depositSlot; + //取钱口 + private CashDepensier cashDepensier; + //超级键盘 + private SuperKeypad superKeypad; + //读卡器 + private CardReader cardReader; + //bankProxy + private BankProxy bankProxy; + //打印器 + private Printer printer; + + public Atm(DepositSlot depositSlot, CashDepensier cashDepensier, + SuperKeypad superKeypad, CardReader cardReader, BankProxy bankProxy, Printer printer) { + this.depositSlot = depositSlot; + this.cashDepensier = cashDepensier; + this.superKeypad = superKeypad; + this.cardReader = cardReader; + this.bankProxy = bankProxy; + this.printer = printer; + } + + //账号|密码 + private String account; + private String password; + + private List list = new ArrayList<>(); + + public String getAccount() { + return account; + } + + public String getPassword() { + return password; + } + + public boolean hasEnoughMoney(int amount) { + return cashDepensier.hasEnoughMoney(amount); + } + + public boolean dipenseMoney(int amount) { + return cashDepensier.dispenseMoney(amount); + } + + public int retriveMoney() { + Random random = new Random(); + int money = random.nextInt(10000); + return depositSlot.retriveMoney(money); + } + + //插卡 + public void insertCard(Card card) { + account = cardReader.readCard(card); + } + + //输入密码 + public void writePassword() { + int count = 1; + while (count <= 3) { + count++; + password = superKeypad.inputPassword(); + if (bankProxy.verify(account, password)) { + return; + } + } + superKeypad.display("吞卡啦,到前台吧~"); + throw new RuntimeException("atm eat card"); + } + + //查询 + public void query() { + superKeypad.display("查询"); + QueryBalanceTx tx = new QueryBalanceTx(); + if (tx.preProcess(this)) { + String response = bankProxy.process(tx, this); + tx.setAmount(Integer.valueOf(response)); + superKeypad.display("查询操作余额为:" + response); + } + list.add(tx); + tx.postProcess(this); + } + + //转账 + public void transfer() { + superKeypad.display("转账"); + String toCard = superKeypad.inputCardNumber(); + int amount = superKeypad.inputAmount(); + TransferTx tx = new TransferTx(toCard, amount); + if (tx.preProcess(this)) { + String response = bankProxy.process(tx, this); + superKeypad.display("转账后,余额为:" + response); + } + list.add(tx); + tx.postProcess(this); + } + + //取款 + public void dependesier() { + superKeypad.display("取款"); + int amount = superKeypad.inputAmount(); + WithdrawTx tx = new WithdrawTx(amount); + if (tx.preProcess(this)) { + String response = bankProxy.process(tx, this); + superKeypad.display("取款后,余额为:" + response); + } + list.add(tx); + tx.postProcess(this); + } + + //存钱 + public void deposit() { + superKeypad.display("存款"); + DepositTx tx = new DepositTx(retriveMoney()); + if (tx.preProcess(this)) { + String response = bankProxy.process(tx, this); + superKeypad.display("存钱后,余额为:" + response); + } + list.add(tx); + tx.postProcess(this); + } + + //打印 + public void print() { + superKeypad.display("------打印操作-------"); + printer.print(list); + superKeypad.display("------打印完毕-------"); + } + + //退卡 + public void ejectCard(Card card) { + cardReader.ejectCard(card); + superKeypad.display("退卡成功"); + } + + //引导 + public void showGuide() { + superKeypad.display("请选择操作:"); + superKeypad.display("1:查询"); + superKeypad.display("2:存钱"); + superKeypad.display("3:取款"); + superKeypad.display("4:转账"); + superKeypad.display("5:退卡"); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Main.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Main.java new file mode 100644 index 0000000000..caf9ef2869 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/Main.java @@ -0,0 +1,97 @@ +package com.coderising.ood.atmSimulation.atm; + +import com.coderising.ood.atmSimulation.atm.console.Display; +import com.coderising.ood.atmSimulation.atm.console.KeyBoard; +import com.coderising.ood.atmSimulation.atm.console.SuperKeypad; +import com.coderising.ood.atmSimulation.atm.print.Printer; +import com.coderising.ood.atmSimulation.atm.proxy.BankProxy; +import com.coderising.ood.atmSimulation.atm.proxy.Network; +import com.coderising.ood.atmSimulation.atm.reader.CardReader; +import com.coderising.ood.atmSimulation.atm.slot.CashDepensier; +import com.coderising.ood.atmSimulation.atm.slot.DepositSlot; +import com.coderising.ood.atmSimulation.atm.slot.MoneySlot; +import com.coderising.ood.atmSimulation.bank.Bank; +import com.coderising.ood.atmSimulation.bank.account.Account; +import com.coderising.ood.atmSimulation.bank.proxy.ATMProxy; +import com.coderising.ood.atmSimulation.card.Card; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +/** + * @author nvarchar + * date 2017/7/16 + */ +public class Main { + + public static void main(String[] args) { + //mock bank + List accounts = new ArrayList<>(); + Account account = new Account("55005500", "123456", 10000); + accounts.add(account); + Bank bank = new Bank(accounts); + + //mock atmproxy + ATMProxy atmproxy = new ATMProxy(bank); + + //mock network + Network network = new Network(atmproxy); + + //mock bankProxy + BankProxy bankProxy = new BankProxy(network); + + //mock atm + DepositSlot depositSlot = new DepositSlot(); + CashDepensier cashDepensier = new CashDepensier(); + + Display display = new Display(); + KeyBoard keyBoard = new KeyBoard(); + SuperKeypad superKeypad = new SuperKeypad(display, keyBoard); + CardReader cardReader = new CardReader(); + Printer printer = new Printer(); + Atm atm = new Atm(depositSlot, cashDepensier, superKeypad, cardReader, bankProxy, printer); + + MoneySlot.setMoney(1000000); + + //mock card + Card card = new Card("55005500"); + + + atm.insertCard(card); + atm.writePassword(); + + atm.showGuide(); + + Scanner sca = new Scanner(System.in); + + boolean exit = false; + while (!exit) { + int ch = sca.nextInt(); + switch (ch) { + case 1: + atm.query(); + break; + case 2: + atm.deposit(); + break; + case 3: + atm.dependesier(); + break; + case 4: + atm.transfer(); + break; + case 5: + atm.ejectCard(card); + exit = true; + break; + default: + exit = true; + break; + } + } + + atm.print(); + + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/Display.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/Display.java new file mode 100644 index 0000000000..bae9135b4f --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/Display.java @@ -0,0 +1,13 @@ +package com.coderising.ood.atmSimulation.atm.console; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class Display { + + public void showMessage(String message) { + System.out.println(message); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/KeyBoard.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/KeyBoard.java new file mode 100644 index 0000000000..8cbfa6fd71 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/KeyBoard.java @@ -0,0 +1,26 @@ +package com.coderising.ood.atmSimulation.atm.console; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class KeyBoard { + + public String input() { + + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + String input = ""; + + try { + input = in.readLine(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + return input; + } + +} \ No newline at end of file diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/SuperKeypad.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/SuperKeypad.java new file mode 100644 index 0000000000..97256872da --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/console/SuperKeypad.java @@ -0,0 +1,45 @@ +package com.coderising.ood.atmSimulation.atm.console; + +import com.coderising.ood.atmSimulation.atm.transaction.Trasaction; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class SuperKeypad { + private Display display; + private KeyBoard keyBoard; + + public SuperKeypad() { + } + + public SuperKeypad(Display display, KeyBoard keyBoard) { + this.display = display; + this.keyBoard = keyBoard; + } + + public void display(String message) { + display.showMessage(message); + } + + public String inputPassword() { + display("input your password: "); + String password = keyBoard.input(); + display(password.replaceAll("(?s).", "*")); + return password; + } + + public String inputCardNumber() { + display("input your transfer card number"); + return keyBoard.input(); + } + + public int inputAmount() { + display("input your amount"); + return Integer.valueOf(keyBoard.input()); + } + + public Trasaction getTrasaction() { + return null; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/print/Printer.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/print/Printer.java new file mode 100644 index 0000000000..41d492cc77 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/print/Printer.java @@ -0,0 +1,17 @@ +package com.coderising.ood.atmSimulation.atm.print; + +import com.coderising.ood.atmSimulation.atm.transaction.Trasaction; + +import java.util.List; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class Printer { + public void print(List list) { + for (Trasaction trasaction : list) { + System.out.println(trasaction.toPrint()); + } + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/BankProxy.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/BankProxy.java new file mode 100644 index 0000000000..4f227e8959 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/BankProxy.java @@ -0,0 +1,29 @@ +package com.coderising.ood.atmSimulation.atm.proxy; + +import com.coderising.ood.atmSimulation.atm.Atm; +import com.coderising.ood.atmSimulation.atm.transaction.Trasaction; +import com.coderising.ood.atmSimulation.serialization.JsonConvert; +import com.coderising.ood.atmSimulation.serialization.NetPackage; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class BankProxy { + private Network network; + + public BankProxy(Network network) { + this.network = network; + } + + public String process(Trasaction tx, Atm atm) { + String response = network.sendData(tx.toNetWorkPackage(atm)); + return response; + } + + public boolean verify(String account, String password) { + NetPackage netPackage = new NetPackage(account, password); + String response = network.sendData(JsonConvert.encode(netPackage)); + return "true".equals(response); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/Network.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/Network.java new file mode 100644 index 0000000000..a16917db06 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/proxy/Network.java @@ -0,0 +1,20 @@ +package com.coderising.ood.atmSimulation.atm.proxy; + +import com.coderising.ood.atmSimulation.bank.proxy.ATMProxy; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class Network { + + private ATMProxy atmProxy; + + public Network(ATMProxy atmProxy) { + this.atmProxy = atmProxy; + } + + public String sendData(String data) { + return atmProxy.getData(data); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/reader/CardReader.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/reader/CardReader.java new file mode 100644 index 0000000000..a347337548 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/reader/CardReader.java @@ -0,0 +1,18 @@ +package com.coderising.ood.atmSimulation.atm.reader; + +import com.coderising.ood.atmSimulation.card.Card; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class CardReader { + + public String readCard(Card card) { + return card.getAccount(); + } + + public void ejectCard(Card card){ + System.out.println("退卡"); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/CashDepensier.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/CashDepensier.java new file mode 100644 index 0000000000..256d4bb911 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/CashDepensier.java @@ -0,0 +1,16 @@ +package com.coderising.ood.atmSimulation.atm.slot; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class CashDepensier { + public boolean hasEnoughMoney(int amount) { + return MoneySlot.getMoney() - amount >= 0; + } + + public boolean dispenseMoney(int amount) { + MoneySlot.minusMoney(amount); + return true; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/DepositSlot.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/DepositSlot.java new file mode 100644 index 0000000000..2841e9f505 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/DepositSlot.java @@ -0,0 +1,12 @@ +package com.coderising.ood.atmSimulation.atm.slot; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class DepositSlot { + public int retriveMoney(int amount) { + //mock put money + return amount; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/MoneySlot.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/MoneySlot.java new file mode 100644 index 0000000000..171f9be15a --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/slot/MoneySlot.java @@ -0,0 +1,28 @@ +package com.coderising.ood.atmSimulation.atm.slot; + +/** + * manage atm money + * + * @author nvarchar + * date 2017/7/15 + */ +public class MoneySlot { + + private static long money; + + public static long getMoney() { + return money; + } + + public static void setMoney(long amount) { + MoneySlot.money = amount; + } + + public static void addMoney(long amount) { + money += amount; + } + + public static void minusMoney(long amount) { + money -= amount; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/DepositTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/DepositTx.java new file mode 100644 index 0000000000..770fe603ea --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/DepositTx.java @@ -0,0 +1,43 @@ +package com.coderising.ood.atmSimulation.atm.transaction; + +import com.coderising.ood.atmSimulation.atm.Atm; +import com.coderising.ood.atmSimulation.serialization.JsonConvert; +import com.coderising.ood.atmSimulation.serialization.NetPackage; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class DepositTx implements Trasaction { + + private int amount; + + public int getAmount() { + return amount; + } + + public DepositTx(int amount) { + this.amount = amount; + } + + @Override + public String toPrint() { + return "存款" + amount; + } + + @Override + public String toNetWorkPackage(Atm atm) { + NetPackage nt = new NetPackage(NetPackage.Type.DEPOSIT, atm, amount, null); + return JsonConvert.encode(nt); + } + + @Override + public boolean preProcess(Atm atm) { + return true; + } + + @Override + public boolean postProcess(Atm atm) { + return false; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/QueryBalanceTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/QueryBalanceTx.java new file mode 100644 index 0000000000..f0b8a54fb7 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/QueryBalanceTx.java @@ -0,0 +1,42 @@ +package com.coderising.ood.atmSimulation.atm.transaction; + +import com.coderising.ood.atmSimulation.atm.Atm; +import com.coderising.ood.atmSimulation.serialization.JsonConvert; +import com.coderising.ood.atmSimulation.serialization.NetPackage; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class QueryBalanceTx implements Trasaction { + + private int amount; + + public QueryBalanceTx() { + } + + public void setAmount(int amount) { + this.amount = amount; + } + + @Override + public String toPrint() { + return "查询账户,余额为:" + amount; + } + + @Override + public String toNetWorkPackage(Atm atm) { + NetPackage nt = new NetPackage(NetPackage.Type.QUERY, atm, null, null); + return JsonConvert.encode(nt); + } + + @Override + public boolean preProcess(Atm atm) { + return true; + } + + @Override + public boolean postProcess(Atm atm) { + return true; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/TransferTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/TransferTx.java new file mode 100644 index 0000000000..c3cb593ccd --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/TransferTx.java @@ -0,0 +1,44 @@ +package com.coderising.ood.atmSimulation.atm.transaction; + +import com.coderising.ood.atmSimulation.atm.Atm; +import com.coderising.ood.atmSimulation.serialization.JsonConvert; +import com.coderising.ood.atmSimulation.serialization.NetPackage; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class TransferTx implements Trasaction { + private String toCard; + private int amount; + + public TransferTx(String toCard, int amount) { + this.toCard = toCard; + this.amount = amount; + } + + public int getAmount() { + return amount; + } + + @Override + public String toPrint() { + return "转账" + amount + "元到" + toCard; + } + + @Override + public String toNetWorkPackage(Atm atm) { + NetPackage nt = new NetPackage(NetPackage.Type.TRANSFER, atm, amount, toCard); + return JsonConvert.encode(nt); + } + + @Override + public boolean preProcess(Atm atm) { + return atm.hasEnoughMoney(getAmount()); + } + + @Override + public boolean postProcess(Atm atm) { + return true; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/Trasaction.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/Trasaction.java new file mode 100644 index 0000000000..c3c58978ce --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/Trasaction.java @@ -0,0 +1,17 @@ +package com.coderising.ood.atmSimulation.atm.transaction; + +import com.coderising.ood.atmSimulation.atm.Atm; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public interface Trasaction { + public String toNetWorkPackage(Atm atm); + + public boolean preProcess(Atm atm); + + public boolean postProcess(Atm atm); + + public String toPrint(); +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/WithdrawTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/WithdrawTx.java new file mode 100644 index 0000000000..c783326e02 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/atm/transaction/WithdrawTx.java @@ -0,0 +1,42 @@ +package com.coderising.ood.atmSimulation.atm.transaction; + +import com.coderising.ood.atmSimulation.atm.Atm; +import com.coderising.ood.atmSimulation.serialization.JsonConvert; +import com.coderising.ood.atmSimulation.serialization.NetPackage; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class WithdrawTx implements Trasaction { + private int amount; + + public WithdrawTx(int amount) { + this.amount = amount; + } + + public int getAmount() { + return amount; + } + + @Override + public String toPrint() { + return "取款" + amount; + } + + @Override + public String toNetWorkPackage(Atm atm) { + NetPackage nt = new NetPackage(NetPackage.Type.WITHDRAW, atm, amount, null); + return JsonConvert.encode(nt); + } + + @Override + public boolean preProcess(Atm atm) { + return atm.hasEnoughMoney(getAmount()); + } + + @Override + public boolean postProcess(Atm atm) { + return atm.dipenseMoney(getAmount()); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/Bank.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/Bank.java new file mode 100644 index 0000000000..02550318bb --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/Bank.java @@ -0,0 +1,97 @@ +package com.coderising.ood.atmSimulation.bank; + +import com.coderising.ood.atmSimulation.bank.account.Account; +import com.coderising.ood.atmSimulation.bank.transaction.DepositTx; +import com.coderising.ood.atmSimulation.bank.transaction.QueryBalanceTx; +import com.coderising.ood.atmSimulation.bank.transaction.TransferTx; +import com.coderising.ood.atmSimulation.bank.transaction.WithdrawTx; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class Bank { + private List accounts = new ArrayList<>(); + + public Bank(List accounts) { + this.accounts = accounts; + } + + //查询 + public String query(String cardNumber, String password) { + QueryBalanceTx tx = new QueryBalanceTx(cardNumber, password); + if (tx.preProcess(this)) { + return tx.process(this); + } + tx.postProcess(this); + return null; + } + + //转账 + public String transfer(String cardNumber, String password, + String toCard, int amount) { + TransferTx tx = new TransferTx(cardNumber, password, + toCard, amount); + + if (tx.preProcess(this)) { + return tx.process(this); + } + tx.postProcess(this); + return null; + } + + //取款 + public String withDraw(String cardNumber, String password, + int amount) { + WithdrawTx tx = new WithdrawTx(cardNumber, password, amount); + + if (tx.preProcess(this)) { + return tx.process(this); + } + tx.postProcess(this); + return null; + } + + //存钱 + public String deposit(String cardNumber, String password, + int amount) { + DepositTx tx = new DepositTx(cardNumber, password, amount); + + if (tx.preProcess(this)) { + return tx.process(this); + } + tx.postProcess(this); + return null; + } + + //验证 + public boolean verify(String account, String password) { + return isExist(account, password); + } + + //查询是否 + private boolean isExist(String cardNumber, String password) { + for (Account account : accounts) { + if (cardNumber.equals(account.getCardNumber()) + && password.equals(account.getPassword())) { + return true; + } + } + return false; + } + + //获取账户 + public Account getAccount(String cardNumber, String password) { + for (Account account : accounts) { + if (cardNumber.equals(account.getCardNumber()) + && password.equals(account.getPassword())) { + return account; + } + } + return null; + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/account/Account.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/account/Account.java new file mode 100644 index 0000000000..3bbf50f600 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/account/Account.java @@ -0,0 +1,49 @@ +package com.coderising.ood.atmSimulation.bank.account; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class Account { + private String cardNumber; + private int money; + private String password; + + public Account() { + } + + public Account(String cardNumber, String password, int money) { + this.cardNumber = cardNumber; + this.money = money; + this.password = password; + } + + public String getCardNumber() { + return cardNumber; + } + + public int getMoney() { + return money; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public boolean hasEnoughMoney(int amount) { + return money >= amount; + } + + public boolean dipenseMoney(int amount) { + money -= amount; + return true; + } + + public void retriveMoney(int amount) { + money += amount; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/proxy/ATMProxy.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/proxy/ATMProxy.java new file mode 100644 index 0000000000..a4083ff454 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/proxy/ATMProxy.java @@ -0,0 +1,34 @@ +package com.coderising.ood.atmSimulation.bank.proxy; + +import com.coderising.ood.atmSimulation.bank.Bank; +import com.coderising.ood.atmSimulation.serialization.JsonConvert; +import com.coderising.ood.atmSimulation.serialization.NetPackage; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class ATMProxy { + private Bank bank; + + public ATMProxy(Bank bank) { + this.bank = bank; + } + + public String getData(String data) { + NetPackage np = JsonConvert.decode(data); + switch (np.getType()) { + case QUERY: + return bank.query(np.getAccount(), np.getPassword()); + case Verify: + return String.valueOf(bank.verify(np.getAccount(), np.getPassword())); + case DEPOSIT: + return bank.deposit(np.getAccount(), np.getPassword(), np.getAmount()); + case TRANSFER: + return bank.transfer(np.getAccount(), np.getPassword(), np.getToCard(), np.getAmount()); + case WITHDRAW: + return bank.withDraw(np.getAccount(), np.getPassword(), np.getAmount()); + } + return "no such method"; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/DepositTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/DepositTx.java new file mode 100644 index 0000000000..636df1e60d --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/DepositTx.java @@ -0,0 +1,38 @@ +package com.coderising.ood.atmSimulation.bank.transaction; + +import com.coderising.ood.atmSimulation.bank.Bank; +import com.coderising.ood.atmSimulation.bank.account.Account; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class DepositTx implements Trasaction { + + private String account; + private String password; + private int amount; + + public DepositTx(String account, String password, int amount) { + this.account = account; + this.password = password; + this.amount = amount; + } + + @Override + public boolean preProcess(Bank bank) { + return true; + } + + @Override + public boolean postProcess(Bank bank) { + return true; + } + + @Override + public String process(Bank bank) { + Account queryAccount = bank.getAccount(account, password); + queryAccount.retriveMoney(amount); + return String.valueOf(queryAccount.getMoney()); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/QueryBalanceTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/QueryBalanceTx.java new file mode 100644 index 0000000000..c14bac18e0 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/QueryBalanceTx.java @@ -0,0 +1,38 @@ +package com.coderising.ood.atmSimulation.bank.transaction; + +import com.coderising.ood.atmSimulation.bank.Bank; +import com.coderising.ood.atmSimulation.bank.account.Account; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class QueryBalanceTx implements Trasaction { + + private String account; + private String password; + + public QueryBalanceTx(String account, String password) { + this.account = account; + this.password = password; + } + + @Override + public boolean preProcess(Bank bank) { + return true; + } + + @Override + public boolean postProcess(Bank bank) { + return false; + } + + @Override + public String process(Bank bank) { + Account queryAccount = bank.getAccount(account, password); + if (account != null) { + return String.valueOf(queryAccount.getMoney()); + } + return null; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/TransferTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/TransferTx.java new file mode 100644 index 0000000000..91d0b82ed8 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/TransferTx.java @@ -0,0 +1,42 @@ +package com.coderising.ood.atmSimulation.bank.transaction; + +import com.coderising.ood.atmSimulation.bank.Bank; +import com.coderising.ood.atmSimulation.bank.account.Account; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class TransferTx implements Trasaction { + + private String account; + private String password; + private String toCard; + private int amount; + + public TransferTx(String account, String password, String toCard, int amount) { + this.account = account; + this.password = password; + this.toCard = toCard; + this.amount = amount; + } + + @Override + public boolean preProcess(Bank bank) { + Account queryAccount = bank.getAccount(account, password); + return queryAccount.hasEnoughMoney(amount); + } + + @Override + public boolean postProcess(Bank bank) { + return true; + } + + @Override + public String process(Bank bank) { + Account queryAccount = bank.getAccount(account, password); + queryAccount.dipenseMoney(amount); + //mock add money to toCard + return String.valueOf(queryAccount.getMoney()); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/Trasaction.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/Trasaction.java new file mode 100644 index 0000000000..cd09230fd3 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/Trasaction.java @@ -0,0 +1,16 @@ +package com.coderising.ood.atmSimulation.bank.transaction; + +import com.coderising.ood.atmSimulation.bank.Bank; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public interface Trasaction { + + public boolean preProcess(Bank bank); + + public boolean postProcess(Bank bank); + + public String process(Bank bank); +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/WithdrawTx.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/WithdrawTx.java new file mode 100644 index 0000000000..5ff8efec7a --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/bank/transaction/WithdrawTx.java @@ -0,0 +1,39 @@ +package com.coderising.ood.atmSimulation.bank.transaction; + +import com.coderising.ood.atmSimulation.bank.Bank; +import com.coderising.ood.atmSimulation.bank.account.Account; + +/** + * @author nvarchar + * date 2017/7/14 + */ +public class WithdrawTx implements Trasaction{ + + private String account; + private String password; + private int amount; + + public WithdrawTx(String account, String password, int amount) { + this.account = account; + this.password = password; + this.amount = amount; + } + + @Override + public boolean preProcess(Bank bank) { + Account queryAccount = bank.getAccount(account, password); + return queryAccount.hasEnoughMoney(amount); + } + + @Override + public boolean postProcess(Bank bank) { + return true; + } + + @Override + public String process(Bank bank) { + Account queryAccount = bank.getAccount(account, password); + queryAccount.dipenseMoney(amount); + return String.valueOf(queryAccount.getMoney()); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/card/Card.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/card/Card.java new file mode 100644 index 0000000000..e1103c02ef --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/card/Card.java @@ -0,0 +1,17 @@ +package com.coderising.ood.atmSimulation.card; + +/** + * @author nvarchar + * date 2017/7/15 + */ +public class Card { + private String account; + + public Card(String account) { + this.account = account; + } + + public String getAccount() { + return account; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/JsonConvert.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/JsonConvert.java new file mode 100644 index 0000000000..be1934944b --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/JsonConvert.java @@ -0,0 +1,19 @@ +package com.coderising.ood.atmSimulation.serialization; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +/** + * @author nvarchar + * date 2017/7/16 + */ +public class JsonConvert { + + public static String encode(NetPackage np) { + return JSON.toJSONString(np); + } + + public static NetPackage decode(String code) { + return JSONObject.parseObject(code, NetPackage.class); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/NetPackage.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/NetPackage.java new file mode 100644 index 0000000000..99246a3d41 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderising/ood/atmSimulation/serialization/NetPackage.java @@ -0,0 +1,76 @@ +package com.coderising.ood.atmSimulation.serialization; + +import com.coderising.ood.atmSimulation.atm.Atm; + +/** + * @author nvarchar + * date 2017/7/16 + */ +public class NetPackage { + + public enum Type {Verify, QUERY, TRANSFER, DEPOSIT, WITHDRAW} + + private String account; + private String password; + private Integer amount; + private Type type; + private String toCard; + + public void setAccount(String account) { + this.account = account; + } + + public void setPassword(String password) { + this.password = password; + } + + public void setAmount(Integer amount) { + this.amount = amount; + } + + public void setType(Type type) { + this.type = type; + } + + public void setToCard(String toCard) { + this.toCard = toCard; + } + + public String getAccount() { + return account; + } + + public String getPassword() { + return password; + } + + public Integer getAmount() { + return amount; + } + + public Type getType() { + return type; + } + + public String getToCard() { + return toCard; + } + + public NetPackage(Type type, Atm atm, Integer amount, String toCard) { + this.account = atm.getAccount(); + this.password = atm.getPassword(); + this.amount = amount; + this.type = type; + this.toCard = toCard; + } + + public NetPackage(String account, String password) { + this.type = Type.Verify; + this.account = account; + this.password = password; + } + + public NetPackage() { + } +} + From bc2ecb5b57152868c6462082614cf4d17a8e6879 Mon Sep 17 00:00:00 2001 From: Liu Zengzeng Date: Fri, 21 Jul 2017 20:57:14 +0800 Subject: [PATCH 2/2] tagBuilder and singleton --- .../com/coderings/dp/builder/TagBuilder.java | 49 +++++++++++ .../coderings/dp/builder/TagBuilderTest.java | 40 +++++++++ .../com/coderings/dp/builder/TagNode.java | 83 +++++++++++++++++++ .../coderings/dp/singleton/jdk_singleton.md | 38 +++++++++ 4 files changed, 210 insertions(+) create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilder.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilderTest.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagNode.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/singleton/jdk_singleton.md diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilder.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilder.java new file mode 100644 index 0000000000..becc6a3d37 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilder.java @@ -0,0 +1,49 @@ +package com.coderings.dp.builder; + +public class TagBuilder { + + final TagNode rootNode; + + TagNode iteratorNode; + + TagNode prevIteratorNode; + + public TagBuilder(String rootTagName) { + rootNode = new TagNode(rootTagName); + iteratorNode = rootNode; + prevIteratorNode = rootNode; + } + + public TagBuilder addChild(String childTagName) { + TagNode tagNode = new TagNode(childTagName); + iteratorNode.add(tagNode); + + prevIteratorNode = iteratorNode; + iteratorNode = tagNode; + + return this; + } + + public TagBuilder addSibling(String siblingTagName) { + TagNode tagNode = new TagNode(siblingTagName); + prevIteratorNode.add(tagNode); + + iteratorNode = tagNode; + + return this; + } + + public TagBuilder setAttribute(String name, String value) { + iteratorNode.setAttribute(name, value); + return this; + } + + public TagBuilder setText(String value) { + iteratorNode.setValue(value); + return this; + } + + public String toXML() { + return rootNode.toXML(); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilderTest.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilderTest.java new file mode 100644 index 0000000000..2d6dae918b --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagBuilderTest.java @@ -0,0 +1,40 @@ +package com.coderings.dp.builder; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class TagBuilderTest { + + @Before + public void setUp() throws Exception { + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testToXML() { + + TagBuilder builder = new TagBuilder("order"); + + String xml = builder.addChild("line-items") + .addChild("line-item").setAttribute("pid", "P3677").setAttribute("qty", "3") + .addSibling("line-item").setAttribute("pid", "P9877").setAttribute("qty", "10") + .toXML(); + + String expected = "" + + "" + + "" + + "" + + "" + + ""; + + System.out.println(xml); + assertEquals(expected, xml); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagNode.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagNode.java new file mode 100644 index 0000000000..28fb0f54b8 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/builder/TagNode.java @@ -0,0 +1,83 @@ +package com.coderings.dp.builder; + +import java.util.ArrayList; +import java.util.List; + +public class TagNode { + private String tagName; + private String tagValue; + private List children = new ArrayList<>(); + private List attributes = new ArrayList<>(); + + public TagNode(String name){ + this.tagName = name; + } + public void add(TagNode child){ + this.children.add(child); + } + public void setAttribute(String name, String value) { + Attribute attr = findAttribute(name); + if(attr != null){ + attr.value = value; + return; + } + + attributes.add(new Attribute(name,value)); + } + private Attribute findAttribute(String name){ + for(Attribute attr : attributes){ + if(attr.name.equals(name)){ + return attr; + } + } + return null; + } + public void setValue(String value) { + this.tagValue = value; + + } + public String getTagName() { + return tagName; + } + public List getChildren() { + return children; + } + + private static class Attribute{ + public Attribute(String name, String value) { + this.name = name; + this.value = value; + } + String name; + String value; + + } + public String toXML(){ + return toXML(this); + } + private String toXML(TagNode node){ + StringBuilder buffer = new StringBuilder(); + buffer.append("<").append(node.tagName); + if(node.attributes.size()> 0){ + for(int i=0;i"); + return buffer.toString(); + } + buffer.append(">"); + for(TagNode childNode : node.children){ + buffer.append(toXML(childNode)); + } + buffer.append(""); + + + return buffer.toString(); + } + private String toXML(Attribute attr){ + return attr.name+"=\""+attr.value + "\""; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/singleton/jdk_singleton.md b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/singleton/jdk_singleton.md new file mode 100644 index 0000000000..69df72e73d --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/singleton/jdk_singleton.md @@ -0,0 +1,38 @@ +#Singleton in JDK + +## java.lang.Runtime + + private static Runtime currentRuntime = new Runtime(); + + public static Runtime getRuntime() { + return currentRuntime; + } + +## java.awt.Desktop + + private DesktopPeer peer; + + private Desktop() { + peer = Toolkit.getDefaultToolkit().createDesktopPeer(this); + } + + + public static synchronized Desktop getDesktop(){ + Desktop desktop = (Desktop)context.get(Desktop.class); + + if (desktop == null) { + desktop = new Desktop(); + context.put(Desktop.class, desktop); + } + + return desktop; + } + +## java.lang.System + + private static volatile SecurityManager security = null; + + public static SecurityManager getSecurityManager() { + return security; + } + \ No newline at end of file