package ee.esutoniagodesu.domain.ac.table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence.*;
import java.io.Serializable;
/**
* An externally managed account that is associated with an internal user. For example, an
* account with Google or Facebook.
*/
@Entity
@Table(schema = "ac", name = "user_account_external")
public class UserAccountExternal implements Serializable {
@JsonIgnore
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Enumerated(EnumType.STRING)
@Column(name = "provider", length = 20, nullable = false, insertable = true, updatable = false)
private ExternalProvider provider;
@JsonIgnore
@Column(name = "identifier", length = 50, nullable = false, insertable = true, updatable = false)
private String identifier;
@JsonIgnore
@ManyToOne(optional = false)
@JoinColumn(name = "user_id", referencedColumnName = "id", nullable = false)
private User user;
public UserAccountExternal() {
}
public UserAccountExternal(ExternalProvider provider, String identifier, User user) {
this.provider = provider;
this.identifier = identifier;
this.user = user;
}
public UserAccountExternal(ExternalProvider externalProvider, String externalUserId) {
this.provider = externalProvider;
this.identifier = externalUserId;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public ExternalProvider getProvider() {
return provider;
}
public void setProvider(ExternalProvider provider) {
this.provider = provider;
}
public String getIdentifier() {
return identifier;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserAccountExternal that = (UserAccountExternal) o;
if (id != null ? !id.equals(that.id) : that.id != null) return false;
if (provider != that.provider) return false;
return !(identifier != null ? !identifier.equals(that.identifier) : that.identifier != null);
}
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (provider != null ? provider.hashCode() : 0);
result = 31 * result + (identifier != null ? identifier.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "UserAccountExternal{" +
"id=" + id +
", provider=" + provider +
", identifier='" + identifier + '\'' +
'}';
}
}