4. Слой бизнес логики - gilgenbergg/green_office GitHub Wiki

В качестве шаблона, используемого при проектировании слоя бизнес-логики была выбрана модель предметной области. Система представляется состоящей из совокупности связанных между собой объектов-классов.
Все классы расположены в пакете “model”:
Диаграмма классов бизнес-логики
Класс User, в первую очередь, определяет связанные с независимым от роли процессом авторизации:

  • void setLogin(String login) – метод, позволяющий поменять логин или установить его в аутентификационной информации пользователя после регистрации;
  • void setPassword(String password) – метод, позволяющий поменять или установить его новому пользователю по итогу регистрации;
  • String getLogin() – метод, позволяющий получить логин пользователя;
  • String getPassword() – метод, позволяющий получить пароль пользователя;
  • Integer getAuthDataID() – метод, позволяющий получить идентификатор закрепленной аутентификационной информации (логин+пароль) из таблицы авторизационных данных;
  • void setFirstName (String firstName) – метод, позволяющий поменять имя пользователя;
  • void setSecondName (String secondName) – метод, позволяющий поменять фамилию пользователя;
  • boolean signIn (User user, String receivedLogin, String receivedPassword) – метод, авторизации, учитывающий конкретного пользователя, а также введенные логин и пароль;
  • Role getRole() – метод, позволяющий получить роль пользователя (client/admin/landscaper);
  • void setRole(Role role) – метод, позволяющий изменить роль;
  • boolean correctLogin(String loginInBase, String passwordInBase, String receivedLogin, String receivedPassword) – метод, проверяющий корректность введенных пользователем данных при авторизации (вызывается из метода signIn).
    Модели сущностей Client, Landscaper, Admin расширяют базовый пользовательский класс User.
    Класс Admin:
  • void workOnClientRequest(ClientRequest clientRequest, String plantType) – первый метод в цепочке обрабатывающей клиентскую заявку логики с позиции админа, основная задача которого определить – является заявка первичной или плановой и в случае если заявка плановая – обработать ее;
  • void workOnFirstOneReq(ClientRequest clientRequest, String plantType) – метод, реализующий обработку первичной заявки;
  • PurchaseRequest makePurchaseRequest(Plant plant, ClientRequest clientRequest, List alreadyBought) – метод, определяющий создание заявки на закупку.
    Класс Landscaper:
  • void checkPurchaseRequest(Integer pReqID, List boughtResources, ClientRequest clientRequest) – метод, осуществляющий обработку заявки на закупку;
  • boolean checkPurchase(PurchaseRequest purchaseRequest, List boughtResources) – метод, проверяющий закупку и в зависимости от ее корректности позволяющий изменить ее статус, а также статус связанной с ней клиенсктйо заявки;
  • void makeGardening(ClientRequest clientRequest) – метод, реализующий активную часть работы над заявкой – инспекцию растения.
    Класс AuthData:
  • String getLogin() – метод, позволяющий получить логин пользователя;
  • String getPassword() – метод, позволяющий получить пароль пользователя;
  • void setLogin(String login) – метод, позволяющий изменить логин;
  • void setPassword(String password) – метод, позволяющий изменить пароль.
    Класс ClientRequest:
  • enum Status { newOne, inPurchase, inProgress, gardening, done} – перечисление возможных статусов клиентской заявки, характеризующих этап работы над ней;
  • enum Type { firstOne, planned} – перечисление возможных типов заявки.
  • Integer getCReqID() – получение идентификатора заявки;
  • Integer getPlantID() – получение идентификатора, связанного с заявкой растения;
  • Integer getClientID() – получения клиента-владельца растения;
  • Integer getAdminID() – получение идентификатора админа, работающего над данной заявкой;
  • Integer getLandscaperID() – получение идентификатора садовника, осуществляющего выезд;
  • Type getType() – получение типа заявки;
  • Status getStatus() – получение статуса заявки;
  • void setClientID(Integer clientID) – установка клиентского идентификатора или его изменение;
  • void setPlantID(Integer plantID) – привязка конкретного растения к заявке;
  • void setAdminID(Integer adminID) – установка или изменение администратора, который будет вести обработку заявки;
  • void setLandscaperID(Integer landscaperID) – установка или изменение садовника, ведущего работы;
  • void setType(Type type) – изменение типа заявки или его установка при создании заявки клиентом;
  • void setStatus(Status status) – изменение статуса заявки.
    Класс PurchaseRequest:
  • enum Status { inProgress, inCheck, approved} – перечисление возможных статусов заявки на закупку.
  • Integer getCReqID() – получение идентификатора связанной с закупкой клиентской заявки;
  • Integer getPReqID() – получение идентификатора заявки на закупку;
  • Integer getPlantID() – получение идентификатора растения, для которого осуществлена проверяемая закупка;
  • Integer getAdminID() – получение идентификатора администратора, осуществляющего обработку заявки и проводившего закупку;
  • Integer getLandscaperID() – получение идентификатора садовника, закрепленного в качестве проверяющего корректность закупки;
  • Status getStatus() – получение статуса заявки;
  • void setCReqID(Integer cReqID) – привязка закупки к конкретной клиентской заявке;
  • void setPlantID(Integer plantID) – привязка закупки к конкретному растению;
  • void setPlantName(String plantName) – изменение названия растения, для которого производилась закупка;
  • void setAdminID(Integer adminID) – получение идентификатора администратора, создавшего заявку на закупку;
  • void setLandscaperID(Integer landscaperID) – закрепление за заявкой садовника для проверки закупки или изменение ранее установленного;
  • void setStatus(Status status) – получение статуса заявки.
    Класс Resource:
  • Integer getresourceID() – получение идентификатора ресурса;
  • String getResource() – получение названия ресурса;
  • Integer getPlantID() – получение идентификатора растения, для которого он был куплен;
  • void setPlantID(Integer plantID) – установка или изменение закрепленного за данным растением ресурса;
  • void setResource(String resource) – установка или изменение названия ресурса, требуемого для работы над растением в рамках конкретной заявки.
    Класс RequiredResource:
  • String getResource() – получение названия ресурса;
  • String getPlantType() – получения типа растения, для которого данный ресурс является необходимым;
  • void setPlantType(String plantType) – установка или изменение типа растения, для которого необходимо наличие данного ресурса при работе над заявкой;
  • void setResource(String resource) – изменение названия ресурса.
    Класс Plant:
  • Integer getPlantID() – получение идентификатора растения;
  • String getType() – получение названия (типа) растения;
  • Integer getOwnerID() – получение идентификатора клиента-владельца растения;
  • void setType(String type) – изменение типа растения;
  • String getLastInspection() – получение даты последнего осмотра растения;
  • void setLastInspection(String lastInspection) – изменение даты последнего осмотра растения;
  • String getNextInspection() – получение даты следующей инспекции;
  • void setNextInspection(String nextInspection) – изменение даты следующей инспекции;
  • List getResources() – получение ресурсов, купленных для работы с данным растением в рамках клиентской заявки, связанной с ним;
  • void setClientID(int clientID) – установка или изменение идентификатора клиента-владельца растения.
⚠️ **GitHub.com Fallback** ⚠️