/*******************************************************************************
 * Copyright (c) 2011-2012 Oracle. All rights reserved.
 * This program and the accompanying materials are made available under the 
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
 * which accompanies this distribution. 
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at 
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * Contributors:
 *      dclarke - Bug 361016: Future Versions Examples
 ******************************************************************************/
package model;

import java.sql.Date;
import java.util.Map;
import java.util.Set;

import temporal.TemporalEntity;

public interface Person extends TemporalEntity<Person> {

    String getName();

    void setName(String name);

    Address getAddress();

    void setAddress(Address address);

    Map<String, Phone> getPhones();

    Phone getPhone(String type);

    Phone addPhone(Phone phone);

    Phone addPhone(String type, String number);

    Phone removePhone(String type);

    Map<String, PersonHobby> getPersonHobbies();

    PersonHobby addHobby(Hobby hobby, long asOf);
    
    PersonHobby addHobby(PersonHobby personHobby);

    PersonHobby removeHobby(Hobby hobby, long asOf, long current);

    Set<String> getNicknames();

    boolean addNickname(String name);

    boolean removeNickname(String name);

    Date getDateOfBirth();

    void setDateOfBirth(Date dateOfBirth);

    String getEmail();

    void setEmail(String email);

}
