Advertisement
Guest User

Untitled

a guest
Mar 5th, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.47 KB | None | 0 0
  1. /**
  2. *
  3. */
  4. package tdt4140.gr1855.app.core;
  5.  
  6. import java.util.Arrays;
  7. import java.util.List;
  8.  
  9. /**
  10. * Denne abstrakte klassen skal brukes i de to subklassene pasient og lege, da
  11. * de deler en del metoder og felter
  12. *
  13. */
  14. public abstract class AbstractUser {
  15. private String username;
  16. private String password;
  17. private String name;
  18. private int phoneNumber;
  19.  
  20. //liste over gyldige landskoder
  21. private List<String> validCTLDs = Arrays.asList("ad", "ae", "af", "ag", "ai", "al", "am", "ao", "aq", "ar", "as", "at", "au", "aw", "ax", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bl", "bm", "bn", "bo", "bq", "br", "bs", "bt", "bv", "bw", "by", "bz", "ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl", "cm", "cn", "co", "cr", "cu", "cv", "cw", "cx", "cy", "cz", "de", "dj", "dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er", "es", "et", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gb", "gd", "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu", "id", "ie", "il", "im", "in", "io", "iq", "ir", "is", "it", "je", "jm", "jo", "jp", "ke", "kg", "kh", "ki", "km", "kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt", "lu", "lv", "ly", "ma", "mc", "md", "me", "mf", "mg", "mh", "mk", "ml", "mm", "mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my", "mz", "na", "nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu", "nz", "om", "pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr", "ps", "pt", "pw", "py", "qa", "re", "ro", "rs", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "ss", "st", "sv", "sx", "sy", "sz", "tc", "td", "tf", "tg", "th", "tj", "tk", "tl", "tm", "tn", "to", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "um", "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws", "ye", "yt", "za", "zm", "zw");
  22.  
  23. public AbstractUser(String name, String userName, String password, int phoneNumber) {
  24. setName(name);
  25. setUsername(username);
  26. setPassword(password);
  27. setPhoneNumber(phoneNumber);
  28. }
  29. public void setPhoneNumber(int phoneNumber) {
  30. //her kaller vi checkValidName, som returnerer en String som er null hvis det ikke
  31. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  32. String error = checkValidPhoneNumber();
  33.  
  34. //dersom navnet ikke er gyldig, sier hva som gikk galt
  35. if (error != null) {
  36. throw new IllegalArgumentException("Feil: " + error);
  37. }
  38. //dersom navnet er gyldig, setter denne
  39. this.name = name;
  40. }
  41.  
  42. public void setName(String name) {
  43. //her kaller vi checkValidName, som returnerer en String som er null hvis det ikke
  44. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  45. String error = checkValidName(name);
  46.  
  47. //dersom navnet ikke er gyldig, sier hva som gikk galt
  48. if (error != null) {
  49. throw new IllegalArgumentException("Feil: " + error);
  50. }
  51. //dersom navnet er gyldig, setter denne
  52. this.name = name;
  53. }
  54. public String getUsername() {
  55. return username;
  56. }
  57. public void setUsername(String username) {
  58. //her kaller vi checkValidUserName, som returnerer en String som er null hvis det ikke
  59. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  60.  
  61. String error = checkValidUserName(username);
  62.  
  63. //dersom brukernavnet ikke er gyldig, sier hva som gikk galt
  64. if (error != null) {
  65. throw new IllegalArgumentException("Feil: " + error);
  66. }
  67.  
  68. this.username = username;
  69. }
  70.  
  71.  
  72. public String getPassword() {
  73. return password;
  74. }
  75.  
  76. //setter passord
  77. public void setPassword(String password) {
  78. //her kaller vi checkValidPassword, som returnerer en String som er null hvis det ikke
  79. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  80.  
  81. String error = checkValidPassword(password);
  82.  
  83. //dersom brukernavnet ikke er gyldig, sier hva som gikk galt
  84. if (error != null) {
  85. throw new IllegalArgumentException("Feil: " + error);
  86. }
  87.  
  88. this.password=password;
  89. }
  90. public String getName() {
  91. return name;
  92. }
  93.  
  94. //Hjelpemetode for å sjekke om navn er gyldig
  95. private String checkValidName(String name) {
  96. String[] navnDeler = name.split(" ");
  97. if (navnDeler.length <1) {
  98. return "Navn må bestå av et fornavn og etternavn";
  99. }
  100. for(int i=0; i<navnDeler.length;i++) {
  101. if(navnDeler[i].length()<2) {
  102. return "Alle ord i navnet må ha minst to bokstaver. Dette var ikke tilfellet i ord nr. " + i + " i navnet ditt";
  103. }
  104. if(!isLettersOnly(navnDeler[i])) {
  105. return "Alle ord i navnet må kun bestå av bokstaver. Dette var ikke tilfellet i ord nr. " + i + " i navnet ditt";
  106. }
  107. }
  108.  
  109. return null;
  110. }
  111.  
  112. //hjelpemetode for å sjekke at det kun er bokstaver i et ord
  113. private boolean isLettersOnly(String s) {
  114. for(int i=0; i<s.length(); i++) {
  115. if (! Character.isLetter(s.charAt(i))) {
  116. return false;
  117. }
  118. }
  119. return true;
  120. }
  121.  
  122. //hjelpemetode for å sjekke at brukernavnet er gyldig, altså at det er en gyldig e-post adresse
  123. private String checkValidUserName(String username) {
  124. String[] parts = username.split("@");
  125. if (parts.length != 2) {
  126. return username + " har mer enn en @";
  127. }
  128. //den følgende koden var ment til å sjekke at epost inneholdt både fornavn og etternavn. Dette er
  129. //dog fjernet da vi ikke tror dette bør være et nødvendig krav
  130. /*
  131. String[] nameParts = parts[0].split("\\.");
  132. if (nameParts.length != 2) {
  133. return "The name part should include two names separated with .";
  134. }
  135. int pos = this.name.indexOf(' ');
  136. String givenName = this.name.substring(0, pos);
  137. if (! nameParts[0].equalsIgnoreCase(givenName)) {
  138. return "The first name of email (" + nameParts[0] + ") does not match given name (" + givenName + ")";
  139. }
  140. String familyName = this.name.substring(pos + 1);
  141. if (! nameParts[1].equalsIgnoreCase(familyName)) {
  142. return "The second name of email (" + nameParts[1] + ") does not match family name (" + familyName + ")";
  143. }
  144. */
  145. String[] domainParts = parts[1].split("\\.");
  146. if (domainParts.length != 2) {
  147. return "Domene-delen bør inneholde nøyaktig to deler, og disse bør skilles med .";
  148. }
  149.  
  150. if (! isLettersOrDigitsOnly(domainParts[0])) {
  151. return "Den første delen av domene-delen kan ikke inneholde et tegn som verken er tall eller bokstav";
  152. }
  153. int countryCodeLength = domainParts[1].length();
  154. if (! (countryCodeLength == 2 || countryCodeLength == 3)) {
  155. return "Landskoden kan kun inneholde to eller tre tegn";
  156. }
  157. if (! isLettersOnly(domainParts[1])) {
  158. return "Landskoden kan kun inneholde bokstaver";
  159. }
  160. if (! validCTLDs.contains(domainParts[1])){
  161. return "Ukjent landskode";
  162. }
  163. return null;
  164. }
  165.  
  166. //Hjelpemetode for å sjekke at et navn kun inneholder bokstaver eller tall
  167. private boolean isLettersOrDigitsOnly(String s) {
  168. for(int i=0; i<s.length(); i++) {
  169. if (! Character.isLetterOrDigit(s.charAt(i))) {
  170. return false;
  171. }
  172. }
  173. return true;
  174. }
  175.  
  176.  
  177.  
  178. //Sjekker gyldig passord: 8 tegn, minst en bokstav, minst et tall, minst en liten bokstav, og minst en stor bokstav
  179. private String checkValidPassword(String password) {
  180. if(password.length()<8) {
  181. return "Passordet må være minst 8 tegn langt";
  182. }
  183.  
  184. //her setter vi booleans for minst en bokstav, minst et tall, minst en liten bokstav og minst en stor bokstav,
  185. //som vi setter true dersom vi finner dette, og som ellers vil bli false hele veien, noe som vil si at det ikke finnes,
  186. //og at passordet ikke er gyldig
  187. boolean minstEnBokstav=false;
  188. boolean minstEtTall=false;
  189. boolean minstEnLitenBokstav=false;
  190. boolean minstEnStorBokstav=false;
  191. for(int i=0; i<password.length(); i++) {
  192. if (Character.isDigit(password.charAt(i))) {
  193. minstEtTall=true;
  194. }
  195. if (Character.isLetter((password.charAt(i)))){
  196. minstEnBokstav=true;
  197. if(Character.isUpperCase((password.charAt(i)))){
  198. minstEnStorBokstav=true;
  199. }
  200. if(Character.isLowerCase((password.charAt(i)))) {
  201. minstEnLitenBokstav=true;
  202. }
  203. }
  204. }
  205. if(!minstEnBokstav) {
  206. return "Passordet må inneholde minst en bokstav";
  207. }
  208. if(!minstEtTall) {
  209. return "Passordet må inneholdet minst et tall";
  210. }
  211. if(!minstEnLitenBokstav) {
  212. return "Passordet må inneholde minst en liten bokstav";
  213. }
  214. if(!minstEnStorBokstav) {
  215. return "Passordet må inneholdet minst en stor bokstav";
  216. }
  217. return null;
  218. }
  219.  
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement