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) – установка или изменение идентификатора клиента-владельца растения.