com.github.jgility.core.project.Person.java Source code

Java tutorial

Introduction

Here is the source code for com.github.jgility.core.project.Person.java

Source

/*
 * 
 * Copyright (c) 2011 by Jgility Development Group
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Karsten Schulz
 *
 */
package com.github.jgility.core.project;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.validator.EmailValidator;

/**
 * Klasse, welche ein Nutzer bzw. eine Person im Sinne der agilen Softwareentwicklung reprsentiert.
 * Findet Verwendung als Teammitglied des {@link Project} oder ProductOwner als Besitzer des
 * {@link Product}.
 * 
 * @since 21.10.2011
 * @author Karsten Schulz
 * @version 1.0
 */
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {
    private String firstname;

    private String surname;

    private String eMail;

    /**
     * Instanziiert ein Standardisierte Person.<br>
     * <code>firstname = "Default";</code> <br>
     * <code>surname = "Default";</code><br>
     * <code>eMail = "example@mail.com"</code>
     */
    public Person() {
        this("Default", "Default", "example@mail.com");
    }

    /**
     * Instanziiert anhand der Parameter eine Person
     * 
     * @param firstname Vorname der Person
     * @param surname Nachname der Person
     * @param eMail E-Mail-Adresse
     * @throws IllegalArgumentException wird geworfen, wenn einer der Bedingungen nicht zutrifft
     */
    public Person(String firstname, String surname, String eMail) throws IllegalArgumentException {
        super();
        setFirstname(firstname);
        setSurname(surname);
        setEMail(eMail);
    }

    /**
     * Setzt den Vornamen der Person und berprft dessen Wert
     * 
     * @param firstname Vorname der Person.<br>
     *            Es wird berprft ob der erste Buchstabe ein Grobuchstabe ist.<br>
     *            Leere Eingaben oder <code>null</code> ist nicht erlaubt
     * @throws IllegalArgumentException wird geworfen, wenn einer der Bedingungen nicht zutrifft
     */
    public void setFirstname(String firstname) throws IllegalArgumentException {
        if (checkCapitalFirstLetter(firstname)) {
            this.firstname = firstname;
        } else {
            throw new IllegalArgumentException("firstname has to be a capital first letter: " + firstname);
        }
    }

    /**
     * Setzt den Nachnamen und berprft dessen Wert
     * 
     * @param surname Nachname der Person.<br>
     *            Identische Prfung wie fr <code>firstname</code>
     * @see #setFirstname(String)
     * @throws IllegalArgumentException wird geworfen, wenn einer der Bedingungen nicht zutrifft
     */
    public void setSurname(String surname) throws IllegalArgumentException {
        if (checkCapitalFirstLetter(surname)) {
            this.surname = surname;
        } else {
            throw new IllegalArgumentException("surname has to be a capital first lettter: " + surname);
        }
    }

    /*
     * berprft ob der erste Buchstabe Gro geschrieben wurde
     */
    private boolean checkCapitalFirstLetter(String string) {
        return StringUtils.isNotBlank(string) && Character.isUpperCase(string.charAt(0));
    }

    /**
     * Setzt die E-Mail-Adresse und berprft dessen Wert
     * 
     * @param eMail E-Mail-Adresse <br>
     *            muss dem Standard entsprechen. Zum Beispiel: <code>example@mail.com</code>
     * @throws IllegalArgumentException wird geworfen, wenn Parameter keine valide E-Mail-Adresse
     *             ist
     */
    public void setEMail(String eMail) throws IllegalArgumentException {
        EmailValidator emailValidator = EmailValidator.getInstance();
        if (emailValidator.isValid(eMail)) {
            this.eMail = eMail;
        } else {
            throw new IllegalArgumentException("e-mail adress is invalid: " + eMail);
        }
    }

    /**
     * Gibt den Vornamen zurck
     * 
     * @return firstname
     */
    public String getFirstname() {
        return firstname;
    }

    /**
     * Gibt den Nachnamen zurck
     * 
     * @return surname
     */
    public String getSurname() {
        return surname;
    }

    /**
     * Gibt die E-Mail-Adresse zurck
     * 
     * @return eMail
     */
    public String getEMail() {
        return eMail;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Person) {
            Person person = (Person) obj;
            EqualsBuilder builder = new EqualsBuilder();
            builder.append(firstname, person.getFirstname());
            builder.append(surname, person.getSurname());
            builder.append(eMail, person.eMail);
            return builder.isEquals();
        }
        return false;
    }

    @Override
    public int hashCode() {
        HashCodeBuilder builder = new HashCodeBuilder();
        builder.append(firstname);
        builder.append(surname);
        builder.append(eMail);
        return builder.toHashCode();
    }

    @Override
    public String toString() {
        return "Person [firstname=" + firstname + ", surname=" + surname + ", eMail=" + eMail + "]";
    }

}