package br.edu.ifba.ads.mediaCenter;

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

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", 100));        
//        
////        System.out.println(media);
//        
//        try {
//			System.out.println("Tempo de armazenamento de " + a1 + ": " + media.getTempoArmazenamento(a1) + "\n");
//		} catch (FragmentoNaoArmazenadoException e) {
//			System.out.println("Fragmento no armazenado: " + e.getId() + "\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));          
//        
//        try {
//			System.out.println("Tempo de armazenamento de " + a2 + ": " + media.getTempoArmazenamento(a2) + "\n");
//		} catch (FragmentoNaoArmazenadoException e) {
//			System.out.println("Fragmento no armazenado: " + e.getId() + "\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());
//        }catch(FragmentoNaoArmazenadoException deupau){
//        	System.out.println("Fragmento no armazenado: " + deupau.getId());
//        }finally{
////	        System.out.println("no finally... Tempo de Recuperacao de " + a1 + ": " + media.getTempoLeitura("S1") + "\n");        
//        }
//        
//        
//	    System.out.println("Finalizando......\n");
//	        
//    }
    
    public void run2(){
        MediaCenter media = new MediaCenter();
        
        media.addServidor(new ServidorBasico("horus", 1024, 0.5, 0.8));

        System.out.println(media);        
        
        
        Arquivo a1 = new Arquivo("A1");
        
        a1.addFragmento(new Fragmento("S1.1", 900));
        a1.addFragmento(new Fragmento("S1.2", 100));
        a1.addFragmento(new Fragmento("S1.3", 300));  

        try {
			System.out.println("Tempo de armazenamento de " + a1 + ": " + media.getTempoArmazenamento(a1) + "\n");
		} catch (ArquivoNaoArmazenadoException ex) {
			System.out.println("ERRO ARMAZENANDO ARQUIVO");
		}        
        
        System.out.println(media);        
        
    }
    
    public static void main(String[] args){
    		(new App()).run2();
	}
    
    
}
