/*
 * Telefono.java
 *
 * Created on 1 marzo 2004, 23.27
 */

package Telefono;

/**
 *
 * @author  stfn
 */
public class Telefono {
    
    private RegistroChiamate reg_chiamate;
    
    private RubricaTelefonica rubrica;
    
    /** Creates a new instance of Telefono */
    //Qui si preferisce allocare levclassi membro all'interno
    //di metodi protetti della classe per consentire
    //di effettuare overriding in eventuali classi
    //che possano essere derivate da questa
    public Telefono() {
        AllocaRubrica();
        AllocaRegChiamate();
    }
    
    protected void AllocaRubrica() {
        rubrica=new RubricaTelefonica();
    }
    
    protected void AllocaRegChiamate() {
        reg_chiamate=new RegistroChiamate();
    }
    
    public void AccodaRubrica(String nome, String numero) {
        //prima di accodare si accerta di trovare ancora
        //un elemento della rubrica non assegnato
        int i;
        for(i=0;i<rubrica.getArr1Length();i++){
            if(rubrica.getArr1(i)==null){
                //ha trovato un elemento non ancora
                //assegnato ed esce dal ciclo for
                break;
            }
        }
        //
        if(i<rubrica.getArr1Length()){
            //puo' accodare un elemento
            rubrica.setNomeNumero(i, nome, numero);
        }
        else{
            System.out.println("Lo spazio della rubrica č esaurito.");
        }
    }
    //come si vede čpossibile usare indifferentemente getArr1Length
    //o getArr2Length dato che normalmente il numero di elementi
    //nei due array č uguale
    public void AccodaRegChiamate(String numero, java.util.Date data) {
        //prima di accodare si accerta di avere ancora
        //un posto libero nel registro
        int i;
        for(i=0;i<reg_chiamate.getArr1Length();i++){
            if(reg_chiamate.getArr1(i)==null){
                //ha trovato un elemento non ancora
                //assegnato ed esce dal ciclo for
                break;
            }
        }
        //
        if(i<reg_chiamate.getArr1Length()){
            reg_chiamate.setArr1_2(i, numero, data);
        }
        else{
            //elimina la registrazione pių vecchia e 
            //scrive al primo posto questa nuova coppia
            for(int j=9;j>0;j--){
                reg_chiamate.setArr1_2(j, reg_chiamate.getArr1(j-1), reg_chiamate.getArr2(j-1));
            }
            //scrive al primo posto degli array la nuova coppia numero-data
            reg_chiamate.setArr1_2(0, numero, data);
        }
    }
    
    public void StampaRegChiamate() {
        int i;
        for(i=0;i<reg_chiamate.getArr1Length();i++){
            if(reg_chiamate.getArr1(i)==null)
                break;
            else
                System.out.println("Chiamato il numero "+ 
                    reg_chiamate.getArr1(i)+ " in data "+
                    reg_chiamate.getArr2(i)
                );
        }
    }
    
    public void StampaRubrica() {
        int i;
        for(i=0;i<rubrica.getArr1Length();i++){
            if(rubrica.getArr1(i)==null)
                break;
            else
                System.out.println("Nome : "+ 
                    rubrica.getArr1(i)+ " numero: "+
                    rubrica.getArr2(i)
                );
        }
    }
    
}
