Advertisement
Guest User

Untitled

a guest
Mar 5th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.79 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 int getPhoneNumber() {
  30. return phoneNumber;
  31. }
  32. public void setPhoneNumber(int phoneNumber) {
  33. //her kaller vi checkValidName, som returnerer en String som er null hvis det ikke
  34. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  35. String error = checkValidPhoneNumber(phoneNumber);
  36.  
  37. //dersom navnet ikke er gyldig, sier hva som gikk galt
  38. if (error != null) {
  39. throw new IllegalArgumentException("Feil: " + error);
  40. }
  41. //dersom navnet er gyldig, setter denne
  42. this.name = name;
  43. }
  44.  
  45. public void setName(String name) {
  46. //her kaller vi checkValidName, som returnerer en String som er null hvis det ikke
  47. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  48. String error = checkValidName(name);
  49.  
  50. //dersom navnet ikke er gyldig, sier hva som gikk galt
  51. if (error != null) {
  52. throw new IllegalArgumentException("Feil: " + error);
  53. }
  54. //dersom navnet er gyldig, setter denne
  55. this.name = name;
  56. }
  57. public String getUsername() {
  58. return username;
  59. }
  60. public void setUsername(String username) {
  61. //her kaller vi checkValidUserName, som returnerer en String som er null hvis det ikke
  62. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  63.  
  64. String error = checkValidUserName(username);
  65.  
  66. //dersom brukernavnet ikke er gyldig, sier hva som gikk galt
  67. if (error != null) {
  68. throw new IllegalArgumentException("Feil: " + error);
  69. }
  70.  
  71. this.username = username;
  72. }
  73.  
  74.  
  75. public String getPassword() {
  76. return password;
  77. }
  78.  
  79. //setter passord
  80. public void setPassword(String password) {
  81. //her kaller vi checkValidPassword, som returnerer en String som er null hvis det ikke
  82. //er noe problem, eller dersom det er et problem, så beskriver den problemet
  83.  
  84. String error = checkValidPassword(password);
  85.  
  86. //dersom brukernavnet ikke er gyldig, sier hva som gikk galt
  87. if (error != null) {
  88. throw new IllegalArgumentException("Feil: " + error);
  89. }
  90.  
  91. this.password=password;
  92. }
  93. public String getName() {
  94. return name;
  95. }
  96.  
  97. //Hjelpemetode for å sjekke om navn er gyldig
  98. private String checkValidName(String name) {
  99. String[] navnDeler = name.split(" ");
  100. if (navnDeler.length <1) {
  101. return "Navn må bestå av et fornavn og etternavn";
  102. }
  103. for(int i=0; i<navnDeler.length;i++) {
  104. if(navnDeler[i].length()<2) {
  105. return "Alle ord i navnet må ha minst to bokstaver. Dette var ikke tilfellet i ord nr. " + i + " i navnet ditt";
  106. }
  107. if(!isLettersOnly(navnDeler[i])) {
  108. return "Alle ord i navnet må kun bestå av bokstaver. Dette var ikke tilfellet i ord nr. " + i + " i navnet ditt";
  109. }
  110. }
  111.  
  112. return null;
  113. }
  114.  
  115. //hjelpemetode for å sjekke at det kun er bokstaver i et ord
  116. private boolean isLettersOnly(String s) {
  117. for(int i=0; i<s.length(); i++) {
  118. if (! Character.isLetter(s.charAt(i))) {
  119. return false;
  120. }
  121. }
  122. return true;
  123. }
  124.  
  125. //hjelpemetode for å sjekke at brukernavnet er gyldig, altså at det er en gyldig e-post adresse
  126. private String checkValidUserName(String username) {
  127. String[] parts = username.split("@");
  128. if (parts.length != 2) {
  129. return username + " har mer enn en @";
  130. }
  131. //den følgende koden var ment til å sjekke at epost inneholdt både fornavn og etternavn. Dette er
  132. //dog fjernet da vi ikke tror dette bør være et nødvendig krav
  133. /*
  134. String[] nameParts = parts[0].split("\\.");
  135. if (nameParts.length != 2) {
  136. return "The name part should include two names separated with .";
  137. }
  138. int pos = this.name.indexOf(' ');
  139. String givenName = this.name.substring(0, pos);
  140. if (! nameParts[0].equalsIgnoreCase(givenName)) {
  141. return "The first name of email (" + nameParts[0] + ") does not match given name (" + givenName + ")";
  142. }
  143. String familyName = this.name.substring(pos + 1);
  144. if (! nameParts[1].equalsIgnoreCase(familyName)) {
  145. return "The second name of email (" + nameParts[1] + ") does not match family name (" + familyName + ")";
  146. }
  147. */
  148. String[] domainParts = parts[1].split("\\.");
  149. if (domainParts.length != 2) {
  150. return "Domene-delen bør inneholde nøyaktig to deler, og disse bør skilles med .";
  151. }
  152.  
  153. if (! isLettersOrDigitsOnly(domainParts[0])) {
  154. return "Den første delen av domene-delen kan ikke inneholde et tegn som verken er tall eller bokstav";
  155. }
  156. int countryCodeLength = domainParts[1].length();
  157. if (! (countryCodeLength == 2 || countryCodeLength == 3)) {
  158. return "Landskoden kan kun inneholde to eller tre tegn";
  159. }
  160. if (! isLettersOnly(domainParts[1])) {
  161. return "Landskoden kan kun inneholde bokstaver";
  162. }
  163. if (! validCTLDs.contains(domainParts[1])){
  164. return "Ukjent landskode";
  165. }
  166. return null;
  167. }
  168.  
  169. //Hjelpemetode for å sjekke at et navn kun inneholder bokstaver eller tall
  170. private boolean isLettersOrDigitsOnly(String s) {
  171. for(int i=0; i<s.length(); i++) {
  172. if (! Character.isLetterOrDigit(s.charAt(i))) {
  173. return false;
  174. }
  175. }
  176. return true;
  177. }
  178.  
  179.  
  180. private String checkValidPhoneNumber(int phoneNumber) {
  181. if((phoneNumber>39999999&&phoneNumber<50000000)||(phoneNumber>89999999 && phoneNumber <100000000)) {
  182. return "Mobilnummeret må ha lengde 8, og starte på 4 eller 9";
  183. }
  184. return null;
  185. }
  186.  
  187. //Sjekker gyldig passord: 8 tegn, minst en bokstav, minst et tall, minst en liten bokstav, og minst en stor bokstav
  188. private String checkValidPassword(String password) {
  189. if(password.length()<8) {
  190. return "Passordet må være minst 8 tegn langt";
  191. }
  192.  
  193. //her setter vi booleans for minst en bokstav, minst et tall, minst en liten bokstav og minst en stor bokstav,
  194. //som vi setter true dersom vi finner dette, og som ellers vil bli false hele veien, noe som vil si at det ikke finnes,
  195. //og at passordet ikke er gyldig
  196. boolean minstEnBokstav=false;
  197. boolean minstEtTall=false;
  198. boolean minstEnLitenBokstav=false;
  199. boolean minstEnStorBokstav=false;
  200. for(int i=0; i<password.length(); i++) {
  201. if (Character.isDigit(password.charAt(i))) {
  202. minstEtTall=true;
  203. }
  204. if (Character.isLetter((password.charAt(i)))){
  205. minstEnBokstav=true;
  206. if(Character.isUpperCase((password.charAt(i)))){
  207. minstEnStorBokstav=true;
  208. }
  209. if(Character.isLowerCase((password.charAt(i)))) {
  210. minstEnLitenBokstav=true;
  211. }
  212. }
  213. }
  214. if(!minstEnBokstav) {
  215. return "Passordet må inneholde minst en bokstav";
  216. }
  217. if(!minstEtTall) {
  218. return "Passordet må inneholdet minst et tall";
  219. }
  220. if(!minstEnLitenBokstav) {
  221. return "Passordet må inneholde minst en liten bokstav";
  222. }
  223. if(!minstEnStorBokstav) {
  224. return "Passordet må inneholdet minst en stor bokstav";
  225. }
  226. return null;
  227. }
  228.  
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement