<?php
/*PLEASE DO NOT EDIT THIS CODE*/
/*This code was generated using the UMPLE 1.15.0.1751 modeling language!*/

class Student
{

  //------------------------
  // MEMBER VARIABLES
  //------------------------

  //Student Attributes
  private $number;

  //Student Associations
  public $mentor; //until PHP 5.3 (setAccessible)

  //------------------------
  // CONSTRUCTOR
  //------------------------

  public function __construct($aNumber)
  {
    $this->number = $aNumber;
  }

  //------------------------
  // INTERFACE
  //------------------------

  public function setNumber($aNumber)
  {
    $wasSet = false;
    $this->number = $aNumber;
    $wasSet = true;
    return $wasSet;
  }

  public function getNumber()
  {
    return $this->number;
  }

  public function getMentor()
  {
    return $this->mentor;
  }

  public function hasMentor()
  {
    $has = $this->mentor != null;
    return $has;
  }

  public function setMentor($aMentor)
  {
    //
    // This source of this source generation is association_SetOptionalOneToMandatoryMany.jet
    // This set file assumes the generation of a maximumNumberOfXXX method does not exist because 
    // it's not required (No upper bound)
    //   

    $wasSet = false;
    
    $existingMentor = $this->mentor;

    if ($existingMentor == null)
    {
      if ($aMentor != null)
      {
        if ($aMentor->addStudent($this))
        {
          $existingMentor = $aMentor;
          $wasSet = true;
        }
      }
    } 
    else if ($existingMentor != null)
    {
      if ($aMentor == null)
      {
        if ($existingMentor->minimumNumberOfStudents() < $existingMentor->numberOfStudents())
        {
          $existingMentor->removeStudent($this);
          $existingMentor = $aMentor;  // aMentor == null
          $wasSet = true;
        }
      } 
      else
      {
        if ($existingMentor->minimumNumberOfStudents() < $existingMentor->numberOfStudents())
        {
          $existingMentor->removeStudent($this);
          $aMentor->addStudent($this);
          $existingMentor = $aMentor;
          $wasSet = true;
        }
      }
    }
    if ($wasSet)
    {
      $mentor = $existingMentor;
    }
    return $wasSet;
  }

  public function equals($compareTo)
  {
    return $this == $compareTo;
  }

  public function delete()
  {
    if ($this->mentor != null)
    {
      if ($this->mentor->numberOfStudents() <= 5)
      {
        $this->mentor->delete();
      }
      else
      {
        $this->mentor->removeStudent($this);
      }
    }
  }

}
?>