From 9a8d38a0c7ff4e4ac558000bbb508cc437530e7b Mon Sep 17 00:00:00 2001 From: Togepy95 Date: Wed, 19 Apr 2017 15:28:54 +0200 Subject: [PATCH] Person Contracts and Default Values Added Interace for Persons and Contracts. Used methods with default values for changing Estates or EstateAgents. --- 02/src/de/dis2017/FormUtil.java | 12 ++ 02/src/de/dis2017/Main.java | 159 ++++++++++++++++--- 02/src/de/dis2017/data/Contract.java | 39 +++++ 02/src/de/dis2017/data/Person.java | 28 ++++ 02/src/de/dis2017/data/PurchaseContract.java | 34 ++++ 02/src/de/dis2017/data/TenancyContract.java | 45 ++++++ 02/src/de/dis2017/data/db/Type.java | 3 +- 7 files changed, 294 insertions(+), 26 deletions(-) create mode 100644 02/src/de/dis2017/data/Contract.java create mode 100644 02/src/de/dis2017/data/Person.java create mode 100644 02/src/de/dis2017/data/PurchaseContract.java create mode 100644 02/src/de/dis2017/data/TenancyContract.java diff --git a/02/src/de/dis2017/FormUtil.java b/02/src/de/dis2017/FormUtil.java index 08868c6..80fa04a 100644 --- a/02/src/de/dis2017/FormUtil.java +++ b/02/src/de/dis2017/FormUtil.java @@ -51,6 +51,18 @@ class FormUtil { password = String.valueOf(System.console().readPassword()); return password; } + /** + * Reads a password from the console. + * + * @return the entered password + */ + static String readPassword(String oldPassword) { + String password; + System.out.print("Password: "); + password = String.valueOf(System.console().readPassword()); + if(password.equals(""))return oldPassword; + return password; + } /** * Reads an integer from the console. diff --git a/02/src/de/dis2017/Main.java b/02/src/de/dis2017/Main.java index 3b77599..3d9319e 100644 --- a/02/src/de/dis2017/Main.java +++ b/02/src/de/dis2017/Main.java @@ -1,9 +1,13 @@ package de.dis2017; import de.dis2017.data.Apartment; +import de.dis2017.data.Contract; import de.dis2017.data.Estate; import de.dis2017.data.EstateAgent; import de.dis2017.data.House; +import de.dis2017.data.Person; +import de.dis2017.data.PurchaseContract; +import de.dis2017.data.TenancyContract; import de.dis2017.data.db.ORM; import de.dis2017.data.db.Type; @@ -30,12 +34,14 @@ public class Main { // menu options final int MENU_AGENT = 0; final int MENU_ESTATES = 1; - final int QUIT = 2; + final int MENU_CONTRACTS = 2; + final int QUIT = 3; // create menu Menu mainMenu = new Menu("Main menu"); mainMenu.addEntry("EstateAgent management", MENU_AGENT); mainMenu.addEntry("Estate management", MENU_ESTATES); + mainMenu.addEntry("Contract management", MENU_CONTRACTS); mainMenu.addEntry("Quit", QUIT); // process input @@ -59,13 +65,122 @@ public class Main { System.out.println("The username or password was wrong."); } break; + case MENU_CONTRACTS: + showContractMenu(); + break; case QUIT: return; } } } - /** + private static void showContractMenu() { + // menu options + final int INSERT_PERSON = 0; + final int CREATE_CONTRACT = 1; + final int OVERVIEW_CONTRACTS = 2; + final int BACK = 3; + + // create menu + Menu mainMenu = new Menu("Contract Menu"); + mainMenu.addEntry("Insert person",INSERT_PERSON ); + mainMenu.addEntry("Create/Sign contract", CREATE_CONTRACT); + mainMenu.addEntry("Contracts overview", OVERVIEW_CONTRACTS); + mainMenu.addEntry("Back", BACK); + + // process input + while(true) { + int response = mainMenu.show(); + + switch(response) { + case INSERT_PERSON: + newPerson(); + break; + case CREATE_CONTRACT: + newContract(); + break; + case OVERVIEW_CONTRACTS: + showContractsOverview(); + break; + case BACK: + return; + } + } + } + + private static void showContractsOverview() { + List contracts = _orm.getAll(Type.CONTRACT); + Menu listContracts = new Menu("Contracts Overview"); + + final int BACK = 0; + + for (Object o : contracts) { + Contract contract = (Contract) o; + if(contract instanceof TenancyContract){ + TenancyContract tenContract = (TenancyContract) contract; + listContracts.addEntry("Contract No: " + tenContract.getContractNo() + " Place: "+tenContract.getPlace() + + "Date: "+tenContract.getDate()+" Start Date: "+tenContract.getStartDate() + +" Duration: "+tenContract.getDuration()+" Additional Costs: "+tenContract.getAdditionalCost() + ,tenContract.getContractNo()); + } + else{ + PurchaseContract purContract = (PurchaseContract) contract; + listContracts.addEntry("Contract No: " + purContract.getContractNo() + " Place: "+purContract.getPlace() + + "Date: "+purContract.getDate()+" No of Installments: "+purContract.getNoOfInstallments() + +" Interest Rate: "+purContract.getInterestRate() + ,purContract.getContractNo()); + } + } + listContracts.addEntry("Back to the Contract management menu", BACK); + + // process input + while(true) { + int response = listContracts.show(); + + switch (response) { + case BACK: + return; + default: + break; + } + } + } + + private static void newContract() { + Contract contract = new Contract(); + //choose Estate from List + Estate estate = new Estate(); + //choose Person from List + contract.setPlace(FormUtil.readString("Place")); + contract.setDate(FormUtil.readString("Date")); + if(estate instanceof Apartment){ + TenancyContract tenContract = (TenancyContract) contract; + tenContract.setStartDate(FormUtil.readString("Start Date")); + tenContract.setDuration(FormUtil.readInt("Duration")); + tenContract.setAdditionalCost(FormUtil.readInt("Additional Costs")); + + //_orm.persist(tenContract); + } + else{ + PurchaseContract purContract = (PurchaseContract) contract; + purContract.setNoOfInstallments(FormUtil.readInt("No of Installments")); + purContract.setInterestRate(FormUtil.readInt("Interest Rate")); + + //_orm.persist(purContract); + } + } + + private static void newPerson() { + Person person = new Person(); + person.setFirstName(FormUtil.readString("First Name")); + person.setName(FormUtil.readString("Name")); + person.setAddress(FormUtil.readString("Address")); + + //_orm.persist(person); + System.out.println("Person with the Name " + person.getFirstName() +" "+person.getName() + " was created."); + } + + /** * Checks the password for sudo-like menu areas. */ private static boolean checkPassword() { @@ -261,34 +376,28 @@ public class Main { System.out.println("Modify Estate"); printEstateDetails(estate); - estate.setStreet(FormUtil.readString("Street")); - estate.setStreetNumber(FormUtil.readInt("Street Number")); - estate.setPostalCode(FormUtil.readString("Postal Code")); - estate.setCity(FormUtil.readString("City")); - estate.setSquareArea(FormUtil.readInt("Square Area")); + estate.setStreet(FormUtil.readString("Street",estate.getStreet())); + estate.setStreetNumber(FormUtil.readInt("Street Number",estate.getStreetNumber())); + estate.setPostalCode(FormUtil.readString("Postal Code",estate.getPostalCode())); + estate.setCity(FormUtil.readString("City",estate.getCity())); + estate.setSquareArea(FormUtil.readInt("Square Area",estate.getSquareArea())); if(estate instanceof Apartment){ Apartment apartment = (Apartment) estate; - apartment.setFloor(FormUtil.readInt("Floor")); - apartment.setRent(FormUtil.readInt("Rent")); - apartment.setRooms(FormUtil.readInt("Rooms")); - String input = FormUtil.readString("Balcony(Y/N)"); + apartment.setFloor(FormUtil.readInt("Floor",apartment.getFloor())); + apartment.setRent(FormUtil.readInt("Rent",apartment.getRent())); + apartment.setRooms(FormUtil.readInt("Rooms",apartment.getRooms())); + String input = FormUtil.readString("Balcony(Y/N)",apartment.hasBalcony()?"Y":"N"); apartment.setBalcony(input.equals("Y") || input.equals("y")); - input = FormUtil.readString("Built-in Kitchen(Y/N)"); + input = FormUtil.readString("Built-in Kitchen(Y/N)",apartment.hasBuiltinKitchen()?"Y":"N"); apartment.setBuiltinKitchen(input.equals("Y") || input.equals("y")); } else{ House house = (House)estate; - estate.setCity(FormUtil.readString("Name")); - estate.setPostalCode(FormUtil.readString("Postal Code")); - estate.setStreet(FormUtil.readString("Street")); - estate.setStreetNumber(FormUtil.readInt("Street Number")); - estate.setSquareArea(FormUtil.readInt("Square Area")); - - house.setFloors(FormUtil.readInt("Floors")); - house.setPrice(FormUtil.readInt("Price")); - String input = FormUtil.readString("Garden(Y/N)"); + house.setFloors(FormUtil.readInt("Floors",house.getFloors())); + house.setPrice(FormUtil.readInt("Price",house.getPrice())); + String input = FormUtil.readString("Garden(Y/N)",house.hasGarden()?"Y":"N"); house.setGarden(input.equals("Y") || input.equals("y")); } @@ -442,10 +551,10 @@ public class Main { System.out.println("Username: " + agent.getLogin()); System.out.println("------------------"); - agent.setName(FormUtil.readString("Name")); - agent.setAddress(FormUtil.readString("Address")); - agent.setLogin(FormUtil.readString("Username")); - agent.setPassword(FormUtil.readPassword()); + agent.setName(FormUtil.readString("Name",agent.getName())); + agent.setAddress(FormUtil.readString("Address",agent.getAddress())); + agent.setLogin(FormUtil.readString("Username",agent.getLogin())); + agent.setPassword(FormUtil.readPassword(agent.getPassword())); _orm.persist(agent); diff --git a/02/src/de/dis2017/data/Contract.java b/02/src/de/dis2017/data/Contract.java new file mode 100644 index 0000000..2667afe --- /dev/null +++ b/02/src/de/dis2017/data/Contract.java @@ -0,0 +1,39 @@ +package de.dis2017.data; +/** + * Contract data class + */ +import java.util.Date; + +public class Contract { + private int contractNo = -1; + private String date; + private String place; + private int person; + + public int getContractNo() { + return contractNo; + } + public void setContractNo(int contractNo) { + this.contractNo = contractNo; + } + public String getDate() { + return date; + } + public void setDate(String date) { + this.date = date; + } + public String getPlace() { + return place; + } + public void setPlace(String place) { + this.place = place; + } + public int getPerson() { + return person; + } + public void setPerson(int person) { + this.person = person; + } + + +} diff --git a/02/src/de/dis2017/data/Person.java b/02/src/de/dis2017/data/Person.java new file mode 100644 index 0000000..f0f14c6 --- /dev/null +++ b/02/src/de/dis2017/data/Person.java @@ -0,0 +1,28 @@ +package de.dis2017.data; + +public class Person { + private String firstName; + private String name; + private String address; + + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName) { + this.firstName = firstName; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getAddress() { + return address; + } + public void setAddress(String adress) { + this.address = adress; + } + + +} diff --git a/02/src/de/dis2017/data/PurchaseContract.java b/02/src/de/dis2017/data/PurchaseContract.java new file mode 100644 index 0000000..d71b723 --- /dev/null +++ b/02/src/de/dis2017/data/PurchaseContract.java @@ -0,0 +1,34 @@ +package de.dis2017.data; + +public class PurchaseContract extends Contract { + private int noOfInstallments; + private int interestRate; + + private int house; + + public int getNoOfInstallments() { + return noOfInstallments; + } + + public void setNoOfInstallments(int noOfInstallments) { + this.noOfInstallments = noOfInstallments; + } + + public int getInterestRate() { + return interestRate; + } + + public void setInterestRate(int interestRate) { + this.interestRate = interestRate; + } + + public int getHouse() { + return house; + } + + public void setHouse(int house) { + this.house = house; + } + + +} diff --git a/02/src/de/dis2017/data/TenancyContract.java b/02/src/de/dis2017/data/TenancyContract.java new file mode 100644 index 0000000..5e1d22a --- /dev/null +++ b/02/src/de/dis2017/data/TenancyContract.java @@ -0,0 +1,45 @@ +package de.dis2017.data; + +import java.util.Date; + +public class TenancyContract extends Contract { + private String startDate; + private int duration; + private int additionalCost; + + private int apartment; + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public int getDuration() { + return duration; + } + + public void setDuration(int duration) { + this.duration = duration; + } + + public int getAdditionalCost() { + return additionalCost; + } + + public void setAdditionalCost(int additionalCost) { + this.additionalCost = additionalCost; + } + + public int getApartment() { + return apartment; + } + + public void setApartment(int apartment) { + this.apartment = apartment; + } + + +} diff --git a/02/src/de/dis2017/data/db/Type.java b/02/src/de/dis2017/data/db/Type.java index cf69d1e..e748570 100644 --- a/02/src/de/dis2017/data/db/Type.java +++ b/02/src/de/dis2017/data/db/Type.java @@ -6,5 +6,6 @@ package de.dis2017.data.db; */ public enum Type { ESTATEAGENT, - ESTATE; + ESTATE, + CONTRACT; }