package com.theorchard.javaowsassetbulkscript.models;

import java.util.Collection;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonManagedReference;

@Entity
@Table(name="label_status")
public class LabelStatus {

    private LabelStatus() {}

    public LabelStatus(String labelId) {
        this.labelId = labelId;
    }

    @Id
    @Column(name="label_id")
    private String labelId;

    @Column(name="status")
    private String status;

    @Column(name="update_date")
    private Date updateDate;

    @Column(name="message")
    private String message;

    @JsonManagedReference
    @OneToMany(mappedBy = "label_status")
    private Collection<ImportedProduct> importedProducts;

    @OneToOne
    @JoinColumn(name="label_id")
    private LabelMapping labelMapping;

    public LabelMapping getLabelMapping() {
		return labelMapping;
	}

    public int getVendorId() {
    	return labelMapping.getVendorId();
    }
    
	public void setLabelMapping(LabelMapping labelMapping) {
		this.labelMapping = labelMapping;
	}

	public String getLabelId() {
        return labelId;
    }

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

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
        setUpdateDate(new Date());
    }

    public Date getUpdateDate() {
        return updateDate;
    }

    private void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
    	if (message.length() > 255) {
    		message = message.substring(0, 255);
    	}
        this.message = message;
    }

    public Collection<ImportedProduct> getImportedProducts() {
        return importedProducts;
    }

    public void setImportedProducts(Collection<ImportedProduct> importedProducts) {
        this.importedProducts = importedProducts;
    }
}
