/*
 * Copyright (c) 2004 Your Corporation. All Rights Reserved.
 */
package org.skife.gear;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class Student
{
    private Integer id;
    private String name;
    private String phone;
    private String idNumber;
    private String address;
    private Set equipment = new HashSet();

    public Student()
    {

    }

    public Student(final String name, final String idNumber, final String phone, final String address)
    {
        this.name = name;
        this.phone = phone;
        this.idNumber = idNumber;
        this.address = address;
    }

    public Student(final int id, final String name, final String idNumber, final String phone, final String address)
    {
        this.id = new Integer(id);
        this.name = name;
        this.phone = phone;
        this.idNumber = idNumber;
        this.address = address;
    }

    public Collection getEquipment()
    {
        return Collections.unmodifiableSet(equipment);
    }

    public void checkOut(final Equipment equip)
    {
        if (this.equipment.contains(equip)) return;
        equip.checkOut(this);
        this.equipment.add(equip);
    }

    public void checkIn(final Equipment eqip)
    {
        if (!this.equipment.contains(eqip)) return;
        this.equipment.remove(eqip);
        eqip.checkIn();
    }

    public Integer getId()
    {
        return id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(final String name)
    {
        this.name = name;
    }

    public String getPhone()
    {
        return phone;
    }

    public void setPhone(final String phone)
    {
        this.phone = phone;
    }

    public String getIdNumber()
    {
        return idNumber;
    }

    public void setIdNumber(final String idNumber)
    {
        this.idNumber = idNumber;
    }

    public String getAddress()
    {
        return address;
    }

    public void setAddress(final String address)
    {
        this.address = address;
    }

    public boolean equals(Object o)
    {
        if (this == o) return true;
        if (!(o instanceof Student)) return false;

        final Student student = (Student) o;

        if (id != null ? !id.equals(student.id) : student.id != null) return false;

        return true;
    }

    public int hashCode()
    {
        return (id != null ? id.hashCode() : 0);
    }

    public String toString()
    {
        return "Student[name: " + name + "]";
    }
}
