package com.h20.course.tp5;

import java.util.GregorianCalendar;
import java.util.Set;

/**
 * This interface describes a phone address entry, which consists on a name,
 * plus a phone number. We assume that the name is the owner of the given phone
 * number.

 * @author fpereira
 *
 */
public interface Entry {
  /**
   * Returns the name of the person who will be called through this phone
   * number.
   *
   * @return a string object.
   */
  String getName();

  /**
   * Returns a string describing the phone number that this object encodes.
   *
   * @return a string object
   */
  String getPhone();

  /**
   * Returns the list of labels that distinguish this entry.
   * @return a list of strings representing labels.
   */
  Set < String > getLabels();

  /**
   * Returns a string that gives a general description of this entry.
   * @return a string value.
   */
  String getDescription();

  /**
   * Returns a string describing the address of this entry.
   * @return a string object.
   */
  String getAddr();

  /**
   * Returns the date of birth of this entry.
   * @return A GregorianCalendar object, with the DAY_OF_MONTH, MONTH and YEAR
   * marking the date of birth of the given entry.
   */
  GregorianCalendar getDateOfBirth();

  /**
   * Adds one label to this entry.
   * @param label the new label that will be marking this entry.
   */
  void addLabel(String label);

  /**
   * This method removes a given label from this entry.
   * @param label the label that will be removed. Nothing will happen if this
   * label is not part of this entry.
   */
  void delLabel(String label);
}

