package com.bd.movie.domain;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;

/**
 <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Media</b></em>'.
 <!-- end-user-doc -->
 *
 * @generated
 */
public abstract class Media  {

    /** @generated */
    private String title;
    /** @generated */
    private int id;


    /** @generated */
    private Set<Engagement> engagements = new HashSet<Engagement>()
    /** @generated */
    private Set<MediaCharacter> characters = new HashSet<MediaCharacter>()
    /** @generated */
    private Set<PhysicalMedia> physicalMedia = new HashSet<PhysicalMedia>()

    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public  Media() {
    }

    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public String getTitle() {
        return title;
    }    
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public void setTitle(String aTitle) {
        this.title = aTitle;
    }    
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public int getId() {
        return id;
    }    
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public void setId(int aId) {
        this.id = aId;
    }    


    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public Set<Engagement> getEngagements() {
        return engagements;
    }    
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    void setEngagements(Set<Engagement> aEngagements) {
        this.engagements = aEngagements;
    }
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public Set<MediaCharacter> getCharacters() {
        return characters;
    }    
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    void setCharacters(Set<MediaCharacter> aCharacters) {
        this.characters = aCharacters;
    }
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    public Set<PhysicalMedia> getPhysicalMedia() {
        return physicalMedia;
    }    
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
    void setPhysicalMedia(Set<PhysicalMedia> aPhysicalMedia) {
        this.physicalMedia = aPhysicalMedia;
    }

   

    /** @generated */
    private UUID uuid;
    
    /** @generated */
    public UUID getUUID() {
        if (uuid == null) {
            uuid = UUID.randomUUID();
        }
        return uuid;
    }
    
    /** @generated */
    private String getUUIDString() {
        return getUUID().toString();
    }
    
    /** @generated */
    private void setUUIDString(String uuidString) {
        uuid = UUID.fromString(uuidString);
    }
    
    /**
     * @generated
     */
    public boolean equals(Object other) {
        if (this == otherreturn true;
        if (!(other instanceof Media)) return false;

        Media media = (Mediaother;

        return getUUID().equals(media.getUUID());
    }

    /**
     * @generated
     */
    public int hashCode() {
        return getUUID().hashCode();
    }    
   
    /**
     * @generated
     */
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append("Media:");
        sb.append("  title=").append(title).append("\n");
        sb.append("  id=").append(id).append("\n");

        return sb.toString();
    }