Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Modsogner.Durin.Register;
- import java.util.*;
- public class ModsognerDurinRegister {
- /**
- * scanner private eftersom den används bara i denna klass, static eftersom
- * det Är bara en scanner som används för all centraliserad inläsning,
- * annats tvingas man skapa en scanner för varje inläsning =onödigt. Final
- * för att det är en konstant som gäller över hela programmet och ska inte
- * ändras.
- **/
- private static final Scanner userInput = new Scanner(System.in);
- private ArrayList<Client> clientList = new ArrayList<>();
- public final ArrayList<Contract> contracts = new ArrayList<>();
- private final boolean enableDebugging;
- /**
- * inläsnings och utskriftsmetoder för userinput i syftet att centralisera
- * inläsningen från en användare som kan läsa in från flera olika
- * ställen i programmet och inte behöva imporeta och skapa scannerobjekt
- * överallt metoder som kan återanvändas genom metod-anrop
- **/
- // inläsning och utskrift för textsträngar
- private static String readText(String prompt) {
- System.out.print(prompt);
- return userInput.nextLine();
- }
- // inläsning och utskrift för heltal
- // rad 2 - läser in talet i en variabel
- // rad 3 - anropar nextLine för att tömma rad-bufferten
- // detta gör man när siffror och textinläsning blandas
- private static int readNumber(String prompt) {
- System.out.print(prompt);
- int number = userInput.nextInt();
- userInput.nextLine();
- return number;
- }
- // konstruktor for debugging
- public ModsognerDurinRegister(boolean isDebugging) {
- enableDebugging = isDebugging;
- clientList = new ArrayList<>();
- }
- /** Kommando metoder **/
- // kod som kös vid uppstart av programmet
- // lägga in 3 Clients med flera Phonenumbers, 3 un-invoiced contracts,
- // ett för en ensam client och ett för flera clients. 3 invoiced contracts
- public void startProgram() {
- Client a = new Client("Client A", "Street1", "6", "11756", "Örebro");
- a.addPhoneNumber("Mobile", "0709675433");
- a.addPhoneNumber("Home Number", "08-216103");
- clientList.add(a);
- Client b = new Client("Client B", "Street2", "7", "11757", "Göteborg");
- b.addPhoneNumber("Mobile", "0706678904");
- b.addPhoneNumber("Home Number", "08-569032");
- clientList.add(b);
- Client c = new Client("Client C", "Street3", "6", "11758", "Stockholm");
- c.addPhoneNumber("Mobile", "0700450250");
- c.addPhoneNumber("Home Number", "08-5228824");
- clientList.add(c);
- System.out.println("<Modsogner & Durin Client Register>");
- }
- // läsa in kommandon från användaren
- public String readCommand() {
- return readText("> ").toLowerCase();
- }
- // skriva ut felmeddelande
- public void showErrorMessage() {
- System.out.println("\n Invalid option.\n");
- }
- // case 0 programavslut
- // l�gga till felinmatnings-hantering? try/catch om fel input görs?
- public void exitProgram() {
- String choice = readText("\nExit program? Yes / No > ");
- if (choice.equalsIgnoreCase("Yes")) {
- System.out.println("<Program terminated>");
- System.exit(0);
- } else if (choice.equalsIgnoreCase("No")) {
- runProgram();
- } else {
- exitProgram();
- }
- }
- // programmets huvudloop som hanterar de olika kommando-valen
- public void runProgram() {
- for (;;) {
- displayMenu();
- switch (readCommand()) {
- case "1":
- createClient();
- break;
- case "2":
- deleteClient();
- break;
- case "3":
- listAllClients();
- case "4":
- createClientNumber();
- break;
- case "5":
- listClientSameNumber();
- break;
- case "6":
- CreateContract();
- break;
- case "7":
- listContractByClient();
- break;
- case "8":
- listAllContracts();
- break;
- case "9":
- listClientInvoice();
- break;
- case "10":
- listClientByInvoice();
- break;
- case "11":
- listAllInvoices();
- case "0":
- exitProgram();
- break;
- default:
- showErrorMessage();
- }
- }
- }
- // menyvalen
- public void displayMenu() {
- System.out.println("\nChoose an option listed below by entering the number: \n");
- System.out.println("[1] <Add new Client>");
- System.out.println("[2] <Remove Client>");
- System.out.println("[3] <List all Clients>");
- System.out.println("[4] <Add Phone number to Client>");
- System.out.println("[5] <List Clients with same phone number>");
- System.out.println("[6] <Add new Contract to Client>");
- System.out.println("[7] <List all Contracts connected to one Client>");
- System.out.println("[8] <List all Contracts>");
- System.out.println("[9] <List invoices connected to one Client>");
- System.out.println("[10] <List Clients based on invoice>");
- System.out.println("[11] <List all invoices>");
- System.out.println("[0] <Exit>");
- }
- /** case 1 **/
- public void createClient() {
- System.out.println("<Add new client>");
- String name = readText("Enter name: ");
- String street = readText("Enter street: ");
- String streetNumber = readText("Enter street number: ");
- String zipCode = readText("Enter Zip code: ");
- String city = readText("Enter city: ");
- addClient(name, street, streetNumber, zipCode, city);
- }
- // public for testing, private if not testing
- public void addClient(String aName, String aStreet, String aStreetNumber,
- String aZipCode, String aCity) {
- // test functionality method
- printDebugInfo("Attempting to add client " + aName + ", " + aStreet
- + ", " + aStreetNumber + ", " + aZipCode + ", " + aCity);
- // Check if client with same name already exists
- // Same name client found, set Addcheck to false
- boolean AddCheck = true;
- String Input = aName;
- for (Client existingClient : clientList) {
- if (existingClient.getName().equalsIgnoreCase(Input)) {
- AddCheck = false;
- System.out.println("\nA Client with the name:" + " \"" + Input
- + "\" " + "already exists...");
- }
- }
- if (AddCheck == false) {
- } else {
- clientList.add(new Client(aName, aStreet, aStreetNumber,
- aZipCode, aCity));
- System.out.println("\nThe Client " + " \"" + aName + "\" "
- + " added to the registry. \n");
- }
- }
- /** case 2 **/
- // tree map testa?
- public void deleteClient() {
- System.out.println("<Remove client>");
- String ClientName = readText("Enter name of the Client to remove: ");
- removeClient(ClientName);
- }
- // infoga en boolean
- //public vid test,private vid icke test,sköts internt via klassen
- public String removeClient(String aName) {
- String Input = aName;
- for (int a = 0; a < clientList.size(); a++) {
- if (clientList.get(a).getName().equalsIgnoreCase(aName)) {
- clientList.remove(a);
- System.out.println(" \n\"" + aName + "\" "
- + "has been removed from the registry.");
- return aName;
- }
- }
- System.out.println("\nThe Client" + " \"" + aName + "\" "
- + "does not exist in the registry...");
- return null;
- }
- // //metoden get client by name - alternativ
- // public String findClient() {
- // //metod remove (objket 0)
- // // finns i arryaList
- // //hämta uten klient via ett namn i ararylistan
- // //spara klienten i en tillfällig variabel
- // //clientList.remove(klienten)
- // }
- /** case 3 **/
- // sortera efter namn - comparator/hashmap?
- public void listAllClients() {
- System.out.println("<Listing clients>");
- for (Client Client : clientList);
- System.out.println(Client.toString());
- }
- public void createClientNumber() {
- System.out.println("<Add number to client>");
- String ClientName = readText("Enter the name of the Client to add a phone number to ");
- String ClientNumber = readText("Enter Number: ");
- addClientNumber(ClientName);
- }
- /** case 4 **/
- public void addClientNumber(String aName) {
- String Input = aName;
- for (Client Client : clientList) {
- if (Client.getName().equalsIgnoreCase(Input));
- Client.addClientPhoneNumber();
- }
- }
- public void addClienthoneNumber(String aName, String aType, String aNumber) {
- getClient(aName).addPhoneNumber(aType, aNumber);
- }
- /** case 5 **/
- public void listClientSameNumber() {
- System.out.println("<Listing clients with same number>");
- }
- /** case 6 **/
- /**
- * Man kanske skulle vilja g�ra en addContract-metod i registret som tar
- * in namn, letar reda p� klienten och l�gger till ett kontrakt.
- **/
- public void CreateContract() {
- System.out.println("<Add contract>");
- String description = readText("Enter Contract name: ");
- String date = readText("Enter year, month, day: ");
- String hours = readText("Enter hours: ");
- addContractByClient(description, date, hours);
- }
- public void addContractByClient(String aDescription, String aDate,
- String anHours) {
- String Input = readText(aDescription);
- for (int a = 0; a < contracts.size(); a++) {
- if (contracts.get(a).getDescription().equalsIgnoreCase(Input)) {
- contracts.add(new Contract(aDescription, aDate, anHours));
- System.out.println("\nContract added to Client.");
- }
- // test functionality method
- printDebugInfo("Attempting to add contract to client "
- + aDescription + " " + aDate + " " + anHours);
- }
- }
- /** case 7 **/
- public void listContractByClient() {
- System.out.println("<Listing constracts by client>");
- }
- /** case 8 **/
- public void listAllContracts() {
- System.out.println("<Listing contracts>");
- }
- /** case 9 **/
- public void listClientInvoice() {
- System.out.println("<????>");
- }
- /** case 10 **/
- public void listClientByInvoice() {
- System.out.println("<Listing invoice by client>");
- }
- /** case 11 **/
- public void listAllInvoices() {
- System.out.println("<Listing invoices>");
- }
- public Client getClient(String aName) {
- for (Client client : clientList) {
- if (client.getName().equals(aName)) {
- return client;
- }
- }
- return null;
- }
- // stöd för testning --> debugg
- private void printDebugInfo(String stuff) {
- if (enableDebugging) {
- System.out.println(stuff);
- }
- }
- // hämta in listan över klienterna
- public List<Client> getClients() {
- return clientList;
- }
- // stöd metod för testning --> antal klienter i listan
- // public int size() {
- // return clientList.size();
- // }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement