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;
- /**
- * Denne abstrakte klassen skal brukes i de to subklassene pasient og lege, da
- * de deler en del metoder og felter
- *
- */
- 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", "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);
- setUsername(username);
- setPassword(password);
- setPhoneNumber(phoneNumber);
- }
- public void setPhoneNumber(int phoneNumber) {
- //her kaller vi checkValidName, som returnerer en String som er null hvis det ikke
- //er noe problem, eller dersom det er et problem, så beskriver den problemet
- String error = checkValidPhoneNumber();
- //dersom navnet ikke er gyldig, sier hva som gikk galt
- if (error != null) {
- throw new IllegalArgumentException("Feil: " + error);
- }
- //dersom navnet er gyldig, setter denne
- this.name = name;
- }
- public void setName(String name) {
- //her kaller vi checkValidName, som returnerer en String som er null hvis det ikke
- //er noe problem, eller dersom det er et problem, så beskriver den problemet
- String error = checkValidName(name);
- //dersom navnet ikke er gyldig, sier hva som gikk galt
- if (error != null) {
- throw new IllegalArgumentException("Feil: " + error);
- }
- //dersom navnet er gyldig, setter denne
- this.name = name;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- //her kaller vi checkValidUserName, som returnerer en String som er null hvis det ikke
- //er noe problem, eller dersom det er et problem, så beskriver den problemet
- String error = checkValidUserName(username);
- //dersom brukernavnet ikke er gyldig, sier hva som gikk galt
- if (error != null) {
- throw new IllegalArgumentException("Feil: " + error);
- }
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- //setter passord
- public void setPassword(String password) {
- //her kaller vi checkValidPassword, som returnerer en String som er null hvis det ikke
- //er noe problem, eller dersom det er et problem, så beskriver den problemet
- String error = checkValidPassword(password);
- //dersom brukernavnet ikke er gyldig, sier hva som gikk galt
- if (error != null) {
- throw new IllegalArgumentException("Feil: " + error);
- }
- this.password=password;
- }
- public String getName() {
- return name;
- }
- //Hjelpemetode for å sjekke om navn er gyldig
- private String checkValidName(String name) {
- String[] navnDeler = name.split(" ");
- if (navnDeler.length <1) {
- return "Navn må bestå av et fornavn og etternavn";
- }
- for(int i=0; i<navnDeler.length;i++) {
- if(navnDeler[i].length()<2) {
- return "Alle ord i navnet må ha minst to bokstaver. Dette var ikke tilfellet i ord nr. " + i + " i navnet ditt";
- }
- if(!isLettersOnly(navnDeler[i])) {
- return "Alle ord i navnet må kun bestå av bokstaver. Dette var ikke tilfellet i ord nr. " + i + " i navnet ditt";
- }
- }
- return null;
- }
- //hjelpemetode for å sjekke at det kun er bokstaver i et ord
- private boolean isLettersOnly(String s) {
- for(int i=0; i<s.length(); i++) {
- if (! Character.isLetter(s.charAt(i))) {
- return false;
- }
- }
- return true;
- }
- //hjelpemetode for å sjekke at brukernavnet er gyldig, altså at det er en gyldig e-post adresse
- private String checkValidUserName(String username) {
- String[] parts = username.split("@");
- if (parts.length != 2) {
- return username + " har mer enn en @";
- }
- //den følgende koden var ment til å sjekke at epost inneholdt både fornavn og etternavn. Dette er
- //dog fjernet da vi ikke tror dette bør være et nødvendig krav
- /*
- String[] nameParts = parts[0].split("\\.");
- if (nameParts.length != 2) {
- return "The name part should include two names separated with .";
- }
- int pos = this.name.indexOf(' ');
- String givenName = this.name.substring(0, pos);
- if (! nameParts[0].equalsIgnoreCase(givenName)) {
- return "The first name of email (" + nameParts[0] + ") does not match given name (" + givenName + ")";
- }
- String familyName = this.name.substring(pos + 1);
- if (! nameParts[1].equalsIgnoreCase(familyName)) {
- return "The second name of email (" + nameParts[1] + ") does not match family name (" + familyName + ")";
- }
- */
- String[] domainParts = parts[1].split("\\.");
- if (domainParts.length != 2) {
- return "Domene-delen bør inneholde nøyaktig to deler, og disse bør skilles med .";
- }
- if (! isLettersOrDigitsOnly(domainParts[0])) {
- return "Den første delen av domene-delen kan ikke inneholde et tegn som verken er tall eller bokstav";
- }
- int countryCodeLength = domainParts[1].length();
- if (! (countryCodeLength == 2 || countryCodeLength == 3)) {
- return "Landskoden kan kun inneholde to eller tre tegn";
- }
- if (! isLettersOnly(domainParts[1])) {
- return "Landskoden kan kun inneholde bokstaver";
- }
- if (! validCTLDs.contains(domainParts[1])){
- return "Ukjent landskode";
- }
- return null;
- }
- //Hjelpemetode for å sjekke at et navn kun inneholder bokstaver eller tall
- private boolean isLettersOrDigitsOnly(String s) {
- for(int i=0; i<s.length(); i++) {
- if (! Character.isLetterOrDigit(s.charAt(i))) {
- return false;
- }
- }
- return true;
- }
- //Sjekker gyldig passord: 8 tegn, minst en bokstav, minst et tall, minst en liten bokstav, og minst en stor bokstav
- private String checkValidPassword(String password) {
- if(password.length()<8) {
- return "Passordet må være minst 8 tegn langt";
- }
- //her setter vi booleans for minst en bokstav, minst et tall, minst en liten bokstav og minst en stor bokstav,
- //som vi setter true dersom vi finner dette, og som ellers vil bli false hele veien, noe som vil si at det ikke finnes,
- //og at passordet ikke er gyldig
- 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 "Passordet må inneholde minst en bokstav";
- }
- if(!minstEtTall) {
- return "Passordet må inneholdet minst et tall";
- }
- if(!minstEnLitenBokstav) {
- return "Passordet må inneholde minst en liten bokstav";
- }
- if(!minstEnStorBokstav) {
- return "Passordet må inneholdet minst en stor bokstav";
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement