/*
- * Copyright (C) 2015 Roland Haeder
+ * Copyright (C) 2016, 2017 Roland Häder
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*/
package org.mxchange.jcontactsbusiness.department;
+import java.util.Calendar;
import java.util.Objects;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
-import org.mxchange.jcontactsbusiness.BusinessContact;
-import org.mxchange.jcontactsbusiness.CompanyContact;
-import org.mxchange.jcontactsbusiness.branch.BranchOffice;
-import org.mxchange.jcontactsbusiness.branch.CompanyBranchOffice;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import org.mxchange.jcontactsbusiness.basicdata.CompanyBasicData;
+import org.mxchange.jcontactsbusiness.branchoffice.BranchOffice;
+import org.mxchange.jcontactsbusiness.branchoffice.CompanyBranchOffice;
import org.mxchange.jcontactsbusiness.employee.CompanyEmployee;
import org.mxchange.jcontactsbusiness.employee.Employee;
-import org.mxchange.jcontactsbusiness.headquarters.CompanyHeadQuartersData;
-import org.mxchange.jcontactsbusiness.headquarters.HeadQuartersData;
+import org.mxchange.jcontactsbusiness.headquarters.CompanyHeadquartersData;
+import org.mxchange.jusercore.model.user.LoginUser;
+import org.mxchange.jusercore.model.user.User;
+import org.mxchange.jcontactsbusiness.basicdata.BusinessBasicData;
+import org.mxchange.jcontactsbusiness.headquarters.HeadquartersData;
/**
* A POJO for company departments
* <p>
- * @author Roland Haeder
+ * @author Roland Häder<roland@mxchange.org>
*/
@Entity (name = "company_departments")
@Table (name = "company_departments")
-public class CompanyDepartment implements Department, Comparable<Department> {
+@SuppressWarnings ("PersistenceUnitPresent")
+public class CompanyDepartment implements Department {
/**
* Serial number
*/
+ @Transient
private static final long serialVersionUID = 94_835_918_958_717_660L;
/**
- * Connection to company contact
+ * Where this department is located
*/
- @JoinColumn (name = "department_company_id", nullable = false, updatable = false)
- @ManyToOne (targetEntity = CompanyContact.class, cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
- private BusinessContact departmentCompany;
+ @JoinColumn (name = "department_headquarters_id")
+ @OneToOne (targetEntity = CompanyHeadquartersData.class, cascade = CascadeType.ALL)
+ private HeadquartersData departentHeadquarters;
/**
* Where this department is located
private BranchOffice departmentBranchOffice;
/**
- * Where this department is located
+ * Connection to company contact
*/
- @JoinColumn (name = "department_headquarters_id")
- @OneToOne (targetEntity = CompanyHeadQuartersData.class, cascade = CascadeType.ALL)
- private HeadQuartersData departentHeadquarters;
+ @JoinColumn (name = "department_company_id", nullable = false, updatable = false)
+ @ManyToOne (targetEntity = CompanyBasicData.class, cascade = CascadeType.ALL, optional = false)
+ private BusinessBasicData departmentCompany;
+
+ /**
+ * Timestamp when this entry has been created
+ */
+ @Basic (optional = false)
+ @Temporal (TemporalType.TIMESTAMP)
+ @Column (name = "department_entry_created", nullable = false, updatable = false)
+ private Calendar departmentCreated;
/**
* Id number
*/
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
- @Column (name = "department_id", length = 20, nullable = false, updatable = false)
+ @Column (name = "department_id", nullable = false, updatable = false)
private Long departmentId;
/**
* Department lead employee
*/
@JoinColumn (name = "department_lead_id", nullable = false)
- @OneToOne (targetEntity = CompanyEmployee.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+ @OneToOne (targetEntity = CompanyEmployee.class, cascade = CascadeType.ALL)
private Employee departmentLead;
/**
@Column (name = "department_name", length = 100, nullable = false)
private String departmentName;
- @Override
- public int compareTo (final Department department) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
+ /**
+ * User owner instance
+ */
+ @JoinColumn (name = "department_user_id", nullable = false, updatable = false)
+ @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
+ private User departmentUserOwner;
@Override
public boolean equals (final Object object) {
- if (object == null) {
+ if (null == object) {
return false;
- } else if (getClass() != object.getClass()) {
+ } else if (this.getClass() != object.getClass()) {
return false;
}
final Department other = (Department) object;
- if (!Objects.equals(this.getDepartmentCompany(), other.getDepartmentCompany())) {
+ if (!Objects.equals(this.getDepartmentId(), other.getDepartmentId())) {
+ return false;
+ } else if (!Objects.equals(this.getDepartmentCompany(), other.getDepartmentCompany())) {
return false;
} else if (!Objects.equals(this.getDepartmentName(), other.getDepartmentName())) {
return false;
}
@Override
- public HeadQuartersData getDepartentHeadquarters () {
+ public HeadquartersData getDepartentHeadquarters () {
return this.departentHeadquarters;
}
@Override
- public void setDepartentHeadquarters (final HeadQuartersData departentHeadquarters) {
+ public void setDepartentHeadquarters (final HeadquartersData departentHeadquarters) {
this.departentHeadquarters = departentHeadquarters;
}
}
@Override
- public BusinessContact getDepartmentCompany () {
+ public BusinessBasicData getDepartmentCompany () {
return this.departmentCompany;
}
@Override
- public void setDepartmentCompany (final BusinessContact departmentCompany) {
+ public void setDepartmentCompany (final BusinessBasicData departmentCompany) {
this.departmentCompany = departmentCompany;
}
+ @Override
+ @SuppressWarnings ("ReturnOfDateField")
+ public Calendar getDepartmentCreated () {
+ return this.departmentCreated;
+ }
+
+ @Override
+ @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+ public void setDepartmentCreated (final Calendar departmentCreated) {
+ this.departmentCreated = departmentCreated;
+ }
+
@Override
public Long getDepartmentId () {
return this.departmentId;
this.departmentName = departmentName;
}
+ @Override
+ public User getDepartmentUserOwner () {
+ return this.departmentUserOwner;
+ }
+
+ @Override
+ public void setDepartmentUserOwner (final User departmentUserOwner) {
+ this.departmentUserOwner = departmentUserOwner;
+ }
+
@Override
public int hashCode () {
int hash = 5;
+
+ hash = 53 * hash + Objects.hashCode(this.getDepartmentId());
hash = 53 * hash + Objects.hashCode(this.getDepartmentCompany());
hash = 53 * hash + Objects.hashCode(this.getDepartmentName());
+
return hash;
}
+
}