package com.eisti.account; import java.time.ZonedDateTime; import javax.persistence.*; import java.time.Instant; import java.util.ArrayList; import java.util.List; import com.eisti.models.Station.Station; import com.fasterxml.jackson.annotation.JsonIgnore; @SuppressWarnings("serial") @Entity @Table(name = "account") public class Account implements java.io.Serializable { @Id @GeneratedValue private Long id; @Column(unique = true) private String email; @JsonIgnore private String password; private String role = "ROLE_USER"; private Instant created; @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) @JoinTable(name = "favorites", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "station_id")) private List<Station> favorites; protected Account() { favorites = new ArrayList<>(); } public Account(String email, String password, String role) { this(); this.email = email; this.password = password; this.role = role; this.created = Instant.now(); } public Long getId() { return id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } public Instant getCreated() { return created; } public List<Station> getFavorites() { return favorites; } public boolean containsStationFromFavorite(Station station){ return favorites.contains(station); } public boolean deleteStationFromFavorite(Station station){ if (containsStationFromFavorite(station)) return this.favorites.remove(station); return false; } public boolean addFavoriteStation(Station station){ return favorites.add(station); } }