From 797742c0dc5fffb0adc7e5644ccf2bcfaf8cfa5a Mon Sep 17 00:00:00 2001 From: Togepy95 Date: Thu, 20 Apr 2017 16:46:38 +0200 Subject: [PATCH] Improved Interace for creating Contracts Improved Interace for creating Contracts Added Person to Type and getAll function. Added functions to print a List of Estates and Persons. --- 02/src/de/dis2017/Main.java | 52 ++++++++++++------ 02/src/de/dis2017/data/Contract.java | 8 +++ 02/src/de/dis2017/data/Person.java | 8 +++ 02/src/de/dis2017/data/PurchaseContract.java | 6 +- 02/src/de/dis2017/data/TenancyContract.java | 6 +- 02/src/de/dis2017/data/db/ORM.java | 58 +++++++++++++++++++- 02/src/de/dis2017/data/db/Type.java | 3 +- 7 files changed, 115 insertions(+), 26 deletions(-) diff --git a/02/src/de/dis2017/Main.java b/02/src/de/dis2017/Main.java index cdaea5a..723ce06 100644 --- a/02/src/de/dis2017/Main.java +++ b/02/src/de/dis2017/Main.java @@ -116,20 +116,8 @@ public class Main { 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("Contract No: " + contract.getContractNo() + " Place: "+contract.getPlace() + + "Date: "+contract.getDate(),contract.getContractNo()); } listContracts.addEntry("Back to the Contract management menu", BACK); @@ -149,11 +137,14 @@ public class Main { private static void newContract() { Contract contract = new Contract(); //choose Estate from List - Estate estate = new Estate(); + printListOfEstates(); + contract.setEstate(FormUtil.readInt("Estate")); //choose Person from List + printListOfPersons(); + contract.setPerson(FormUtil.readInt("Person")); contract.setPlace(FormUtil.readString("Place")); contract.setDate(FormUtil.readString("Date")); - if(estate instanceof Apartment){ + if(_orm.isApartment(contract.getEstate())){ TenancyContract tenContract = new TenancyContract(contract); tenContract.setStartDate(FormUtil.readString("Start Date")); tenContract.setDuration(FormUtil.readInt("Duration")); @@ -372,6 +363,35 @@ public class Main { System.out.println("------------------"); } + /** + * Print a list of persons. + */ + private static void printListOfPersons() { + List agents = _orm.getAll(Type.PERSON); + System.out.println("List of Persons"); + System.out.println("------------------"); + + for (Object o : agents) { + Person person = (Person) o; + System.out.println("Name: " + person.getFirstName()+" "+person.getName() +", Address: " + person.getAddress()); + } + System.out.println("------------------"); + } + /** + * Print a list of estates. + */ + private static void printListOfEstates() { + List agents = _orm.getAll(Type.ESTATE); + System.out.println("List of Estates"); + System.out.println("------------------"); + + for (Object o : agents) { + Estate estate = (Estate) o; + System.out.println("ID: " + estate.getId() + ", Address: " + estate.getStreet()+" "+estate.getStreetNumber()+", "+estate.getCity()); + } + System.out.println("------------------"); + } + /** * Print a list of agents. */ diff --git a/02/src/de/dis2017/data/Contract.java b/02/src/de/dis2017/data/Contract.java index 2667afe..d98389f 100644 --- a/02/src/de/dis2017/data/Contract.java +++ b/02/src/de/dis2017/data/Contract.java @@ -9,7 +9,15 @@ public class Contract { private String date; private String place; private int person; + private int estate; + + public int getEstate() { + return estate; + } + public void setEstate(int estate) { + this.estate = estate; + } public int getContractNo() { return contractNo; } diff --git a/02/src/de/dis2017/data/Person.java b/02/src/de/dis2017/data/Person.java index f0f14c6..cbd4783 100644 --- a/02/src/de/dis2017/data/Person.java +++ b/02/src/de/dis2017/data/Person.java @@ -4,7 +4,15 @@ public class Person { private String firstName; private String name; private String address; + private int id; + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } public String getFirstName() { return firstName; } diff --git a/02/src/de/dis2017/data/PurchaseContract.java b/02/src/de/dis2017/data/PurchaseContract.java index 534dbb5..88df887 100644 --- a/02/src/de/dis2017/data/PurchaseContract.java +++ b/02/src/de/dis2017/data/PurchaseContract.java @@ -3,8 +3,6 @@ package de.dis2017.data; public class PurchaseContract extends Contract { private int noOfInstallments; private int interestRate; - - private int house; public PurchaseContract(){ super(); @@ -33,11 +31,11 @@ public class PurchaseContract extends Contract { } public int getHouse() { - return house; + return super.getEstate(); } public void setHouse(int house) { - this.house = house; + super.setEstate(house); } diff --git a/02/src/de/dis2017/data/TenancyContract.java b/02/src/de/dis2017/data/TenancyContract.java index f1eda43..b0566fa 100644 --- a/02/src/de/dis2017/data/TenancyContract.java +++ b/02/src/de/dis2017/data/TenancyContract.java @@ -6,8 +6,6 @@ public class TenancyContract extends Contract { private String startDate; private int duration; private int additionalCost; - - private int apartment; public TenancyContract(){ super(); @@ -44,11 +42,11 @@ public class TenancyContract extends Contract { } public int getApartment() { - return apartment; + return super.getEstate(); } public void setApartment(int apartment) { - this.apartment = apartment; + super.setEstate(apartment); } diff --git a/02/src/de/dis2017/data/db/ORM.java b/02/src/de/dis2017/data/db/ORM.java index f054785..2c742f7 100644 --- a/02/src/de/dis2017/data/db/ORM.java +++ b/02/src/de/dis2017/data/db/ORM.java @@ -1,9 +1,12 @@ package de.dis2017.data.db; 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 org.jetbrains.annotations.Nullable; import java.sql.*; @@ -56,7 +59,10 @@ public class ORM { objects = processEstates(rs); break; case CONTRACT: - objects = processEstates(rs); + objects = processContracts(rs); + break; + case PERSON: + objects = processPersons(rs); break; } rs.close(); @@ -68,6 +74,51 @@ public class ORM { return objects; } + /** + * Process a select all query for contracts. + * + * @param rs the result set of such a query + * @return a list of estates + * @throws SQLException when an error occurs during the rs.next call + */ + private List processContracts(ResultSet rs) throws SQLException { + List contracts = new ArrayList<>(); + + while (rs.next()) { + Contract contract = new Contract(); + contract.setContractNo(rs.getInt("CONTRACTNUMBER")); + contract.setDate(rs.getDate("DATE").toString()); + contract.setPlace(rs.getString("PLACE")); + + contracts.add(contract); + } + + return contracts; + } + + /** + * Process a select all query for persons. + * + * @param rs the result set of such a query + * @return a list of estates + * @throws SQLException when an error occurs during the rs.next call + */ + private List processPersons(ResultSet rs) throws SQLException { + List persons = new ArrayList<>(); + + while (rs.next()) { + Person person = new Person(); + person.setId(rs.getInt("ID")); + person.setFirstName(rs.getString("FirstName")); + person.setFirstName(rs.getString("Name")); + person.setName(rs.getString("Address")); + + persons.add(person); + } + + return persons; + } + /** * Process a select all query for estates. * @@ -537,4 +588,9 @@ public class ORM { e.printStackTrace(); } } + + public boolean isApartment(int estateID){ + //TODO check in the DB if the Estate with the ID is an Apartment then return true. If it is a house return false. + return true; + } } diff --git a/02/src/de/dis2017/data/db/Type.java b/02/src/de/dis2017/data/db/Type.java index e748570..8bd893c 100644 --- a/02/src/de/dis2017/data/db/Type.java +++ b/02/src/de/dis2017/data/db/Type.java @@ -7,5 +7,6 @@ package de.dis2017.data.db; public enum Type { ESTATEAGENT, ESTATE, - CONTRACT; + CONTRACT, + PERSON; }