--- /dev/null
+/*
+ * Copyright (C) 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
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcontactsbusiness.events.opening_time.added;
+
+import java.io.Serializable;
+import org.mxchange.jcontactsbusiness.model.opening_time.OpeningTime;
+
+/**
+ * An interface for events being triggered when a opening time has been added.
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public interface ObservableOpeningTimeAddedEvent extends Serializable {
+
+ /**
+ * Getter for opening time instance
+ * <p>
+ * @return OpeningTime instance
+ */
+ OpeningTime getOpeningTime ();
+
+}
--- /dev/null
+/*
+ * Copyright (C) 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
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcontactsbusiness.events.opening_time.added;
+
+import java.text.MessageFormat;
+import org.mxchange.jcontactsbusiness.model.opening_time.OpeningTime;
+
+/**
+ * An event being fired when a openingTime has been added
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public class OpeningTimeAddedEvent implements ObservableOpeningTimeAddedEvent {
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 572_367_561_659_111L;
+
+ /**
+ * Branch office instance being added
+ */
+ private final OpeningTime openingTime;
+
+ /**
+ * Constructor with opening time instance
+ * <p>
+ * @param openingTime Branch office instance
+ * @throws NullPointerException If the parameter is null
+ */
+ public OpeningTimeAddedEvent (final OpeningTime openingTime) {
+ // Check parameter
+ if (null == openingTime) {
+ // Throw NPE
+ throw new NullPointerException("openingTime is null"); //NOI18N
+ } else if (openingTime.getOpeningId() == null) {
+ // Throw NPE again
+ throw new NullPointerException("openingTime.openingId is null"); //NOI18N
+ } else if (openingTime.getOpeningId() < 1) {
+ // Throw NPE again
+ throw new NullPointerException(MessageFormat.format("openingTime.openingId={0} is not valid", openingTime.getOpeningId())); //NOI18N
+ }
+
+ // Set it
+ this.openingTime = openingTime;
+ }
+
+ @Override
+ public OpeningTime getOpeningTime () {
+ return this.openingTime;
+ }
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcontactsbusiness.exceptions.opening_time;
+
+import java.text.MessageFormat;
+
+/**
+ * An exception thrown when an opening time (entity) has not found.
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public class OpeningTimeNotFoundException extends Exception {
+
+ /**
+ * Serial number
+ */
+ private static final long serialVersionUID = 23_759_801_876_416_573L;
+
+ /**
+ * Constructor with opening time id
+ * <p>
+ * @param openingId Opening time id
+ */
+ public OpeningTimeNotFoundException (final Long openingId) {
+ // Call super constructor with message and cause
+ super(MessageFormat.format("Opening time with id {0} was not found.", openingId)); //NOI18N
+ }
+
+ /**
+ * Constructor with opening time id and causing exception
+ * <p>
+ * @param openingId Opening time id
+ * @param cause Causing exception
+ */
+ public OpeningTimeNotFoundException (final Long openingId, final Throwable cause) {
+ // Call super constructor with message and cause
+ super(MessageFormat.format("Opening time with id {0} was not found.", openingId), cause); //NOI18N
+ }
+
+}
+++ /dev/null
-/*
- * 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
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jcontactsbusiness.exceptions.opening_times;
-
-import java.text.MessageFormat;
-
-/**
- * An exception thrown when an opening time (entity) has not found.
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public class OpeningTimesNotFoundException extends Exception {
-
- /**
- * Serial number
- */
- private static final long serialVersionUID = 23_759_801_876_416_573L;
-
- /**
- * Constructor with opening time id
- * <p>
- * @param openingId Opening time id
- */
- public OpeningTimesNotFoundException (final Long openingId) {
- // Call super constructor with message and cause
- super(MessageFormat.format("Opening time with id {0} was not found.", openingId)); //NOI18N
- }
-
- /**
- * Constructor with opening time id and causing exception
- * <p>
- * @param openingId Opening time id
- * @param cause Causing exception
- */
- public OpeningTimesNotFoundException (final Long openingId, final Throwable cause) {
- // Call super constructor with message and cause
- super(MessageFormat.format("Opening time with id {0} was not found.", openingId), cause); //NOI18N
- }
-
-}
import java.util.List;
import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
import org.mxchange.jcontactsbusiness.model.employee.Employee;
-import org.mxchange.jcontactsbusiness.model.opening_times.OpeningTimes;
import org.mxchange.jcountry.model.data.Country;
import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
import org.mxchange.jusercore.model.user.User;
+import org.mxchange.jcontactsbusiness.model.opening_time.OpeningTime;
/**
* A POJI for branch offices
* <p>
* @return Opening times
*/
- List<OpeningTimes> getBranchOpeningTimes ();
+ List<OpeningTime> getBranchOpeningTimes ();
/**
* Setter for opening times for this branch office
* <p>
* @param branchOpeningTimes Opening times
*/
- void setBranchOpeningTimes (final List<OpeningTimes> branchOpeningTimes);
+ void setBranchOpeningTimes (final List<OpeningTime> branchOpeningTimes);
/**
* Getter for branch office owning employee
import org.mxchange.jcontactsbusiness.model.basicdata.CompanyBasicData;
import org.mxchange.jcontactsbusiness.model.employee.CompanyEmployee;
import org.mxchange.jcontactsbusiness.model.employee.Employee;
-import org.mxchange.jcontactsbusiness.model.opening_times.BusinessOpeningTimes;
-import org.mxchange.jcontactsbusiness.model.opening_times.OpeningTimes;
+import org.mxchange.jcontactsbusiness.model.opening_time.BusinessOpeningTime;
+import org.mxchange.jcontactsbusiness.model.opening_time.OpeningTime;
import org.mxchange.jcountry.model.data.Country;
import org.mxchange.jcountry.model.data.CountryData;
import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
* Opening times for this branch office
*/
@JoinTable (name = "branch_opening_times", joinColumns = @JoinColumn(name = "branch_opening_id", referencedColumnName = "branch_id"), inverseJoinColumns = @JoinColumn(name = "opening_branch_id", referencedColumnName = "opening_times_id"))
- @ManyToMany (targetEntity = BusinessOpeningTimes.class, cascade = CascadeType.REFRESH)
- private List<OpeningTimes> branchOpeningTimes;
+ @ManyToMany (targetEntity = BusinessOpeningTime.class, cascade = CascadeType.REFRESH)
+ private List<OpeningTime> branchOpeningTimes;
/**
* Reference to branch office owner (for example some franchise supermarkets
}
@Override
- public List<OpeningTimes> getBranchOpeningTimes () {
+ @SuppressWarnings ("ReturnOfCollectionOrArrayField")
+ public List<OpeningTime> getBranchOpeningTimes () {
return this.branchOpeningTimes;
}
@Override
- public void setBranchOpeningTimes (final List<OpeningTimes> branchOpeningTimes) {
+ @SuppressWarnings ("AssignmentToCollectionOrArrayFieldFromParameter")
+ public void setBranchOpeningTimes (final List<OpeningTime> branchOpeningTimes) {
this.branchOpeningTimes = branchOpeningTimes;
}
--- /dev/null
+/*
+ * 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
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcontactsbusiness.model.opening_time;
+
+import java.util.Date;
+import java.util.Objects;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import org.mxchange.jcontactsbusiness.model.opening_time.dayofweek.DayOfTheWeek;
+
+/**
+ * A POJO for business opening hours
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@Entity (name = "company_opening_times")
+@Table (name = "company_opening_times")
+@NamedQueries (
+ {
+ @NamedQuery (name = "AllOpeningTimes", query = "SELECT ot FROM company_opening_times AS ot ORDER BY ot.openingId ASC"),
+ @NamedQuery (name = "SearchOpeningTimesById", query = "SELECT ot FROM company_opening_times AS ot WHERE ot.openingId = :openingId")
+ }
+)
+@SuppressWarnings ("PersistenceUnitPresent")
+public class BusinessOpeningTime implements OpeningTime {
+
+ /**
+ * Serial number
+ */
+ @Transient
+ private static final long serialVersionUID = 19_578_871_756_871L;
+
+ /**
+ * When this opening time was created
+ */
+ @Basic(optional = false)
+ @Column(name = "opening_times_created", nullable = false, updatable = false)
+ @Temporal (TemporalType.TIMESTAMP)
+ private Date openingCreated;
+
+ /**
+ * Ending day of opening hours (if applyable)
+ */
+ @Basic (optional = false)
+ @Column (name = "opening_times_end_day", nullable = false)
+ @Enumerated (EnumType.STRING)
+ private DayOfTheWeek openingEndDay;
+
+ /**
+ * Ending time (hh:mm)
+ */
+ @Basic (optional = false)
+ @Column (name = "opening_times_end_time", nullable = false)
+ @Temporal (TemporalType.TIME)
+ private Date openingEndTime;
+
+ /**
+ * Id number
+ */
+ @Id
+ @Column (name = "opening_times_id", nullable = false, updatable = false)
+ @GeneratedValue (strategy = GenerationType.IDENTITY)
+ private Long openingId;
+
+ /**
+ * Starting day of opening times
+ */
+ @Basic (optional = false)
+ @Column (name = "opening_times_start_day", nullable = false)
+ @Enumerated (EnumType.STRING)
+ private DayOfTheWeek openingStartDay;
+
+ /**
+ * Starting time (hh:mm)
+ */
+ @Basic (optional = false)
+ @Column (name = "opening_times_start_time", nullable = false)
+ @Temporal (TemporalType.TIME)
+ private Date openingStartTime;
+
+ /**
+ * Default constructor
+ */
+ public BusinessOpeningTime () {
+ }
+
+ /**
+ * Constructor with all required fields except created timestamp
+ * <p>
+ * @param openingEndDay End day
+ * @param openingEndTime End time
+ * @param openingStartDay Start day
+ * @param openingStartTime Start time
+ */
+ public BusinessOpeningTime (final DayOfTheWeek openingEndDay, final Date openingEndTime, final DayOfTheWeek openingStartDay, final Date openingStartTime) {
+ // Set all fields
+ this.openingEndDay = openingEndDay;
+ this.openingEndTime = openingEndTime;
+ this.openingStartDay = openingStartDay;
+ this.openingStartTime = openingStartTime;
+ }
+
+ @Override
+ public boolean equals (final Object obj) {
+ if (this == obj) {
+ return true;
+ } else if (obj == null) {
+ return false;
+ } else if (this.getClass() != obj.getClass()) {
+ return false;
+ }
+
+ final OpeningTime openingTimes = (OpeningTime) obj;
+
+ if (!Objects.equals(this.getOpeningId(), openingTimes.getOpeningId())) {
+ return false;
+ } else if (this.getOpeningStartDay() != openingTimes.getOpeningStartDay()) {
+ return false;
+ } else if (this.getOpeningEndDay() != openingTimes.getOpeningEndDay()) {
+ return false;
+ } else if (!Objects.equals(this.getOpeningStartTime(), openingTimes.getOpeningStartTime())) {
+ return false;
+ } else if (!Objects.equals(this.getOpeningEndTime(), openingTimes.getOpeningEndTime())) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ @SuppressWarnings ("ReturnOfDateField")
+ public Date getOpeningCreated () {
+ return this.openingCreated;
+ }
+
+ @Override
+ @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+ public void setOpeningCreated (final Date openingCreated) {
+ this.openingCreated = openingCreated;
+ }
+
+ @Override
+ public DayOfTheWeek getOpeningEndDay () {
+ return this.openingEndDay;
+ }
+
+ @Override
+ public void setOpeningEndDay (final DayOfTheWeek openingEndDay) {
+ this.openingEndDay = openingEndDay;
+ }
+
+ @Override
+ @SuppressWarnings ("ReturnOfDateField")
+ public Date getOpeningEndTime () {
+ return this.openingEndTime;
+ }
+
+ @Override
+ @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+ public void setOpeningEndTime (final Date openingEndTime) {
+ this.openingEndTime = openingEndTime;
+ }
+
+ @Override
+ public Long getOpeningId () {
+ return this.openingId;
+ }
+
+ @Override
+ public void setOpeningId (final Long openingId) {
+ this.openingId = openingId;
+ }
+
+ @Override
+ public DayOfTheWeek getOpeningStartDay () {
+ return this.openingStartDay;
+ }
+
+ @Override
+ public void setOpeningStartDay (final DayOfTheWeek openingStartDay) {
+ this.openingStartDay = openingStartDay;
+ }
+
+ @Override
+ @SuppressWarnings ("ReturnOfDateField")
+ public Date getOpeningStartTime () {
+ return this.openingStartTime;
+ }
+
+ @Override
+ @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+ public void setOpeningStartTime (final Date openingStartTime) {
+ this.openingStartTime = openingStartTime;
+ }
+
+ @Override
+ public int hashCode () {
+ int hash = 7;
+
+ hash = 97 * hash + Objects.hashCode(this.getOpeningId());
+ hash = 97 * hash + Objects.hashCode(this.getOpeningStartDay());
+ hash = 97 * hash + Objects.hashCode(this.getOpeningEndDay());
+ hash = 97 * hash + Objects.hashCode(this.getOpeningStartTime());
+ hash = 97 * hash + Objects.hashCode(this.getOpeningEndTime());
+
+ return hash;
+ }
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcontactsbusiness.model.opening_time;
+
+import java.io.Serializable;
+import java.util.Date;
+import org.mxchange.jcontactsbusiness.model.opening_time.dayofweek.DayOfTheWeek;
+
+/**
+ * A POJI for opening times
+ *
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public interface OpeningTime extends Serializable {
+
+ /**
+ * Getter for opening time created timestamp
+ * <p>
+ * @return Opening time created timestamp
+ */
+ Date getOpeningCreated ();
+
+ /**
+ * Setter for opening time created timestamp
+ * <p>
+ * @param openingCreated Opening time created timestamp
+ */
+ void setOpeningCreated (final Date openingCreated);
+
+ /**
+ * Getter for id number
+ * <p>
+ * @return Id number
+ */
+ Long getOpeningId ();
+
+ /**
+ * Setter for id number
+ * <p>
+ * @param openingId Id number
+ */
+ void setOpeningId (final Long openingId);
+
+ /**
+ * Getter for starting day
+ * <p>
+ * @return Starting day
+ */
+ DayOfTheWeek getOpeningStartDay ();
+
+ /**
+ * Setter for starting day
+ * <p>
+ * @param openingStartDay Starting day
+ */
+ void setOpeningStartDay (final DayOfTheWeek openingStartDay);
+
+ /**
+ * Getter for ending day
+ * <p>
+ * @return Ending day
+ */
+ DayOfTheWeek getOpeningEndDay ();
+
+ /**
+ * Setter for ending day
+ * <p>
+ * @param openinhEndDay Ending day
+ */
+ void setOpeningEndDay (final DayOfTheWeek openinhEndDay);
+
+ /**
+ * Getter for starting time
+ * <p>
+ * @return Starting time
+ */
+ Date getOpeningStartTime ();
+
+ /**
+ * Setter for starting time
+ * <p>
+ * @param openingStartTime Starting time
+ */
+ void setOpeningStartTime (final Date openingStartTime);
+
+ /**
+ * Getter for ending time
+ * <p>
+ * @return Ending time
+ */
+ Date getOpeningEndTime ();
+
+ /**
+ * Setter for ending time
+ * <p>
+ * @param openingEndTime Ending time
+ */
+ void setOpeningEndTime (final Date openingEndTime);
+
+ @Override
+ boolean equals (final Object obj);
+
+ @Override
+ int hashCode ();
+
+}
--- /dev/null
+/*
+ * 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
+ * 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jcontactsbusiness.model.opening_time.dayofweek;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * An enumeration suitable for persisting
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+public enum DayOfTheWeek {
+ SUNDAY {
+ @Override
+ public int toCalendar () {
+ return Calendar.SUNDAY;
+ }
+
+ },
+ MONDAY {
+ @Override
+ public int toCalendar () {
+ return Calendar.MONDAY;
+ }
+ },
+ TUESDAY {
+ @Override
+ public int toCalendar () {
+ return Calendar.TUESDAY;
+ }
+ },
+ WEDNESDAY {
+ @Override
+ public int toCalendar () {
+ return Calendar.WEDNESDAY;
+ }
+ },
+ THURSDAY {
+ @Override
+ public int toCalendar () {
+ return Calendar.THURSDAY;
+ }
+ },
+ FRIDAY {
+ @Override
+ public int toCalendar () {
+ return Calendar.FRIDAY;
+ }
+ },
+ SATURDAY {
+ @Override
+ public int toCalendar () {
+ return Calendar.SATURDAY;
+ }
+ };
+
+ public abstract int toCalendar ();
+
+ public static DayOfTheWeek fromCalendarDay (final int day) {
+
+ for (DayOfTheWeek dayOfWeek : DayOfTheWeek.values()) {
+ if (dayOfWeek.toCalendar() == day) {
+ return dayOfWeek;
+ }
+ }
+
+ return null; // Consider throwing IllegalArgumentException
+ }
+
+ public static DayOfTheWeek getByDate (final Date date) {
+ Calendar calendar = GregorianCalendar.getInstance();
+ calendar.setTime(date);
+ return fromCalendarDay(calendar.get(Calendar.DAY_OF_WEEK));
+ }
+
+ /*
+ * Should return the localized day of the week
+ */
+ @Override
+ public String toString () {
+ Calendar c = new GregorianCalendar();
+ c.set(Calendar.DAY_OF_WEEK, this.toCalendar());
+ SimpleDateFormat sdf = (SimpleDateFormat) SimpleDateFormat
+ .getInstance();
+ sdf.applyPattern("EEEEEEEEEE"); //NOI18N
+
+ return sdf.format(c.getTime());
+ }
+
+}
+++ /dev/null
-/*
- * 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
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jcontactsbusiness.model.opening_times;
-
-import java.util.Date;
-import java.util.Objects;
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
-import org.mxchange.jcontactsbusiness.model.opening_times.dayofweek.DayOfTheWeek;
-
-/**
- * A POJO for business opening hours
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-@Entity (name = "company_opening_times")
-@Table (name = "company_opening_times")
-@NamedQueries (
- {
- @NamedQuery (name = "AllOpeningTimes", query = "SELECT ot FROM company_opening_times AS ot ORDER BY ot.openingId ASC"),
- @NamedQuery (name = "SearchOpeningTimesById", query = "SELECT ot FROM company_opening_times AS ot WHERE ot.openingId = :openingId")
- }
-)
-@SuppressWarnings ("PersistenceUnitPresent")
-public class BusinessOpeningTimes implements OpeningTimes {
-
- /**
- * Serial number
- */
- @Transient
- private static final long serialVersionUID = 19_578_871_756_871L;
-
- /**
- * When this opening time was created
- */
- @Basic(optional = false)
- @Column(name = "opening_times_created", nullable = false, updatable = false)
- @Temporal (TemporalType.TIMESTAMP)
- private Date openingCreated;
-
- /**
- * Ending day of opening hours (if applyable)
- */
- @Basic (optional = false)
- @Column (name = "opening_times_end_day", nullable = false)
- @Enumerated (EnumType.STRING)
- private DayOfTheWeek openingEndDay;
-
- /**
- * Ending time (hh:mm)
- */
- @Basic (optional = false)
- @Column (name = "opening_times_end_time", nullable = false)
- @Temporal (TemporalType.TIME)
- private Date openingEndTime;
-
- /**
- * Id number
- */
- @Id
- @Column (name = "opening_times_id", nullable = false, updatable = false)
- @GeneratedValue (strategy = GenerationType.IDENTITY)
- private Long openingId;
-
- /**
- * Starting day of opening times
- */
- @Basic (optional = false)
- @Column (name = "opening_times_start_day", nullable = false)
- @Enumerated (EnumType.STRING)
- private DayOfTheWeek openingStartDay;
-
- /**
- * Starting time (hh:mm)
- */
- @Basic (optional = false)
- @Column (name = "opening_times_start_time", nullable = false)
- @Temporal (TemporalType.TIME)
- private Date openingStartTime;
-
- /**
- * Default constructor
- */
- public BusinessOpeningTimes () {
- }
-
- /**
- * Constructor with all required fields except created timestamp
- * <p>
- * @param openingEndDay End day
- * @param openingEndTime End time
- * @param openingStartDay Start day
- * @param openingStartTime Start time
- */
- public BusinessOpeningTimes (final DayOfTheWeek openingEndDay, final Date openingEndTime, final DayOfTheWeek openingStartDay, final Date openingStartTime) {
- // Set all fields
- this.openingEndDay = openingEndDay;
- this.openingEndTime = openingEndTime;
- this.openingStartDay = openingStartDay;
- this.openingStartTime = openingStartTime;
- }
-
- @Override
- public boolean equals (final Object obj) {
- if (this == obj) {
- return true;
- } else if (obj == null) {
- return false;
- } else if (this.getClass() != obj.getClass()) {
- return false;
- }
-
- final OpeningTimes openingTimes = (OpeningTimes) obj;
-
- if (!Objects.equals(this.getOpeningId(), openingTimes.getOpeningId())) {
- return false;
- } else if (this.getOpeningStartDay() != openingTimes.getOpeningStartDay()) {
- return false;
- } else if (this.getOpeningEndDay() != openingTimes.getOpeningEndDay()) {
- return false;
- } else if (!Objects.equals(this.getOpeningStartTime(), openingTimes.getOpeningStartTime())) {
- return false;
- } else if (!Objects.equals(this.getOpeningEndTime(), openingTimes.getOpeningEndTime())) {
- return false;
- }
-
- return true;
- }
-
- @Override
- @SuppressWarnings ("ReturnOfDateField")
- public Date getOpeningCreated () {
- return this.openingCreated;
- }
-
- @Override
- @SuppressWarnings ("AssignmentToDateFieldFromParameter")
- public void setOpeningCreated (final Date openingCreated) {
- this.openingCreated = openingCreated;
- }
-
- @Override
- public DayOfTheWeek getOpeningEndDay () {
- return this.openingEndDay;
- }
-
- @Override
- public void setOpeningEndDay (final DayOfTheWeek openingEndDay) {
- this.openingEndDay = openingEndDay;
- }
-
- @Override
- @SuppressWarnings ("ReturnOfDateField")
- public Date getOpeningEndTime () {
- return this.openingEndTime;
- }
-
- @Override
- @SuppressWarnings ("AssignmentToDateFieldFromParameter")
- public void setOpeningEndTime (final Date openingEndTime) {
- this.openingEndTime = openingEndTime;
- }
-
- @Override
- public Long getOpeningId () {
- return this.openingId;
- }
-
- @Override
- public void setOpeningId (final Long openingId) {
- this.openingId = openingId;
- }
-
- @Override
- public DayOfTheWeek getOpeningStartDay () {
- return this.openingStartDay;
- }
-
- @Override
- public void setOpeningStartDay (final DayOfTheWeek openingStartDay) {
- this.openingStartDay = openingStartDay;
- }
-
- @Override
- @SuppressWarnings ("ReturnOfDateField")
- public Date getOpeningStartTime () {
- return this.openingStartTime;
- }
-
- @Override
- @SuppressWarnings ("AssignmentToDateFieldFromParameter")
- public void setOpeningStartTime (final Date openingStartTime) {
- this.openingStartTime = openingStartTime;
- }
-
- @Override
- public int hashCode () {
- int hash = 7;
-
- hash = 97 * hash + Objects.hashCode(this.getOpeningId());
- hash = 97 * hash + Objects.hashCode(this.getOpeningStartDay());
- hash = 97 * hash + Objects.hashCode(this.getOpeningEndDay());
- hash = 97 * hash + Objects.hashCode(this.getOpeningStartTime());
- hash = 97 * hash + Objects.hashCode(this.getOpeningEndTime());
-
- return hash;
- }
-
-}
+++ /dev/null
-/*
- * 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
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jcontactsbusiness.model.opening_times;
-
-import java.io.Serializable;
-import java.util.Date;
-import org.mxchange.jcontactsbusiness.model.opening_times.dayofweek.DayOfTheWeek;
-
-/**
- * A POJI for opening times
- *
- * @author Roland Häder<roland@mxchange.org>
- */
-public interface OpeningTimes extends Serializable {
-
- /**
- * Getter for opening time created timestamp
- * <p>
- * @return Opening time created timestamp
- */
- Date getOpeningCreated ();
-
- /**
- * Setter for opening time created timestamp
- * <p>
- * @param openingCreated Opening time created timestamp
- */
- void setOpeningCreated (final Date openingCreated);
-
- /**
- * Getter for id number
- * <p>
- * @return Id number
- */
- Long getOpeningId ();
-
- /**
- * Setter for id number
- * <p>
- * @param openingId Id number
- */
- void setOpeningId (final Long openingId);
-
- /**
- * Getter for starting day
- * <p>
- * @return Starting day
- */
- DayOfTheWeek getOpeningStartDay ();
-
- /**
- * Setter for starting day
- * <p>
- * @param openingStartDay Starting day
- */
- void setOpeningStartDay (final DayOfTheWeek openingStartDay);
-
- /**
- * Getter for ending day
- * <p>
- * @return Ending day
- */
- DayOfTheWeek getOpeningEndDay ();
-
- /**
- * Setter for ending day
- * <p>
- * @param openinhEndDay Ending day
- */
- void setOpeningEndDay (final DayOfTheWeek openinhEndDay);
-
- /**
- * Getter for starting time
- * <p>
- * @return Starting time
- */
- Date getOpeningStartTime ();
-
- /**
- * Setter for starting time
- * <p>
- * @param openingStartTime Starting time
- */
- void setOpeningStartTime (final Date openingStartTime);
-
- /**
- * Getter for ending time
- * <p>
- * @return Ending time
- */
- Date getOpeningEndTime ();
-
- /**
- * Setter for ending time
- * <p>
- * @param openingEndTime Ending time
- */
- void setOpeningEndTime (final Date openingEndTime);
-
- @Override
- boolean equals (final Object obj);
-
- @Override
- int hashCode ();
-
-}
+++ /dev/null
-/*
- * 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
- * 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jcontactsbusiness.model.opening_times.dayofweek;
-
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-/**
- * An enumeration suitable for persisting
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-public enum DayOfTheWeek {
- SUNDAY {
- @Override
- public int toCalendar () {
- return Calendar.SUNDAY;
- }
-
- },
- MONDAY {
- @Override
- public int toCalendar () {
- return Calendar.MONDAY;
- }
- },
- TUESDAY {
- @Override
- public int toCalendar () {
- return Calendar.TUESDAY;
- }
- },
- WEDNESDAY {
- @Override
- public int toCalendar () {
- return Calendar.WEDNESDAY;
- }
- },
- THURSDAY {
- @Override
- public int toCalendar () {
- return Calendar.THURSDAY;
- }
- },
- FRIDAY {
- @Override
- public int toCalendar () {
- return Calendar.FRIDAY;
- }
- },
- SATURDAY {
- @Override
- public int toCalendar () {
- return Calendar.SATURDAY;
- }
- };
-
- public abstract int toCalendar ();
-
- public static DayOfTheWeek fromCalendarDay (final int day) {
-
- for (DayOfTheWeek dayOfWeek : DayOfTheWeek.values()) {
- if (dayOfWeek.toCalendar() == day) {
- return dayOfWeek;
- }
- }
-
- return null; // Consider throwing IllegalArgumentException
- }
-
- public static DayOfTheWeek getByDate (final Date date) {
- Calendar calendar = GregorianCalendar.getInstance();
- calendar.setTime(date);
- return fromCalendarDay(calendar.get(Calendar.DAY_OF_WEEK));
- }
-
- /*
- * Should return the localized day of the week
- */
- @Override
- public String toString () {
- Calendar c = new GregorianCalendar();
- c.set(Calendar.DAY_OF_WEEK, this.toCalendar());
- SimpleDateFormat sdf = (SimpleDateFormat) SimpleDateFormat
- .getInstance();
- sdf.applyPattern("EEEEEEEEEE"); //NOI18N
-
- return sdf.format(c.getTime());
- }
-
-}