Advertisement
Guest User

Untitled

a guest
May 22nd, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.17 KB | None | 0 0
  1. package Modsogner.Durin.Register;
  2.  
  3. import java.util.*;
  4.  
  5. public class ModsognerDurinRegister {
  6.  
  7. /**
  8. * scanner private eftersom den används bara i denna klass, static eftersom
  9. * det Är bara en scanner som används för all centraliserad inläsning,
  10. * annats tvingas man skapa en scanner för varje inläsning =onödigt. Final
  11. * för att det är en konstant som gäller över hela programmet och ska inte
  12. * ändras.
  13. **/
  14. private static final Scanner userInput = new Scanner(System.in);
  15. private ArrayList<Client> clientList = new ArrayList<>();
  16. public final ArrayList<Contract> contracts = new ArrayList<>();
  17. private final boolean enableDebugging;
  18.  
  19. /**
  20. * inläsnings och utskriftsmetoder för userinput i syftet att centralisera
  21. * inläsningen från en användare som kan läsa in från flera olika
  22. * ställen i programmet och inte behöva imporeta och skapa scannerobjekt
  23. * överallt metoder som kan återanvändas genom metod-anrop
  24. **/
  25. // inläsning och utskrift för textsträngar
  26. private static String readText(String prompt) {
  27. System.out.print(prompt);
  28. return userInput.nextLine();
  29. }
  30.  
  31. // inläsning och utskrift för heltal
  32. // rad 2 - läser in talet i en variabel
  33. // rad 3 - anropar nextLine för att tömma rad-bufferten
  34. // detta gör man när siffror och textinläsning blandas
  35. private static int readNumber(String prompt) {
  36. System.out.print(prompt);
  37. int number = userInput.nextInt();
  38. userInput.nextLine();
  39. return number;
  40. }
  41.  
  42. // konstruktor for debugging
  43. public ModsognerDurinRegister(boolean isDebugging) {
  44. enableDebugging = isDebugging;
  45. clientList = new ArrayList<>();
  46. }
  47.  
  48. /** Kommando metoder **/
  49. // kod som kös vid uppstart av programmet
  50. // lägga in 3 Clients med flera Phonenumbers, 3 un-invoiced contracts,
  51. // ett för en ensam client och ett för flera clients. 3 invoiced contracts
  52. public void startProgram() {
  53. Client a = new Client("Client A", "Street1", "6", "11756", "Örebro");
  54. a.addPhoneNumber("Mobile", "0709675433");
  55. a.addPhoneNumber("Home Number", "08-216103");
  56. clientList.add(a);
  57. Client b = new Client("Client B", "Street2", "7", "11757", "Göteborg");
  58. b.addPhoneNumber("Mobile", "0706678904");
  59. b.addPhoneNumber("Home Number", "08-569032");
  60. clientList.add(b);
  61. Client c = new Client("Client C", "Street3", "6", "11758", "Stockholm");
  62. c.addPhoneNumber("Mobile", "0700450250");
  63. c.addPhoneNumber("Home Number", "08-5228824");
  64. clientList.add(c);
  65.  
  66. System.out.println("<Modsogner & Durin Client Register>");
  67. }
  68.  
  69. // läsa in kommandon från användaren
  70. public String readCommand() {
  71. return readText("> ").toLowerCase();
  72. }
  73.  
  74. // skriva ut felmeddelande
  75. public void showErrorMessage() {
  76. System.out.println("\n Invalid option.\n");
  77. }
  78.  
  79. // case 0 programavslut
  80. // l�gga till felinmatnings-hantering? try/catch om fel input görs?
  81. public void exitProgram() {
  82. String choice = readText("\nExit program? Yes / No > ");
  83. if (choice.equalsIgnoreCase("Yes")) {
  84. System.out.println("<Program terminated>");
  85. System.exit(0);
  86. } else if (choice.equalsIgnoreCase("No")) {
  87. runProgram();
  88. } else {
  89. exitProgram();
  90. }
  91.  
  92. }
  93.  
  94. // programmets huvudloop som hanterar de olika kommando-valen
  95. public void runProgram() {
  96. for (;;) {
  97. displayMenu();
  98. switch (readCommand()) {
  99. case "1":
  100. createClient();
  101. break;
  102. case "2":
  103. deleteClient();
  104. break;
  105. case "3":
  106. listAllClients();
  107. case "4":
  108. createClientNumber();
  109. break;
  110. case "5":
  111. listClientSameNumber();
  112. break;
  113. case "6":
  114. CreateContract();
  115. break;
  116. case "7":
  117. listContractByClient();
  118. break;
  119. case "8":
  120. listAllContracts();
  121. break;
  122. case "9":
  123. listClientInvoice();
  124. break;
  125. case "10":
  126. listClientByInvoice();
  127. break;
  128. case "11":
  129. listAllInvoices();
  130. case "0":
  131. exitProgram();
  132. break;
  133. default:
  134. showErrorMessage();
  135. }
  136. }
  137. }
  138.  
  139. // menyvalen
  140. public void displayMenu() {
  141. System.out.println("\nChoose an option listed below by entering the number: \n");
  142. System.out.println("[1] <Add new Client>");
  143. System.out.println("[2] <Remove Client>");
  144. System.out.println("[3] <List all Clients>");
  145. System.out.println("[4] <Add Phone number to Client>");
  146. System.out.println("[5] <List Clients with same phone number>");
  147. System.out.println("[6] <Add new Contract to Client>");
  148. System.out.println("[7] <List all Contracts connected to one Client>");
  149. System.out.println("[8] <List all Contracts>");
  150. System.out.println("[9] <List invoices connected to one Client>");
  151. System.out.println("[10] <List Clients based on invoice>");
  152. System.out.println("[11] <List all invoices>");
  153. System.out.println("[0] <Exit>");
  154.  
  155. }
  156.  
  157. /** case 1 **/
  158. public void createClient() {
  159. System.out.println("<Add new client>");
  160. String name = readText("Enter name: ");
  161. String street = readText("Enter street: ");
  162. String streetNumber = readText("Enter street number: ");
  163. String zipCode = readText("Enter Zip code: ");
  164. String city = readText("Enter city: ");
  165.  
  166. addClient(name, street, streetNumber, zipCode, city);
  167. }
  168.  
  169. // public for testing, private if not testing
  170. public void addClient(String aName, String aStreet, String aStreetNumber,
  171. String aZipCode, String aCity) {
  172.  
  173. // test functionality method
  174. printDebugInfo("Attempting to add client " + aName + ", " + aStreet
  175. + ", " + aStreetNumber + ", " + aZipCode + ", " + aCity);
  176.  
  177. // Check if client with same name already exists
  178. // Same name client found, set Addcheck to false
  179. boolean AddCheck = true;
  180. String Input = aName;
  181. for (Client existingClient : clientList) {
  182. if (existingClient.getName().equalsIgnoreCase(Input)) {
  183. AddCheck = false;
  184. System.out.println("\nA Client with the name:" + " \"" + Input
  185. + "\" " + "already exists...");
  186. }
  187. }
  188. if (AddCheck == false) {
  189.  
  190. } else {
  191.  
  192. clientList.add(new Client(aName, aStreet, aStreetNumber,
  193. aZipCode, aCity));
  194. System.out.println("\nThe Client " + " \"" + aName + "\" "
  195. + " added to the registry. \n");
  196. }
  197. }
  198.  
  199. /** case 2 **/
  200. // tree map testa?
  201. public void deleteClient() {
  202. System.out.println("<Remove client>");
  203. String ClientName = readText("Enter name of the Client to remove: ");
  204.  
  205. removeClient(ClientName);
  206. }
  207. // infoga en boolean
  208. //public vid test,private vid icke test,sköts internt via klassen
  209. public String removeClient(String aName) {
  210. String Input = aName;
  211. for (int a = 0; a < clientList.size(); a++) {
  212. if (clientList.get(a).getName().equalsIgnoreCase(aName)) {
  213. clientList.remove(a);
  214. System.out.println(" \n\"" + aName + "\" "
  215. + "has been removed from the registry.");
  216. return aName;
  217. }
  218. }
  219. System.out.println("\nThe Client" + " \"" + aName + "\" "
  220. + "does not exist in the registry...");
  221. return null;
  222. }
  223. // //metoden get client by name - alternativ
  224. // public String findClient() {
  225. // //metod remove (objket 0)
  226. // // finns i arryaList
  227. // //hämta uten klient via ett namn i ararylistan
  228. // //spara klienten i en tillfällig variabel
  229. // //clientList.remove(klienten)
  230. // }
  231.  
  232. /** case 3 **/
  233. // sortera efter namn - comparator/hashmap?
  234. public void listAllClients() {
  235. System.out.println("<Listing clients>");
  236. for (Client Client : clientList);
  237. System.out.println(Client.toString());
  238. }
  239. public void createClientNumber() {
  240. System.out.println("<Add number to client>");
  241. String ClientName = readText("Enter the name of the Client to add a phone number to ");
  242. String ClientNumber = readText("Enter Number: ");
  243.  
  244. addClientNumber(ClientName);
  245. }
  246. /** case 4 **/
  247. public void addClientNumber(String aName) {
  248. String Input = aName;
  249. for (Client Client : clientList) {
  250. if (Client.getName().equalsIgnoreCase(Input));
  251.  
  252. Client.addClientPhoneNumber();
  253. }
  254. }
  255.  
  256. public void addClienthoneNumber(String aName, String aType, String aNumber) {
  257. getClient(aName).addPhoneNumber(aType, aNumber);
  258. }
  259.  
  260. /** case 5 **/
  261. public void listClientSameNumber() {
  262. System.out.println("<Listing clients with same number>");
  263. }
  264.  
  265. /** case 6 **/
  266. /**
  267. * Man kanske skulle vilja g�ra en addContract-metod i registret som tar
  268. * in namn, letar reda p� klienten och l�gger till ett kontrakt.
  269. **/
  270. public void CreateContract() {
  271. System.out.println("<Add contract>");
  272. String description = readText("Enter Contract name: ");
  273. String date = readText("Enter year, month, day: ");
  274. String hours = readText("Enter hours: ");
  275.  
  276. addContractByClient(description, date, hours);
  277. }
  278.  
  279. public void addContractByClient(String aDescription, String aDate,
  280. String anHours) {
  281. String Input = readText(aDescription);
  282. for (int a = 0; a < contracts.size(); a++) {
  283. if (contracts.get(a).getDescription().equalsIgnoreCase(Input)) {
  284.  
  285. contracts.add(new Contract(aDescription, aDate, anHours));
  286. System.out.println("\nContract added to Client.");
  287. }
  288.  
  289. // test functionality method
  290. printDebugInfo("Attempting to add contract to client "
  291. + aDescription + " " + aDate + " " + anHours);
  292. }
  293. }
  294.  
  295. /** case 7 **/
  296. public void listContractByClient() {
  297. System.out.println("<Listing constracts by client>");
  298.  
  299. }
  300.  
  301. /** case 8 **/
  302. public void listAllContracts() {
  303. System.out.println("<Listing contracts>");
  304.  
  305. }
  306.  
  307. /** case 9 **/
  308. public void listClientInvoice() {
  309. System.out.println("<????>");
  310. }
  311.  
  312. /** case 10 **/
  313. public void listClientByInvoice() {
  314. System.out.println("<Listing invoice by client>");
  315. }
  316.  
  317. /** case 11 **/
  318. public void listAllInvoices() {
  319. System.out.println("<Listing invoices>");
  320.  
  321. }
  322.  
  323. public Client getClient(String aName) {
  324. for (Client client : clientList) {
  325. if (client.getName().equals(aName)) {
  326. return client;
  327. }
  328. }
  329.  
  330. return null;
  331. }
  332. // stöd för testning --> debugg
  333. private void printDebugInfo(String stuff) {
  334. if (enableDebugging) {
  335. System.out.println(stuff);
  336. }
  337. }
  338. // hämta in listan över klienterna
  339. public List<Client> getClients() {
  340. return clientList;
  341. }
  342. // stöd metod för testning --> antal klienter i listan
  343. // public int size() {
  344. // return clientList.size();
  345. // }
  346. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement