Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tdt4140.gr1855.app.core;
- import java.util.Arrays;
- import java.util.List;
- /**
- * This is an astract class that will be used by both Doctor and Patient class, since they will share several fields, methods
- * and constructor logic
- */
- public abstract class AbstractUser {
- private String username;
- private String password;
- private String name;
- private int phoneNumber;
- //liste over gyldige landskoder
- 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");
- public AbstractUser(String name, String username, String password, int phoneNumber) {
- setName(name);
- setPhoneNumber(phoneNumber);
- setusername(username);
- setPassword(password);
- }
- public int getPhoneNumber() {
- return phoneNumber;
- }
- public void setPhoneNumber(int phoneNumber) {
- //calls checkValidName, that returns a String that is null. If there emerges an error, the error message will be returned
- String error = checkValidPhoneNumber(phoneNumber);
- //return what went wrong if name is unvalid
- if (error != null) {
- throw new IllegalArgumentException("Error: " + error);
- }
- //If name was valid, sets phone number
- this.phoneNumber = phoneNumber;
- }
- public void setName(String name) {
- //calls checkValidName, that returns a String that is null. If there emerges an error, the error message will be returned
- String error = checkValidName(name);
- //return what went wrong if name is unvalid
- if (error != null) {
- throw new IllegalArgumentException("Error: " + error);
- }
- //If name was valid, sets name
- this.name = name;
- }
- public String getUsername() {
- return username;
- }
- public void setusername(String username) {
- //calls checkValidusername, that returns a String that is null. If there emerges an error, the error message will be returned
- String error = checkValidusername(username);
- //return what went wrong if username is unvalid
- if (error != null) {
- throw new IllegalArgumentException("Error: " + error);
- }
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- //set password
- public void setPassword(String password) {
- //calls checkValidPassword, that returns a String that is null. If there emerges an error, the error message will be returned
- String error = checkValidPassword(password);
- //return what went wrong if password is unvalid
- if (error != null) {
- throw new IllegalArgumentException("Error: " + error);
- }
- this.password=password;
- }
- public String getName() {
- return name;
- }
- //Helping method for checking valid name
- private String checkValidName(String name) {
- String[] nameSplitter = name.split(" ");
- if (nameSplitter.length <2) {
- return "Name must consist of one first name and one last name";
- }
- for(int i=0; i<nameSplitter.length;i++) {
- if(nameSplitter[i].length()<2) {
- return "All parts of name must have at least two letters";
- }
- if(!isLettersOnly(nameSplitter[i])) {
- return "Name can only consist of letters";
- }
- }
- return null;
- }
- //Helping method for checking that a word only contains letters
- private boolean isLettersOnly(String s) {
- for(int i=0; i<s.length(); i++) {
- if (! Character.isLetter(s.charAt(i))) {
- return false;
- }
- }
- return true;
- }
- //Helping method for checking valid username (email)
- private String checkValidusername(String username) {
- String[] parts = username.split("@");
- if(parts[0].equals("")) {
- return "Please fill in username";
- }
- if(parts.length<2) {
- return "Your username must have a @";
- }
- if (parts.length > 2) {
- return "Your username " + username + " must only have one @";
- }
- String[] domainParts = parts[1].split("\\.");
- if (domainParts.length != 2) {
- return "Donamin part of username must consist of two parts, seperatetd by a '.'";
- }
- if (! isLettersOrDigitsOnly(domainParts[0])) {
- return "First part of email can only consist of letters and numbers";
- }
- int countryCodeLength = domainParts[1].length();
- if (! (countryCodeLength == 2 || countryCodeLength == 3)) {
- return "Country part of domain must cosist of two or three letters";
- }
- if (! isLettersOnly(domainParts[1])) {
- return "Country part of domain can only consist of letters";
- }
- if (! validCTLDs.contains(domainParts[1])){
- return "Unknown country part in domain";
- }
- return null;
- }
- //Helping method for checking that word consist of only letters and numbers
- private boolean isLettersOrDigitsOnly(String s) {
- for(int i=0; i<s.length(); i++) {
- if (! Character.isLetterOrDigit(s.charAt(i))) {
- return false;
- }
- }
- return true;
- }
- private String checkValidPhoneNumber(int phoneNumber) {
- if(!((phoneNumber>39999999&&phoneNumber<50000000)||(phoneNumber>89999999 && phoneNumber <100000000))) {
- return "Mobile number must consist of 8 digits and start with 4 or 9";
- }
- return null;
- }
- //Checks valid password: length at least 8, at least one small letter, at least one capital letter, and at least one digit
- private String checkValidPassword(String password) {
- if(password.length()<8) {
- return "Password must have have length 8 or more";
- }
- //Using booleans for at least one small letter, capital letter, number
- boolean minstEnBokstav=false;
- boolean minstEtTall=false;
- boolean minstEnLitenBokstav=false;
- boolean minstEnStorBokstav=false;
- for(int i=0; i<password.length(); i++) {
- if (Character.isDigit(password.charAt(i))) {
- minstEtTall=true;
- }
- if (Character.isLetter((password.charAt(i)))){
- minstEnBokstav=true;
- if(Character.isUpperCase((password.charAt(i)))){
- minstEnStorBokstav=true;
- }
- if(Character.isLowerCase((password.charAt(i)))) {
- minstEnLitenBokstav=true;
- }
- }
- }
- if(!minstEnBokstav) {
- return "Password must at least consist of one small letter";
- }
- if(!minstEtTall) {
- return "Password must consist of at least one number";
- }
- if(!minstEnLitenBokstav) {
- return "Password must consist of at least on small letter";
- }
- if(!minstEnStorBokstav) {
- return "Password must consist of at least on capital letter";
- }
- return null;
- }
- //toString for simpler testing with a main class
- public String toString() {
- return "" + this.getName();
- }
- public static void main(String[] args) {
- Doctor d=new Doctor("nils arne","erl@msn.com","Ronaldo98",98989898,"stOlaav", false);
- System.out.println(d);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement