package be.msyben.vinylManager.entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * Cette classe représente une collection.
 *
 * @author Mathieu Syben
 *
 */
public class Collection implements Serializable, Cloneable {

    /**
     * uid
     */
    private static final long serialVersionUID = -6753627607839068275l;
    /**
     * Version de la collection
     */
    private int version = 5;
    private Long lastId = 0L;
    /**
     * Représente les albums de la collection
     */
    private List<Album> albums;

    /**
     * Creates a new instance of Collection
     */
    public Collection() {
        albums = new ArrayList<Album>();
    }

    /**
     * Récupère la liste des albums
     *
     * @return la liste des albums
     */
    public List<Album> getAlbums() {
        return albums;
    }

    /**
     * Récupère la version de la collection.
     *
     * @return la version de la collection.
     */
    public int getVersion() {
        return version;
    }

    /**
     * Sette la version de la collection.
     *
     * @param version la version de la collection.
     */
    public void setVersion(int version) {
        this.version = version;
    }

    /**
     * Récupère le dernier id donné pour un album.
     * @return le dernier id donné pour un album.
     */
    public Long getLastId() {
        return lastId;
    }

    /**
     * Sette le dernier id donné pour un album.
     * @param lastId le dernier id donné pour un album.
     */
    public void setLastId(Long lastId) {
        this.lastId = lastId;
    }
    
    

    @Override
    public Collection clone() throws CloneNotSupportedException {

        Collection clone = (Collection) super.clone();
        clone.albums = new ArrayList<Album>();
        for (Album a : getAlbums()) {
            clone.getAlbums().add(a.clone());
        }
        return clone;

    }
}
