View Javadoc

    1   package org.example.customer.utility;
    2
    3   /*
    4    * This is free and unencumbered software released into the public domain.
    5    * Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software,
    6    * either in source code form or as a compiled binary, for any purpose, commercial or
    7    * non-commercial, and by any means.
    8    *
    9    * In jurisdictions that recognize copyright laws, the author or authors of this
    10   * software dedicate any and all copyright interest in the software to the public domain.
    11   * We make this dedication for the benefit of the public at large and to the detriment of
    12   * our heirs and successors. We intend this dedication to be an overt act of relinquishment in
    13   * perpetuity of all present and future rights to this software under copyright law.
    14   *
    15   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
    16   * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
    17   * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES
    18   * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    20   *
    21   * For more information, please refer to: https://unlicense.org/
    22  */
    23
    24  import java.io.Serializable;
    25
    26  import org.apache.commons.lang3.builder.EqualsBuilder;
    27  import org.apache.commons.lang3.builder.HashCodeBuilder;
    28  import org.apache.logging.log4j.LogManager;
    29  import org.apache.logging.log4j.Logger;
    30
    31  /**
    32   * The Customer Entity for the Customer application.
    33   <br>
    34   <br>
    35   * This class represents the common Id field in the Customer Database
    36   *
    37   * @author Jonathan Earl
    38   * @version 1.0
    39   *
    40   */
    41  public class CustomerEntity
    42      implements Serializable
    43  {
    44      private static final long serialVersionUID = 1L;
    45
    46      private static final Logger LOG = LogManager.getLogger();
    47
    48      private int myId;
    49
    50      /**
    51       * The default constructor for the CustomerEntity class.
    52       * <p>
    53       * The initial values are:
    54       * <ul>
    55       *   <li>id: 1</li>
    56       * </ul>
    57       *
    58       */
    59      public CustomerEntity()
    60      {
    61          LOG.debug("Starting the default Constructor");
    62          final int initialId = 1;
    63
    64          setId(initialId);
    65      }
    66
    67      /**
    68       * Returns the id value for the Customer.
    69       *
    70       * @return the id value for the customer
    71       */
    72      public int getId()
    73      {
    74          LOG.debug("returning the Id: " + myId);
    75          return myId;
    76      }
    77
    78      /**
    79       * Sets the id value for the Customer.
    80       * <p>
    81       * The business rules are:
    82       * <ul>
    83       *   <li>the id must be 1 or greater</li>
    84       * </ul>
    85       *
    86       * @param id the value to set into the customer id field
    87       * @throws IllegalArgumentException if the id is invalid
    88       */
    89      public void setId(final int id)
    90      {
    91          LOG.debug("setting the Id: " + id);
    92          final int min = 1;
    93
    94          if (id < min)
    95          {
    96              LOG.error("Id must be greater then zero");
    97              throw new IllegalArgumentException("Id must be greater then zero");
    98          }
    99          this.myId = id;
    100     }
    101
    102     /**
    103      * The hashCode() method of the CustomerEntity class.
    104      * <p>
    105      * <strong>This method uses:</strong>
    106      * <ul>
    107      *  <li>id</li>
    108      * </ul>
    109      *
    110      * @see java.lang.Object#hashCode()
    111      * @return the hashCode value for this CustomerEntity object
    112      */
    113     @Override
    114     public int hashCode()
    115     {
    116         LOG.debug("building HashCode");
    117         return new HashCodeBuilder()
    118                 .append(getId())
    119                 .toHashCode();
    120     }
    121
    122     /**
    123      * The equals() method of the CustomerEntity class.
    124      * <p>
    125      * <strong>This method uses:</strong>
    126      * <ul>
    127      *  <li>id</li>
    128      * </ul>
    129      *
    130      * @see java.lang.Object#equals(Object obj)
    131      * @param obj the incoming object to compare against
    132      * @return true if the fields being compared are equal
    133      */
    134     @Override
    135     public boolean equals(final Object obj)
    136     {
    137         LOG.debug("checking equals");
    138         if (obj instanceof CustomerEntity)
    139         {
    140             final CustomerEntity other = (CustomerEntity) obj;
    141             return new EqualsBuilder()
    142                     .append(getId(), other.getId())
    143                     .isEquals();
    144         }
    145         else
    146         {
    147             return false;
    148         }
    149     }
    150
    151     /**
    152      * The toString method for the CustomerEntity class.
    153      *
    154      * this method will return:<br>
    155      * CustomerEntity [Id=xxx]
    156      */
    157     @Override
    158     public String toString()
    159     {
    160         return "CustomerEntity [Id=" + getId() + "]";
    161     }
    162 }