/* ======================================================
                  Ricardo Martin Manso
                     PFC - UOC 2010
======================================================= */

package backup;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Administrador
 */
public class DescBloquesArchivo {

    private List<DescBloque> descriptores;
    private long ptr;

    public DescBloquesArchivo()
    {
        descriptores=new ArrayList<DescBloque>();
    }

    public int getN()
    {
        return descriptores.size();
    }

    public DescBloque getDescBloque(int i)
    {
        return descriptores.get(i);
    }

    public long write(RandomAccessFile fich)
    {
        try{
            int i;
            int l=descriptores.size();
            fich.writeInt(l);
            for(i=0;i<l;i++) descriptores.get(i).write(fich);
            return 1*4+l*16;
        }
        catch(Exception e) {return 0;}
    }

    public long read(RandomAccessFile fich)
    {
        try{
            int i;
            int l=fich.readInt();
            for(i=0;i<l;i++) descriptores.add(new DescBloque(fich));
            return (1+l)*8;
        }
        catch(Exception e) {return 0;}
    }

    public void addBloque(DescBloque bloque)
    {
        descriptores.add(bloque);
    }

    public void print()
    {
        int i;
        int l=descriptores.size();
        System.out.println("NBloques:"+l);
        for(i=0;i<l;i++) descriptores.get(i).print();
    }

    public long getTamTotal()
    {
        int i;
        long t=0;
        int l=descriptores.size();
        for(i=0;i<l;i++) t+=descriptores.get(i).tam;
        return t;
    }

    /**
     * @return the ptr
     */
    public long getPtr() {
        return ptr;
    }

    /**
     * @param ptr the ptr to set
     */
    public void setPtr(long ptr) {
        this.ptr = ptr;
    }
}
