
/**
 * class Parques implemented with HashMap.
 * 
 * @author DCC+PRH
 * @version 08.05.2006
 */

import java.util.HashMap;

public class Parques_HM
{
    // instance variables 
    private final int MaxP = 20;
    private HashMap Prqs;
    private int TotPrqs, MaxPrqs;

    /**
     * Constructor for objects of class Parques
     */
    public Parques_HM()
    {
        // initialise instance variables
        this.TotPrqs = 0;
        this.MaxPrqs = MaxP;
        // could be initialized just like : new HashMap
        // this class a
        this.Prqs = new HashMap(this.MaxPrqs);       
    }
    public Parques_HM(int capacid)
    {
        // initialise instance variables
        this.TotPrqs = 0;
        this.MaxPrqs = capacid;
        this.Prqs = new HashMap(this.MaxPrqs);       
    }
    
    /**
     * Insere 1 novo Parque no conjunto dos Parques da UM 
     * 
     * @param  cod   codigo do utente
     * @return     nada 
     */
    // Insere um novo parque
    public void insParque(String id, int cap, char d)
    {   
        if (this.TotPrqs < this.MaxPrqs)
        {
            if (!this.Prqs.containsKey(id)) {
                this.Prqs.put(id,new Parque(id,cap,d));  
                this.TotPrqs++;
            }
            else {
                System.out.println("ERRO: identificador de parque ja existente!");   
            }
          }
        else
        {
           System.out.println("ERRO: nao e possivel inserir mais parques!");   
        }
    }
    
    /**
     * Insere 1 novo Utente Autorizado no conjunto dos Presentes no Parque 
     * Utiliza o metodo "get" que dada a chave a procurar (identificador 
     * de parque) devolve o objecto - parque - respectivo.
     * 
     * @param  u   Utente
     * @return     nada 
     * 
     * 
     */
    public void Entra(String PId, Utente u)
    {   
            ((Parque)Prqs.get(PId)).Entra(u);
    }

    /**
     * Retira 1 Utente do conjunto dos Presentes no Parque 
     * 
     * @param  u   Utente
     * @return     nada 
     */
    public void Sai(String PId, Utente u)
    {
        ((Parque)Prqs.get(PId)).Sai(u);
    }
        
}