package dst.ass1.jpa.model.impl;

import dst.ass1.jpa.model.IAddress;
import dst.ass1.jpa.model.IPerson;
import dst.ass1.jpa.util.Constants;

import javax.persistence.*;

@Entity
@Table(name = Constants.T_PERSON)
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Person implements IPerson {
    @Id
    @GeneratedValue
    private Long id;

    @Column
    private String name;

    @Embedded
    private Address address;

    @Override
    public Long getId() {
        return id;
    }

    @Override
    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public IAddress getAddress() {
        return address;
    }

    @Override
    public void setAddress(IAddress address) {
        if (address instanceof Address) {
            this.address = (Address) address;
        }
    }
}
