Advertisement
Guest User

Untitled

a guest
Apr 10th, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.43 KB | None | 0 0
  1.  
  2. package tdt4140.gr1855.app.core;
  3.  
  4. import java.util.Arrays;
  5. import java.util.List;
  6.  
  7. /**
  8. * This is an astract class that will be used by both Doctor and Patient class, since they will share several fields, methods
  9. * and constructor logic
  10. */
  11. public abstract class AbstractUser {
  12. private String username;
  13. private String password;
  14. private String name;
  15. private int phoneNumber;
  16.  
  17. //liste over gyldige landskoder
  18. private List<String> validCTLDs = Arrays.asList("ad", "ae", "af","com", "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");
  19.  
  20. public AbstractUser(String name, String username, String password, int phoneNumber) {
  21. setName(name);
  22. setPhoneNumber(phoneNumber);
  23. setusername(username);
  24. setPassword(password);
  25. }
  26. public int getPhoneNumber() {
  27. return phoneNumber;
  28. }
  29. public void setPhoneNumber(int phoneNumber) {
  30. //calls checkValidName, that returns a String that is null. If there emerges an error, the error message will be returned
  31.  
  32. String error = checkValidPhoneNumber(phoneNumber);
  33.  
  34. //return what went wrong if name is unvalid
  35. if (error != null) {
  36. throw new IllegalArgumentException("Error: " + error);
  37. }
  38. //If name was valid, sets phone number
  39. this.phoneNumber = phoneNumber;
  40. }
  41.  
  42. public void setName(String name) {
  43. //calls checkValidName, that returns a String that is null. If there emerges an error, the error message will be returned
  44. String error = checkValidName(name);
  45.  
  46. //return what went wrong if name is unvalid
  47. if (error != null) {
  48. throw new IllegalArgumentException("Error: " + error);
  49. }
  50. //If name was valid, sets name
  51. this.name = name;
  52. }
  53. public String getUsername() {
  54. return username;
  55. }
  56. public void setusername(String username) {
  57. //calls checkValidusername, that returns a String that is null. If there emerges an error, the error message will be returned
  58.  
  59. String error = checkValidusername(username);
  60.  
  61. //return what went wrong if username is unvalid
  62. if (error != null) {
  63. throw new IllegalArgumentException("Error: " + error);
  64. }
  65.  
  66. this.username = username;
  67. }
  68.  
  69.  
  70. public String getPassword() {
  71. return password;
  72. }
  73.  
  74. //set password
  75. public void setPassword(String password) {
  76. //calls checkValidPassword, that returns a String that is null. If there emerges an error, the error message will be returned
  77.  
  78. String error = checkValidPassword(password);
  79.  
  80. //return what went wrong if password is unvalid
  81. if (error != null) {
  82. throw new IllegalArgumentException("Error: " + error);
  83. }
  84.  
  85. this.password=password;
  86. }
  87. public String getName() {
  88. return name;
  89. }
  90.  
  91. //Helping method for checking valid name
  92. private String checkValidName(String name) {
  93. String[] nameSplitter = name.split(" ");
  94. if (nameSplitter.length <2) {
  95. return "Name must consist of one first name and one last name";
  96. }
  97. for(int i=0; i<nameSplitter.length;i++) {
  98. if(nameSplitter[i].length()<2) {
  99. return "All parts of name must have at least two letters";
  100. }
  101. if(!isLettersOnly(nameSplitter[i])) {
  102. return "Name can only consist of letters";
  103. }
  104. if(!Character.isUpperCase(nameSplitter[i].charAt(0))){
  105. return "All parts of name must start with a capital letter";
  106. }
  107. for(int j=1; j<nameSplitter[i].length();j++) {
  108. if(Character.isUpperCase(nameSplitter[i].charAt(j))){
  109. return "There can't be a capital letter inside a name";
  110. }
  111. }
  112. }
  113.  
  114. return null;
  115. }
  116.  
  117. //Helping method for checking that a word only contains letters
  118. private boolean isLettersOnly(String s) {
  119. for(int i=0; i<s.length(); i++) {
  120. if (! Character.isLetter(s.charAt(i))) {
  121. return false;
  122. }
  123. }
  124. return true;
  125. }
  126.  
  127. //Helping method for checking valid username (email)
  128. private String checkValidusername(String username) {
  129. String[] parts = username.split("@");
  130. if(username.equals("Give me an easter egg")) {
  131. return "Congratulations! An Easter egg has appeared!";
  132. }
  133. if(parts.length==0) {
  134. return "Your username can't just be @";
  135. }
  136. if(username.charAt(username.length()-1)=='@') {
  137. return "Username must be a complete email-adress, and thus can't end with @";
  138. }
  139. if(username.equals("")) {
  140. return "Please fill in username";
  141. }
  142. if(parts.length==1) {
  143. return "Your username must have a @";
  144. }
  145.  
  146. if (parts.length > 2) {
  147. return "Your username " + username + " must only have one @";
  148. }
  149.  
  150. String[] domainParts = parts[1].split("\\.");
  151. if (domainParts.length != 2) {
  152. return "Donamin part of username must consist of two parts, seperatetd by a '.'";
  153. }
  154.  
  155. if (! isLettersOrDigitsOnly(domainParts[0])) {
  156. return "First part of email can only consist of letters and numbers";
  157. }
  158. int countryCodeLength = domainParts[1].length();
  159. if (! (countryCodeLength == 2 || countryCodeLength == 3)) {
  160. return "Country part of domain must cosist of two or three letters";
  161. }
  162. if (! isLettersOnly(domainParts[1])) {
  163. return "Country part of domain can only consist of letters";
  164. }
  165. if (! validCTLDs.contains(domainParts[1])){
  166. return "Unknown country part in domain";
  167. }
  168. return null;
  169. }
  170.  
  171. //Helping method for checking that word consist of only letters and numbers
  172. private boolean isLettersOrDigitsOnly(String s) {
  173. for(int i=0; i<s.length(); i++) {
  174. if (! Character.isLetterOrDigit(s.charAt(i))) {
  175. return false;
  176. }
  177. }
  178. return true;
  179. }
  180.  
  181.  
  182. private String checkValidPhoneNumber(int phoneNumber) {
  183. if(!((phoneNumber>39999999&&phoneNumber<50000000)||(phoneNumber>89999999 && phoneNumber <100000000))) {
  184. return "Mobile number must consist of 8 digits and start with 4 or 9";
  185. }
  186. return null;
  187. }
  188.  
  189. //Checks valid password: length at least 8, at least one small letter, at least one capital letter, and at least one digit
  190. private String checkValidPassword(String password) {
  191. if(password.length()<8) {
  192. return "Password must have have length 8 or more";
  193. }
  194.  
  195. //Using booleans for at least one small letter, capital letter, number
  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 "Password must at least consist of one small letter";
  216. }
  217. if(!minstEtTall) {
  218. return "Password must consist of at least one number";
  219. }
  220. if(!minstEnLitenBokstav) {
  221. return "Password must consist of at least on small letter";
  222. }
  223. if(!minstEnStorBokstav) {
  224. return "Password must consist of at least on capital letter";
  225. }
  226. return null;
  227. }
  228.  
  229. //toString for simpler testing with a main class
  230. public String toString() {
  231. return "" + this.getName();
  232. }
  233.  
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement