package com.theorchard.javaowsassetbulkscript.logic;

import java.util.ArrayList;
import java.util.List;

public class DeliveredProduct {

    private String id;
    private String labelId;
    private String upc;
    private List<DeliveredTrack> tracks;
    private String coverAsset;
    private String bookletAsset;
    private boolean error;
    private String productCode;

    public DeliveredProduct(String id, String labelId, String upc) {
        this.id = id;
        this.upc = upc.trim();
        this.labelId = labelId;
        tracks = new ArrayList<>();
        error = false;
    }

    public void addTrack(int set, int pos, String isrc, String asset, String md5) {
        if (!(tracks.stream().filter(track -> track.getIsrc().equals(isrc)).count() > 0)) {
            tracks.add(new DeliveredTrack(set, pos, isrc, asset, md5));
        }
    }

    public List<DeliveredTrack> getTracks() {
        return tracks;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getLabelId() {
        return labelId;
    }

    public void setLabelId(String labelId) {
        this.labelId = labelId;
    }

    public void setTracks(List<DeliveredTrack> tracks) {
        this.tracks = tracks;
    }

    public String getUpc() {
        return upc;
    }

    public void setUpc(String upc) {
        this.upc = upc;
    }

    public void setCoverAsset(String coverAsset) {
        this.coverAsset = coverAsset;
    }

    public String getCoverAsset() {
        return coverAsset;
    }

    public void setBookletAsset(String bookletAsset) {
        this.bookletAsset = bookletAsset;
    }

    public String getBookletAsset() {
        return bookletAsset;
    }

    public DeliveredTrack getTrack(String isrc) {
        for (DeliveredTrack track : tracks) {
            if (track.getIsrc().equals(isrc)) {
                return track;
            }
        }
        return null;
    }

    public void setError(boolean error) {
        this.error = error;
    }

    public boolean getError() {
        return error;
    }

	public String getProductCode() {
		return productCode;
	}

	public void setProductCode(String productCode) {
		this.productCode = productCode;
	}
}
