/*
- * Copyright (C) 2015 KLC
+ * Copyright (C) 2016 KLC
*
* 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.headquarters;
+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.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import org.mxchange.jcountry.data.Country;
+import org.mxchange.jcountry.data.CountryData;
+import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.fax.FaxNumber;
+import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
+import org.mxchange.jusercore.model.user.LoginUser;
+import org.mxchange.jusercore.model.user.User;
/**
* A POJO for company headquarts data
* <p>
- * @author Roland Haeder
+ * @author Roland Häder<roland@mxchange.org>
*/
@Entity (name = "company_headquarters")
@Table (name = "company_headquarters")
-public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<HeadQuartersData> {
+@SuppressWarnings ("PersistenceUnitPresent")
+public class CompanyHeadQuartersData implements HeadQuartersData {
/**
* Serial number
*/
+ @Transient
private static final long serialVersionUID = 385_752_948_781_761L;
+ /**
+ * Headquarters' city name
+ */
+ @Basic (optional = false)
+ @Column (name = "headquarters_city", length = 100, nullable = false)
+ private String headquartersCity;
+
+ /**
+ * Headquarter's country code
+ */
+ @JoinColumn (name = "headquarters_country_id", nullable = false)
+ @OneToOne (targetEntity = CountryData.class, cascade = CascadeType.REFRESH, optional = false)
+ private Country headquartersCountry;
+
+ /**
+ * Timestamp when this entry has been created
+ */
+ @Basic (optional = false)
+ @Temporal (TemporalType.TIMESTAMP)
+ @Column (name = "headquarters_entry_created", nullable = false, updatable = false)
+ private Calendar headquartersCreated;
+
+ /**
+ * Headquarters' fax number
+ */
+ @JoinColumn (name = "headquarters_fax_number_id")
+ @OneToOne (targetEntity = FaxNumber.class, cascade = CascadeType.ALL)
+ private DialableFaxNumber headquartersFaxNumber;
+
+ /**
+ * Headquarters' house number
+ */
+ @Basic (optional = false)
+ @Column (name = "headquarters_house_number", length = 4, nullable = false)
+ private Short headquartersHouseNumber;
+
/**
* Id number
*/
@Id
- @Column (name = "headquarters_id", length = 20, nullable = false, unique = true, updatable = false)
@GeneratedValue (strategy = GenerationType.IDENTITY)
+ @Column (name = "headquarters_id", nullable = false, updatable = false)
private Long headquartersId;
+ /**
+ * Headquarters' phone number
+ */
+ @JoinColumn (name = "headquarters_phone_number_id")
+ @OneToOne (targetEntity = LandLineNumber.class, cascade = CascadeType.ALL)
+ private DialableLandLineNumber headquartersPhoneNumber;
+
+ /**
+ * Headquarters' store number (multi-store building only)
+ */
+ @Column (name = "headquarters_store", length = 3)
+ private Short headquartersStore;
+
+ /**
+ * Headquarters' street name
+ */
+ @Basic (optional = false)
+ @Column (name = "headquarters_street", length = 100, nullable = false)
+ private String headquartersStreet;
+
+ /**
+ * Headquarters' suite number
+ */
+ @Column (name = "headquarters_suite_number", length = 4)
+ private Short headquartersSuiteNumber;
+
+ /**
+ * User owner instance
+ */
+ @JoinColumn (name = "headquarters_user_id", nullable = false, updatable = false)
+ @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
+ private User headquartersUserOwner;
+
+ /**
+ * Headquarters' ZIP code
+ */
+ @Basic (optional = false)
+ @Column (name = "headquarters_zip_code", length = 6, nullable = false)
+ private Integer headquartersZipCode;
+
+ @Override
+ public boolean equals (final Object object) {
+ if (null == object) {
+ return false;
+ } else if (this.getClass() != object.getClass()) {
+ return false;
+ }
+
+ final HeadQuartersData other = (HeadQuartersData) object;
+
+ if (!Objects.equals(this.getHeadquartersId(), other.getHeadquartersId())) {
+ return false;
+ } else if (!Objects.equals(this.getHeadquartersCity(), other.getHeadquartersCity())) {
+ return false;
+ } else if (!Objects.equals(this.getHeadquartersCountry(), other.getHeadquartersCountry())) {
+ return false;
+ } else if (!Objects.equals(this.getHeadquartersHouseNumber(), other.getHeadquartersHouseNumber())) {
+ return false;
+ } else if (!Objects.equals(this.getHeadquartersStore(), other.getHeadquartersStore())) {
+ return false;
+ } else if (!Objects.equals(this.getHeadquartersStreet(), other.getHeadquartersStreet())) {
+ return false;
+ } else if (!Objects.equals(this.getHeadquartersSuiteNumber(), other.getHeadquartersSuiteNumber())) {
+ return false;
+ } else if (!Objects.equals(this.getHeadquartersZipCode(), other.getHeadquartersZipCode())) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public String getHeadquartersCity () {
+ return this.headquartersCity;
+ }
+
+ @Override
+ public void setHeadquartersCity (final String headquartersCity) {
+ this.headquartersCity = headquartersCity;
+ }
+
+ @Override
+ public Country getHeadquartersCountry () {
+ return this.headquartersCountry;
+ }
+
+ @Override
+ public void setHeadquartersCountry (final Country headquartersCountry) {
+ this.headquartersCountry = headquartersCountry;
+ }
+
+ @Override
+ @SuppressWarnings ("ReturnOfDateField")
+ public Calendar getHeadquartersCreated () {
+ return this.headquartersCreated;
+ }
+
+ @Override
+ @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+ public void setHeadquartersCreated (final Calendar headquartersCreated) {
+ this.headquartersCreated = headquartersCreated;
+ }
+
@Override
- public int compareTo (final HeadQuartersData headQuartersData) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ public DialableFaxNumber getHeadquartersFaxNumber () {
+ return this.headquartersFaxNumber;
}
+
+ @Override
+ public void setHeadquartersFaxNumber (final DialableFaxNumber headquartersFaxNumber) {
+ this.headquartersFaxNumber = headquartersFaxNumber;
+ }
+
+ @Override
+ public Short getHeadquartersHouseNumber () {
+ return this.headquartersHouseNumber;
+ }
+
+ @Override
+ public void setHeadquartersHouseNumber (final Short headquartersHouseNumber) {
+ this.headquartersHouseNumber = headquartersHouseNumber;
+ }
+
+ @Override
+ public Long getHeadquartersId () {
+ return this.headquartersId;
+ }
+
+ @Override
+ public void setHeadquartersId (final Long headquartersId) {
+ this.headquartersId = headquartersId;
+ }
+
+ @Override
+ public DialableLandLineNumber getHeadquartersPhoneNumber () {
+ return this.headquartersPhoneNumber;
+ }
+
+ @Override
+ public void setHeadquartersPhoneNumber (final DialableLandLineNumber headquartersPhoneNumber) {
+ this.headquartersPhoneNumber = headquartersPhoneNumber;
+ }
+
+ @Override
+ public Short getHeadquartersStore () {
+ return this.headquartersStore;
+ }
+
+ @Override
+ public void setHeadquartersStore (final Short headquartersStore) {
+ this.headquartersStore = headquartersStore;
+ }
+
+ @Override
+ public String getHeadquartersStreet () {
+ return this.headquartersStreet;
+ }
+
+ @Override
+ public void setHeadquartersStreet (final String headquartersStreet) {
+ this.headquartersStreet = headquartersStreet;
+ }
+
+ @Override
+ public Short getHeadquartersSuiteNumber () {
+ return this.headquartersSuiteNumber;
+ }
+
+ @Override
+ public void setHeadquartersSuiteNumber (final Short headquartersSuiteNumber) {
+ this.headquartersSuiteNumber = headquartersSuiteNumber;
+ }
+
+ @Override
+ public User getHeadquartersUserOwner () {
+ return this.headquartersUserOwner;
+ }
+
+ @Override
+ public void setHeadquartersUserOwner (final User headquartersUserOwner) {
+ this.headquartersUserOwner = headquartersUserOwner;
+ }
+
+ @Override
+ public Integer getHeadquartersZipCode () {
+ return this.headquartersZipCode;
+ }
+
+ @Override
+ public void setHeadquartersZipCode (final Integer headquartersZipCode) {
+ this.headquartersZipCode = headquartersZipCode;
+ }
+
+ @Override
+ public int hashCode () {
+ int hash = 7;
+
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersId());
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersCity());
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersCountry());
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersHouseNumber());
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersStore());
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersStreet());
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersSuiteNumber());
+ hash = 47 * hash + Objects.hashCode(this.getHeadquartersZipCode());
+
+ return hash;
+ }
+
}