/******************************************************************************* * Copyright (c) 2012 Dmitry Tikhomirov. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Dmitry Tikhomirov - initial API and implementation ******************************************************************************/ package org.opensheet.shared.model; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.Entity; import com.extjs.gxt.ui.client.data.BeanModelTag; import javax.persistence.Column; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.opensheet.client.dto.DepartmentDTO; @Entity @Table(name= "department") public class Department implements Serializable, BeanModelTag{ /** * */ private static final long serialVersionUID = 7024158783873211610L; /** * */ @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "owner", referencedColumnName = "id") private User owner; @OneToMany(fetch = FetchType.LAZY) @JoinColumn(name = "department", referencedColumnName = "id") private Set<User> users = new HashSet<User>(0); @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "assignment_department", joinColumns = { @JoinColumn(name = "department") },inverseJoinColumns = { @JoinColumn(name = "assignment") }) private List<Assignment> assignments = new ArrayList<Assignment>(0); @Column(columnDefinition = "tinyint") private Boolean status; private String name; private String note; @Temporal(value=TemporalType.DATE) private Date started; @Temporal(value=TemporalType.DATE) private Date finished; @Temporal(value=TemporalType.DATE) private Date updated; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "branch_id", referencedColumnName = "id") private Branch branch; public Department(Integer id){ this.setId(id); } public Department(){ } public Department(DepartmentDTO department){ this.setId(department.getId()); // this.setOwner(department.getOwner().getUser()); this.setStatus(department.getStatus()); this.setName(department.getName()); this.setNote(department.getNote()); this.setStarted(department.getStarted()); this.setFinished(department.getFinished()); this.setUpdated(department.getUpdated()); } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public User getOwner() { return this.owner; } public void setOwner(User owner) { this.owner = owner; } public Boolean getStatus() { return status; } public void setStatus(Boolean status) { this.status = status; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } public Date getStarted() { return started; } public void setStarted(Date started) { this.started = started; } public Date getFinished() { return finished; } public void setFinished(Date finished) { this.finished = finished; } public Date getUpdated() { return updated; } public void setUpdated(Date updated) { this.updated = updated; } public DepartmentDTO getDepartmentDTO(){ return new DepartmentDTO(this); } public void setUsers(Set<User> users) { this.users = users; } public Set<User> getUsers() { return users; } public List<Assignment> getAssignments() { return assignments; } public void setAssignments(List<Assignment> assignments) { this.assignments = assignments; } public Branch getBranch() { return branch; } public void setBranch(Branch branch) { this.branch = branch; } }