package eu.eudat.migration.entities; import eu.eudat.migration.utils.JsonTypeConverter; import eu.eudat.migration.utils.OrganizationTypeConverter; import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; import javax.persistence.*; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @Entity @Table(name = "orgs") @SuppressWarnings("JpaAttributeTypeInspection") public class Organization { @Id private Long id; private String name; private String abbreviation; @Column(name = "target_url") private String targetUrl; @Column(name = "created_at") @Temporal(TemporalType.TIMESTAMP) private Date createdAt; @Column(name = "updated_at") @Temporal(TemporalType.TIMESTAMP) private Date updatedAt; @Column(name = "is_other") private Boolean isOther; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "region_id") private Region region; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "language_id") private Language language; @Column(name = "logo_uid") private String logoUid; @Column(name = "logo_name") private String logoName; @Column(name = "contact_email") private String contactEmail; @Column(name = "org_type") @Convert(converter = OrganizationTypeConverter.class) private Type orgType; @Convert(converter = JsonTypeConverter.class) private Map links; @Column(name = "feedback_enabled") private Boolean feedbackEnabled; @Column(name = "feedback_msg") private String feedbackMsg; @Column(name = "contact_name") private String contactName; @Column(name = "helpdesk_email") private String helpdeskEmail; private Boolean managed; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "org_id") @LazyCollection(LazyCollectionOption.FALSE) private List users = new ArrayList<>(); public enum Type { INSTITUTION, FUNDER, ORGANIZATION, RESEARCH_INSTITUTE, PROJECT, SCHOOL } @Override public String toString() { return "Organization{" + "id=" + id + ", name='" + name + '\'' + ", abbreviation='" + abbreviation + '\'' + ", targetUrl='" + targetUrl + '\'' + ", createdAt=" + createdAt + ", updatedAt=" + updatedAt + ", isOther=" + isOther + ", region=" + region + ", language=" + language + ", logoUid='" + logoUid + '\'' + ", logoName='" + logoName + '\'' + ", contactEmail='" + contactEmail + '\'' + ", orgType=" + orgType + ", links='" + links + '\'' + ", feedbackEnabled=" + feedbackEnabled + ", feedbackMsg='" + feedbackMsg + '\'' + ", contactName='" + contactName + '\'' + ", helpdeskEmail='" + helpdeskEmail + '\'' + ", managed=" + managed + '}'; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAbbreviation() { return abbreviation; } public void setAbbreviation(String abbreviation) { this.abbreviation = abbreviation; } public String getTargetUrl() { return targetUrl; } public void setTargetUrl(String targetUrl) { this.targetUrl = targetUrl; } public Date getCreatedAt() { return createdAt; } public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } public Date getUpdatedAt() { return updatedAt; } public void setUpdatedAt(Date updatedAt) { this.updatedAt = updatedAt; } public Boolean getIsOther() { return isOther; } public void setIsOther(Boolean isOther) { this.isOther = isOther; } public Region getRegion() { return region; } public void setRegion(Region regionId) { this.region = regionId; } public Language getLanguage() { return language; } public void setLanguage(Language languageId) { this.language = languageId; } public String getLogoUid() { return logoUid; } public void setLogoUid(String logoUid) { this.logoUid = logoUid; } public String getLogoName() { return logoName; } public void setLogoName(String logoName) { this.logoName = logoName; } public String getContactEmail() { return contactEmail; } public void setContactEmail(String contactEmail) { this.contactEmail = contactEmail; } public Type getOrgType() { return orgType; } public void setOrgType(Type orgType) { this.orgType = orgType; } public Map getLinks() { return links; } public void setLinks(Map links) { this.links = links; } public Boolean getFeedbackEnabled() { return feedbackEnabled; } public void setFeedbackEnabled(Boolean feedbackEnabled) { this.feedbackEnabled = feedbackEnabled; } public String getFeedbackMsg() { return feedbackMsg; } public void setFeedbackMsg(String feedbackMsg) { this.feedbackMsg = feedbackMsg; } public String getContactName() { return contactName; } public void setContactName(String contactName) { this.contactName = contactName; } public String getHelpdeskEmail() { return helpdeskEmail; } public void setHelpdeskEmail(String helpdeskEmail) { this.helpdeskEmail = helpdeskEmail; } public Boolean getManaged() { return managed; } public void setManaged(Boolean managed) { this.managed = managed; } public List getUsers() { return users; } public void setUsers(List users) { this.users = users; } }