package devopsdistilled.operp.server.data.entity.commons; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import javax.persistence.CascadeType; import javax.persistence.CollectionTable; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MapKeyColumn; import javax.persistence.MapKeyEnumerated; import javax.persistence.OneToOne; import devopsdistilled.operp.server.data.entity.Entiti; @Entity public class ContactInfo extends Entiti<Long> { private static final long serialVersionUID = 2729474004283929872L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long contactId; @OneToOne(cascade = CascadeType.ALL) private Address address; private String email; @ElementCollection(fetch = FetchType.EAGER) @CollectionTable(name = "PhoneNumber") @MapKeyEnumerated(EnumType.STRING) @MapKeyColumn(name = "phoneType") @Column(name = "phoneNumber") private Map<PhoneType, String> phoneNumbers = new HashMap<>(); public Long getContactId() { return contactId; } public void setContactId(Long contactId) { this.contactId = contactId; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Map<PhoneType, String> getPhoneNumbers() { return phoneNumbers; } public void setPhoneNumbers(Map<PhoneType, String> phoneNumbers) { this.phoneNumbers = phoneNumbers; } @Override public Long id() { return getContactId(); } @Override public String toString() { StringBuilder contactInfo = new StringBuilder(); contactInfo.append("Email: " + getEmail()); contactInfo.append(System.lineSeparator()); contactInfo.append("Phone Numbers"); contactInfo.append(System.lineSeparator()); for (Entry<PhoneType, String> number : getPhoneNumbers().entrySet()) { contactInfo.append("\t" + number.getKey() + ": " + number.getValue()); contactInfo.append(System.lineSeparator()); } contactInfo.append("Address"); contactInfo.append(System.lineSeparator()); contactInfo.append(getAddress()); return contactInfo.toString(); } }