Advertisement
Guest User

Untitled

a guest
Apr 10th, 2018
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.96 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.         }
  105.        
  106.         return null;
  107.     }
  108.    
  109.     //Helping method for checking that a word only contains letters
  110.     private boolean isLettersOnly(String s) {
  111.         for(int i=0; i<s.length(); i++) {
  112.             if (! Character.isLetter(s.charAt(i))) {
  113.                 return false;
  114.             }
  115.         }
  116.         return true;
  117.     }
  118.    
  119.     //Helping method for checking valid username (email)
  120.     private String checkValidusername(String username) {
  121.         String[] parts = username.split("@");
  122.         if(parts[0].equals("")) {
  123.             return "Please fill in username";
  124.         }
  125.         if(parts.length<2) {
  126.             return "Your username must have a @";
  127.         }
  128.         if (parts.length > 2) {
  129.             return "Your username " + username + " must only have one @";
  130.         }
  131.        
  132.         String[] domainParts = parts[1].split("\\.");
  133.         if (domainParts.length != 2) {
  134.             return "Donamin part of username must consist of two parts, seperatetd by a '.'";
  135.         }
  136.        
  137.         if (! isLettersOrDigitsOnly(domainParts[0])) {
  138.             return "First part of email can only consist of letters and numbers";
  139.         }
  140.         int countryCodeLength = domainParts[1].length();
  141.         if (! (countryCodeLength == 2 || countryCodeLength == 3)) {
  142.             return "Country part of domain must cosist of two or three letters";
  143.         }
  144.         if (! isLettersOnly(domainParts[1])) {
  145.             return "Country part of domain can only consist of letters";
  146.         }
  147.         if (! validCTLDs.contains(domainParts[1])){
  148.             return "Unknown country part in domain";
  149.         }
  150.         return null;
  151.     }
  152.    
  153.     //Helping method for checking that word consist of only letters and numbers
  154.     private boolean isLettersOrDigitsOnly(String s) {
  155.         for(int i=0; i<s.length(); i++) {
  156.             if (! Character.isLetterOrDigit(s.charAt(i))) {
  157.                 return false;
  158.             }
  159.         }
  160.         return true;
  161.     }
  162.    
  163.    
  164.     private String checkValidPhoneNumber(int phoneNumber) {
  165.         if(!((phoneNumber>39999999&&phoneNumber<50000000)||(phoneNumber>89999999 && phoneNumber <100000000))) {
  166.             return "Mobile number must consist of 8 digits and start with 4 or 9";
  167.         }
  168.         return null;
  169.     }
  170.    
  171.     //Checks valid password: length at least 8, at least one small letter, at least one capital letter, and at least one digit
  172.     private String checkValidPassword(String password) {
  173.         if(password.length()<8) {
  174.             return "Password must have have length 8 or more";
  175.         }
  176.        
  177.         //Using booleans for at least one small letter, capital letter, number
  178.         boolean minstEnBokstav=false;
  179.         boolean minstEtTall=false;
  180.         boolean minstEnLitenBokstav=false;
  181.         boolean minstEnStorBokstav=false;
  182.         for(int i=0; i<password.length(); i++) {
  183.             if (Character.isDigit(password.charAt(i))) {
  184.                 minstEtTall=true;
  185.             }
  186.             if (Character.isLetter((password.charAt(i)))){
  187.                 minstEnBokstav=true;
  188.                 if(Character.isUpperCase((password.charAt(i)))){
  189.                     minstEnStorBokstav=true;
  190.                 }
  191.                 if(Character.isLowerCase((password.charAt(i)))) {
  192.                     minstEnLitenBokstav=true;
  193.                 }
  194.             }
  195.         }
  196.         if(!minstEnBokstav) {
  197.             return "Password must at least consist of one small letter";
  198.         }
  199.         if(!minstEtTall) {
  200.             return "Password must consist of at least one number";
  201.         }
  202.         if(!minstEnLitenBokstav) {
  203.             return "Password must consist of at least on small letter";
  204.         }
  205.         if(!minstEnStorBokstav) {
  206.             return "Password must consist of at least on capital letter";
  207.         }
  208.         return null;
  209.     }
  210.    
  211.     //toString for simpler testing with a main class
  212.         public String toString() {
  213.             return "" + this.getName();
  214.         }
  215.        
  216.     public static void main(String[] args) {
  217.         Doctor d=new Doctor("nils arne","erl@msn.com","Ronaldo98",98989898,"stOlaav", false);
  218.         System.out.println(d);
  219.     }
  220.  
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement