/*
* Tanaguru - Automated webpage assessment
* Copyright (C) 2008-2015 Tanaguru.org
*
* This file is part of Tanaguru.
*
* Tanaguru is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Contact us by mail: tanaguru AT tanaguru DOT org
*/
package org.tanaguru.webapp.entity.user;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import org.tanaguru.webapp.entity.contract.Contract;
import org.tanaguru.webapp.entity.contract.ContractImpl;
import org.tanaguru.webapp.entity.option.OptionElement;
import org.tanaguru.webapp.entity.option.OptionElementImpl;
/**
*
* @author jkowalczyk
*/
@Entity
@Table(name = "TGSI_USER")
@XmlRootElement
public class UserImpl implements User, Serializable {
private static final long serialVersionUID = -6192287245458300859L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id_User")
private Long id;
@Column(name = "Email1")
private String email;
@Column(name = "Password")
private String password;
@Column(name = "Name")
private String name;
@Column(name = "First_Name")
private String firstName;
@Column(name = "Address")
private String address;
@Column(name = "Phone_Number")
private String phoneNumber;
@Column(name = "Identica_Id")
private String identicaId;
@Column(name = "Twitter_Id")
private String twitterId;
@Column(name = "Web1")
private String webUrl1;
@Column(name = "Web2")
private String webUrl2;
@Column(name = "Activated")
private boolean isAccountActivated;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "ROLE_Id_Role")
private RoleImpl role;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private Collection<ContractImpl> contractSet = new LinkedHashSet<>();
@ManyToMany
@JoinTable(name = "TGSI_USER_OPTION_ELEMENT", joinColumns =
@JoinColumn(name = "USER_Id_User"), inverseJoinColumns =
@JoinColumn(name = "OPTION_ELEMENT_Id_Option_Element"))
Set<OptionElementImpl> optionElementSet = new HashSet<>();
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
@Override
public String getEmail1() {
return email;
}
@Override
public void setEmail1(String email) {
this.email = email;
}
@Override
public String getPassword() {
return password;
}
@Override
public void setPassword(String password) {
this.password = password;
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public String getFirstName() {
return firstName;
}
@Override
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Override
public String getAddress() {
return address;
}
@Override
public void setAddress(String address) {
this.address = address;
}
@Override
public String getPhoneNumber() {
return this.phoneNumber;
}
@Override
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
@Override
public String getWebUrl1() {
return this.webUrl1;
}
@Override
public void setWebUrl1(String webUrl1) {
this.webUrl1 = webUrl1;
}
@Override
public String getWebUrl2() {
return this.webUrl2;
}
@Override
public void setWebUrl2(String webUrl2) {
this.webUrl2 = webUrl2;
}
@Override
public String getIdenticaId() {
return this.identicaId;
}
@Override
public void setIdenticaId(String identicaId) {
this.identicaId = identicaId;
}
@Override
public String getTwitterId() {
return this.twitterId;
}
@Override
public void setTwitterId(String twitterId) {
this.twitterId = twitterId;
}
@Override
public Role getRole() {
return this.role;
}
@Override
public void setRole(Role role) {
this.role = (RoleImpl)role;
}
@Override
public void addContract(Contract contract) {
contract.setUser(this);
this.contractSet.add((ContractImpl)contract);
}
@Override
public void addAllContracts(Collection<Contract> contractSet) {
for (Contract contract : contractSet) {
contract.setUser(this);
if (contract instanceof ContractImpl) {
this.contractSet.add((ContractImpl)contract);
}
}
}
@Override
@XmlElementWrapper
@XmlElementRef(type = org.tanaguru.webapp.entity.contract.ContractImpl.class)
public Collection<Contract> getContractSet() {
return (Collection)contractSet;
}
@Override
public boolean isAccountActivated() {
return isAccountActivated;
}
@Override
public void setAccountActivation(boolean value) {
this.isAccountActivated = value;
}
@Override
public Collection<OptionElement> getOptionElementSet() {
return (Collection)this.optionElementSet;
}
@Override
public void addOptionElement(OptionElement option) {
optionElementSet.add((OptionElementImpl)option);
}
@Override
public void addAllOptionElement(Collection<OptionElement> optionElementSet) {
this.optionElementSet = new HashSet<>();
for (OptionElement optionElement : optionElementSet) {
if (optionElement instanceof OptionElementImpl) {
this.optionElementSet.add((OptionElementImpl)optionElement);
}
}
}
@Override
public boolean isRoleAdmin() {
if (this.role.getId() != null) {
if (this.role.getId() == 3) {
return true;
} else {
return false;
}
} else {
return false;
}
}
}