View Javadoc

    1   package org.example.customerdao;
    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.util.List;
    25
    26  import javax.sql.DataSource;
    27
    28  import org.example.customer.Supplier;
    29  import org.example.customerdao.utility.Deleteable;
    30  import org.example.websecurity.UserCredentials;
    31
    32  /**
    33   * This is the SupplierDAO Interface for the Customer DAO component of the Customer Web Application.
    34   * This will be the primary Supplier database exposure for the Customer Web Layer.
    35   *
    36   * @author Jonathan Earl
    37   * @since 1.0
    38   *
    39   */
    40  public interface SupplierDAO extends Deleteable
    41  {
    42      /**
    43       * Sets the Read Only DataSource for this DAO Implication.
    44       *
    45       * @param readOnlyDS the readOnlyDS to set
    46       */
    47      void setReadOnlyDS(DataSource readOnlyDS);
    48
    49      /**
    50       * Sets the Read/Write DataSource for this DAO Implication.
    51       *
    52       * @param readWriteDS the readWriteDS to set
    53       */
    54      void setReadWriteDS(DataSource readWriteDS);
    55
    56      /**
    57       * Finds all Suppliers.
    58       *
    59       * @param credentials the UserCredentials for this Database operation
    60       * @return a list of Suppliers, this list may be empty
    61       * @throws IllegalArgumentException
    62       *              if there is a connection or permission problem
    63       */
    64      List<Supplier> findAllSuppliers(UserCredentials credentials);
    65
    66      /**
    67       * Find Supplier by Id.
    68       * <p>
    69       * This will return null if the Supplier cannot be found.
    70       *
    71       * @param credentials the UserCredentials for this Database operation
    72       * @param id the Supplier ID to search for
    73       * @return a Supplier or null if the Supplier is not found
    74       * @throws IllegalArgumentException
    75       *              if there is a connection or permission problem
    76       */
    77      Supplier findSupplierById(UserCredentials credentials, int id);
    78
    79      /**
    80       * Find Suppliers by Company name.
    81       * <p>
    82       * This will use a Wild Card search to find any Supplier with the provided string
    83       * and a portion of their Company name.
    84       *
    85       * @param credentials the UserCredentials for this Database operation
    86       * @param name the string to search for
    87       * @return a list if Suppliers, this list may be empty
    88       * @throws IllegalArgumentException
    89       *              if there is a connection or permission problem
    90       */
    91      List<Supplier> findSuppliersByCompanyName(UserCredentials credentials, String name);
    92
    93      /**
    94       * Adds a Supplier.
    95       * <p >
    96       * Only a Manager is permitted to add a Supplier.
    97       *
    98       *
    99       * @param credentials the UserCredentials for this Database operation
    100      * @param supplier the Supplier object to add
    101      * @return the id of the new Supplier record
    102      * @throws IllegalArgumentException
    103      *              if there is a connection or permission problem
    104      */
    105     int addSupplier(UserCredentials credentials, Supplier supplier);
    106
    107     /**
    108      * Updates a Supplier.
    109      * <p >
    110      * Only a Manager is permitted to update a Supplier.
    111      *
    112      *
    113      * @param credentials the UserCredentials for this Database operation
    114      * @param supplier the Supplier object to update
    115      * @throws IllegalArgumentException
    116      *              if there is a connection or permission problem
    117      */
    118     void updateSupplier(UserCredentials credentials, Supplier supplier);
    119 }