package br.edu.ifba.ads.mediaCenter;

import br.edu.ifba.ads.mediaCenter.exceptions.BuscavelNaoEncontradoException;

public class App{
    
    public void run(){
        MediaCenter media = new MediaCenter();
        
        ServidorReplicado s1 = new ServidorReplicado("anubis");
        ServidorReplicado s11 = new ServidorReplicado("thot");        
        
        s11.addServidor(new ServidorBasico("osiris", 512, 0.25, 0.25));
        s11.addServidor(new ServidorBasico("isis", 256, 0.1, 0.1));        
        
        s1.addServidor(s11);
        s1.addServidor(new ServidorBasico("bast", 512, 0.05, 0.05));
        
        media.addServidor(new ServidorBasico("horus", 1024, 0.5, 0.8));
        media.addServidor(new ServidorBasico("ra", 1024, 0.4, 1.0));        
        media.addServidor(s1);        
        
        
        Arquivo a1 = new Arquivo("S1");
        
        a1.addFragmento(new Fragmento("S1.1", 100));
        a1.addFragmento(new Fragmento("S1.2", 100));
        a1.addFragmento(new Fragmento("S1.3", 900));        
        
//        System.out.println(media);
        
        System.out.println("Tempo de armazenamento de " + a1 + ": " + media.getTempoArmazenamento(a1) + "\n");
        
//        System.out.println(media);        
        
        Arquivo a2 = new Arquivo("S2");
        a2.addFragmento(new Fragmento("S2.1", 200));
        a2.addFragmento(new Fragmento("S2.2", 200));
        a2.addFragmento(new Fragmento("S2.3", 100));          
        a2.addFragmento(new Fragmento("S2.4", 100));          
        
        System.out.println("Tempo de armazenamento de " + a2 + ": " + media.getTempoArmazenamento(a2) + "\n");
        
//        System.out.println(media);        

        try{
	        System.out.println("Tempo de Recuperacao de " + a2 + ": " + media.getTempoLeitura("S2") + "\n");        
        	System.out.println("Tempo de Recuperacao de A3 (no existe): " + media.getTempoLeitura("OutroArquivo") + "\n");
	        System.out.println("Tempo de Recuperacao de " + a1 + ": " + media.getTempoLeitura("S1") + "\n");
        }catch(BuscavelNaoEncontradoException deupau){
        	System.out.println("Arquivo no existe: " + deupau.getId());
        }finally{
	        System.out.println("no finally... Tempo de Recuperacao de " + a1 + ": " + media.getTempoLeitura("S1") + "\n");        
        }
        
        
	    System.out.println("Finalizando......\n");
	        
    }    
    
    public static void main(String[] args) throws Exception {
    		(new App()).run();
	}
    
    
}
