
/**
 * Parque em que a lista de Presentes e implmentado
 * com a classe Vector (cresce dinamicamente)
 * 
 * @author DCC+PRH
 * @version 02.05.2006
 */

import java.util.*;

public class Parque_Vector
{
    // instance variables
    private final int MaxP = 100;
    
    private String PId; 
    private int Capacid;
    private char Destino; //F-funcionario;S-staff(F+C);A-aluno;T-todos(F+C+A)
    private int In;
    private int Out;
    private int Ocupa;
    private Vector Presentes;

    /**
     * Constructor for objects of class Parque
     */
    public Parque_Vector()
    {
        // initialise instance variables
    this.PId = "";  
    this.Capacid = MaxP;
    this.Destino = 'T'; 
    this.In = 0;
    this.Out = 0;
    this.Ocupa = 0;
    this.Presentes = new Vector();
    }
    public Parque_Vector(String id, int cap, char d)
    {
        // initialise instance variables
    this.PId = id;  
    this.Capacid = cap;
    this.Destino = d; 
    this.In = 0;
    this.Out = 0;
    this.Ocupa = 0;
    this.Presentes = new Vector(this.Capacid);
    }

    /**
     * Set and Get Attribute values 
     * 
     */
    // Set attributes (instance variables)
    public void setId(String id)
    {
        this.PId = id;
    }
    public void setCapacid(int cap)
    {
        this.Capacid = cap;
        this.Presentes.setSize(this.Capacid);
    }
    public void setDestino(char d)
    {
        this.Destino = d;
    }
    public void reset()
    {
        this.In = 0;
        this.Out = 0;
        this.Ocupa = 0;
        this.Presentes = new Vector(this.Capacid);
    }
    // Get Attributes (the value of  instance variables)
    public String getId()
    {
        return this.PId;
    }
    public int getCapacid()
    {
        return this.Capacid;
    }
    public char getDestinatarios()
    {
        return this.Destino;
    }
    public int getEntradas()
    {
        return this.In;
    }
    public int getSaidas()
    {
        return this.Out;
    }
    public int getOcupacao()
    {
        return this.Ocupa;
    }

    /**
     * Insere 1 novo Utente Autorizado no conjunto dos Presentes no Parque 
     * 
     * @param  u   Utente
     * @return     nada 
     */
    public void Entra(Utente u)
    {
        if (this.Presentes.contains(u)) {
            System.out.println("Erro: Entrada proibida! Utente ja presente no parque!");
        }
        else {
            this.Presentes.add(u);
            // this.Presentes.insertElementAt(u,this.Ocupa); 
            this.Ocupa++;           
            this.In++;
        }
    }
    
    /**
     * Retira 1 Utente do conjunto dos Presentes no Parque 
     * 
     * @param  u   Utente
     * @return     nada 
     */
    public void Sai(Utente u)
    {
        int n;
            
        n = this.Presentes.indexOf(u);
        this.Presentes.removeElementAt(n);
        this.Ocupa--;           
        this.Out++;
    }
    
    /**
     * Lista todos os Atributos do Parque 
     * 
     * @param      não tem
     * @return     nada 
     */     
    // Print all the Obj Attributes
    public void mostraParque()
    {
        System.out.println("Identificador do Parque e: "+this.PId);

    }   
}
 