From 3dc18647fa2bd9ad4f0d7f4e3c4bd02857c4a2ad Mon Sep 17 00:00:00 2001 From: Phlake Date: Sun, 15 May 2022 15:53:26 +0300 Subject: [PATCH 01/11] Added Lab 4 --- .gitignore | 60 +++ README.md | 5 +- lombok.config | 5 + src/main/java/com/mkruchok/Application.java | 8 + .../controller/AbstractController.java | 28 ++ .../implementation/DeviceController.java | 38 ++ .../implementation/GroupController.java | 38 ++ .../implementation/HubController.java | 38 ++ .../NotificationController.java | 38 ++ .../implementation/PermissionController.java | 38 ++ .../implementation/RexController.java | 38 ++ .../implementation/UserController.java | 38 ++ .../implementation/package-info.java | 1 + .../com/mkruchok/controller/package-info.java | 1 + .../com/mkruchok/model/dao/AbstractDAO.java | 33 ++ .../model/dao/implementation/DeviceDAO.java | 126 +++++ .../model/dao/implementation/GroupDAO.java | 111 +++++ .../model/dao/implementation/HubDAO.java | 137 ++++++ .../dao/implementation/NotificationDAO.java | 115 +++++ .../dao/implementation/PermissionDAO.java | 107 +++++ .../model/dao/implementation/RexDAO.java | 111 +++++ .../model/dao/implementation/UserDAO.java | 118 +++++ .../dao/implementation/package-info.java | 1 + .../com/mkruchok/model/dao/package-info.java | 1 + .../com/mkruchok/model/entity/Device.java | 49 ++ .../java/com/mkruchok/model/entity/Group.java | 34 ++ .../java/com/mkruchok/model/entity/Hub.java | 54 +++ .../mkruchok/model/entity/Notification.java | 39 ++ .../com/mkruchok/model/entity/Permission.java | 30 ++ .../java/com/mkruchok/model/entity/Rex.java | 34 ++ .../java/com/mkruchok/model/entity/User.java | 42 ++ .../mkruchok/model/entity/package-info.java | 1 + .../java/com/mkruchok/model/package-info.java | 1 + src/main/java/com/mkruchok/package-info.java | 1 + .../persistant/ConnectionManager.java | 42 ++ .../com/mkruchok/persistant/package-info.java | 1 + .../com/mkruchok/service/AbstractService.java | 33 ++ .../service/implementation/DeviceService.java | 39 ++ .../service/implementation/GroupService.java | 39 ++ .../service/implementation/HubService.java | 39 ++ .../implementation/NotificationService.java | 39 ++ .../implementation/PermissionService.java | 39 ++ .../service/implementation/RexService.java | 39 ++ .../service/implementation/UserService.java | 40 ++ .../service/implementation/package-info.java | 1 + .../com/mkruchok/service/package-info.java | 1 + src/main/java/com/mkruchok/view/Menu.java | 24 + .../java/com/mkruchok/view/Printable.java | 8 + src/main/java/com/mkruchok/view/View.java | 429 ++++++++++++++++++ .../java/com/mkruchok/view/package-info.java | 1 + 50 files changed, 2331 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 lombok.config create mode 100644 src/main/java/com/mkruchok/Application.java create mode 100644 src/main/java/com/mkruchok/controller/AbstractController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/DeviceController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/GroupController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/HubController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/NotificationController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/PermissionController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/RexController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/UserController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/package-info.java create mode 100644 src/main/java/com/mkruchok/controller/package-info.java create mode 100644 src/main/java/com/mkruchok/model/dao/AbstractDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/package-info.java create mode 100644 src/main/java/com/mkruchok/model/dao/package-info.java create mode 100644 src/main/java/com/mkruchok/model/entity/Device.java create mode 100644 src/main/java/com/mkruchok/model/entity/Group.java create mode 100644 src/main/java/com/mkruchok/model/entity/Hub.java create mode 100644 src/main/java/com/mkruchok/model/entity/Notification.java create mode 100644 src/main/java/com/mkruchok/model/entity/Permission.java create mode 100644 src/main/java/com/mkruchok/model/entity/Rex.java create mode 100644 src/main/java/com/mkruchok/model/entity/User.java create mode 100644 src/main/java/com/mkruchok/model/entity/package-info.java create mode 100644 src/main/java/com/mkruchok/model/package-info.java create mode 100644 src/main/java/com/mkruchok/package-info.java create mode 100644 src/main/java/com/mkruchok/persistant/ConnectionManager.java create mode 100644 src/main/java/com/mkruchok/persistant/package-info.java create mode 100644 src/main/java/com/mkruchok/service/AbstractService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/DeviceService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/GroupService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/HubService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/NotificationService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/PermissionService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/RexService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/UserService.java create mode 100644 src/main/java/com/mkruchok/service/implementation/package-info.java create mode 100644 src/main/java/com/mkruchok/service/package-info.java create mode 100644 src/main/java/com/mkruchok/view/Menu.java create mode 100644 src/main/java/com/mkruchok/view/Printable.java create mode 100644 src/main/java/com/mkruchok/view/View.java create mode 100644 src/main/java/com/mkruchok/view/package-info.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1201cbd --- /dev/null +++ b/.gitignore @@ -0,0 +1,60 @@ +# See https://www.dartlang.org/guides/libraries/private-files + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + + +*.html +*.css +*.rss +*.xml +*target + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + + +# Files and directories created by pub +.dart_tool/ +.packages +build/ + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release + +### Firebase ### +**/node_modules/* +**/.firebaserc + +### Firebase Patch ### +.runtimeconfig.json +.firebase/ + +# If you're building an application, you may want to check-in your pubspec.lock +pubspec.lock + +# Directory created by dartdoc +# If you don't generate documentation locally you can remove this line. +doc/api/ + +# Avoid committing generated Javascript files: +*.dart.js +*.info.json # Produced by the --dump-info flag. +*.js # When generated by dart2js. Don't specify *.js if your + # project includes source files written in JavaScript. +*.js_ +*.js.deps +*.js.map diff --git a/README.md b/README.md index 681d633..c000c32 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ -# Databases - +# Lab 4 + +JDBC Maven diff --git a/lombok.config b/lombok.config new file mode 100644 index 0000000..c068f11 --- /dev/null +++ b/lombok.config @@ -0,0 +1,5 @@ +config.stopBubbling = true +lombok.addLombokGeneratedAnnotation = true +lombok.extern.findbugs.addSuppressFBWarnings = true +lombok.anyConstructor.addConstructorProperties = true +lombok.addNullAnnotations = \ No newline at end of file diff --git a/src/main/java/com/mkruchok/Application.java b/src/main/java/com/mkruchok/Application.java new file mode 100644 index 0000000..d271f52 --- /dev/null +++ b/src/main/java/com/mkruchok/Application.java @@ -0,0 +1,8 @@ +package com.mkruchok; + +import com.mkruchok.view.View; +public final class Application { + public static void main(final String[] args) { + new View().show(); + } +} diff --git a/src/main/java/com/mkruchok/controller/AbstractController.java b/src/main/java/com/mkruchok/controller/AbstractController.java new file mode 100644 index 0000000..a84425f --- /dev/null +++ b/src/main/java/com/mkruchok/controller/AbstractController.java @@ -0,0 +1,28 @@ +package com.mkruchok.controller; + +import java.sql.SQLException; +import java.util.List; + +public interface AbstractController { + + List findAll() throws SQLException; + + default E findById(Integer id) throws SQLException { + return null; + } + + default void create(E entity) throws SQLException { + } + + default void update(Integer id, E entity) throws SQLException { + } + + default void delete(Integer id) throws SQLException { + } + + default void update(String name, E entity) throws SQLException { + } + + default void delete(String name) throws SQLException { + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/DeviceController.java b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java new file mode 100644 index 0000000..81c965a --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java @@ -0,0 +1,38 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.Device; +import com.mkruchok.service.implementation.DeviceService; + +import java.sql.SQLException; +import java.util.List; + +public final class DeviceController implements AbstractController { + + private final DeviceService service = new DeviceService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public Device findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(Device entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, Device entity) throws SQLException { + service.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + service.delete(id); + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/GroupController.java b/src/main/java/com/mkruchok/controller/implementation/GroupController.java new file mode 100644 index 0000000..a309428 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/GroupController.java @@ -0,0 +1,38 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.Group; +import com.mkruchok.service.implementation.GroupService; + +import java.sql.SQLException; +import java.util.List; + +public final class GroupController implements AbstractController { + + private final GroupService service = new GroupService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public Group findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(Group entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, Group entity) throws SQLException { + service.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + service.delete(id); + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/HubController.java b/src/main/java/com/mkruchok/controller/implementation/HubController.java new file mode 100644 index 0000000..edd2c7d --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/HubController.java @@ -0,0 +1,38 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.Hub; +import com.mkruchok.service.implementation.HubService; + +import java.sql.SQLException; +import java.util.List; + +public final class HubController implements AbstractController { + + private final HubService service = new HubService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public Hub findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(Hub entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, Hub entity) throws SQLException { + service.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + service.delete(id); + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/NotificationController.java b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java new file mode 100644 index 0000000..3a0d1ca --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java @@ -0,0 +1,38 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.Notification; +import com.mkruchok.service.implementation.NotificationService; + +import java.sql.SQLException; +import java.util.List; + +public final class NotificationController implements AbstractController { + + private final NotificationService service = new NotificationService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public Notification findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(Notification entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, Notification entity) throws SQLException { + service.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + service.delete(id); + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/PermissionController.java b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java new file mode 100644 index 0000000..2f75703 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java @@ -0,0 +1,38 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.Permission; +import com.mkruchok.service.implementation.PermissionService; + +import java.sql.SQLException; +import java.util.List; + +public final class PermissionController implements AbstractController { + + private final PermissionService service = new PermissionService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public Permission findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(Permission entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, Permission entity) throws SQLException { + service.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + service.delete(id); + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/RexController.java b/src/main/java/com/mkruchok/controller/implementation/RexController.java new file mode 100644 index 0000000..c3e2f95 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/RexController.java @@ -0,0 +1,38 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.Rex; +import com.mkruchok.service.implementation.RexService; + +import java.sql.SQLException; +import java.util.List; + +public final class RexController implements AbstractController { + + private final RexService service = new RexService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public Rex findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(Rex entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, Rex entity) throws SQLException { + service.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + service.delete(id); + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/UserController.java b/src/main/java/com/mkruchok/controller/implementation/UserController.java new file mode 100644 index 0000000..b765bf9 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/UserController.java @@ -0,0 +1,38 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.User; +import com.mkruchok.service.implementation.UserService; + +import java.sql.SQLException; +import java.util.List; + +public final class UserController implements AbstractController { + + private final UserService service = new UserService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public User findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(User entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, User entity) throws SQLException { + service.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + service.delete(id); + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/package-info.java b/src/main/java/com/mkruchok/controller/implementation/package-info.java new file mode 100644 index 0000000..1dbf70e --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.controller.implementation; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/controller/package-info.java b/src/main/java/com/mkruchok/controller/package-info.java new file mode 100644 index 0000000..2db224e --- /dev/null +++ b/src/main/java/com/mkruchok/controller/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.controller; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/AbstractDAO.java b/src/main/java/com/mkruchok/model/dao/AbstractDAO.java new file mode 100644 index 0000000..ceccdc2 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/AbstractDAO.java @@ -0,0 +1,33 @@ +package com.mkruchok.model.dao; + +import java.sql.SQLException; +import java.util.List; + +public interface AbstractDAO { + + List findAll() throws SQLException; + + default void create(E entity) throws SQLException { + } + + default E findById(Integer id) throws SQLException { + return null; + } + + default void update(Integer id, E entity) throws SQLException { + } + + default void delete(Integer id) throws SQLException { + } + + + default E findByName(String name) throws SQLException { + return null; + } + + default void update(String name, E entity) throws SQLException { + } + + default void delete(String name) throws SQLException { + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java new file mode 100644 index 0000000..df07038 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java @@ -0,0 +1,126 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.entity.Device; +import com.mkruchok.persistant.ConnectionManager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +@SuppressFBWarnings +@SuppressWarnings("checkstyle:magicnumber") +public final class DeviceDAO implements AbstractDAO { + + private static final String GET_ALL = "SELECT * FROM ajax_curr.device"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.device WHERE id=?"; + private static final String CREATE = "INSERT ajax_curr.device " + + "(`model`,`status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`)" + + " VALUES (?, ?, ?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.device" + + " SET model=?, status=?, service_life_end_time=?, warranty_end_time=?, on_battery=?, hub_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.device WHERE id=?"; + static final Logger LOGGER = LoggerFactory.getLogger(DeviceDAO.class); + + + @Override + public List findAll() throws SQLException { + List devices = new ArrayList<>(); + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Device device = new Device( + resultSet.getInt("id"), + resultSet.getString("model"), + resultSet.getString("status"), + resultSet.getTimestamp("service_life_end_time"), + resultSet.getTimestamp("warranty_end_time"), + resultSet.getInt("on_battery"), + resultSet.getInt("hub_id") + ); + devices.add(device); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + return devices; + } + + @Override + public Device findById(Integer id) throws SQLException { + Device device = null; + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + device = new Device( + resultSet.getInt("id"), + resultSet.getString("model"), + resultSet.getString("status"), + resultSet.getTimestamp("service_life_end_time"), + resultSet.getTimestamp("warranty_end_time"), + resultSet.getInt("on_battery"), + resultSet.getInt("hub_id") + ); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + return device; + } + + @Override + public void create(Device device) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, device.getModel()); + statement.setString(2, device.getStatus()); + statement.setTimestamp(3, device.getServiceLifeEndTime()); + statement.setTimestamp(4, device.getWarrantyEndTime()); + statement.setInt(5, device.getOnBattery()); + statement.setInt(6, device.getHubId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + + } + + @Override + public void update(Integer id, Device device) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(2, device.getStatus()); + statement.setString(1, device.getModel()); + statement.setTimestamp(3, device.getServiceLifeEndTime()); + statement.setTimestamp(4, device.getWarrantyEndTime()); + statement.setInt(5, device.getOnBattery()); + statement.setInt(6, device.getHubId()); + statement.setInt(7, device.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } + + @Override + public void delete(Integer id) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + statement.executeUpdate(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java new file mode 100644 index 0000000..d996002 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java @@ -0,0 +1,111 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.entity.Group; +import com.mkruchok.persistant.ConnectionManager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +@SuppressFBWarnings +@SuppressWarnings("magicnumber") +public final class GroupDAO implements AbstractDAO { + + private static final String GET_ALL = "SELECT * FROM ajax_curr.group"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.group WHERE id=?"; + private static final String CREATE = "INSERT ajax_curr.group " + + "(`name`,`description`,`hub_id`)" + + " VALUES (?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.group" + + " SET name=?, description=?, hub_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.group WHERE id=?"; + static final Logger LOGGER = LoggerFactory.getLogger(GroupDAO.class); + + @Override + public List findAll() throws SQLException { + List groups = new ArrayList<>(); + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Group group = new Group( + resultSet.getInt("id"), + resultSet.getString("name"), + resultSet.getString("description"), + resultSet.getInt("hub_id") + ); + groups.add(group); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + return groups; + } + + @Override + public Group findById(Integer id) throws SQLException { + Group group = null; + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + group = new Group( + resultSet.getInt("id"), + resultSet.getString("name"), + resultSet.getString("description"), + resultSet.getInt("hub_id") + ); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + return group; + } + + @Override + public void create(Group group) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, group.getName()); + statement.setString(2, group.getDescription()); + statement.setInt(3, group.getHubId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + + } + + @Override + public void update(Integer id, Group group) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, group.getName()); + statement.setString(2, group.getDescription()); + statement.setInt(3, group.getHubId()); + statement.setInt(4, group.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + } + + @Override + public void delete(Integer id) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + statement.executeUpdate(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java new file mode 100644 index 0000000..b6bcbd7 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java @@ -0,0 +1,137 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.entity.Hub; +import com.mkruchok.persistant.ConnectionManager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +@SuppressFBWarnings +@SuppressWarnings("magicnumber") +public final class HubDAO implements AbstractDAO { + + private static final String GET_ALL = "SELECT * FROM ajax_curr.hub"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.hub WHERE id=?"; + private static final String CREATE = "INSERT ajax_curr.hub " + + "(`model`,`status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`," + + "`devices_max`,`sirens_max`,`on_battery`) VALUES (?, ?, ?, ?,?, ?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.hub" + + " SET model=?, status=?, service_life_end_time=?, warranty_end_time=?, users_max=?, rooms_max=?, " + + "devices_max=?, sirens_max=?, on_battery=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.hub WHERE id=?"; + static final Logger LOGGER = LoggerFactory.getLogger(HubDAO.class); + + @Override + public List findAll() throws SQLException { + List hubs = new ArrayList<>(); + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Hub hub = new Hub( + resultSet.getInt("id"), + resultSet.getString("model"), + resultSet.getString("status"), + resultSet.getTimestamp("service_life_end_time"), + resultSet.getTimestamp("warranty_end_time"), + resultSet.getInt("users_max"), + resultSet.getInt("rooms_max"), + resultSet.getInt("devices_max"), + resultSet.getInt("sirens_max"), + resultSet.getInt("on_battery") + ); + hubs.add(hub); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + return hubs; + + } + + @Override + public Hub findById(Integer id) throws SQLException { + Hub hub = null; + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + hub = new Hub( + resultSet.getInt("id"), + resultSet.getString("model"), + resultSet.getString("status"), + resultSet.getTimestamp("service_life_end_time"), + resultSet.getTimestamp("warranty_end_time"), + resultSet.getInt("users_max"), + resultSet.getInt("rooms_max"), + resultSet.getInt("devices_max"), + resultSet.getInt("sirens_max"), + resultSet.getInt("on_battery") + ); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + return hub; + } + + @Override + public void create(Hub hub) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, hub.getModel()); + statement.setString(2, hub.getStatus()); + statement.setTimestamp(3, hub.getServiceLifeEndTime()); + statement.setTimestamp(4, hub.getWarrantyEndTime()); + statement.setInt(6, hub.getRoomsMax()); + statement.setInt(5, hub.getUsersMax()); + statement.setInt(7, hub.getDevicesMax()); + statement.setInt(8, hub.getSirensMax()); + statement.setInt(9, hub.getOnBattery()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + + } + + @Override + public void update(Integer id, Hub hub) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, hub.getModel()); + statement.setString(2, hub.getStatus()); + statement.setTimestamp(3, hub.getServiceLifeEndTime()); + statement.setTimestamp(4, hub.getWarrantyEndTime()); + statement.setInt(5, hub.getUsersMax()); + statement.setInt(6, hub.getRoomsMax()); + statement.setInt(7, hub.getDevicesMax()); + statement.setInt(8, hub.getSirensMax()); + statement.setInt(9, hub.getOnBattery()); + statement.setInt(10, hub.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } + + @Override + public void delete(Integer id) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + statement.executeUpdate(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java new file mode 100644 index 0000000..1a072e8 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java @@ -0,0 +1,115 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.entity.Notification; +import com.mkruchok.persistant.ConnectionManager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +@SuppressFBWarnings +@SuppressWarnings("magicnumber") +public final class NotificationDAO implements AbstractDAO { + + private static final String GET_ALL = "SELECT * FROM ajax_curr.notification"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.notification WHERE id=?"; + private static final String CREATE = "INSERT ajax_curr.notification " + + "(`timestamp`,`type`,`device_id`,`hub_id`)" + + " VALUES (?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.notification" + + " SET timestamp=?, type=?, device_id=?, hub_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.notification WHERE id=?"; + static final Logger LOGGER = LoggerFactory.getLogger(NotificationDAO.class); + + @Override + public List findAll() throws SQLException { + List notifications = new ArrayList<>(); + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Notification notification = new Notification( + resultSet.getInt("id"), + resultSet.getTimestamp("timestamp"), + resultSet.getString("type"), + resultSet.getInt("device_id"), + resultSet.getInt("hub_id") + ); + notifications.add(notification); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + return notifications; + } + + @Override + public Notification findById(Integer id) throws SQLException { + Notification notification = null; + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + notification = new Notification( + resultSet.getInt("id"), + resultSet.getTimestamp("timestamp"), + resultSet.getString("type"), + resultSet.getInt("device_id"), + resultSet.getInt("hub_id") + ); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + return notification; + } + + @Override + public void create(Notification notification) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setTimestamp(1, notification.getTimestamp()); + statement.setString(2, notification.getType()); + statement.setInt(3, notification.getDeviceId()); + statement.setInt(4, notification.getHubId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + + } + + @Override + public void update(Integer id, Notification notification) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setTimestamp(1, notification.getTimestamp()); + statement.setString(2, notification.getType()); + statement.setInt(3, notification.getDeviceId()); + statement.setInt(4, notification.getHubId()); + statement.setInt(5, notification.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } + + @Override + public void delete(Integer id) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + statement.executeUpdate(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java new file mode 100644 index 0000000..aa42a48 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java @@ -0,0 +1,107 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.entity.Permission; +import com.mkruchok.persistant.ConnectionManager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +@SuppressFBWarnings +@SuppressWarnings("magicnumber") +public final class PermissionDAO implements AbstractDAO { + + private static final String GET_ALL = "SELECT * FROM ajax_curr.permission"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.permission WHERE id=?"; + private static final String CREATE = "INSERT ajax_curr.permission " + + "(`name`,`description`)" + + " VALUES (?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.permission" + + " SET name=?, description=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.permission WHERE id=?"; + static final Logger LOGGER = LoggerFactory.getLogger(PermissionDAO.class); + + @Override + public List findAll() throws SQLException { + List permissions = new ArrayList<>(); + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Permission permission = new Permission( + resultSet.getInt("id"), + resultSet.getString("name"), + resultSet.getString("description") + ); + permissions.add(permission); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + return permissions; + } + + @Override + public Permission findById(Integer id) throws SQLException { + Permission permission = null; + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + permission = new Permission( + resultSet.getInt("id"), + resultSet.getString("name"), + resultSet.getString("description") + ); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + return permission; + } + + @Override + public void create(Permission permission) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, permission.getName()); + statement.setString(2, permission.getDescription()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + + } + + @Override + public void update(Integer id, Permission permission) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, permission.getName()); + statement.setString(2, permission.getDescription()); + statement.setInt(3, permission.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } + + @Override + public void delete(Integer id) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { + LOGGER.info(String.valueOf(statement)); + statement.setInt(1, id); + statement.executeUpdate(); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java new file mode 100644 index 0000000..dfc963e --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java @@ -0,0 +1,111 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.entity.Rex; +import com.mkruchok.persistant.ConnectionManager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +@SuppressFBWarnings +@SuppressWarnings("magicnumber") +public final class RexDAO implements AbstractDAO { + + private static final String GET_ALL = "SELECT * FROM ajax_curr.rex"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.rex WHERE id=?"; + private static final String CREATE = "INSERT ajax_curr.rex " + + "(`name`,`range`,`hub_id`)" + + " VALUES (?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.rex" + + " SET name=?, range=?, hub_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.group WHERE id=?"; + static final Logger LOGGER = LoggerFactory.getLogger(RexDAO.class); + + @Override + public List findAll() throws SQLException { + List rexes = new ArrayList<>(); + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + Rex rex = new Rex( + resultSet.getInt("id"), + resultSet.getString("name"), + resultSet.getString("range"), + resultSet.getInt("hub_id") + ); + rexes.add(rex); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + return rexes; + } + + @Override + public Rex findById(Integer id) throws SQLException { + Rex rex = null; + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + rex = new Rex( + resultSet.getInt("id"), + resultSet.getString("name"), + resultSet.getString("range"), + resultSet.getInt("hub_id") + ); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + return rex; + } + + @Override + public void create(Rex rex) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, rex.getName()); + statement.setString(2, rex.getRange()); + statement.setInt(3, rex.getHubId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + + } + + @Override + public void update(Integer id, Rex rex) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, rex.getName()); + statement.setString(2, rex.getRange()); + statement.setInt(3, rex.getHubId()); + statement.setInt(4, rex.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } + + @Override + public void delete(Integer id) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { + LOGGER.info(String.valueOf(statement)); + statement.setInt(1, id); + statement.executeUpdate(); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java new file mode 100644 index 0000000..1acd375 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java @@ -0,0 +1,118 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.entity.User; +import com.mkruchok.persistant.ConnectionManager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +@SuppressFBWarnings +@SuppressWarnings("magicnumber") +public final class UserDAO implements AbstractDAO { + + private static final String GET_ALL = "SELECT * FROM ajax_curr.user"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.user WHERE id=?"; + private static final String CREATE = "INSERT ajax_curr.user " + + "(`email`, `password`, `date_created`, `name`, `group_id`) VALUES (?, ?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.user" + + " SET email=?, password=?, date_created=?, name=?, group_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.user WHERE id=?"; + static final Logger LOGGER = LoggerFactory.getLogger(UserDAO.class); + + @Override + public List findAll() throws SQLException { + List users = new ArrayList<>(); + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + User user = new User( + resultSet.getInt("id"), + resultSet.getString("email"), + resultSet.getString("password"), + resultSet.getTimestamp("date_created"), + resultSet.getString("name"), + resultSet.getString("group_id") + ); + users.add(user); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Ops! ", e); + } + return users; + } + + @Override + public User findById(Integer id) throws SQLException { + User user = null; + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { + statement.setInt(1, id); + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + user = new User( + resultSet.getInt("id"), + resultSet.getString("email"), + resultSet.getString("password"), + resultSet.getTimestamp("date_created"), + resultSet.getString("name"), + resultSet.getString("group_id") + ); + } + resultSet.close(); + } catch (Exception e) { + LOGGER.error("Oops!", e); + } + return user; + } + + @Override + public void create(User user) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, user.getEmail()); + statement.setString(2, user.getPassword()); + statement.setTimestamp(3, user.getDateCreated()); + statement.setString(4, user.getName()); + statement.setString(5, user.getGroupId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + + } + + @Override + public void update(Integer id, User user) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, user.getEmail()); + statement.setString(2, user.getPassword()); + statement.setTimestamp(3, user.getDateCreated()); + statement.setString(4, user.getName()); + statement.setString(5, user.getGroupId()); + statement.setInt(6, user.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } + + @Override + public void delete(Integer id) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { + LOGGER.info(String.valueOf(statement)); + statement.setInt(1, id); + statement.executeUpdate(); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/package-info.java b/src/main/java/com/mkruchok/model/dao/implementation/package-info.java new file mode 100644 index 0000000..e1c00af --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.model.dao.implementation; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/package-info.java b/src/main/java/com/mkruchok/model/dao/package-info.java new file mode 100644 index 0000000..951a6b6 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.model.dao; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/entity/Device.java b/src/main/java/com/mkruchok/model/entity/Device.java new file mode 100644 index 0000000..8bc48a8 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Device.java @@ -0,0 +1,49 @@ +package com.mkruchok.model.entity; + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.Getter; +import lombok.Setter; + +import java.sql.Timestamp; + +@SuppressFBWarnings +@Getter +@Setter +public final class Device { + private Integer id; + private String model; + private String status; + private Timestamp serviceLifeEndTime; + private Timestamp warrantyEndTime; + private Integer onBattery; + private Integer hubId; + + public Device(Integer id, String model, String status, Timestamp serviceLifeEndTime, + Timestamp warrantyEndTime, Integer onBattery, Integer hubId) { + this.id = id; + this.model = model; + this.status = status; + this.serviceLifeEndTime = serviceLifeEndTime; + this.warrantyEndTime = warrantyEndTime; + this.onBattery = onBattery; + this.hubId = hubId; + } + + public Device(String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, + Integer onBattery, Integer hubId) { + this.model = model; + this.status = status; + this.serviceLifeEndTime = serviceLifeEndTime; + this.warrantyEndTime = warrantyEndTime; + this.onBattery = onBattery; + this.hubId = hubId; + } + + + @Override + public String toString() { + return "\n\nDevice: id: " + id + ", model: " + model + ", status: " + status + ", service_life_end_time: " + + serviceLifeEndTime + ", warranty_end_time: " + warrantyEndTime + ", on_battery: " + + onBattery + ", hub_id: " + hubId; + } +} diff --git a/src/main/java/com/mkruchok/model/entity/Group.java b/src/main/java/com/mkruchok/model/entity/Group.java new file mode 100644 index 0000000..ecbf70f --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Group.java @@ -0,0 +1,34 @@ +package com.mkruchok.model.entity; + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.Getter; +import lombok.Setter; + +@SuppressFBWarnings +@Getter +@Setter +public final class Group { + private Integer id; + private String name; + private String description; + private Integer hubId; + + public Group(Integer id, String name, String description, Integer hubId) { + this.id = id; + this.name = name; + this.description = description; + this.hubId = hubId; + } + + public Group(String name, String description, Integer hubId) { + this.name = name; + this.description = description; + this.hubId = hubId; + } + + @Override + public String toString() { + return "\n\nGroup: id: " + id + ", name: " + name + ", description: " + description + ", hub_id: " + + hubId; + } +} diff --git a/src/main/java/com/mkruchok/model/entity/Hub.java b/src/main/java/com/mkruchok/model/entity/Hub.java new file mode 100644 index 0000000..cc1c921 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Hub.java @@ -0,0 +1,54 @@ +package com.mkruchok.model.entity; + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.Getter; +import lombok.Setter; + +import java.sql.Timestamp; + +@SuppressFBWarnings +@Getter +@Setter +public final class Hub { + private Integer id; + private String model; + private String status; + private Timestamp serviceLifeEndTime; + private Timestamp warrantyEndTime; + private Integer usersMax; + private Integer roomsMax; + private Integer devicesMax; + private Integer sirensMax; + private Integer onBattery; + + public Hub(Integer id, String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, + Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, Integer onBattery) { + this.id = id; + this.model = model; + this.status = status; + this.serviceLifeEndTime = new Timestamp(serviceLifeEndTime.getTime()); + this.warrantyEndTime = new Timestamp(warrantyEndTime.getTime()); + this.usersMax = usersMax; + this.roomsMax = roomsMax; + this.devicesMax = devicesMax; + this.sirensMax = sirensMax; + this.onBattery = onBattery; + } + + public Hub(String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, Integer onBattery) { + this.model = model; + this.status = status; + this.serviceLifeEndTime = new Timestamp(serviceLifeEndTime.getTime()); + this.warrantyEndTime = new Timestamp(warrantyEndTime.getTime()); + this.usersMax = usersMax; + this.roomsMax = roomsMax; + this.devicesMax = devicesMax; + this.sirensMax = sirensMax; + this.onBattery = onBattery; + } + + @Override + public String toString() { + return "\n\nHub: id: " + id + ", model: " + model + ", status: " + status + ", service_life_end_time: " + serviceLifeEndTime + ", warranty_end_time: " + warrantyEndTime + ", users_max: " + usersMax + ", rooms_max: " + roomsMax + ", devices_max: " + devicesMax + ", sirens_max: " + sirensMax + ", on_battery: " + onBattery + "]"; + } +} diff --git a/src/main/java/com/mkruchok/model/entity/Notification.java b/src/main/java/com/mkruchok/model/entity/Notification.java new file mode 100644 index 0000000..763134e --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Notification.java @@ -0,0 +1,39 @@ +package com.mkruchok.model.entity; + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.Getter; +import lombok.Setter; + +import java.sql.Timestamp; + +@SuppressFBWarnings +@Getter +@Setter +public final class Notification { + private Integer id; + private Timestamp timestamp; + private String type; + private Integer deviceId; + private Integer hubId; + + public Notification(Integer id, Timestamp timestamp, String type, Integer deviceId, Integer hubId) { + this.id = id; + this.timestamp = timestamp; + this.type = type; + this.deviceId = deviceId; + this.hubId = hubId; + } + + public Notification(Timestamp timestamp, String type, Integer deviceId, Integer hubId) { + this.timestamp = timestamp; + this.type = type; + this.deviceId = deviceId; + this.hubId = hubId; + } + + @Override + public String toString() { + return "\n\nNotification: id: " + id + ", timestamp: " + timestamp + ", type: " + type + ", device_id: " + + deviceId + ", hub_id: " + hubId; + } +} diff --git a/src/main/java/com/mkruchok/model/entity/Permission.java b/src/main/java/com/mkruchok/model/entity/Permission.java new file mode 100644 index 0000000..f77c642 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Permission.java @@ -0,0 +1,30 @@ +package com.mkruchok.model.entity; + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.Getter; +import lombok.Setter; + +@SuppressFBWarnings +@Getter +@Setter +public final class Permission { + private Integer id; + private String name; + private String description; + + public Permission(Integer id, String name, String description) { + this.id = id; + this.name = name; + this.description = description; + } + + public Permission(String name, String description) { + this.name = name; + this.description = description; + } + + @Override + public String toString() { + return "\n\nPermission: id: " + id + ", name: " + name + ", description: " + description; + } +} diff --git a/src/main/java/com/mkruchok/model/entity/Rex.java b/src/main/java/com/mkruchok/model/entity/Rex.java new file mode 100644 index 0000000..3b9b52b --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Rex.java @@ -0,0 +1,34 @@ +package com.mkruchok.model.entity; + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.Getter; +import lombok.Setter; + +@SuppressFBWarnings +@Getter +@Setter +public final class Rex { + private Integer id; + private String name; + private String range; + private Integer hubId; + + public Rex(Integer id, String name, String range, Integer hubId) { + this.id = id; + this.name = name; + this.range = range; + this.hubId = hubId; + } + + public Rex(String name, String range, Integer hubId) { + this.name = name; + this.range = range; + this.hubId = hubId; + } + + @Override + public String toString() { + return "\n\nRex: id: " + id + ", name: " + name + ", range: " + range + ", hub_id: " + + hubId; + } +} diff --git a/src/main/java/com/mkruchok/model/entity/User.java b/src/main/java/com/mkruchok/model/entity/User.java new file mode 100644 index 0000000..7d045b9 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/User.java @@ -0,0 +1,42 @@ +package com.mkruchok.model.entity; + + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.Getter; +import lombok.Setter; +import java.sql.Timestamp; + +@SuppressFBWarnings +@Getter +@Setter +public final class User { + private Integer id; + private String email; + private String password; + private Timestamp dateCreated; + private String name; + private String groupId; + + public User(Integer id, String email, String password, Timestamp dateCreated, String name, String groupId) { + this.id = id; + this.email = email; + this.password = password; + this.dateCreated = dateCreated; + this.name = name; + this.groupId = groupId; + } + + public User(String email, String password, Timestamp dateCreated, String name, String groupId) { + this.email = email; + this.password = password; + this.dateCreated = dateCreated; + this.name = name; + this.groupId = groupId; + } + + @Override + public String toString() { + return "\n\nUser: id: " + id + ", email: " + email + ", password: " + password + ", date created: " + + dateCreated; + } +} diff --git a/src/main/java/com/mkruchok/model/entity/package-info.java b/src/main/java/com/mkruchok/model/entity/package-info.java new file mode 100644 index 0000000..cd73ddd --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.model.entity; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/package-info.java b/src/main/java/com/mkruchok/model/package-info.java new file mode 100644 index 0000000..8f40d85 --- /dev/null +++ b/src/main/java/com/mkruchok/model/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.model; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/package-info.java b/src/main/java/com/mkruchok/package-info.java new file mode 100644 index 0000000..4f8c4fa --- /dev/null +++ b/src/main/java/com/mkruchok/package-info.java @@ -0,0 +1 @@ +package com.mkruchok; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/persistant/ConnectionManager.java b/src/main/java/com/mkruchok/persistant/ConnectionManager.java new file mode 100644 index 0000000..ec2f861 --- /dev/null +++ b/src/main/java/com/mkruchok/persistant/ConnectionManager.java @@ -0,0 +1,42 @@ +package com.mkruchok.persistant; + +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.Connection; +import java.sql.DriverManager; + +@SuppressFBWarnings +public final class ConnectionManager { + private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/ajax_curr?useUnicode=true&serverTimezone=UTC"; + private static final String USERNAME = "root"; + private static final String PASSWORD = "admin"; + static final Logger LOGGER = LoggerFactory.getLogger(ConnectionManager.class); + private static Connection databaseConnection; + + public ConnectionManager() { + } + + public static Connection getConnection() { + try { + Class.forName(JDBC_DRIVER); + if (databaseConnection == null || databaseConnection.isClosed()) { + try { + databaseConnection = DriverManager.getConnection( + DATABASE_URL, + USERNAME, + PASSWORD + ); + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + } + } catch (Exception e) { + LOGGER.error("Ops!", e); + } + return databaseConnection; + } + +} diff --git a/src/main/java/com/mkruchok/persistant/package-info.java b/src/main/java/com/mkruchok/persistant/package-info.java new file mode 100644 index 0000000..866ce58 --- /dev/null +++ b/src/main/java/com/mkruchok/persistant/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.persistant; diff --git a/src/main/java/com/mkruchok/service/AbstractService.java b/src/main/java/com/mkruchok/service/AbstractService.java new file mode 100644 index 0000000..a78ab0b --- /dev/null +++ b/src/main/java/com/mkruchok/service/AbstractService.java @@ -0,0 +1,33 @@ +package com.mkruchok.service; + +import java.sql.SQLException; +import java.util.List; + +public interface AbstractService { + + List findAll() throws SQLException; + + default E findById(Integer id) throws SQLException { + return null; + } + + default void update(Integer id, E entity) throws SQLException { + } + + default void create(E entity) throws SQLException { + } + + default void delete(Integer id) throws SQLException { + } + + + default E findByName(String name) throws SQLException { + return null; + } + + default void update(String name, E entity) throws SQLException { + } + + default void delete(String name) throws SQLException { + } +} diff --git a/src/main/java/com/mkruchok/service/implementation/DeviceService.java b/src/main/java/com/mkruchok/service/implementation/DeviceService.java new file mode 100644 index 0000000..d74d996 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/DeviceService.java @@ -0,0 +1,39 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.DeviceDAO; +import com.mkruchok.model.entity.Device; +import com.mkruchok.service.AbstractService; + +import java.sql.SQLException; +import java.util.List; + +public final class DeviceService implements AbstractService { + + private final DeviceDAO dao = new DeviceDAO(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public Device findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(Device entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, Device entity) throws SQLException { + dao.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + dao.delete(id); + } + +} diff --git a/src/main/java/com/mkruchok/service/implementation/GroupService.java b/src/main/java/com/mkruchok/service/implementation/GroupService.java new file mode 100644 index 0000000..d2dd862 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/GroupService.java @@ -0,0 +1,39 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.GroupDAO; +import com.mkruchok.model.entity.Group; +import com.mkruchok.service.AbstractService; + +import java.sql.SQLException; +import java.util.List; + +public final class GroupService implements AbstractService { + + private final GroupDAO dao = new GroupDAO(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public Group findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(Group entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, Group entity) throws SQLException { + dao.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + dao.delete(id); + } + +} diff --git a/src/main/java/com/mkruchok/service/implementation/HubService.java b/src/main/java/com/mkruchok/service/implementation/HubService.java new file mode 100644 index 0000000..1dfc554 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/HubService.java @@ -0,0 +1,39 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.HubDAO; +import com.mkruchok.model.entity.Hub; +import com.mkruchok.service.AbstractService; + +import java.sql.SQLException; +import java.util.List; + +public final class HubService implements AbstractService { + + private final HubDAO dao = new HubDAO(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public Hub findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(Hub entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, Hub entity) throws SQLException { + dao.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + dao.delete(id); + } + +} diff --git a/src/main/java/com/mkruchok/service/implementation/NotificationService.java b/src/main/java/com/mkruchok/service/implementation/NotificationService.java new file mode 100644 index 0000000..1ca2c75 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/NotificationService.java @@ -0,0 +1,39 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.NotificationDAO; +import com.mkruchok.model.entity.Notification; +import com.mkruchok.service.AbstractService; + +import java.sql.SQLException; +import java.util.List; + +public final class NotificationService implements AbstractService { + + private final NotificationDAO dao = new NotificationDAO(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public Notification findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(Notification entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, Notification entity) throws SQLException { + dao.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + dao.delete(id); + } + +} diff --git a/src/main/java/com/mkruchok/service/implementation/PermissionService.java b/src/main/java/com/mkruchok/service/implementation/PermissionService.java new file mode 100644 index 0000000..d56cb6e --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/PermissionService.java @@ -0,0 +1,39 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.PermissionDAO; +import com.mkruchok.model.entity.Permission; +import com.mkruchok.service.AbstractService; + +import java.sql.SQLException; +import java.util.List; + +public final class PermissionService implements AbstractService { + + private final PermissionDAO dao = new PermissionDAO(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public Permission findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(Permission entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, Permission entity) throws SQLException { + dao.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + dao.delete(id); + } + +} diff --git a/src/main/java/com/mkruchok/service/implementation/RexService.java b/src/main/java/com/mkruchok/service/implementation/RexService.java new file mode 100644 index 0000000..e081414 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/RexService.java @@ -0,0 +1,39 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.RexDAO; +import com.mkruchok.model.entity.Rex; +import com.mkruchok.service.AbstractService; + +import java.sql.SQLException; +import java.util.List; + +public final class RexService implements AbstractService { + + private final RexDAO dao = new RexDAO(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public Rex findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(Rex entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, Rex entity) throws SQLException { + dao.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + dao.delete(id); + } + +} diff --git a/src/main/java/com/mkruchok/service/implementation/UserService.java b/src/main/java/com/mkruchok/service/implementation/UserService.java new file mode 100644 index 0000000..fc850f5 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/UserService.java @@ -0,0 +1,40 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.UserDAO; +import com.mkruchok.model.entity.User; +import com.mkruchok.service.AbstractService; + +import java.sql.SQLException; +import java.util.List; + + +public final class UserService implements AbstractService { + + private final UserDAO dao = new UserDAO(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public User findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(User entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, User entity) throws SQLException { + dao.update(id, entity); + } + + @Override + public void delete(Integer id) throws SQLException { + dao.delete(id); + } + +} diff --git a/src/main/java/com/mkruchok/service/implementation/package-info.java b/src/main/java/com/mkruchok/service/implementation/package-info.java new file mode 100644 index 0000000..7334fe8 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.service.implementation; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/package-info.java b/src/main/java/com/mkruchok/service/package-info.java new file mode 100644 index 0000000..fab1eb4 --- /dev/null +++ b/src/main/java/com/mkruchok/service/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.service; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/view/Menu.java b/src/main/java/com/mkruchok/view/Menu.java new file mode 100644 index 0000000..7fd56d7 --- /dev/null +++ b/src/main/java/com/mkruchok/view/Menu.java @@ -0,0 +1,24 @@ +package com.mkruchok.view; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class Menu { + static final Logger LOGGER = LoggerFactory.getLogger(Menu.class); + public void displayMenu() { + LOGGER.debug(" _________________________________________________"); + LOGGER.debug("| |"); + LOGGER.debug("| Enter entity and CRUD number : |"); + LOGGER.debug("| |"); + LOGGER.debug("| Table: CRUD: |"); + LOGGER.debug("|_________________________________________________|"); + LOGGER.debug("| 1 | user | 1 | GET TABLE |"); + LOGGER.debug("| 2 | hub | 2 | GET ROW BY ID |"); + LOGGER.debug("| 3 | device | 3 | CREATE ROW |"); + LOGGER.debug("| 4 | notification | 4 | UPDATE ROW |"); + LOGGER.debug("| 5 | group | 5 | DELETE ROW |"); + LOGGER.debug("| 6 | permission | | |"); + LOGGER.debug("| 7 | rex | | |"); + LOGGER.debug("|___|__________________|___|______________________|"); + } +} diff --git a/src/main/java/com/mkruchok/view/Printable.java b/src/main/java/com/mkruchok/view/Printable.java new file mode 100644 index 0000000..c536539 --- /dev/null +++ b/src/main/java/com/mkruchok/view/Printable.java @@ -0,0 +1,8 @@ +package com.mkruchok.view; + +import java.sql.SQLException; + +@FunctionalInterface +public interface Printable { + void print() throws SQLException; +} diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java new file mode 100644 index 0000000..1616d7a --- /dev/null +++ b/src/main/java/com/mkruchok/view/View.java @@ -0,0 +1,429 @@ +package com.mkruchok.view; + +import com.mkruchok.controller.implementation.*; +import com.mkruchok.model.entity.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Scanner; + + +public final class View { + private static final Scanner SCANNER = new Scanner(System.in, "UTF-8"); + private final Map menu = new LinkedHashMap<>(); + + private final HubController hubController = new HubController(); + private final DeviceController deviceController = new DeviceController(); + private final NotificationController notificationController = new NotificationController(); + private final GroupController groupController = new GroupController(); + private final PermissionController permissionController = new PermissionController(); + private final UserController userController = new UserController(); + private final RexController rexController = new RexController(); + static final Logger LOGGER = LoggerFactory.getLogger(View.class); + + + public View() { + menu.put("11", this::getAllUsers); + menu.put("12", this::getUserById); + menu.put("13", this::createUser); + menu.put("14", this::updateUser); + menu.put("15", this::deleteUser); + + menu.put("21", this::getAllHubs); + menu.put("22", this::getHubById); + menu.put("23", this::createHub); + menu.put("24", this::updateHub); + menu.put("25", this::deleteHub); + + menu.put("31", this::getAllDevices); + menu.put("32", this::getDeviceByName); + menu.put("33", this::createDevice); + menu.put("34", this::updateDevice); + menu.put("35", this::deleteDevice); + + menu.put("41", this::getAllNotifications); + menu.put("42", this::getNotificationById); + menu.put("43", this::createNotification); + menu.put("44", this::updateNotification); + menu.put("45", this::deleteNotification); + + menu.put("51", this::getAllGroups); + menu.put("52", this::getGroupById); + menu.put("53", this::createGroup); + menu.put("54", this::updateGroup); + menu.put("55", this::deleteGroup); + + menu.put("61", this::getAllPermissions); + menu.put("62", this::getPermissionById); + menu.put("63", this::createPermission); + menu.put("64", this::updatePermission); + menu.put("65", this::deletePermission); + + menu.put("71", this::getAllRexes); + menu.put("72", this::getRexById); + menu.put("73", this::createRex); + menu.put("74", this::updateRex); + menu.put("75", this::deleteRex); + } + + public void show() { + String input; + Menu showMenu = new Menu(); + showMenu.displayMenu(); + LOGGER.debug("\nEnter numbers:\n"); + do { + try { + input = SCANNER.next(); + menu.get(input).print(); + } catch (Exception e) { + LOGGER.debug("\nSomething is not right...\n"); + } + } while (SCANNER.hasNext()); + } + + private void getAllUsers() throws SQLException { + + LOGGER.debug(userController.findAll().toString()); + } + + private void getUserById() throws SQLException { + LOGGER.debug("\nEnter iD: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(userController.findById(id).toString()); + } + + private User getUserInputs(Integer create) { + LOGGER.debug("Enter email: "); + String email = SCANNER.next(); + LOGGER.debug("Enter password: "); + String password = SCANNER.next(); + LOGGER.debug("Enter name: "); + String name = SCANNER.next(); + Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); + String groupId = null; + if (create == 0) { + LOGGER.debug("Enter group id: "); + groupId = SCANNER.next(); + } + return new User(email, password, dateCreated, name, groupId); + } + + private void createUser() throws SQLException { + + User user = getUserInputs(1); + userController.create(user); + LOGGER.debug("User was added to the table.\nEnter numbers: "); + } + + private void updateUser() throws SQLException { + LOGGER.debug("\nEnter id to updаte: "); + Integer id = SCANNER.nextInt(); + User user = getUserInputs(0); + user.setId(id); + userController.update(user.getId(), user); + LOGGER.debug("Updated user, id = " + id); + } + + private void deleteUser() throws SQLException { + LOGGER.debug("\nEnter ID to delete user: "); + int id = SCANNER.nextInt(); + userController.delete(id); + LOGGER.debug("Deleted user, id = " + id); + } + + + private void getAllHubs() throws SQLException { + + LOGGER.debug(hubController.findAll().toString()); + } + + private void getHubById() throws SQLException { + LOGGER.debug("\nEnter Id: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(hubController.findById(id).toString()); + } + + private Hub getHubInputs() { + LOGGER.debug("\nEnter model: "); + String model = SCANNER.next(); + LOGGER.debug("Enter status: "); + String status = SCANNER.next(); + SCANNER.nextLine(); + LOGGER.debug("Enter service_life_end_time: "); + Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter warranty_end_time: "); + Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter users_max: "); + Integer usersMax = SCANNER.nextInt(); + LOGGER.debug("Enter rooms_max: "); + Integer roomsMax = SCANNER.nextInt(); + LOGGER.debug("Enter devices_max: "); + Integer devicesMax = SCANNER.nextInt(); + LOGGER.debug("Enter sirens_max: "); + Integer sirensMax = SCANNER.nextInt(); + LOGGER.debug("Enter on_battery: "); + Integer onBattery = SCANNER.nextInt(); + return new Hub(model, status, serviceLifeEndTime, warrantyEndTime, + usersMax, roomsMax, devicesMax, sirensMax, onBattery); + } + + private void createHub() throws SQLException { + + Hub hub = getHubInputs(); + hubController.create(hub); + LOGGER.debug("Hub was added to the table.\nEnter numbers: "); + } + + private void updateHub() throws SQLException { + LOGGER.debug("\nEnter id to update:"); + Integer id = SCANNER.nextInt(); + Hub hub = getHubInputs(); + hub.setId(id); + hubController.update(hub.getId(), hub); + LOGGER.debug("Updated hub, id = " + id); + } + + private void deleteHub() throws SQLException { + LOGGER.debug("\nEnter id to delete hub: "); + Integer id = SCANNER.nextInt(); + hubController.delete(id); + LOGGER.debug("Deleted hub, id = " + id); + } + + + private void getAllDevices() throws SQLException { + + LOGGER.debug(deviceController.findAll().toString()); + } + + private void getDeviceByName() throws SQLException { + LOGGER.debug("\nEnter Id: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(deviceController.findById(id).toString()); + } + + private Device getDeviceInputs() { + LOGGER.debug("\nEnter model: "); + String model = SCANNER.next(); + LOGGER.debug("Enter status: "); + String status = SCANNER.next(); + SCANNER.nextLine(); + LOGGER.debug("Enter warranty_end_time: "); + Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter service_life_end_time: "); + Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter on_battery: "); + Integer onBattery = SCANNER.nextInt(); + LOGGER.debug("Enter hub_id: "); + Integer hubId = SCANNER.nextInt(); + return new Device(model, status, serviceLifeEndTime, warrantyEndTime, + onBattery, hubId); + } + + private void createDevice() throws SQLException { + + Device device = getDeviceInputs(); + deviceController.create(device); + LOGGER.debug("Device was added to the table.\nEnter numbers: "); + } + + private void updateDevice() throws SQLException { + LOGGER.debug("\nEnter id to update : "); + Integer id = SCANNER.nextInt(); + Device device = getDeviceInputs(); + device.setId(id); + deviceController.update(device.getId(), device); + LOGGER.debug("Updated device, id = " + id); + } + + private void deleteDevice() throws SQLException { + LOGGER.debug("\nEnter id to delete device: "); + Integer id = SCANNER.nextInt(); + deviceController.delete(id); + LOGGER.debug("Deleted device, id = " + id); + } + + + private void getAllNotifications() throws SQLException { + + LOGGER.debug(notificationController.findAll().toString()); + } + + private void getNotificationById() throws SQLException { + LOGGER.debug("\nEnter Id: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(notificationController.findById(id).toString()); + } + + private Notification getNotificationInputs() { + LOGGER.debug("Enter timestamp: "); + Timestamp timestamp = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter type: "); + String type = SCANNER.next(); + LOGGER.debug("\nEnter device_id: "); + Integer deviceId = SCANNER.nextInt(); + LOGGER.debug("\nEnter hub_id: "); + Integer hubId = SCANNER.nextInt(); + return new Notification(timestamp, type, deviceId, hubId); + } + + private void createNotification() throws SQLException { + + Notification notification = getNotificationInputs(); + notificationController.create(notification); + LOGGER.debug("Notification was added to the table.\nEnter numbers: "); + } + + private void updateNotification() throws SQLException { + LOGGER.debug("\nEnter id to update:"); + Integer id = SCANNER.nextInt(); + Notification notification = getNotificationInputs(); + notification.setId(id); + notificationController.update(notification.getId(), notification); + LOGGER.debug("Updated notification, id = " + id); + } + + private void deleteNotification() throws SQLException { + LOGGER.debug("\nEnter id to delete notification: "); + Integer id = SCANNER.nextInt(); + notificationController.delete(id); + LOGGER.debug("Deleted notification, id = " + id); + } + + + private void getAllGroups() throws SQLException { + + LOGGER.debug(groupController.findAll().toString()); + } + + private void getGroupById() throws SQLException { + LOGGER.debug("\nEnter ID: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(groupController.findById(id).toString()); + } + + private Group getGroupInputs() { + LOGGER.debug("\nEnter name: "); + String name = SCANNER.next(); + LOGGER.debug("\nEnter description: "); + String description = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + Integer hubId = SCANNER.nextInt(); + return new Group(name, description, hubId); + } + + private void createGroup() throws SQLException { + + Group group = getGroupInputs(); + groupController.create(group); + LOGGER.debug("Group was added to the table.\nEnter numbers: "); + } + + private void updateGroup() throws SQLException { + LOGGER.debug("\nEnter id to update:"); + Integer id = SCANNER.nextInt(); + Group group = getGroupInputs(); + group.setId(id); + groupController.update(group.getId(), group); + LOGGER.debug("Updated group, id = " + id); + } + + private void deleteGroup() throws SQLException { + LOGGER.debug("\nEnter ID to delete group: "); + int id = SCANNER.nextInt(); + groupController.delete(id); + LOGGER.debug("Deleted group, id = " + id); + } + + + private void getAllPermissions() throws SQLException { + + LOGGER.debug(permissionController.findAll().toString()); + } + + private void getPermissionById() throws SQLException { + LOGGER.debug("\nEnter ID: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(permissionController.findById(id).toString()); + } + + private Permission getPermissionInputs() { + LOGGER.debug("Enter name: "); + String name = SCANNER.next(); + LOGGER.debug("Enter description: "); + String description = SCANNER.next(); + return new Permission(name, description); + } + + private void createPermission() throws SQLException { + + Permission permission = getPermissionInputs(); + permissionController.create(permission); + LOGGER.debug("Permission was added to the table.\nEnter numbers: "); + } + + private void updatePermission() throws SQLException { + LOGGER.debug("\nEnter id to update: "); + Integer id = SCANNER.nextInt(); + Permission permission = getPermissionInputs(); + permission.setId(id); + permissionController.update(permission.getId(), permission); + LOGGER.debug("Updated permission, id = " + id); + } + + private void deletePermission() throws SQLException { + LOGGER.debug("\nEnter ID to delete permission: "); + int id = SCANNER.nextInt(); + permissionController.delete(id); + LOGGER.debug("Deleted permission, id = " + id); + } + + + private void getAllRexes() throws SQLException { + + LOGGER.debug(rexController.findAll().toString()); + } + + private void getRexById() throws SQLException { + LOGGER.debug("\nEnter ID: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(rexController.findById(id).toString()); + } + + private Rex getRexInputs() { + LOGGER.debug("\nEnter name: "); + String name = SCANNER.next(); + LOGGER.debug("\nEnter range: "); + String range = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + Integer hubId = SCANNER.nextInt(); + return new Rex(name, range, hubId); + } + + private void createRex() throws SQLException { + + Rex rex = getRexInputs(); + rexController.create(rex); + LOGGER.debug("Rex was added to the table.\nEnter numbers: "); + } + + private void updateRex() throws SQLException { + LOGGER.debug("\nEnter id to update: "); + Integer id = SCANNER.nextInt(); + Rex rex = getRexInputs(); + rex.setId(id); + rexController.update(rex.getId(), rex); + LOGGER.debug("Updated rex, id = " + id); + } + + private void deleteRex() throws SQLException { + LOGGER.debug("\nEnter id to delete rex: "); + int id = SCANNER.nextInt(); + rexController.delete(id); + LOGGER.debug("Deleted rex, id = " + id); + } +} diff --git a/src/main/java/com/mkruchok/view/package-info.java b/src/main/java/com/mkruchok/view/package-info.java new file mode 100644 index 0000000..45044f2 --- /dev/null +++ b/src/main/java/com/mkruchok/view/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.view; \ No newline at end of file From d3a71298cbabaf3a324d12681ae19f05483032d1 Mon Sep 17 00:00:00 2001 From: Phlake Date: Sun, 15 May 2022 16:46:51 +0300 Subject: [PATCH 02/11] Added necessary files --- .gitignore | 2 +- pom.xml | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore index 1201cbd..a14753b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ *.html *.css *.rss -*.xml + *target # Flutter/Dart/Pub related diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..07b02b8 --- /dev/null +++ b/pom.xml @@ -0,0 +1,93 @@ + + + 4.0.0 + + com.mkruchok + DB4MK + 1.0-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.13.0 + + + + + + org.apache.maven.plugins + maven-site-plugin + 3.7.1 + + + org.apache.maven.plugins + maven-pmd-plugin + 3.13.0 + + + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + + + + org.projectlombok + lombok + 1.18.24 + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + + mysql + mysql-connector-java + 8.0.29 + + + com.google.code.findbugs + annotations + 3.0.1 + provided + + + ch.qos.logback + logback-classic + 1.2.11 + + + com.puppycrawl.tools + checkstyle + 10.2 + + + + + + org.codehaus.mojo + findbugs-maven-plugin + 3.0.5 + + true + target/site + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.13.0 + + + + From f2d8c639d0dee9c37a973b98ff5a9453d4e0a85b Mon Sep 17 00:00:00 2001 From: Phlake Date: Tue, 17 May 2022 21:11:05 +0300 Subject: [PATCH 03/11] min --- checkstyle.xml | 70 ++++++++++++++++++++++++++++ pom.xml | 42 +++++++++++++++++ src/main/resources/hibernate.cfg.xml | 20 ++++++++ 3 files changed, 132 insertions(+) create mode 100644 checkstyle.xml create mode 100644 src/main/resources/hibernate.cfg.xml diff --git a/checkstyle.xml b/checkstyle.xml new file mode 100644 index 0000000..ed077fb --- /dev/null +++ b/checkstyle.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 07b02b8..ecd5617 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,10 @@ com.mkruchok DB4MK 1.0-SNAPSHOT + + UTF-8 + UTF-8 + @@ -16,6 +20,18 @@ maven-pmd-plugin 3.13.0 + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + + com.puppycrawl.tools + checkstyle + 10.2 + + + @@ -24,6 +40,12 @@ maven-site-plugin 3.7.1 + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.3.0 + + org.apache.maven.plugins maven-pmd-plugin @@ -55,6 +77,11 @@ mysql-connector-java 8.0.29 + + org.hibernate + hibernate-entitymanager + 5.6.8.Final + com.google.code.findbugs annotations @@ -83,6 +110,21 @@ target/site + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + checkstyle.xml + + + + + checkstyle + + + + org.apache.maven.plugins maven-pmd-plugin diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml new file mode 100644 index 0000000..18c8306 --- /dev/null +++ b/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,20 @@ + + + + + jdbc:mysql://localhost:3306/ajax_curr + com.mysql.cj.jdbc.Driver + root + admin + thread + + + + + + + + + \ No newline at end of file From 494c8d0a634e43fdc1ecc05976b1dcd6359097b5 Mon Sep 17 00:00:00 2001 From: Phlake Date: Tue, 17 May 2022 21:11:54 +0300 Subject: [PATCH 04/11] Added Lab 5 --- README.md | 4 +- src/main/java/com/mkruchok/App.java | 22 ++ src/main/java/com/mkruchok/HibernateUtil.java | 31 +++ .../controller/AbstractController.java | 14 +- .../AbstractControllerImpl.java | 37 +++ .../implementation/DeviceController.java | 35 +-- .../implementation/GroupController.java | 35 +-- .../implementation/HubController.java | 35 +-- .../NotificationController.java | 34 +-- .../implementation/PermissionController.java | 35 +-- .../implementation/RexController.java | 36 +-- .../implementation/UserController.java | 38 +--- .../com/mkruchok/model/dao/AbstractDAO.java | 22 +- .../dao/implementation/AbstractDaoImpl.java | 104 +++++++++ .../model/dao/implementation/DeviceDAO.java | 123 +--------- .../model/dao/implementation/GroupDAO.java | 108 +-------- .../model/dao/implementation/HubDAO.java | 134 +---------- .../dao/implementation/NotificationDAO.java | 112 +-------- .../dao/implementation/PermissionDAO.java | 105 +-------- .../model/dao/implementation/RexDAO.java | 108 +-------- .../model/dao/implementation/UserDAO.java | 115 +--------- .../com/mkruchok/model/entity/Device.java | 71 ++++-- .../java/com/mkruchok/model/entity/Group.java | 71 ++++-- .../java/com/mkruchok/model/entity/Hub.java | 94 ++++++-- .../mkruchok/model/entity/Notification.java | 62 +++-- .../com/mkruchok/model/entity/Permission.java | 64 ++++-- .../java/com/mkruchok/model/entity/Rex.java | 54 +++-- .../java/com/mkruchok/model/entity/User.java | 78 +++++-- .../persistant/ConnectionManager.java | 2 +- src/main/java/com/mkruchok/view/Menu.java | 32 +-- src/main/java/com/mkruchok/view/View.java | 212 +++++++++++------- 31 files changed, 764 insertions(+), 1263 deletions(-) create mode 100644 src/main/java/com/mkruchok/App.java create mode 100644 src/main/java/com/mkruchok/HibernateUtil.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java diff --git a/README.md b/README.md index c000c32..b2ad28c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# Lab 4 +# Lab 5 -JDBC Maven +JDBC Maven Hibernate JPA diff --git a/src/main/java/com/mkruchok/App.java b/src/main/java/com/mkruchok/App.java new file mode 100644 index 0000000..aaae3a4 --- /dev/null +++ b/src/main/java/com/mkruchok/App.java @@ -0,0 +1,22 @@ +package com.mkruchok; + +import com.mkruchok.view.View; +import org.hibernate.Session; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class App { + static final Logger LOGGER = LoggerFactory.getLogger(App.class); + + public static void main(final String[] args) { + System.err.close(); + System.setErr(System.out); + try (Session ignored = HibernateUtil.getSession()) { + LOGGER.info("Test session established. "); + new View().show(); + } catch (Exception ex) { + LOGGER.warn("Test session failed."); + LOGGER.error(ex.toString()); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/HibernateUtil.java b/src/main/java/com/mkruchok/HibernateUtil.java new file mode 100644 index 0000000..8ca6461 --- /dev/null +++ b/src/main/java/com/mkruchok/HibernateUtil.java @@ -0,0 +1,31 @@ +package com.mkruchok; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HibernateUtil { + static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); + private static final SessionFactory SESSION_FACTORY; + + static { + try { + SESSION_FACTORY = new Configuration().configure().buildSessionFactory(); + + } catch (Exception ex) { + LOGGER.warn("SessionFactory init failed."); + LOGGER.error(ex.toString()); + throw new ExceptionInInitializerError(ex); + } + } + + public static SessionFactory getSessionFactory() { + return SESSION_FACTORY; + } + + public static Session getSession() { + return SESSION_FACTORY.openSession(); + } +} diff --git a/src/main/java/com/mkruchok/controller/AbstractController.java b/src/main/java/com/mkruchok/controller/AbstractController.java index a84425f..c882f7a 100644 --- a/src/main/java/com/mkruchok/controller/AbstractController.java +++ b/src/main/java/com/mkruchok/controller/AbstractController.java @@ -7,22 +7,16 @@ public interface AbstractController { List findAll() throws SQLException; - default E findById(Integer id) throws SQLException { + default E findById(Integer id) { return null; } - default void create(E entity) throws SQLException { + default void create(E entity) { } - default void update(Integer id, E entity) throws SQLException { + default void update(Integer id, E entity) { } - default void delete(Integer id) throws SQLException { - } - - default void update(String name, E entity) throws SQLException { - } - - default void delete(String name) throws SQLException { + default void delete(Integer id) { } } diff --git a/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java b/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java new file mode 100644 index 0000000..4d6dcd5 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java @@ -0,0 +1,37 @@ +package com.mkruchok.controller.implementation; + + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; + +import java.util.List; + +public abstract class AbstractControllerImpl implements AbstractController { + public abstract AbstractDaoImpl getDao(); + + @Override + public final List findAll() { + return (List) getDao().findAll(); + } + + @Override + public final E findById(final Integer id) { + return getDao().findById(id); + } + + @Override + public final void create(final E object) { + getDao().create(object); + } + + @Override + public final void update(final Integer id, E object) { + getDao().update(id, object); + } + + @Override + public final void delete(final Integer id) { + getDao().delete(id); + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/controller/implementation/DeviceController.java b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java index 81c965a..fc3070e 100644 --- a/src/main/java/com/mkruchok/controller/implementation/DeviceController.java +++ b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java @@ -1,38 +1,15 @@ package com.mkruchok.controller.implementation; -import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.DeviceDAO; import com.mkruchok.model.entity.Device; -import com.mkruchok.service.implementation.DeviceService; -import java.sql.SQLException; -import java.util.List; +public final class DeviceController extends AbstractControllerImpl { -public final class DeviceController implements AbstractController { - - private final DeviceService service = new DeviceService(); - - @Override - public List findAll() throws SQLException { - return service.findAll(); - } - - @Override - public Device findById(Integer id) throws SQLException { - return service.findById(id); - } - - @Override - public void create(Device entity) throws SQLException { - service.create(entity); - } - - @Override - public void update(Integer id, Device entity) throws SQLException { - service.update(id, entity); - } + private final DeviceDAO deviceDao = new DeviceDAO(); @Override - public void delete(Integer id) throws SQLException { - service.delete(id); + public AbstractDaoImpl getDao() { + return deviceDao; } } diff --git a/src/main/java/com/mkruchok/controller/implementation/GroupController.java b/src/main/java/com/mkruchok/controller/implementation/GroupController.java index a309428..a8743dd 100644 --- a/src/main/java/com/mkruchok/controller/implementation/GroupController.java +++ b/src/main/java/com/mkruchok/controller/implementation/GroupController.java @@ -1,38 +1,15 @@ package com.mkruchok.controller.implementation; -import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.GroupDAO; import com.mkruchok.model.entity.Group; -import com.mkruchok.service.implementation.GroupService; -import java.sql.SQLException; -import java.util.List; -public final class GroupController implements AbstractController { - - private final GroupService service = new GroupService(); - - @Override - public List findAll() throws SQLException { - return service.findAll(); - } - - @Override - public Group findById(Integer id) throws SQLException { - return service.findById(id); - } - - @Override - public void create(Group entity) throws SQLException { - service.create(entity); - } - - @Override - public void update(Integer id, Group entity) throws SQLException { - service.update(id, entity); - } +public final class GroupController extends AbstractControllerImpl { + private final GroupDAO groupDao = new GroupDAO(); @Override - public void delete(Integer id) throws SQLException { - service.delete(id); + public AbstractDaoImpl getDao() { + return groupDao; } } diff --git a/src/main/java/com/mkruchok/controller/implementation/HubController.java b/src/main/java/com/mkruchok/controller/implementation/HubController.java index edd2c7d..9f55b0a 100644 --- a/src/main/java/com/mkruchok/controller/implementation/HubController.java +++ b/src/main/java/com/mkruchok/controller/implementation/HubController.java @@ -1,38 +1,15 @@ package com.mkruchok.controller.implementation; -import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.HubDAO; import com.mkruchok.model.entity.Hub; -import com.mkruchok.service.implementation.HubService; -import java.sql.SQLException; -import java.util.List; +public final class HubController extends AbstractControllerImpl { -public final class HubController implements AbstractController { - - private final HubService service = new HubService(); - - @Override - public List findAll() throws SQLException { - return service.findAll(); - } - - @Override - public Hub findById(Integer id) throws SQLException { - return service.findById(id); - } - - @Override - public void create(Hub entity) throws SQLException { - service.create(entity); - } - - @Override - public void update(Integer id, Hub entity) throws SQLException { - service.update(id, entity); - } + private final HubDAO hubDao = new HubDAO(); @Override - public void delete(Integer id) throws SQLException { - service.delete(id); + public AbstractDaoImpl getDao() { + return hubDao; } } diff --git a/src/main/java/com/mkruchok/controller/implementation/NotificationController.java b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java index 3a0d1ca..8c7f91c 100644 --- a/src/main/java/com/mkruchok/controller/implementation/NotificationController.java +++ b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java @@ -1,38 +1,16 @@ package com.mkruchok.controller.implementation; -import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.NotificationDAO; import com.mkruchok.model.entity.Notification; -import com.mkruchok.service.implementation.NotificationService; -import java.sql.SQLException; -import java.util.List; -public final class NotificationController implements AbstractController { - - private final NotificationService service = new NotificationService(); - - @Override - public List findAll() throws SQLException { - return service.findAll(); - } - - @Override - public Notification findById(Integer id) throws SQLException { - return service.findById(id); - } - - @Override - public void create(Notification entity) throws SQLException { - service.create(entity); - } +public final class NotificationController extends AbstractControllerImpl { + private final NotificationDAO notificationDao = new NotificationDAO(); @Override - public void update(Integer id, Notification entity) throws SQLException { - service.update(id, entity); + public AbstractDaoImpl getDao() { + return notificationDao; } - @Override - public void delete(Integer id) throws SQLException { - service.delete(id); - } } diff --git a/src/main/java/com/mkruchok/controller/implementation/PermissionController.java b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java index 2f75703..60ca235 100644 --- a/src/main/java/com/mkruchok/controller/implementation/PermissionController.java +++ b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java @@ -1,38 +1,15 @@ package com.mkruchok.controller.implementation; -import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.PermissionDAO; import com.mkruchok.model.entity.Permission; -import com.mkruchok.service.implementation.PermissionService; -import java.sql.SQLException; -import java.util.List; -public final class PermissionController implements AbstractController { - - private final PermissionService service = new PermissionService(); - - @Override - public List findAll() throws SQLException { - return service.findAll(); - } - - @Override - public Permission findById(Integer id) throws SQLException { - return service.findById(id); - } - - @Override - public void create(Permission entity) throws SQLException { - service.create(entity); - } - - @Override - public void update(Integer id, Permission entity) throws SQLException { - service.update(id, entity); - } +public final class PermissionController extends AbstractControllerImpl { + private final PermissionDAO permissionDao = new PermissionDAO(); @Override - public void delete(Integer id) throws SQLException { - service.delete(id); + public AbstractDaoImpl getDao() { + return permissionDao; } } diff --git a/src/main/java/com/mkruchok/controller/implementation/RexController.java b/src/main/java/com/mkruchok/controller/implementation/RexController.java index c3e2f95..b8564fb 100644 --- a/src/main/java/com/mkruchok/controller/implementation/RexController.java +++ b/src/main/java/com/mkruchok/controller/implementation/RexController.java @@ -1,38 +1,14 @@ package com.mkruchok.controller.implementation; -import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.RexDAO; import com.mkruchok.model.entity.Rex; -import com.mkruchok.service.implementation.RexService; -import java.sql.SQLException; -import java.util.List; - -public final class RexController implements AbstractController { - - private final RexService service = new RexService(); - - @Override - public List findAll() throws SQLException { - return service.findAll(); - } - - @Override - public Rex findById(Integer id) throws SQLException { - return service.findById(id); - } - - @Override - public void create(Rex entity) throws SQLException { - service.create(entity); - } - - @Override - public void update(Integer id, Rex entity) throws SQLException { - service.update(id, entity); - } +public final class RexController extends AbstractControllerImpl { + private final RexDAO rexDao = new RexDAO(); @Override - public void delete(Integer id) throws SQLException { - service.delete(id); + public AbstractDaoImpl getDao() { + return rexDao; } } diff --git a/src/main/java/com/mkruchok/controller/implementation/UserController.java b/src/main/java/com/mkruchok/controller/implementation/UserController.java index b765bf9..ace29d7 100644 --- a/src/main/java/com/mkruchok/controller/implementation/UserController.java +++ b/src/main/java/com/mkruchok/controller/implementation/UserController.java @@ -1,38 +1,14 @@ package com.mkruchok.controller.implementation; -import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.UserDAO; import com.mkruchok.model.entity.User; -import com.mkruchok.service.implementation.UserService; -import java.sql.SQLException; -import java.util.List; - -public final class UserController implements AbstractController { - - private final UserService service = new UserService(); - - @Override - public List findAll() throws SQLException { - return service.findAll(); - } - - @Override - public User findById(Integer id) throws SQLException { - return service.findById(id); - } - - @Override - public void create(User entity) throws SQLException { - service.create(entity); - } - - @Override - public void update(Integer id, User entity) throws SQLException { - service.update(id, entity); - } +public final class UserController extends AbstractControllerImpl { + public final UserDAO userDao = new UserDAO(); @Override - public void delete(Integer id) throws SQLException { - service.delete(id); + public AbstractDaoImpl getDao() { + return userDao; } -} +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/AbstractDAO.java b/src/main/java/com/mkruchok/model/dao/AbstractDAO.java index ceccdc2..5d6c1fb 100644 --- a/src/main/java/com/mkruchok/model/dao/AbstractDAO.java +++ b/src/main/java/com/mkruchok/model/dao/AbstractDAO.java @@ -1,33 +1,23 @@ package com.mkruchok.model.dao; import java.sql.SQLException; -import java.util.List; +import java.util.Collection; public interface AbstractDAO { - List findAll() throws SQLException; + Collection findAll() throws SQLException; - default void create(E entity) throws SQLException { + default void create(E entity) { } - default E findById(Integer id) throws SQLException { + default E findById(Integer id) { return null; } - default void update(Integer id, E entity) throws SQLException { + default void update(Integer id, E entity) { } - default void delete(Integer id) throws SQLException { + default void delete(Integer id) { } - - default E findByName(String name) throws SQLException { - return null; - } - - default void update(String name, E entity) throws SQLException { - } - - default void delete(String name) throws SQLException { - } } diff --git a/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java b/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java new file mode 100644 index 0000000..4c2f5df --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java @@ -0,0 +1,104 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.HibernateUtil; +import com.mkruchok.model.dao.AbstractDAO; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +public abstract class AbstractDaoImpl implements AbstractDAO { + + static final Logger LOGGER = LoggerFactory.getLogger(AbstractDaoImpl.class); + protected final SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); + private final Class currentClass; + + public AbstractDaoImpl(Class currentClass) { + this.currentClass = currentClass; + } + + @Override + @SuppressWarnings("unchecked") + public final Collection findAll() { + List entities = new ArrayList<>(); + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + entities = session.createQuery("from " + currentClass.getName()).getResultList(); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); + } + entities.forEach(e -> LOGGER.debug(e.toString())); + return entities; + } + + + @Override + public final E findById(Integer id) { + E entity = null; + + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + entity = session.get(currentClass, id); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); + } + return entity; + } + + @Override + public final void update(Integer id, E entity) { + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + session.update(entity); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); + } + } + + @Override + public final void create(E entity) { + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + session.save(entity); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); + } + } + + @Override + public final void delete(Integer id) { + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + E entity = session.get(currentClass, id); + if (entity != null) { + session.delete(entity); + } + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java index df07038..5e42885 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java @@ -1,126 +1,9 @@ package com.mkruchok.model.dao.implementation; -import com.mkruchok.model.dao.AbstractDAO; import com.mkruchok.model.entity.Device; -import com.mkruchok.persistant.ConnectionManager; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -@SuppressFBWarnings -@SuppressWarnings("checkstyle:magicnumber") -public final class DeviceDAO implements AbstractDAO { - - private static final String GET_ALL = "SELECT * FROM ajax_curr.device"; - private static final String GET_BY_ID = "SELECT * FROM ajax_curr.device WHERE id=?"; - private static final String CREATE = "INSERT ajax_curr.device " - + "(`model`,`status`,`service_life_end_time`,`warranty_end_time`,`on_battery`,`hub_id`)" + - " VALUES (?, ?, ?, ?, ?, ?)"; - private static final String UPDATE = "UPDATE ajax_curr.device" - + " SET model=?, status=?, service_life_end_time=?, warranty_end_time=?, on_battery=?, hub_id=? WHERE id=?"; - private static final String DELETE = "DELETE FROM ajax_curr.device WHERE id=?"; - static final Logger LOGGER = LoggerFactory.getLogger(DeviceDAO.class); - - - @Override - public List findAll() throws SQLException { - List devices = new ArrayList<>(); - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - Device device = new Device( - resultSet.getInt("id"), - resultSet.getString("model"), - resultSet.getString("status"), - resultSet.getTimestamp("service_life_end_time"), - resultSet.getTimestamp("warranty_end_time"), - resultSet.getInt("on_battery"), - resultSet.getInt("hub_id") - ); - devices.add(device); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } - return devices; - } - - @Override - public Device findById(Integer id) throws SQLException { - Device device = null; - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - device = new Device( - resultSet.getInt("id"), - resultSet.getString("model"), - resultSet.getString("status"), - resultSet.getTimestamp("service_life_end_time"), - resultSet.getTimestamp("warranty_end_time"), - resultSet.getInt("on_battery"), - resultSet.getInt("hub_id") - ); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - return device; - } - - @Override - public void create(Device device) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { - statement.setString(1, device.getModel()); - statement.setString(2, device.getStatus()); - statement.setTimestamp(3, device.getServiceLifeEndTime()); - statement.setTimestamp(4, device.getWarrantyEndTime()); - statement.setInt(5, device.getOnBattery()); - statement.setInt(6, device.getHubId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - - } - - @Override - public void update(Integer id, Device device) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { - statement.setString(2, device.getStatus()); - statement.setString(1, device.getModel()); - statement.setTimestamp(3, device.getServiceLifeEndTime()); - statement.setTimestamp(4, device.getWarrantyEndTime()); - statement.setInt(5, device.getOnBattery()); - statement.setInt(6, device.getHubId()); - statement.setInt(7, device.getId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - } - - @Override - public void delete(Integer id) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - statement.executeUpdate(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } +public final class DeviceDAO extends AbstractDaoImpl { + public DeviceDAO() { + super(Device.class); } } diff --git a/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java index d996002..129ac1d 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java @@ -1,111 +1,9 @@ package com.mkruchok.model.dao.implementation; -import com.mkruchok.model.dao.AbstractDAO; import com.mkruchok.model.entity.Group; -import com.mkruchok.persistant.ConnectionManager; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -@SuppressFBWarnings -@SuppressWarnings("magicnumber") -public final class GroupDAO implements AbstractDAO { - - private static final String GET_ALL = "SELECT * FROM ajax_curr.group"; - private static final String GET_BY_ID = "SELECT * FROM ajax_curr.group WHERE id=?"; - private static final String CREATE = "INSERT ajax_curr.group " - + "(`name`,`description`,`hub_id`)" + - " VALUES (?, ?, ?)"; - private static final String UPDATE = "UPDATE ajax_curr.group" - + " SET name=?, description=?, hub_id=? WHERE id=?"; - private static final String DELETE = "DELETE FROM ajax_curr.group WHERE id=?"; - static final Logger LOGGER = LoggerFactory.getLogger(GroupDAO.class); - - @Override - public List findAll() throws SQLException { - List groups = new ArrayList<>(); - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - Group group = new Group( - resultSet.getInt("id"), - resultSet.getString("name"), - resultSet.getString("description"), - resultSet.getInt("hub_id") - ); - groups.add(group); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } - return groups; - } - - @Override - public Group findById(Integer id) throws SQLException { - Group group = null; - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - group = new Group( - resultSet.getInt("id"), - resultSet.getString("name"), - resultSet.getString("description"), - resultSet.getInt("hub_id") - ); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - return group; - } - - @Override - public void create(Group group) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { - statement.setString(1, group.getName()); - statement.setString(2, group.getDescription()); - statement.setInt(3, group.getHubId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - - } - - @Override - public void update(Integer id, Group group) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { - statement.setString(1, group.getName()); - statement.setString(2, group.getDescription()); - statement.setInt(3, group.getHubId()); - statement.setInt(4, group.getId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - } - - @Override - public void delete(Integer id) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - statement.executeUpdate(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } +public final class GroupDAO extends AbstractDaoImpl { + public GroupDAO() { + super(Group.class); } } diff --git a/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java index b6bcbd7..9c4b87c 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java @@ -1,137 +1,9 @@ package com.mkruchok.model.dao.implementation; -import com.mkruchok.model.dao.AbstractDAO; import com.mkruchok.model.entity.Hub; -import com.mkruchok.persistant.ConnectionManager; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -@SuppressFBWarnings -@SuppressWarnings("magicnumber") -public final class HubDAO implements AbstractDAO { - - private static final String GET_ALL = "SELECT * FROM ajax_curr.hub"; - private static final String GET_BY_ID = "SELECT * FROM ajax_curr.hub WHERE id=?"; - private static final String CREATE = "INSERT ajax_curr.hub " - + "(`model`,`status`,`service_life_end_time`,`warranty_end_time`,`users_max`,`rooms_max`," + - "`devices_max`,`sirens_max`,`on_battery`) VALUES (?, ?, ?, ?,?, ?, ?, ?, ?)"; - private static final String UPDATE = "UPDATE ajax_curr.hub" - + " SET model=?, status=?, service_life_end_time=?, warranty_end_time=?, users_max=?, rooms_max=?, " + - "devices_max=?, sirens_max=?, on_battery=? WHERE id=?"; - private static final String DELETE = "DELETE FROM ajax_curr.hub WHERE id=?"; - static final Logger LOGGER = LoggerFactory.getLogger(HubDAO.class); - - @Override - public List findAll() throws SQLException { - List hubs = new ArrayList<>(); - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - Hub hub = new Hub( - resultSet.getInt("id"), - resultSet.getString("model"), - resultSet.getString("status"), - resultSet.getTimestamp("service_life_end_time"), - resultSet.getTimestamp("warranty_end_time"), - resultSet.getInt("users_max"), - resultSet.getInt("rooms_max"), - resultSet.getInt("devices_max"), - resultSet.getInt("sirens_max"), - resultSet.getInt("on_battery") - ); - hubs.add(hub); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - return hubs; - - } - - @Override - public Hub findById(Integer id) throws SQLException { - Hub hub = null; - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - hub = new Hub( - resultSet.getInt("id"), - resultSet.getString("model"), - resultSet.getString("status"), - resultSet.getTimestamp("service_life_end_time"), - resultSet.getTimestamp("warranty_end_time"), - resultSet.getInt("users_max"), - resultSet.getInt("rooms_max"), - resultSet.getInt("devices_max"), - resultSet.getInt("sirens_max"), - resultSet.getInt("on_battery") - ); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } - return hub; - } - - @Override - public void create(Hub hub) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { - statement.setString(1, hub.getModel()); - statement.setString(2, hub.getStatus()); - statement.setTimestamp(3, hub.getServiceLifeEndTime()); - statement.setTimestamp(4, hub.getWarrantyEndTime()); - statement.setInt(6, hub.getRoomsMax()); - statement.setInt(5, hub.getUsersMax()); - statement.setInt(7, hub.getDevicesMax()); - statement.setInt(8, hub.getSirensMax()); - statement.setInt(9, hub.getOnBattery()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - - } - - @Override - public void update(Integer id, Hub hub) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { - statement.setString(1, hub.getModel()); - statement.setString(2, hub.getStatus()); - statement.setTimestamp(3, hub.getServiceLifeEndTime()); - statement.setTimestamp(4, hub.getWarrantyEndTime()); - statement.setInt(5, hub.getUsersMax()); - statement.setInt(6, hub.getRoomsMax()); - statement.setInt(7, hub.getDevicesMax()); - statement.setInt(8, hub.getSirensMax()); - statement.setInt(9, hub.getOnBattery()); - statement.setInt(10, hub.getId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - } - - @Override - public void delete(Integer id) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - statement.executeUpdate(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } +public final class HubDAO extends AbstractDaoImpl { + public HubDAO() { + super(Hub.class); } } diff --git a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java index 1a072e8..3616aa0 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java @@ -1,115 +1,9 @@ package com.mkruchok.model.dao.implementation; -import com.mkruchok.model.dao.AbstractDAO; import com.mkruchok.model.entity.Notification; -import com.mkruchok.persistant.ConnectionManager; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -@SuppressFBWarnings -@SuppressWarnings("magicnumber") -public final class NotificationDAO implements AbstractDAO { - - private static final String GET_ALL = "SELECT * FROM ajax_curr.notification"; - private static final String GET_BY_ID = "SELECT * FROM ajax_curr.notification WHERE id=?"; - private static final String CREATE = "INSERT ajax_curr.notification " - + "(`timestamp`,`type`,`device_id`,`hub_id`)" + - " VALUES (?, ?, ?, ?)"; - private static final String UPDATE = "UPDATE ajax_curr.notification" - + " SET timestamp=?, type=?, device_id=?, hub_id=? WHERE id=?"; - private static final String DELETE = "DELETE FROM ajax_curr.notification WHERE id=?"; - static final Logger LOGGER = LoggerFactory.getLogger(NotificationDAO.class); - - @Override - public List findAll() throws SQLException { - List notifications = new ArrayList<>(); - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - Notification notification = new Notification( - resultSet.getInt("id"), - resultSet.getTimestamp("timestamp"), - resultSet.getString("type"), - resultSet.getInt("device_id"), - resultSet.getInt("hub_id") - ); - notifications.add(notification); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - return notifications; - } - - @Override - public Notification findById(Integer id) throws SQLException { - Notification notification = null; - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - notification = new Notification( - resultSet.getInt("id"), - resultSet.getTimestamp("timestamp"), - resultSet.getString("type"), - resultSet.getInt("device_id"), - resultSet.getInt("hub_id") - ); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } - return notification; - } - - @Override - public void create(Notification notification) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { - statement.setTimestamp(1, notification.getTimestamp()); - statement.setString(2, notification.getType()); - statement.setInt(3, notification.getDeviceId()); - statement.setInt(4, notification.getHubId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - - } - - @Override - public void update(Integer id, Notification notification) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { - statement.setTimestamp(1, notification.getTimestamp()); - statement.setString(2, notification.getType()); - statement.setInt(3, notification.getDeviceId()); - statement.setInt(4, notification.getHubId()); - statement.setInt(5, notification.getId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - } - - @Override - public void delete(Integer id) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - statement.executeUpdate(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } +public final class NotificationDAO extends AbstractDaoImpl { + public NotificationDAO() { + super(Notification.class); } } diff --git a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java index aa42a48..c6fbbed 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java @@ -1,107 +1,10 @@ package com.mkruchok.model.dao.implementation; -import com.mkruchok.model.dao.AbstractDAO; -import com.mkruchok.model.entity.Permission; -import com.mkruchok.persistant.ConnectionManager; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -@SuppressFBWarnings -@SuppressWarnings("magicnumber") -public final class PermissionDAO implements AbstractDAO { - - private static final String GET_ALL = "SELECT * FROM ajax_curr.permission"; - private static final String GET_BY_ID = "SELECT * FROM ajax_curr.permission WHERE id=?"; - private static final String CREATE = "INSERT ajax_curr.permission " - + "(`name`,`description`)" + - " VALUES (?, ?)"; - private static final String UPDATE = "UPDATE ajax_curr.permission" - + " SET name=?, description=? WHERE id=?"; - private static final String DELETE = "DELETE FROM ajax_curr.permission WHERE id=?"; - static final Logger LOGGER = LoggerFactory.getLogger(PermissionDAO.class); - - @Override - public List findAll() throws SQLException { - List permissions = new ArrayList<>(); - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - Permission permission = new Permission( - resultSet.getInt("id"), - resultSet.getString("name"), - resultSet.getString("description") - ); - permissions.add(permission); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - return permissions; - } - - @Override - public Permission findById(Integer id) throws SQLException { - Permission permission = null; - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - permission = new Permission( - resultSet.getInt("id"), - resultSet.getString("name"), - resultSet.getString("description") - ); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } - return permission; - } - - @Override - public void create(Permission permission) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { - statement.setString(1, permission.getName()); - statement.setString(2, permission.getDescription()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - - } - @Override - public void update(Integer id, Permission permission) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { - statement.setString(1, permission.getName()); - statement.setString(2, permission.getDescription()); - statement.setInt(3, permission.getId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - } +import com.mkruchok.model.entity.Permission; - @Override - public void delete(Integer id) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { - LOGGER.info(String.valueOf(statement)); - statement.setInt(1, id); - statement.executeUpdate(); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } +public final class PermissionDAO extends AbstractDaoImpl { + public PermissionDAO() { + super(Permission.class); } } diff --git a/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java index dfc963e..7211472 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java @@ -1,111 +1,9 @@ package com.mkruchok.model.dao.implementation; -import com.mkruchok.model.dao.AbstractDAO; import com.mkruchok.model.entity.Rex; -import com.mkruchok.persistant.ConnectionManager; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -@SuppressFBWarnings -@SuppressWarnings("magicnumber") -public final class RexDAO implements AbstractDAO { - - private static final String GET_ALL = "SELECT * FROM ajax_curr.rex"; - private static final String GET_BY_ID = "SELECT * FROM ajax_curr.rex WHERE id=?"; - private static final String CREATE = "INSERT ajax_curr.rex " - + "(`name`,`range`,`hub_id`)" + - " VALUES (?, ?, ?)"; - private static final String UPDATE = "UPDATE ajax_curr.rex" - + " SET name=?, range=?, hub_id=? WHERE id=?"; - private static final String DELETE = "DELETE FROM ajax_curr.group WHERE id=?"; - static final Logger LOGGER = LoggerFactory.getLogger(RexDAO.class); - - @Override - public List findAll() throws SQLException { - List rexes = new ArrayList<>(); - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - Rex rex = new Rex( - resultSet.getInt("id"), - resultSet.getString("name"), - resultSet.getString("range"), - resultSet.getInt("hub_id") - ); - rexes.add(rex); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - return rexes; - } - - @Override - public Rex findById(Integer id) throws SQLException { - Rex rex = null; - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - rex = new Rex( - resultSet.getInt("id"), - resultSet.getString("name"), - resultSet.getString("range"), - resultSet.getInt("hub_id") - ); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } - return rex; - } - - @Override - public void create(Rex rex) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { - statement.setString(1, rex.getName()); - statement.setString(2, rex.getRange()); - statement.setInt(3, rex.getHubId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - - } - - @Override - public void update(Integer id, Rex rex) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { - statement.setString(1, rex.getName()); - statement.setString(2, rex.getRange()); - statement.setInt(3, rex.getHubId()); - statement.setInt(4, rex.getId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - } - - @Override - public void delete(Integer id) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { - LOGGER.info(String.valueOf(statement)); - statement.setInt(1, id); - statement.executeUpdate(); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } +public final class RexDAO extends AbstractDaoImpl { + public RexDAO() { + super(Rex.class); } } diff --git a/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java index 1acd375..06e231e 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java @@ -1,118 +1,9 @@ package com.mkruchok.model.dao.implementation; -import com.mkruchok.model.dao.AbstractDAO; import com.mkruchok.model.entity.User; -import com.mkruchok.persistant.ConnectionManager; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -@SuppressFBWarnings -@SuppressWarnings("magicnumber") -public final class UserDAO implements AbstractDAO { - - private static final String GET_ALL = "SELECT * FROM ajax_curr.user"; - private static final String GET_BY_ID = "SELECT * FROM ajax_curr.user WHERE id=?"; - private static final String CREATE = "INSERT ajax_curr.user " - + "(`email`, `password`, `date_created`, `name`, `group_id`) VALUES (?, ?, ?, ?, ?)"; - private static final String UPDATE = "UPDATE ajax_curr.user" - + " SET email=?, password=?, date_created=?, name=?, group_id=? WHERE id=?"; - private static final String DELETE = "DELETE FROM ajax_curr.user WHERE id=?"; - static final Logger LOGGER = LoggerFactory.getLogger(UserDAO.class); - - @Override - public List findAll() throws SQLException { - List users = new ArrayList<>(); - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - User user = new User( - resultSet.getInt("id"), - resultSet.getString("email"), - resultSet.getString("password"), - resultSet.getTimestamp("date_created"), - resultSet.getString("name"), - resultSet.getString("group_id") - ); - users.add(user); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Ops! ", e); - } - return users; - } - - @Override - public User findById(Integer id) throws SQLException { - User user = null; - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_BY_ID)) { - statement.setInt(1, id); - LOGGER.info(String.valueOf(statement)); - ResultSet resultSet = statement.executeQuery(); - while (resultSet.next()) { - user = new User( - resultSet.getInt("id"), - resultSet.getString("email"), - resultSet.getString("password"), - resultSet.getTimestamp("date_created"), - resultSet.getString("name"), - resultSet.getString("group_id") - ); - } - resultSet.close(); - } catch (Exception e) { - LOGGER.error("Oops!", e); - } - return user; - } - - @Override - public void create(User user) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { - statement.setString(1, user.getEmail()); - statement.setString(2, user.getPassword()); - statement.setTimestamp(3, user.getDateCreated()); - statement.setString(4, user.getName()); - statement.setString(5, user.getGroupId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - - } - - @Override - public void update(Integer id, User user) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { - statement.setString(1, user.getEmail()); - statement.setString(2, user.getPassword()); - statement.setTimestamp(3, user.getDateCreated()); - statement.setString(4, user.getName()); - statement.setString(5, user.getGroupId()); - statement.setInt(6, user.getId()); - statement.executeUpdate(); - LOGGER.info(String.valueOf(statement)); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - } - - @Override - public void delete(Integer id) throws SQLException { - try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(DELETE)) { - LOGGER.info(String.valueOf(statement)); - statement.setInt(1, id); - statement.executeUpdate(); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } +public final class UserDAO extends AbstractDaoImpl { + public UserDAO() { + super(User.class); } } diff --git a/src/main/java/com/mkruchok/model/entity/Device.java b/src/main/java/com/mkruchok/model/entity/Device.java index 8bc48a8..bf9c41b 100644 --- a/src/main/java/com/mkruchok/model/entity/Device.java +++ b/src/main/java/com/mkruchok/model/entity/Device.java @@ -1,36 +1,71 @@ package com.mkruchok.model.entity; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.JoinColumn; +import javax.persistence.OrderColumn; +import javax.persistence.OneToMany; +import javax.persistence.FetchType; +import javax.persistence.ManyToOne; import java.sql.Timestamp; +import java.util.Collection; +@Table(name = "device") @SuppressFBWarnings +@AllArgsConstructor +@NoArgsConstructor +@ToString +@EqualsAndHashCode(of = "id") @Getter @Setter -public final class Device { +@Entity +public class Device { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private Integer id; + @Column(name = "model", length = 45) private String model; + @Column(name = "device_status", length = 45) private String status; + @CreationTimestamp + @Column(name = "service_life_end_time") private Timestamp serviceLifeEndTime; + @CreationTimestamp + @Column(name = "warranty_end_time") private Timestamp warrantyEndTime; + @Column(name = "on_battery", length = 1) private Integer onBattery; - private Integer hubId; - public Device(Integer id, String model, String status, Timestamp serviceLifeEndTime, - Timestamp warrantyEndTime, Integer onBattery, Integer hubId) { - this.id = id; - this.model = model; - this.status = status; - this.serviceLifeEndTime = serviceLifeEndTime; - this.warrantyEndTime = warrantyEndTime; - this.onBattery = onBattery; - this.hubId = hubId; - } - public Device(String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, - Integer onBattery, Integer hubId) { + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubId; + + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "deviceId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection notifications; + + public Device(String model, String status, Timestamp serviceLifeEndTime, + Timestamp warrantyEndTime, Integer onBattery, Hub hubId) { this.model = model; this.status = status; this.serviceLifeEndTime = serviceLifeEndTime; @@ -38,12 +73,4 @@ public Device(String model, String status, Timestamp serviceLifeEndTime, Timesta this.onBattery = onBattery; this.hubId = hubId; } - - - @Override - public String toString() { - return "\n\nDevice: id: " + id + ", model: " + model + ", status: " + status + ", service_life_end_time: " + - serviceLifeEndTime + ", warranty_end_time: " + warrantyEndTime + ", on_battery: " - + onBattery + ", hub_id: " + hubId; - } } diff --git a/src/main/java/com/mkruchok/model/entity/Group.java b/src/main/java/com/mkruchok/model/entity/Group.java index ecbf70f..35b8af4 100644 --- a/src/main/java/com/mkruchok/model/entity/Group.java +++ b/src/main/java/com/mkruchok/model/entity/Group.java @@ -1,34 +1,67 @@ package com.mkruchok.model.entity; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.JoinColumn; +import javax.persistence.OrderColumn; +import javax.persistence.OneToMany; +import javax.persistence.FetchType; +import javax.persistence.ManyToMany; +import javax.persistence.JoinTable; +import javax.persistence.ManyToOne; +import java.util.Collection; + +@Table(name = "hub_group") @SuppressFBWarnings +@AllArgsConstructor +@ToString +@EqualsAndHashCode(of = "id") @Getter @Setter -public final class Group { +@Entity +@NoArgsConstructor +public class Group { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private Integer id; + @Column(name = "group_name", length = 45) private String name; - private String description; - private Integer hubId; - - public Group(Integer id, String name, String description, Integer hubId) { - this.id = id; - this.name = name; - this.description = description; - this.hubId = hubId; - } + @Column(name = "group_description", length = 150) + private String groupDescription; + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubGroupId; + @OrderColumn + @OneToMany(mappedBy = "groupId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection users; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "group_has_permission", + joinColumns = @JoinColumn(name = "group_id"), + inverseJoinColumns = @JoinColumn(name = "permission_id")) + @ToString.Exclude + Collection groupHasPermissions; - public Group(String name, String description, Integer hubId) { + public Group(String name, String description, Hub hubId) { this.name = name; - this.description = description; - this.hubId = hubId; - } - - @Override - public String toString() { - return "\n\nGroup: id: " + id + ", name: " + name + ", description: " + description + ", hub_id: " + - hubId; + this.groupDescription = description; + this.hubGroupId = hubId; } } diff --git a/src/main/java/com/mkruchok/model/entity/Hub.java b/src/main/java/com/mkruchok/model/entity/Hub.java index cc1c921..c84fdf9 100644 --- a/src/main/java/com/mkruchok/model/entity/Hub.java +++ b/src/main/java/com/mkruchok/model/entity/Hub.java @@ -1,45 +1,101 @@ package com.mkruchok.model.entity; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.JoinColumn; +import javax.persistence.OrderColumn; +import javax.persistence.OneToMany; +import javax.persistence.FetchType; +import javax.persistence.ManyToMany; +import javax.persistence.JoinTable; import java.sql.Timestamp; +import java.util.Collection; +@Table(name = "hub") @SuppressFBWarnings @Getter +@ToString +@EqualsAndHashCode(of = "id") +@AllArgsConstructor +@NoArgsConstructor @Setter -public final class Hub { +@Entity +public class Hub { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private Integer id; + @Column(name = "model", length = 45) private String model; + @Column(name = "hub_status", length = 45) private String status; + @CreationTimestamp + @Column(name = "service_life_end_time", length = 45) private Timestamp serviceLifeEndTime; + @CreationTimestamp + @Column(name = "warranty_end_time", length = 45) private Timestamp warrantyEndTime; + @Column(name = "users_max", length = 45) private Integer usersMax; + @Column(name = "rooms_max", length = 45) private Integer roomsMax; + @Column(name = "devices_max", length = 45) private Integer devicesMax; + @Column(name = "sirens_max", length = 45) private Integer sirensMax; + @Column(name = "on_battery", length = 1) private Integer onBattery; + @OrderColumn + @OneToMany(mappedBy = "hubGroupId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection groups; + @OrderColumn + @OneToMany(mappedBy = "hubRexId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection rexes; + @OrderColumn + @OneToMany(mappedBy = "hubNotificationId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection notifications; + + + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "hubId") + @ToString.Exclude + private Collection devices; - public Hub(Integer id, String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, - Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, Integer onBattery) { - this.id = id; - this.model = model; - this.status = status; - this.serviceLifeEndTime = new Timestamp(serviceLifeEndTime.getTime()); - this.warrantyEndTime = new Timestamp(warrantyEndTime.getTime()); - this.usersMax = usersMax; - this.roomsMax = roomsMax; - this.devicesMax = devicesMax; - this.sirensMax = sirensMax; - this.onBattery = onBattery; - } - public Hub(String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, Integer onBattery) { + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @ManyToMany + @JoinTable(name = "user_has_hub", + joinColumns = @JoinColumn(name = "hub_id"), + inverseJoinColumns = @JoinColumn(name = "user_id")) + @ToString.Exclude + Collection hubHasUsers; + + public Hub(String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, + Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, Integer onBattery) { this.model = model; this.status = status; - this.serviceLifeEndTime = new Timestamp(serviceLifeEndTime.getTime()); - this.warrantyEndTime = new Timestamp(warrantyEndTime.getTime()); + this.serviceLifeEndTime = serviceLifeEndTime; + this.warrantyEndTime = warrantyEndTime; this.usersMax = usersMax; this.roomsMax = roomsMax; this.devicesMax = devicesMax; @@ -47,8 +103,4 @@ public Hub(String model, String status, Timestamp serviceLifeEndTime, Timestamp this.onBattery = onBattery; } - @Override - public String toString() { - return "\n\nHub: id: " + id + ", model: " + model + ", status: " + status + ", service_life_end_time: " + serviceLifeEndTime + ", warranty_end_time: " + warrantyEndTime + ", users_max: " + usersMax + ", rooms_max: " + roomsMax + ", devices_max: " + devicesMax + ", sirens_max: " + sirensMax + ", on_battery: " + onBattery + "]"; - } } diff --git a/src/main/java/com/mkruchok/model/entity/Notification.java b/src/main/java/com/mkruchok/model/entity/Notification.java index 763134e..cbf365a 100644 --- a/src/main/java/com/mkruchok/model/entity/Notification.java +++ b/src/main/java/com/mkruchok/model/entity/Notification.java @@ -1,39 +1,53 @@ package com.mkruchok.model.entity; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.Getter; import lombok.Setter; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.ManyToOne; +import javax.persistence.JoinColumn; +import org.hibernate.annotations.CreationTimestamp; import java.sql.Timestamp; + +@Table(name = "notification") @SuppressFBWarnings +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(of = "id") @Getter @Setter -public final class Notification { +@ToString +@Entity +public class Notification { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; + @CreationTimestamp + @Column(name = "timestamp") private Timestamp timestamp; + @Column(name = "notification_type", length = 45) private String type; - private Integer deviceId; - private Integer hubId; - - public Notification(Integer id, Timestamp timestamp, String type, Integer deviceId, Integer hubId) { - this.id = id; - this.timestamp = timestamp; - this.type = type; - this.deviceId = deviceId; - this.hubId = hubId; - } - - public Notification(Timestamp timestamp, String type, Integer deviceId, Integer hubId) { - this.timestamp = timestamp; - this.type = type; - this.deviceId = deviceId; - this.hubId = hubId; - } - - @Override - public String toString() { - return "\n\nNotification: id: " + id + ", timestamp: " + timestamp + ", type: " + type + ", device_id: " + - deviceId + ", hub_id: " + hubId; - } + + + @ManyToOne + @JoinColumn(name = "device_id", referencedColumnName = "id") + private Device deviceId; + + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubNotificationId; + + } diff --git a/src/main/java/com/mkruchok/model/entity/Permission.java b/src/main/java/com/mkruchok/model/entity/Permission.java index f77c642..7a7c202 100644 --- a/src/main/java/com/mkruchok/model/entity/Permission.java +++ b/src/main/java/com/mkruchok/model/entity/Permission.java @@ -1,30 +1,62 @@ package com.mkruchok.model.entity; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.JoinColumn; +import javax.persistence.OrderColumn; +import javax.persistence.ManyToMany; +import javax.persistence.JoinTable; +import java.util.Collection; + + +@Table(name = "permission") @SuppressFBWarnings +@AllArgsConstructor +@NoArgsConstructor @Getter +@EqualsAndHashCode(of = "id") @Setter -public final class Permission { +@ToString +@Entity +public class Permission { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; + @Column(name = "permission_name", length = 45) private String name; - private String description; - - public Permission(Integer id, String name, String description) { - this.id = id; - this.name = name; - this.description = description; - } + @Column(name = "permission_description", length = 45) + private String permissionDescription; - public Permission(String name, String description) { - this.name = name; - this.description = description; - } + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "user_has_permission", + joinColumns = @JoinColumn(name = "permission_id"), + inverseJoinColumns = @JoinColumn(name = "user_id")) + @ToString.Exclude + Collection permissionHasUsers; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "group_has_permission", + joinColumns = @JoinColumn(name = "permission_id"), + inverseJoinColumns = @JoinColumn(name = "group_id")) + @ToString.Exclude + Collection permissionHasGroups; - @Override - public String toString() { - return "\n\nPermission: id: " + id + ", name: " + name + ", description: " + description; - } } diff --git a/src/main/java/com/mkruchok/model/entity/Rex.java b/src/main/java/com/mkruchok/model/entity/Rex.java index 3b9b52b..eb6904b 100644 --- a/src/main/java/com/mkruchok/model/entity/Rex.java +++ b/src/main/java/com/mkruchok/model/entity/Rex.java @@ -1,34 +1,46 @@ package com.mkruchok.model.entity; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.Getter; import lombok.Setter; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + + +@Table(name = "rex") @SuppressFBWarnings +@AllArgsConstructor +@NoArgsConstructor +@ToString +@EqualsAndHashCode(of = "id") @Getter @Setter -public final class Rex { +@Entity +public class Rex { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private Integer id; + @Column(name = "rex_name", length = 45) private String name; + @Column(name = "rex_range", length = 45) private String range; - private Integer hubId; - - public Rex(Integer id, String name, String range, Integer hubId) { - this.id = id; - this.name = name; - this.range = range; - this.hubId = hubId; - } - - public Rex(String name, String range, Integer hubId) { - this.name = name; - this.range = range; - this.hubId = hubId; - } - - @Override - public String toString() { - return "\n\nRex: id: " + id + ", name: " + name + ", range: " + range + ", hub_id: " + - hubId; - } + + + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubRexId; + + } diff --git a/src/main/java/com/mkruchok/model/entity/User.java b/src/main/java/com/mkruchok/model/entity/User.java index 7d045b9..b3dbd8c 100644 --- a/src/main/java/com/mkruchok/model/entity/User.java +++ b/src/main/java/com/mkruchok/model/entity/User.java @@ -2,41 +2,73 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.JoinColumn; +import javax.persistence.OrderColumn; +import javax.persistence.ManyToMany; +import javax.persistence.JoinTable; +import javax.persistence.ManyToOne; import java.sql.Timestamp; +import java.util.Collection; + +@Table(name = "user") +@NoArgsConstructor +@AllArgsConstructor +@ToString +@EqualsAndHashCode(of = "id") @SuppressFBWarnings @Getter @Setter -public final class User { +@Entity +public class User { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; + @Column(name = "email", length = 45) private String email; + @Column(name = "password", length = 45) private String password; + @CreationTimestamp + @Column(name = "date_created") private Timestamp dateCreated; + @Column(name = "user_name", length = 45) private String name; - private String groupId; - - public User(Integer id, String email, String password, Timestamp dateCreated, String name, String groupId) { - this.id = id; - this.email = email; - this.password = password; - this.dateCreated = dateCreated; - this.name = name; - this.groupId = groupId; - } + @ManyToOne + @JoinColumn(name = "group_id", referencedColumnName = "id") + private Group groupId; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "user_has_hub", + joinColumns = @JoinColumn(name = "user_id"), + inverseJoinColumns = @JoinColumn(name = "hub_id")) + @ToString.Exclude + Collection userHasHubs; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "user_has_permission", + joinColumns = @JoinColumn(name = "user_id"), + inverseJoinColumns = @JoinColumn(name = "permission_id")) + @ToString.Exclude + Collection userHasPermissions; - public User(String email, String password, Timestamp dateCreated, String name, String groupId) { - this.email = email; - this.password = password; - this.dateCreated = dateCreated; - this.name = name; - this.groupId = groupId; - } - @Override - public String toString() { - return "\n\nUser: id: " + id + ", email: " + email + ", password: " + password + ", date created: " + - dateCreated; - } } diff --git a/src/main/java/com/mkruchok/persistant/ConnectionManager.java b/src/main/java/com/mkruchok/persistant/ConnectionManager.java index ec2f861..ddbb924 100644 --- a/src/main/java/com/mkruchok/persistant/ConnectionManager.java +++ b/src/main/java/com/mkruchok/persistant/ConnectionManager.java @@ -9,11 +9,11 @@ @SuppressFBWarnings public final class ConnectionManager { + static final Logger LOGGER = LoggerFactory.getLogger(ConnectionManager.class); private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/ajax_curr?useUnicode=true&serverTimezone=UTC"; private static final String USERNAME = "root"; private static final String PASSWORD = "admin"; - static final Logger LOGGER = LoggerFactory.getLogger(ConnectionManager.class); private static Connection databaseConnection; public ConnectionManager() { diff --git a/src/main/java/com/mkruchok/view/Menu.java b/src/main/java/com/mkruchok/view/Menu.java index 7fd56d7..5a84d28 100644 --- a/src/main/java/com/mkruchok/view/Menu.java +++ b/src/main/java/com/mkruchok/view/Menu.java @@ -5,20 +5,24 @@ public final class Menu { static final Logger LOGGER = LoggerFactory.getLogger(Menu.class); + public void displayMenu() { - LOGGER.debug(" _________________________________________________"); - LOGGER.debug("| |"); - LOGGER.debug("| Enter entity and CRUD number : |"); - LOGGER.debug("| |"); - LOGGER.debug("| Table: CRUD: |"); - LOGGER.debug("|_________________________________________________|"); - LOGGER.debug("| 1 | user | 1 | GET TABLE |"); - LOGGER.debug("| 2 | hub | 2 | GET ROW BY ID |"); - LOGGER.debug("| 3 | device | 3 | CREATE ROW |"); - LOGGER.debug("| 4 | notification | 4 | UPDATE ROW |"); - LOGGER.debug("| 5 | group | 5 | DELETE ROW |"); - LOGGER.debug("| 6 | permission | | |"); - LOGGER.debug("| 7 | rex | | |"); - LOGGER.debug("|___|__________________|___|______________________|"); + LOGGER.debug("\n _________________________________________________\n" + + "| |\n" + + "| Enter entity and CRUD number : |\n" + + "| |\n" + + "| Table: CRUD: |\n" + + "|_________________________________________________|\n" + + "| 1 | user | 1 | GET TABLE |\n" + + "| 2 | hub | 2 | GET ROW BY ID |\n" + + "| 3 | device | 3 | CREATE ROW |\n" + + "| 4 | notification | 4 | UPDATE ROW |\n" + + "| 5 | group | 5 | DELETE ROW |\n" + + "| 6 | permission | | |\n" + + "| 7 | rex | | |\n" + + "|___|__________________|___|______________________|\n" + + "Enter numbers:" + + ); } } diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java index 1616d7a..7991003 100644 --- a/src/main/java/com/mkruchok/view/View.java +++ b/src/main/java/com/mkruchok/view/View.java @@ -5,17 +5,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.sql.SQLException; import java.sql.Timestamp; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Scanner; +import java.util.*; public final class View { + static final Logger LOGGER = LoggerFactory.getLogger(View.class); private static final Scanner SCANNER = new Scanner(System.in, "UTF-8"); private final Map menu = new LinkedHashMap<>(); - private final HubController hubController = new HubController(); private final DeviceController deviceController = new DeviceController(); private final NotificationController notificationController = new NotificationController(); @@ -23,7 +20,7 @@ public final class View { private final PermissionController permissionController = new PermissionController(); private final UserController userController = new UserController(); private final RexController rexController = new RexController(); - static final Logger LOGGER = LoggerFactory.getLogger(View.class); + Menu showMenu = new Menu(); public View() { @@ -72,31 +69,30 @@ public View() { public void show() { String input; - Menu showMenu = new Menu(); showMenu.displayMenu(); - LOGGER.debug("\nEnter numbers:\n"); do { try { input = SCANNER.next(); menu.get(input).print(); } catch (Exception e) { - LOGGER.debug("\nSomething is not right...\n"); + LOGGER.debug(String.valueOf(e)); } } while (SCANNER.hasNext()); } - private void getAllUsers() throws SQLException { - - LOGGER.debug(userController.findAll().toString()); + private void getAllUsers() { + userController.findAll(); + showMenu.displayMenu(); } - private void getUserById() throws SQLException { + private void getUserById() { LOGGER.debug("\nEnter iD: "); Integer id = SCANNER.nextInt(); LOGGER.debug(userController.findById(id).toString()); + showMenu.displayMenu(); } - private User getUserInputs(Integer create) { + private User getUserInputs(Integer create) throws NullPointerException { LOGGER.debug("Enter email: "); String email = SCANNER.next(); LOGGER.debug("Enter password: "); @@ -104,47 +100,58 @@ private User getUserInputs(Integer create) { LOGGER.debug("Enter name: "); String name = SCANNER.next(); Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); - String groupId = null; + Group groupEntity = null; + Collection userHubs = new ArrayList<>(); + Collection userPermissions = new ArrayList<>(); if (create == 0) { LOGGER.debug("Enter group id: "); - groupId = SCANNER.next(); + Integer groupId = SCANNER.nextInt(); + LOGGER.debug("Enter hub id that user has: "); + Integer hubId = SCANNER.nextInt(); + userHubs.add(hubController.findById(hubId)); + LOGGER.debug("Enter permission id that user has: "); + Integer permissionId = SCANNER.nextInt(); + userPermissions.add(permissionController.findById(permissionId)); + groupEntity = groupController.findById(groupId); } - return new User(email, password, dateCreated, name, groupId); + return new User(null, email, password, dateCreated, name, groupEntity, userHubs, userPermissions); } - private void createUser() throws SQLException { - + private void createUser() { User user = getUserInputs(1); userController.create(user); - LOGGER.debug("User was added to the table.\nEnter numbers: "); + LOGGER.debug("\nUser was added to the table.\n"); + showMenu.displayMenu(); } - private void updateUser() throws SQLException { - LOGGER.debug("\nEnter id to updаte: "); + private void updateUser() { + LOGGER.debug("\nEnter id to update: "); Integer id = SCANNER.nextInt(); User user = getUserInputs(0); user.setId(id); userController.update(user.getId(), user); LOGGER.debug("Updated user, id = " + id); + showMenu.displayMenu(); } - private void deleteUser() throws SQLException { + private void deleteUser() { LOGGER.debug("\nEnter ID to delete user: "); int id = SCANNER.nextInt(); userController.delete(id); LOGGER.debug("Deleted user, id = " + id); + showMenu.displayMenu(); } - private void getAllHubs() throws SQLException { - - LOGGER.debug(hubController.findAll().toString()); + private void getAllHubs() { + hubController.findAll(); } - private void getHubById() throws SQLException { + private void getHubById() { LOGGER.debug("\nEnter Id: "); Integer id = SCANNER.nextInt(); LOGGER.debug(hubController.findById(id).toString()); + showMenu.displayMenu(); } private Hub getHubInputs() { @@ -171,39 +178,42 @@ private Hub getHubInputs() { usersMax, roomsMax, devicesMax, sirensMax, onBattery); } - private void createHub() throws SQLException { - + private void createHub() { Hub hub = getHubInputs(); hubController.create(hub); - LOGGER.debug("Hub was added to the table.\nEnter numbers: "); + LOGGER.debug("Hub was added to the table."); + showMenu.displayMenu(); } - private void updateHub() throws SQLException { + private void updateHub() { LOGGER.debug("\nEnter id to update:"); Integer id = SCANNER.nextInt(); Hub hub = getHubInputs(); hub.setId(id); hubController.update(hub.getId(), hub); LOGGER.debug("Updated hub, id = " + id); + showMenu.displayMenu(); } - private void deleteHub() throws SQLException { + private void deleteHub() { LOGGER.debug("\nEnter id to delete hub: "); Integer id = SCANNER.nextInt(); hubController.delete(id); LOGGER.debug("Deleted hub, id = " + id); + showMenu.displayMenu(); } - private void getAllDevices() throws SQLException { - - LOGGER.debug(deviceController.findAll().toString()); + private void getAllDevices() { + deviceController.findAll(); + showMenu.displayMenu(); } - private void getDeviceByName() throws SQLException { + private void getDeviceByName() { LOGGER.debug("\nEnter Id: "); Integer id = SCANNER.nextInt(); LOGGER.debug(deviceController.findById(id).toString()); + showMenu.displayMenu(); } private Device getDeviceInputs() { @@ -220,90 +230,99 @@ private Device getDeviceInputs() { Integer onBattery = SCANNER.nextInt(); LOGGER.debug("Enter hub_id: "); Integer hubId = SCANNER.nextInt(); + Hub hubEntity = hubController.findById(hubId); return new Device(model, status, serviceLifeEndTime, warrantyEndTime, - onBattery, hubId); + onBattery, hubEntity); } - private void createDevice() throws SQLException { - + private void createDevice() { Device device = getDeviceInputs(); deviceController.create(device); - LOGGER.debug("Device was added to the table.\nEnter numbers: "); + LOGGER.debug("Device was added to the table."); + showMenu.displayMenu(); } - private void updateDevice() throws SQLException { + private void updateDevice() { LOGGER.debug("\nEnter id to update : "); Integer id = SCANNER.nextInt(); Device device = getDeviceInputs(); device.setId(id); deviceController.update(device.getId(), device); LOGGER.debug("Updated device, id = " + id); + showMenu.displayMenu(); } - private void deleteDevice() throws SQLException { + private void deleteDevice() { LOGGER.debug("\nEnter id to delete device: "); Integer id = SCANNER.nextInt(); deviceController.delete(id); LOGGER.debug("Deleted device, id = " + id); + showMenu.displayMenu(); } - private void getAllNotifications() throws SQLException { - - LOGGER.debug(notificationController.findAll().toString()); + private void getAllNotifications() { + notificationController.findAll(); + showMenu.displayMenu(); } - private void getNotificationById() throws SQLException { + private void getNotificationById() { LOGGER.debug("\nEnter Id: "); Integer id = SCANNER.nextInt(); LOGGER.debug(notificationController.findById(id).toString()); + showMenu.displayMenu(); } private Notification getNotificationInputs() { - LOGGER.debug("Enter timestamp: "); + LOGGER.debug("Enter timestamp: ");SCANNER.nextLine(); Timestamp timestamp = Timestamp.valueOf(SCANNER.nextLine()); LOGGER.debug("Enter type: "); String type = SCANNER.next(); LOGGER.debug("\nEnter device_id: "); Integer deviceId = SCANNER.nextInt(); + Device deviceEntity = deviceController.findById(deviceId); LOGGER.debug("\nEnter hub_id: "); Integer hubId = SCANNER.nextInt(); - return new Notification(timestamp, type, deviceId, hubId); + Hub hubEntity = hubController.findById(hubId); + return new Notification(null, timestamp, type, deviceEntity, hubEntity); } - private void createNotification() throws SQLException { - + private void createNotification() { Notification notification = getNotificationInputs(); notificationController.create(notification); - LOGGER.debug("Notification was added to the table.\nEnter numbers: "); + LOGGER.debug("Notification was added to the table."); + showMenu.displayMenu(); } - private void updateNotification() throws SQLException { + private void updateNotification() { LOGGER.debug("\nEnter id to update:"); Integer id = SCANNER.nextInt(); Notification notification = getNotificationInputs(); notification.setId(id); notificationController.update(notification.getId(), notification); LOGGER.debug("Updated notification, id = " + id); + showMenu.displayMenu(); } - private void deleteNotification() throws SQLException { + private void deleteNotification() { LOGGER.debug("\nEnter id to delete notification: "); Integer id = SCANNER.nextInt(); notificationController.delete(id); LOGGER.debug("Deleted notification, id = " + id); + showMenu.displayMenu(); } - private void getAllGroups() throws SQLException { - - LOGGER.debug(groupController.findAll().toString()); + private void getAllGroups() { + groupController.findAll(); + showMenu.displayMenu(); } - private void getGroupById() throws SQLException { + private void getGroupById() { LOGGER.debug("\nEnter ID: "); Integer id = SCANNER.nextInt(); LOGGER.debug(groupController.findById(id).toString()); + showMenu.displayMenu(); } private Group getGroupInputs() { @@ -313,85 +332,102 @@ private Group getGroupInputs() { String description = SCANNER.next(); LOGGER.debug("Enter hub_id: "); Integer hubId = SCANNER.nextInt(); - return new Group(name, description, hubId); + Hub hubEntity = hubController.findById(hubId); + return new Group(name, description, hubEntity); } - private void createGroup() throws SQLException { - + private void createGroup() { Group group = getGroupInputs(); groupController.create(group); - LOGGER.debug("Group was added to the table.\nEnter numbers: "); + LOGGER.debug("Group was added to the table."); + showMenu.displayMenu(); } - private void updateGroup() throws SQLException { + private void updateGroup() { LOGGER.debug("\nEnter id to update:"); Integer id = SCANNER.nextInt(); Group group = getGroupInputs(); group.setId(id); groupController.update(group.getId(), group); LOGGER.debug("Updated group, id = " + id); + showMenu.displayMenu(); } - private void deleteGroup() throws SQLException { + private void deleteGroup() { LOGGER.debug("\nEnter ID to delete group: "); int id = SCANNER.nextInt(); groupController.delete(id); LOGGER.debug("Deleted group, id = " + id); + showMenu.displayMenu(); } - private void getAllPermissions() throws SQLException { - - LOGGER.debug(permissionController.findAll().toString()); + private void getAllPermissions() { + permissionController.findAll(); + showMenu.displayMenu(); } - private void getPermissionById() throws SQLException { + private void getPermissionById() { LOGGER.debug("\nEnter ID: "); Integer id = SCANNER.nextInt(); LOGGER.debug(permissionController.findById(id).toString()); + showMenu.displayMenu(); } - private Permission getPermissionInputs() { + private Permission getPermissionInputs(Integer create) { LOGGER.debug("Enter name: "); String name = SCANNER.next(); LOGGER.debug("Enter description: "); String description = SCANNER.next(); - return new Permission(name, description); + Collection permissionUsers = new ArrayList<>(); + Collection permissionGroups = new ArrayList<>(); + if (create == 0) { + LOGGER.debug("Enter permission user id: "); + Integer userId = SCANNER.nextInt(); + permissionUsers.add(userController.findById(userId)); + LOGGER.debug("Enter permission group id: "); + Integer groupId = SCANNER.nextInt(); + permissionGroups.add(groupController.findById(groupId)); + } + return new Permission(null, name, description, permissionUsers, permissionGroups); } - private void createPermission() throws SQLException { - - Permission permission = getPermissionInputs(); + private void createPermission() { + Permission permission = getPermissionInputs(1); permissionController.create(permission); - LOGGER.debug("Permission was added to the table.\nEnter numbers: "); + LOGGER.debug("Permission was added to the table."); + showMenu.displayMenu(); } - private void updatePermission() throws SQLException { + private void updatePermission() { LOGGER.debug("\nEnter id to update: "); Integer id = SCANNER.nextInt(); - Permission permission = getPermissionInputs(); + Permission permission = getPermissionInputs(0); permission.setId(id); permissionController.update(permission.getId(), permission); LOGGER.debug("Updated permission, id = " + id); + showMenu.displayMenu(); } - private void deletePermission() throws SQLException { + private void deletePermission() { LOGGER.debug("\nEnter ID to delete permission: "); int id = SCANNER.nextInt(); permissionController.delete(id); LOGGER.debug("Deleted permission, id = " + id); + showMenu.displayMenu(); } - private void getAllRexes() throws SQLException { - - LOGGER.debug(rexController.findAll().toString()); + private void getAllRexes() { + rexController.findAll(); + showMenu.displayMenu(); } - private void getRexById() throws SQLException { + private void getRexById() { LOGGER.debug("\nEnter ID: "); Integer id = SCANNER.nextInt(); LOGGER.debug(rexController.findById(id).toString()); + showMenu.displayMenu(); } private Rex getRexInputs() { @@ -401,29 +437,33 @@ private Rex getRexInputs() { String range = SCANNER.next(); LOGGER.debug("Enter hub_id: "); Integer hubId = SCANNER.nextInt(); - return new Rex(name, range, hubId); + Hub hubEntity = hubController.findById(hubId); + return new Rex(null, name, range, hubEntity); } - private void createRex() throws SQLException { - + private void createRex() { + Rex rex = getRexInputs(); rexController.create(rex); - LOGGER.debug("Rex was added to the table.\nEnter numbers: "); + LOGGER.debug("Rex was added to the table."); + showMenu.displayMenu(); } - private void updateRex() throws SQLException { + private void updateRex() { LOGGER.debug("\nEnter id to update: "); Integer id = SCANNER.nextInt(); Rex rex = getRexInputs(); rex.setId(id); rexController.update(rex.getId(), rex); LOGGER.debug("Updated rex, id = " + id); + showMenu.displayMenu(); } - private void deleteRex() throws SQLException { + private void deleteRex() { LOGGER.debug("\nEnter id to delete rex: "); int id = SCANNER.nextInt(); rexController.delete(id); LOGGER.debug("Deleted rex, id = " + id); + showMenu.displayMenu(); } } From 6cdb483f660c505ac096eae924dbea46ea33ff6f Mon Sep 17 00:00:00 2001 From: Phlake Date: Tue, 17 May 2022 21:54:53 +0300 Subject: [PATCH 05/11] Deleted unused code --- .../java/com/mkruchok/model/entity/User.java | 2 +- .../com/mkruchok/service/AbstractService.java | 33 --------------- .../service/implementation/DeviceService.java | 39 ------------------ .../service/implementation/GroupService.java | 39 ------------------ .../service/implementation/HubService.java | 39 ------------------ .../implementation/NotificationService.java | 39 ------------------ .../implementation/PermissionService.java | 39 ------------------ .../service/implementation/RexService.java | 39 ------------------ .../service/implementation/UserService.java | 40 ------------------- .../service/implementation/package-info.java | 1 - .../com/mkruchok/service/package-info.java | 1 - 11 files changed, 1 insertion(+), 310 deletions(-) delete mode 100644 src/main/java/com/mkruchok/service/AbstractService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/DeviceService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/GroupService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/HubService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/NotificationService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/PermissionService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/RexService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/UserService.java delete mode 100644 src/main/java/com/mkruchok/service/implementation/package-info.java delete mode 100644 src/main/java/com/mkruchok/service/package-info.java diff --git a/src/main/java/com/mkruchok/model/entity/User.java b/src/main/java/com/mkruchok/model/entity/User.java index b3dbd8c..d59cb31 100644 --- a/src/main/java/com/mkruchok/model/entity/User.java +++ b/src/main/java/com/mkruchok/model/entity/User.java @@ -43,7 +43,7 @@ public class User { private Integer id; @Column(name = "email", length = 45) private String email; - @Column(name = "password", length = 45) + @Column(name = "user_password", length = 45) private String password; @CreationTimestamp @Column(name = "date_created") diff --git a/src/main/java/com/mkruchok/service/AbstractService.java b/src/main/java/com/mkruchok/service/AbstractService.java deleted file mode 100644 index a78ab0b..0000000 --- a/src/main/java/com/mkruchok/service/AbstractService.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.mkruchok.service; - -import java.sql.SQLException; -import java.util.List; - -public interface AbstractService { - - List findAll() throws SQLException; - - default E findById(Integer id) throws SQLException { - return null; - } - - default void update(Integer id, E entity) throws SQLException { - } - - default void create(E entity) throws SQLException { - } - - default void delete(Integer id) throws SQLException { - } - - - default E findByName(String name) throws SQLException { - return null; - } - - default void update(String name, E entity) throws SQLException { - } - - default void delete(String name) throws SQLException { - } -} diff --git a/src/main/java/com/mkruchok/service/implementation/DeviceService.java b/src/main/java/com/mkruchok/service/implementation/DeviceService.java deleted file mode 100644 index d74d996..0000000 --- a/src/main/java/com/mkruchok/service/implementation/DeviceService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mkruchok.service.implementation; - -import com.mkruchok.model.dao.implementation.DeviceDAO; -import com.mkruchok.model.entity.Device; -import com.mkruchok.service.AbstractService; - -import java.sql.SQLException; -import java.util.List; - -public final class DeviceService implements AbstractService { - - private final DeviceDAO dao = new DeviceDAO(); - - @Override - public List findAll() throws SQLException { - return dao.findAll(); - } - - @Override - public Device findById(Integer id) throws SQLException { - return dao.findById(id); - } - - @Override - public void create(Device entity) throws SQLException { - dao.create(entity); - } - - @Override - public void update(Integer id, Device entity) throws SQLException { - dao.update(id, entity); - } - - @Override - public void delete(Integer id) throws SQLException { - dao.delete(id); - } - -} diff --git a/src/main/java/com/mkruchok/service/implementation/GroupService.java b/src/main/java/com/mkruchok/service/implementation/GroupService.java deleted file mode 100644 index d2dd862..0000000 --- a/src/main/java/com/mkruchok/service/implementation/GroupService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mkruchok.service.implementation; - -import com.mkruchok.model.dao.implementation.GroupDAO; -import com.mkruchok.model.entity.Group; -import com.mkruchok.service.AbstractService; - -import java.sql.SQLException; -import java.util.List; - -public final class GroupService implements AbstractService { - - private final GroupDAO dao = new GroupDAO(); - - @Override - public List findAll() throws SQLException { - return dao.findAll(); - } - - @Override - public Group findById(Integer id) throws SQLException { - return dao.findById(id); - } - - @Override - public void create(Group entity) throws SQLException { - dao.create(entity); - } - - @Override - public void update(Integer id, Group entity) throws SQLException { - dao.update(id, entity); - } - - @Override - public void delete(Integer id) throws SQLException { - dao.delete(id); - } - -} diff --git a/src/main/java/com/mkruchok/service/implementation/HubService.java b/src/main/java/com/mkruchok/service/implementation/HubService.java deleted file mode 100644 index 1dfc554..0000000 --- a/src/main/java/com/mkruchok/service/implementation/HubService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mkruchok.service.implementation; - -import com.mkruchok.model.dao.implementation.HubDAO; -import com.mkruchok.model.entity.Hub; -import com.mkruchok.service.AbstractService; - -import java.sql.SQLException; -import java.util.List; - -public final class HubService implements AbstractService { - - private final HubDAO dao = new HubDAO(); - - @Override - public List findAll() throws SQLException { - return dao.findAll(); - } - - @Override - public Hub findById(Integer id) throws SQLException { - return dao.findById(id); - } - - @Override - public void create(Hub entity) throws SQLException { - dao.create(entity); - } - - @Override - public void update(Integer id, Hub entity) throws SQLException { - dao.update(id, entity); - } - - @Override - public void delete(Integer id) throws SQLException { - dao.delete(id); - } - -} diff --git a/src/main/java/com/mkruchok/service/implementation/NotificationService.java b/src/main/java/com/mkruchok/service/implementation/NotificationService.java deleted file mode 100644 index 1ca2c75..0000000 --- a/src/main/java/com/mkruchok/service/implementation/NotificationService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mkruchok.service.implementation; - -import com.mkruchok.model.dao.implementation.NotificationDAO; -import com.mkruchok.model.entity.Notification; -import com.mkruchok.service.AbstractService; - -import java.sql.SQLException; -import java.util.List; - -public final class NotificationService implements AbstractService { - - private final NotificationDAO dao = new NotificationDAO(); - - @Override - public List findAll() throws SQLException { - return dao.findAll(); - } - - @Override - public Notification findById(Integer id) throws SQLException { - return dao.findById(id); - } - - @Override - public void create(Notification entity) throws SQLException { - dao.create(entity); - } - - @Override - public void update(Integer id, Notification entity) throws SQLException { - dao.update(id, entity); - } - - @Override - public void delete(Integer id) throws SQLException { - dao.delete(id); - } - -} diff --git a/src/main/java/com/mkruchok/service/implementation/PermissionService.java b/src/main/java/com/mkruchok/service/implementation/PermissionService.java deleted file mode 100644 index d56cb6e..0000000 --- a/src/main/java/com/mkruchok/service/implementation/PermissionService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mkruchok.service.implementation; - -import com.mkruchok.model.dao.implementation.PermissionDAO; -import com.mkruchok.model.entity.Permission; -import com.mkruchok.service.AbstractService; - -import java.sql.SQLException; -import java.util.List; - -public final class PermissionService implements AbstractService { - - private final PermissionDAO dao = new PermissionDAO(); - - @Override - public List findAll() throws SQLException { - return dao.findAll(); - } - - @Override - public Permission findById(Integer id) throws SQLException { - return dao.findById(id); - } - - @Override - public void create(Permission entity) throws SQLException { - dao.create(entity); - } - - @Override - public void update(Integer id, Permission entity) throws SQLException { - dao.update(id, entity); - } - - @Override - public void delete(Integer id) throws SQLException { - dao.delete(id); - } - -} diff --git a/src/main/java/com/mkruchok/service/implementation/RexService.java b/src/main/java/com/mkruchok/service/implementation/RexService.java deleted file mode 100644 index e081414..0000000 --- a/src/main/java/com/mkruchok/service/implementation/RexService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mkruchok.service.implementation; - -import com.mkruchok.model.dao.implementation.RexDAO; -import com.mkruchok.model.entity.Rex; -import com.mkruchok.service.AbstractService; - -import java.sql.SQLException; -import java.util.List; - -public final class RexService implements AbstractService { - - private final RexDAO dao = new RexDAO(); - - @Override - public List findAll() throws SQLException { - return dao.findAll(); - } - - @Override - public Rex findById(Integer id) throws SQLException { - return dao.findById(id); - } - - @Override - public void create(Rex entity) throws SQLException { - dao.create(entity); - } - - @Override - public void update(Integer id, Rex entity) throws SQLException { - dao.update(id, entity); - } - - @Override - public void delete(Integer id) throws SQLException { - dao.delete(id); - } - -} diff --git a/src/main/java/com/mkruchok/service/implementation/UserService.java b/src/main/java/com/mkruchok/service/implementation/UserService.java deleted file mode 100644 index fc850f5..0000000 --- a/src/main/java/com/mkruchok/service/implementation/UserService.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mkruchok.service.implementation; - -import com.mkruchok.model.dao.implementation.UserDAO; -import com.mkruchok.model.entity.User; -import com.mkruchok.service.AbstractService; - -import java.sql.SQLException; -import java.util.List; - - -public final class UserService implements AbstractService { - - private final UserDAO dao = new UserDAO(); - - @Override - public List findAll() throws SQLException { - return dao.findAll(); - } - - @Override - public User findById(Integer id) throws SQLException { - return dao.findById(id); - } - - @Override - public void create(User entity) throws SQLException { - dao.create(entity); - } - - @Override - public void update(Integer id, User entity) throws SQLException { - dao.update(id, entity); - } - - @Override - public void delete(Integer id) throws SQLException { - dao.delete(id); - } - -} diff --git a/src/main/java/com/mkruchok/service/implementation/package-info.java b/src/main/java/com/mkruchok/service/implementation/package-info.java deleted file mode 100644 index 7334fe8..0000000 --- a/src/main/java/com/mkruchok/service/implementation/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.service.implementation; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/package-info.java b/src/main/java/com/mkruchok/service/package-info.java deleted file mode 100644 index fab1eb4..0000000 --- a/src/main/java/com/mkruchok/service/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.service; \ No newline at end of file From 78588f959b095cf1d77579993303ae3c56ba587e Mon Sep 17 00:00:00 2001 From: Phlake Date: Sat, 21 May 2022 14:12:05 +0300 Subject: [PATCH 06/11] Formatted --- checkstyle.xml | 70 -- lombok.config | 1 - pom.xml | 5 +- src/main/java/com/mkruchok/App.java | 22 +- src/main/java/com/mkruchok/Application.java | 8 - src/main/java/com/mkruchok/HibernateUtil.java | 33 +- .../controller/AbstractController.java | 20 +- .../AbstractControllerImpl.java | 53 +- .../implementation/DeviceController.java | 12 +- .../implementation/GroupController.java | 12 +- .../implementation/HubController.java | 12 +- .../NotificationController.java | 12 +- .../implementation/PermissionController.java | 12 +- .../implementation/RexController.java | 12 +- .../implementation/UserController.java | 12 +- .../com/mkruchok/model/dao/AbstractDAO.java | 23 - .../com/mkruchok/model/dao/AbstractDao.java | 23 + .../dao/implementation/AbstractDaoImpl.java | 161 +-- .../model/dao/implementation/DeviceDAO.java | 9 - .../model/dao/implementation/DeviceDao.java | 9 + .../model/dao/implementation/GroupDAO.java | 9 - .../model/dao/implementation/GroupDao.java | 9 + .../model/dao/implementation/HubDAO.java | 9 - .../model/dao/implementation/HubDao.java | 9 + .../dao/implementation/NotificationDAO.java | 9 - .../dao/implementation/NotificationDao.java | 9 + .../dao/implementation/PermissionDAO.java | 10 - .../dao/implementation/PermissionDao.java | 10 + .../model/dao/implementation/RexDAO.java | 9 - .../model/dao/implementation/RexDao.java | 9 + .../model/dao/implementation/UserDAO.java | 9 - .../model/dao/implementation/UserDao.java | 9 + .../com/mkruchok/model/entity/Device.java | 102 +- .../java/com/mkruchok/model/entity/Group.java | 90 +- .../java/com/mkruchok/model/entity/Hub.java | 165 ++- .../mkruchok/model/entity/Notification.java | 60 +- .../com/mkruchok/model/entity/Permission.java | 79 +- .../java/com/mkruchok/model/entity/Rex.java | 46 +- .../java/com/mkruchok/model/entity/User.java | 98 +- .../persistant/ConnectionManager.java | 42 - src/main/java/com/mkruchok/view/Menu.java | 38 +- .../java/com/mkruchok/view/Printable.java | 2 +- src/main/java/com/mkruchok/view/View.java | 944 +++++++++--------- src/main/resources/hibernate.cfg.xml | 4 +- 44 files changed, 1093 insertions(+), 1208 deletions(-) delete mode 100644 checkstyle.xml delete mode 100644 src/main/java/com/mkruchok/Application.java delete mode 100644 src/main/java/com/mkruchok/model/dao/AbstractDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/AbstractDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/HubDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/RexDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/UserDao.java delete mode 100644 src/main/java/com/mkruchok/persistant/ConnectionManager.java diff --git a/checkstyle.xml b/checkstyle.xml deleted file mode 100644 index ed077fb..0000000 --- a/checkstyle.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lombok.config b/lombok.config index c068f11..f630e32 100644 --- a/lombok.config +++ b/lombok.config @@ -1,5 +1,4 @@ config.stopBubbling = true lombok.addLombokGeneratedAnnotation = true -lombok.extern.findbugs.addSuppressFBWarnings = true lombok.anyConstructor.addConstructorProperties = true lombok.addNullAnnotations = \ No newline at end of file diff --git a/pom.xml b/pom.xml index ecd5617..2747166 100644 --- a/pom.xml +++ b/pom.xml @@ -5,11 +5,12 @@ 4.0.0 com.mkruchok - DB4MK + DB5MK 1.0-SNAPSHOT UTF-8 UTF-8 + https://github.com/MKruchok/Databases/tree/lab_5 @@ -115,7 +116,7 @@ maven-checkstyle-plugin 3.1.2 - checkstyle.xml + google_checks.xml diff --git a/src/main/java/com/mkruchok/App.java b/src/main/java/com/mkruchok/App.java index aaae3a4..0db9d5e 100644 --- a/src/main/java/com/mkruchok/App.java +++ b/src/main/java/com/mkruchok/App.java @@ -6,17 +6,17 @@ import org.slf4j.LoggerFactory; public final class App { - static final Logger LOGGER = LoggerFactory.getLogger(App.class); + static final Logger LOGGER = LoggerFactory.getLogger(App.class); - public static void main(final String[] args) { - System.err.close(); - System.setErr(System.out); - try (Session ignored = HibernateUtil.getSession()) { - LOGGER.info("Test session established. "); - new View().show(); - } catch (Exception ex) { - LOGGER.warn("Test session failed."); - LOGGER.error(ex.toString()); - } + public static void main(final String[] args) { + System.err.close(); + System.setErr(System.out); + try (Session ignored = HibernateUtil.getSession()) { + LOGGER.info("Test session established. "); + new View().show(); + } catch (Exception ex) { + LOGGER.warn("Test session failed."); + LOGGER.error(ex.toString()); } + } } \ No newline at end of file diff --git a/src/main/java/com/mkruchok/Application.java b/src/main/java/com/mkruchok/Application.java deleted file mode 100644 index d271f52..0000000 --- a/src/main/java/com/mkruchok/Application.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.mkruchok; - -import com.mkruchok.view.View; -public final class Application { - public static void main(final String[] args) { - new View().show(); - } -} diff --git a/src/main/java/com/mkruchok/HibernateUtil.java b/src/main/java/com/mkruchok/HibernateUtil.java index 8ca6461..a42fede 100644 --- a/src/main/java/com/mkruchok/HibernateUtil.java +++ b/src/main/java/com/mkruchok/HibernateUtil.java @@ -7,25 +7,24 @@ import org.slf4j.LoggerFactory; public class HibernateUtil { - static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); - private static final SessionFactory SESSION_FACTORY; + static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); + private static final SessionFactory SESSION_FACTORY; - static { - try { - SESSION_FACTORY = new Configuration().configure().buildSessionFactory(); - - } catch (Exception ex) { - LOGGER.warn("SessionFactory init failed."); - LOGGER.error(ex.toString()); - throw new ExceptionInInitializerError(ex); - } + static { + try { + SESSION_FACTORY = new Configuration().configure().buildSessionFactory(); + } catch (Exception ex) { + LOGGER.warn("SessionFactory init failed."); + LOGGER.error(ex.toString()); + throw new ExceptionInInitializerError(ex); } + } - public static SessionFactory getSessionFactory() { - return SESSION_FACTORY; - } + public static SessionFactory getSessionFactory() { + return SESSION_FACTORY; + } - public static Session getSession() { - return SESSION_FACTORY.openSession(); - } + public static Session getSession() { + return SESSION_FACTORY.openSession(); + } } diff --git a/src/main/java/com/mkruchok/controller/AbstractController.java b/src/main/java/com/mkruchok/controller/AbstractController.java index c882f7a..892f6ee 100644 --- a/src/main/java/com/mkruchok/controller/AbstractController.java +++ b/src/main/java/com/mkruchok/controller/AbstractController.java @@ -5,18 +5,18 @@ public interface AbstractController { - List findAll() throws SQLException; + List findAll() throws SQLException; - default E findById(Integer id) { - return null; - } + default E findById(Integer id) { + return null; + } - default void create(E entity) { - } + default void create(E entity) { + } - default void update(Integer id, E entity) { - } + default void update(Integer id, E entity) { + } - default void delete(Integer id) { - } + default void delete(Integer id) { + } } diff --git a/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java b/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java index 4d6dcd5..b1a4901 100644 --- a/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java +++ b/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java @@ -3,35 +3,34 @@ import com.mkruchok.controller.AbstractController; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; - import java.util.List; public abstract class AbstractControllerImpl implements AbstractController { - public abstract AbstractDaoImpl getDao(); - - @Override - public final List findAll() { - return (List) getDao().findAll(); - } - - @Override - public final E findById(final Integer id) { - return getDao().findById(id); - } - - @Override - public final void create(final E object) { - getDao().create(object); - } - - @Override - public final void update(final Integer id, E object) { - getDao().update(id, object); - } - - @Override - public final void delete(final Integer id) { - getDao().delete(id); - } + public abstract AbstractDaoImpl getDao(); + + @Override + public final List findAll() { + return (List) getDao().findAll(); + } + + @Override + public final E findById(final Integer id) { + return getDao().findById(id); + } + + @Override + public final void create(final E object) { + getDao().create(object); + } + + @Override + public final void update(final Integer id, E object) { + getDao().update(id, object); + } + + @Override + public final void delete(final Integer id) { + getDao().delete(id); + } } \ No newline at end of file diff --git a/src/main/java/com/mkruchok/controller/implementation/DeviceController.java b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java index fc3070e..dc8e027 100644 --- a/src/main/java/com/mkruchok/controller/implementation/DeviceController.java +++ b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java @@ -1,15 +1,15 @@ package com.mkruchok.controller.implementation; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.DeviceDAO; +import com.mkruchok.model.dao.implementation.DeviceDao; import com.mkruchok.model.entity.Device; public final class DeviceController extends AbstractControllerImpl { - private final DeviceDAO deviceDao = new DeviceDAO(); + private final DeviceDao deviceDao = new DeviceDao(); - @Override - public AbstractDaoImpl getDao() { - return deviceDao; - } + @Override + public AbstractDaoImpl getDao() { + return deviceDao; + } } diff --git a/src/main/java/com/mkruchok/controller/implementation/GroupController.java b/src/main/java/com/mkruchok/controller/implementation/GroupController.java index a8743dd..2b2f44f 100644 --- a/src/main/java/com/mkruchok/controller/implementation/GroupController.java +++ b/src/main/java/com/mkruchok/controller/implementation/GroupController.java @@ -1,15 +1,15 @@ package com.mkruchok.controller.implementation; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.GroupDAO; +import com.mkruchok.model.dao.implementation.GroupDao; import com.mkruchok.model.entity.Group; public final class GroupController extends AbstractControllerImpl { - private final GroupDAO groupDao = new GroupDAO(); + private final GroupDao groupDao = new GroupDao(); - @Override - public AbstractDaoImpl getDao() { - return groupDao; - } + @Override + public AbstractDaoImpl getDao() { + return groupDao; + } } diff --git a/src/main/java/com/mkruchok/controller/implementation/HubController.java b/src/main/java/com/mkruchok/controller/implementation/HubController.java index 9f55b0a..08a0552 100644 --- a/src/main/java/com/mkruchok/controller/implementation/HubController.java +++ b/src/main/java/com/mkruchok/controller/implementation/HubController.java @@ -1,15 +1,15 @@ package com.mkruchok.controller.implementation; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.HubDAO; +import com.mkruchok.model.dao.implementation.HubDao; import com.mkruchok.model.entity.Hub; public final class HubController extends AbstractControllerImpl { - private final HubDAO hubDao = new HubDAO(); + private final HubDao hubDao = new HubDao(); - @Override - public AbstractDaoImpl getDao() { - return hubDao; - } + @Override + public AbstractDaoImpl getDao() { + return hubDao; + } } diff --git a/src/main/java/com/mkruchok/controller/implementation/NotificationController.java b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java index 8c7f91c..69aa5af 100644 --- a/src/main/java/com/mkruchok/controller/implementation/NotificationController.java +++ b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java @@ -1,16 +1,16 @@ package com.mkruchok.controller.implementation; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.NotificationDAO; +import com.mkruchok.model.dao.implementation.NotificationDao; import com.mkruchok.model.entity.Notification; public final class NotificationController extends AbstractControllerImpl { - private final NotificationDAO notificationDao = new NotificationDAO(); + private final NotificationDao notificationDao = new NotificationDao(); - @Override - public AbstractDaoImpl getDao() { - return notificationDao; - } + @Override + public AbstractDaoImpl getDao() { + return notificationDao; + } } diff --git a/src/main/java/com/mkruchok/controller/implementation/PermissionController.java b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java index 60ca235..3a9783b 100644 --- a/src/main/java/com/mkruchok/controller/implementation/PermissionController.java +++ b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java @@ -1,15 +1,15 @@ package com.mkruchok.controller.implementation; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.PermissionDAO; +import com.mkruchok.model.dao.implementation.PermissionDao; import com.mkruchok.model.entity.Permission; public final class PermissionController extends AbstractControllerImpl { - private final PermissionDAO permissionDao = new PermissionDAO(); + private final PermissionDao permissionDao = new PermissionDao(); - @Override - public AbstractDaoImpl getDao() { - return permissionDao; - } + @Override + public AbstractDaoImpl getDao() { + return permissionDao; + } } diff --git a/src/main/java/com/mkruchok/controller/implementation/RexController.java b/src/main/java/com/mkruchok/controller/implementation/RexController.java index b8564fb..3ae3634 100644 --- a/src/main/java/com/mkruchok/controller/implementation/RexController.java +++ b/src/main/java/com/mkruchok/controller/implementation/RexController.java @@ -1,14 +1,14 @@ package com.mkruchok.controller.implementation; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.RexDAO; +import com.mkruchok.model.dao.implementation.RexDao; import com.mkruchok.model.entity.Rex; public final class RexController extends AbstractControllerImpl { - private final RexDAO rexDao = new RexDAO(); + private final RexDao rexDao = new RexDao(); - @Override - public AbstractDaoImpl getDao() { - return rexDao; - } + @Override + public AbstractDaoImpl getDao() { + return rexDao; + } } diff --git a/src/main/java/com/mkruchok/controller/implementation/UserController.java b/src/main/java/com/mkruchok/controller/implementation/UserController.java index ace29d7..d55fa50 100644 --- a/src/main/java/com/mkruchok/controller/implementation/UserController.java +++ b/src/main/java/com/mkruchok/controller/implementation/UserController.java @@ -1,14 +1,14 @@ package com.mkruchok.controller.implementation; import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.UserDAO; +import com.mkruchok.model.dao.implementation.UserDao; import com.mkruchok.model.entity.User; public final class UserController extends AbstractControllerImpl { - public final UserDAO userDao = new UserDAO(); + public final UserDao userDao = new UserDao(); - @Override - public AbstractDaoImpl getDao() { - return userDao; - } + @Override + public AbstractDaoImpl getDao() { + return userDao; + } } \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/AbstractDAO.java b/src/main/java/com/mkruchok/model/dao/AbstractDAO.java deleted file mode 100644 index 5d6c1fb..0000000 --- a/src/main/java/com/mkruchok/model/dao/AbstractDAO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.mkruchok.model.dao; - -import java.sql.SQLException; -import java.util.Collection; - -public interface AbstractDAO { - - Collection findAll() throws SQLException; - - default void create(E entity) { - } - - default E findById(Integer id) { - return null; - } - - default void update(Integer id, E entity) { - } - - default void delete(Integer id) { - } - -} diff --git a/src/main/java/com/mkruchok/model/dao/AbstractDao.java b/src/main/java/com/mkruchok/model/dao/AbstractDao.java new file mode 100644 index 0000000..247aae7 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/AbstractDao.java @@ -0,0 +1,23 @@ +package com.mkruchok.model.dao; + +import java.sql.SQLException; +import java.util.Collection; + +public interface AbstractDao { + + Collection findAll() throws SQLException; + + default void create(E entity) { + } + + default E findById(Integer id) { + return null; + } + + default void update(Integer id, E entity) { + } + + default void delete(Integer id) { + } + +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java b/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java index 4c2f5df..05dca8e 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java @@ -1,104 +1,105 @@ package com.mkruchok.model.dao.implementation; import com.mkruchok.HibernateUtil; -import com.mkruchok.model.dao.AbstractDAO; +import com.mkruchok.model.dao.AbstractDao; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -public abstract class AbstractDaoImpl implements AbstractDAO { +public abstract class AbstractDaoImpl implements AbstractDao { - static final Logger LOGGER = LoggerFactory.getLogger(AbstractDaoImpl.class); - protected final SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); - private final Class currentClass; + static final Logger LOGGER = LoggerFactory.getLogger(AbstractDaoImpl.class); + protected final SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); + private final Class currentClass; - public AbstractDaoImpl(Class currentClass) { - this.currentClass = currentClass; - } + public AbstractDaoImpl(Class currentClass) { + this.currentClass = currentClass; + } - @Override - @SuppressWarnings("unchecked") - public final Collection findAll() { - List entities = new ArrayList<>(); - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - entities = session.createQuery("from " + currentClass.getName()).getResultList(); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } - entities.forEach(e -> LOGGER.debug(e.toString())); - return entities; + @Override + @SuppressWarnings("unchecked") + public final Collection findAll() { + List entities = new ArrayList<>(); + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + entities = session.createQuery("from " + currentClass.getName()) + .getResultList(); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); } + entities.forEach(e -> LOGGER.debug(e.toString())); + return entities; + } - @Override - public final E findById(Integer id) { - E entity = null; + @Override + public final E findById(Integer id) { + E entity = null; - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - entity = session.get(currentClass, id); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } - return entity; + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + entity = session.get(currentClass, id); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); } + return entity; + } - @Override - public final void update(Integer id, E entity) { - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - session.update(entity); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } + @Override + public final void update(Integer id, E entity) { + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + session.update(entity); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); } + } - @Override - public final void create(E entity) { - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - session.save(entity); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } + @Override + public final void create(E entity) { + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + session.save(entity); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); } + } - @Override - public final void delete(Integer id) { - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - E entity = session.get(currentClass, id); - if (entity != null) { - session.delete(entity); - } - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } + @Override + public final void delete(Integer id) { + try (Session session = sessionFactory.getCurrentSession()) { + session.beginTransaction(); + E entity = session.get(currentClass, id); + if (entity != null) { + session.delete(entity); + } + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); + } + } catch (Exception e) { + LOGGER.error(String.valueOf(e)); } + } } \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java deleted file mode 100644 index 5e42885..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Device; - -public final class DeviceDAO extends AbstractDaoImpl { - public DeviceDAO() { - super(Device.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java new file mode 100644 index 0000000..1ad3942 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.Device; + +public final class DeviceDao extends AbstractDaoImpl { + public DeviceDao() { + super(Device.class); + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java deleted file mode 100644 index 129ac1d..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/GroupDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Group; - -public final class GroupDAO extends AbstractDaoImpl { - public GroupDAO() { - super(Group.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java b/src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java new file mode 100644 index 0000000..730da03 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.Group; + +public final class GroupDao extends AbstractDaoImpl { + public GroupDao() { + super(Group.class); + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java deleted file mode 100644 index 9c4b87c..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/HubDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Hub; - -public final class HubDAO extends AbstractDaoImpl { - public HubDAO() { - super(Hub.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/HubDao.java b/src/main/java/com/mkruchok/model/dao/implementation/HubDao.java new file mode 100644 index 0000000..16ee2ee --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/HubDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.Hub; + +public final class HubDao extends AbstractDaoImpl { + public HubDao() { + super(Hub.class); + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java deleted file mode 100644 index 3616aa0..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Notification; - -public final class NotificationDAO extends AbstractDaoImpl { - public NotificationDAO() { - super(Notification.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java new file mode 100644 index 0000000..cf713ad --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.Notification; + +public final class NotificationDao extends AbstractDaoImpl { + public NotificationDao() { + super(Notification.class); + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java deleted file mode 100644 index c6fbbed..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDAO.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.mkruchok.model.dao.implementation; - - -import com.mkruchok.model.entity.Permission; - -public final class PermissionDAO extends AbstractDaoImpl { - public PermissionDAO() { - super(Permission.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java new file mode 100644 index 0000000..fd00992 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java @@ -0,0 +1,10 @@ +package com.mkruchok.model.dao.implementation; + + +import com.mkruchok.model.entity.Permission; + +public final class PermissionDao extends AbstractDaoImpl { + public PermissionDao() { + super(Permission.class); + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java deleted file mode 100644 index 7211472..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/RexDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Rex; - -public final class RexDAO extends AbstractDaoImpl { - public RexDAO() { - super(Rex.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/RexDao.java b/src/main/java/com/mkruchok/model/dao/implementation/RexDao.java new file mode 100644 index 0000000..b6ebcc2 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/RexDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.Rex; + +public final class RexDao extends AbstractDaoImpl { + public RexDao() { + super(Rex.class); + } +} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java b/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java deleted file mode 100644 index 06e231e..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/UserDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.User; - -public final class UserDAO extends AbstractDaoImpl { - public UserDAO() { - super(User.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/UserDao.java b/src/main/java/com/mkruchok/model/dao/implementation/UserDao.java new file mode 100644 index 0000000..dfd2e2e --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/UserDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.User; + +public final class UserDao extends AbstractDaoImpl { + public UserDao() { + super(User.class); + } +} diff --git a/src/main/java/com/mkruchok/model/entity/Device.java b/src/main/java/com/mkruchok/model/entity/Device.java index bf9c41b..c5aa170 100644 --- a/src/main/java/com/mkruchok/model/entity/Device.java +++ b/src/main/java/com/mkruchok/model/entity/Device.java @@ -1,33 +1,30 @@ package com.mkruchok.model.entity; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; - +import java.sql.Timestamp; +import java.util.Collection; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OrderColumn; +import javax.persistence.Table; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.JoinColumn; -import javax.persistence.OrderColumn; -import javax.persistence.OneToMany; -import javax.persistence.FetchType; -import javax.persistence.ManyToOne; -import java.sql.Timestamp; -import java.util.Collection; - @Table(name = "device") -@SuppressFBWarnings + @AllArgsConstructor @NoArgsConstructor @ToString @@ -36,41 +33,42 @@ @Setter @Entity public class Device { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Integer id; - @Column(name = "model", length = 45) - private String model; - @Column(name = "device_status", length = 45) - private String status; - @CreationTimestamp - @Column(name = "service_life_end_time") - private Timestamp serviceLifeEndTime; - @CreationTimestamp - @Column(name = "warranty_end_time") - private Timestamp warrantyEndTime; - @Column(name = "on_battery", length = 1) - private Integer onBattery; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + @Column(name = "model", length = 45) + private String model; + @Column(name = "device_status", length = 45) + private String status; + @CreationTimestamp + @Column(name = "service_life_end_time") + private Timestamp serviceLifeEndTime; + @CreationTimestamp + @Column(name = "warranty_end_time") + private Timestamp warrantyEndTime; + @Column(name = "on_battery", length = 1) + private Integer onBattery; - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") - private Hub hubId; + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubId; - @OrderColumn - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(mappedBy = "deviceId", fetch = FetchType.LAZY) - @ToString.Exclude - private Collection notifications; + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "deviceId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection notifications; - public Device(String model, String status, Timestamp serviceLifeEndTime, - Timestamp warrantyEndTime, Integer onBattery, Hub hubId) { - this.model = model; - this.status = status; - this.serviceLifeEndTime = serviceLifeEndTime; - this.warrantyEndTime = warrantyEndTime; - this.onBattery = onBattery; - this.hubId = hubId; - } + public Device( + String model, String status, Timestamp serviceLifeEndTime, + Timestamp warrantyEndTime, Integer onBattery, Hub hubId) { + this.model = model; + this.status = status; + this.serviceLifeEndTime = serviceLifeEndTime; + this.warrantyEndTime = warrantyEndTime; + this.onBattery = onBattery; + this.hubId = hubId; + } } diff --git a/src/main/java/com/mkruchok/model/entity/Group.java b/src/main/java/com/mkruchok/model/entity/Group.java index 35b8af4..b188916 100644 --- a/src/main/java/com/mkruchok/model/entity/Group.java +++ b/src/main/java/com/mkruchok/model/entity/Group.java @@ -1,32 +1,30 @@ package com.mkruchok.model.entity; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.Getter; -import lombok.Setter; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; - +import java.util.Collection; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; +import javax.persistence.Id; import javax.persistence.JoinColumn; -import javax.persistence.OrderColumn; -import javax.persistence.OneToMany; -import javax.persistence.FetchType; -import javax.persistence.ManyToMany; import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; -import java.util.Collection; +import javax.persistence.OneToMany; +import javax.persistence.OrderColumn; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; @Table(name = "hub_group") -@SuppressFBWarnings + @AllArgsConstructor @ToString @EqualsAndHashCode(of = "id") @@ -35,33 +33,33 @@ @Entity @NoArgsConstructor public class Group { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Integer id; - @Column(name = "group_name", length = 45) - private String name; - @Column(name = "group_description", length = 150) - private String groupDescription; - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") - private Hub hubGroupId; - @OrderColumn - @OneToMany(mappedBy = "groupId", fetch = FetchType.LAZY) - @ToString.Exclude - private Collection users; - @OrderColumn - @ManyToMany - @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "group_has_permission", - joinColumns = @JoinColumn(name = "group_id"), - inverseJoinColumns = @JoinColumn(name = "permission_id")) - @ToString.Exclude - Collection groupHasPermissions; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "group_has_permission", + joinColumns = @JoinColumn(name = "group_id"), + inverseJoinColumns = @JoinColumn(name = "permission_id")) + @ToString.Exclude + Collection groupHasPermissions; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + @Column(name = "group_name", length = 45) + private String name; + @Column(name = "group_description", length = 150) + private String groupDescription; + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubGroupId; + @OrderColumn + @OneToMany(mappedBy = "groupId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection users; - public Group(String name, String description, Hub hubId) { - this.name = name; - this.groupDescription = description; - this.hubGroupId = hubId; - } + public Group(String name, String description, Hub hubId) { + this.name = name; + this.groupDescription = description; + this.hubGroupId = hubId; + } } diff --git a/src/main/java/com/mkruchok/model/entity/Hub.java b/src/main/java/com/mkruchok/model/entity/Hub.java index c84fdf9..6dede25 100644 --- a/src/main/java/com/mkruchok/model/entity/Hub.java +++ b/src/main/java/com/mkruchok/model/entity/Hub.java @@ -1,33 +1,31 @@ package com.mkruchok.model.entity; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.sql.Timestamp; +import java.util.Collection; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.OneToMany; +import javax.persistence.OrderColumn; +import javax.persistence.Table; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.JoinColumn; -import javax.persistence.OrderColumn; -import javax.persistence.OneToMany; -import javax.persistence.FetchType; -import javax.persistence.ManyToMany; -import javax.persistence.JoinTable; -import java.sql.Timestamp; -import java.util.Collection; - @Table(name = "hub") -@SuppressFBWarnings + @Getter @ToString @EqualsAndHashCode(of = "id") @@ -36,71 +34,70 @@ @Setter @Entity public class Hub { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Integer id; - @Column(name = "model", length = 45) - private String model; - @Column(name = "hub_status", length = 45) - private String status; - @CreationTimestamp - @Column(name = "service_life_end_time", length = 45) - private Timestamp serviceLifeEndTime; - @CreationTimestamp - @Column(name = "warranty_end_time", length = 45) - private Timestamp warrantyEndTime; - @Column(name = "users_max", length = 45) - private Integer usersMax; - @Column(name = "rooms_max", length = 45) - private Integer roomsMax; - @Column(name = "devices_max", length = 45) - private Integer devicesMax; - @Column(name = "sirens_max", length = 45) - private Integer sirensMax; - @Column(name = "on_battery", length = 1) - private Integer onBattery; - @OrderColumn - @OneToMany(mappedBy = "hubGroupId", fetch = FetchType.LAZY) - @ToString.Exclude - private Collection groups; - @OrderColumn - @OneToMany(mappedBy = "hubRexId", fetch = FetchType.LAZY) - @ToString.Exclude - private Collection rexes; - @OrderColumn - @OneToMany(mappedBy = "hubNotificationId", fetch = FetchType.LAZY) - @ToString.Exclude - private Collection notifications; - - - @OrderColumn - @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(mappedBy = "hubId") - @ToString.Exclude - private Collection devices; - - - @OrderColumn - @LazyCollection(LazyCollectionOption.FALSE) - @ManyToMany - @JoinTable(name = "user_has_hub", - joinColumns = @JoinColumn(name = "hub_id"), - inverseJoinColumns = @JoinColumn(name = "user_id")) - @ToString.Exclude - Collection hubHasUsers; + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @ManyToMany + @JoinTable(name = "user_has_hub", + joinColumns = @JoinColumn(name = "hub_id"), + inverseJoinColumns = @JoinColumn(name = "user_id")) + @ToString.Exclude + Collection hubHasUsers; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + @Column(name = "model", length = 45) + private String model; + @Column(name = "hub_status", length = 45) + private String status; + @CreationTimestamp + @Column(name = "service_life_end_time", length = 45) + private Timestamp serviceLifeEndTime; + @CreationTimestamp + @Column(name = "warranty_end_time", length = 45) + private Timestamp warrantyEndTime; + @Column(name = "users_max", length = 45) + private Integer usersMax; + @Column(name = "rooms_max", length = 45) + private Integer roomsMax; + @Column(name = "devices_max", length = 45) + private Integer devicesMax; + @Column(name = "sirens_max", length = 45) + private Integer sirensMax; + @Column(name = "on_battery", length = 1) + private Integer onBattery; + @OrderColumn + @OneToMany(mappedBy = "hubGroupId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection groups; + @OrderColumn + @OneToMany(mappedBy = "hubRexId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection rexes; + @OrderColumn + @OneToMany(mappedBy = "hubNotificationId", fetch = FetchType.LAZY) + @ToString.Exclude + private Collection notifications; + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "hubId") + @ToString.Exclude + private Collection devices; - public Hub(String model, String status, Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, - Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, Integer onBattery) { - this.model = model; - this.status = status; - this.serviceLifeEndTime = serviceLifeEndTime; - this.warrantyEndTime = warrantyEndTime; - this.usersMax = usersMax; - this.roomsMax = roomsMax; - this.devicesMax = devicesMax; - this.sirensMax = sirensMax; - this.onBattery = onBattery; - } + public Hub( + String model, String status, Timestamp serviceLifeEndTime, + Timestamp warrantyEndTime, + Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, + Integer onBattery) { + this.model = model; + this.status = status; + this.serviceLifeEndTime = serviceLifeEndTime; + this.warrantyEndTime = warrantyEndTime; + this.usersMax = usersMax; + this.roomsMax = roomsMax; + this.devicesMax = devicesMax; + this.sirensMax = sirensMax; + this.onBattery = onBattery; + } } diff --git a/src/main/java/com/mkruchok/model/entity/Notification.java b/src/main/java/com/mkruchok/model/entity/Notification.java index cbf365a..6897500 100644 --- a/src/main/java/com/mkruchok/model/entity/Notification.java +++ b/src/main/java/com/mkruchok/model/entity/Notification.java @@ -1,27 +1,25 @@ package com.mkruchok.model.entity; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.Getter; -import lombok.Setter; +import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; -import javax.persistence.ManyToOne; +import javax.persistence.Id; import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; import org.hibernate.annotations.CreationTimestamp; -import java.sql.Timestamp; - @Table(name = "notification") -@SuppressFBWarnings + @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(of = "id") @@ -30,24 +28,24 @@ @ToString @Entity public class Notification { - @Id - @Column(name = "id") - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Integer id; - @CreationTimestamp - @Column(name = "timestamp") - private Timestamp timestamp; - @Column(name = "notification_type", length = 45) - private String type; - - - @ManyToOne - @JoinColumn(name = "device_id", referencedColumnName = "id") - private Device deviceId; - - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") - private Hub hubNotificationId; + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + @CreationTimestamp + @Column(name = "timestamp") + private Timestamp timestamp; + @Column(name = "notification_type", length = 45) + private String type; + + + @ManyToOne + @JoinColumn(name = "device_id", referencedColumnName = "id") + private Device deviceId; + + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubNotificationId; } diff --git a/src/main/java/com/mkruchok/model/entity/Permission.java b/src/main/java/com/mkruchok/model/entity/Permission.java index 7a7c202..90da9a4 100644 --- a/src/main/java/com/mkruchok/model/entity/Permission.java +++ b/src/main/java/com/mkruchok/model/entity/Permission.java @@ -1,30 +1,28 @@ package com.mkruchok.model.entity; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.Getter; -import lombok.Setter; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; - +import java.util.Collection; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; +import javax.persistence.Id; import javax.persistence.JoinColumn; -import javax.persistence.OrderColumn; -import javax.persistence.ManyToMany; import javax.persistence.JoinTable; -import java.util.Collection; +import javax.persistence.ManyToMany; +import javax.persistence.OrderColumn; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; @Table(name = "permission") -@SuppressFBWarnings + @AllArgsConstructor @NoArgsConstructor @Getter @@ -33,30 +31,29 @@ @ToString @Entity public class Permission { - @Id - @Column(name = "id") - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Integer id; - @Column(name = "permission_name", length = 45) - private String name; - @Column(name = "permission_description", length = 45) - private String permissionDescription; - - @OrderColumn - @ManyToMany - @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "user_has_permission", - joinColumns = @JoinColumn(name = "permission_id"), - inverseJoinColumns = @JoinColumn(name = "user_id")) - @ToString.Exclude - Collection permissionHasUsers; - @OrderColumn - @ManyToMany - @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "group_has_permission", - joinColumns = @JoinColumn(name = "permission_id"), - inverseJoinColumns = @JoinColumn(name = "group_id")) - @ToString.Exclude - Collection permissionHasGroups; + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + @Column(name = "permission_name", length = 45) + private String name; + @Column(name = "permission_description", length = 45) + private String permissionDescription; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "user_has_permission", + joinColumns = @JoinColumn(name = "permission_id"), + inverseJoinColumns = @JoinColumn(name = "user_id")) + @ToString.Exclude + private Collection permissionHasUsers; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "group_has_permission", + joinColumns = @JoinColumn(name = "permission_id"), + inverseJoinColumns = @JoinColumn(name = "group_id")) + @ToString.Exclude + private Collection permissionHasGroups; } diff --git a/src/main/java/com/mkruchok/model/entity/Rex.java b/src/main/java/com/mkruchok/model/entity/Rex.java index eb6904b..351610d 100644 --- a/src/main/java/com/mkruchok/model/entity/Rex.java +++ b/src/main/java/com/mkruchok/model/entity/Rex.java @@ -1,25 +1,23 @@ package com.mkruchok.model.entity; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.Getter; -import lombok.Setter; - import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; +import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; @Table(name = "rex") -@SuppressFBWarnings + @AllArgsConstructor @NoArgsConstructor @ToString @@ -28,19 +26,19 @@ @Setter @Entity public class Rex { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Integer id; - @Column(name = "rex_name", length = 45) - private String name; - @Column(name = "rex_range", length = 45) - private String range; - - - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") - private Hub hubRexId; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + @Column(name = "rex_name", length = 45) + private String name; + @Column(name = "rex_range", length = 45) + private String range; + + + @ManyToOne + @JoinColumn(name = "hub_id", referencedColumnName = "id") + private Hub hubRexId; } diff --git a/src/main/java/com/mkruchok/model/entity/User.java b/src/main/java/com/mkruchok/model/entity/User.java index d59cb31..83130be 100644 --- a/src/main/java/com/mkruchok/model/entity/User.java +++ b/src/main/java/com/mkruchok/model/entity/User.java @@ -1,30 +1,28 @@ package com.mkruchok.model.entity; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.Getter; -import lombok.Setter; -import org.hibernate.annotations.CreationTimestamp; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; - +import java.sql.Timestamp; +import java.util.Collection; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; +import javax.persistence.Id; import javax.persistence.JoinColumn; -import javax.persistence.OrderColumn; -import javax.persistence.ManyToMany; import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; -import java.sql.Timestamp; -import java.util.Collection; +import javax.persistence.OrderColumn; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; @Table(name = "user") @@ -32,43 +30,43 @@ @AllArgsConstructor @ToString @EqualsAndHashCode(of = "id") -@SuppressFBWarnings + @Getter @Setter @Entity public class User { - @Id - @Column(name = "id") - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Integer id; - @Column(name = "email", length = 45) - private String email; - @Column(name = "user_password", length = 45) - private String password; - @CreationTimestamp - @Column(name = "date_created") - private Timestamp dateCreated; - @Column(name = "user_name", length = 45) - private String name; - @ManyToOne - @JoinColumn(name = "group_id", referencedColumnName = "id") - private Group groupId; - @OrderColumn - @ManyToMany - @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "user_has_hub", - joinColumns = @JoinColumn(name = "user_id"), - inverseJoinColumns = @JoinColumn(name = "hub_id")) - @ToString.Exclude - Collection userHasHubs; - @OrderColumn - @ManyToMany - @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "user_has_permission", - joinColumns = @JoinColumn(name = "user_id"), - inverseJoinColumns = @JoinColumn(name = "permission_id")) - @ToString.Exclude - Collection userHasPermissions; + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + @Column(name = "email", length = 45) + private String email; + @Column(name = "user_password", length = 45) + private String password; + @CreationTimestamp + @Column(name = "date_created") + private Timestamp dateCreated; + @Column(name = "user_name", length = 45) + private String name; + @ManyToOne + @JoinColumn(name = "group_id", referencedColumnName = "id") + private Group groupId; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "user_has_hub", + joinColumns = @JoinColumn(name = "user_id"), + inverseJoinColumns = @JoinColumn(name = "hub_id")) + @ToString.Exclude + private Collection userHasHubs; + @OrderColumn + @ManyToMany + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "user_has_permission", + joinColumns = @JoinColumn(name = "user_id"), + inverseJoinColumns = @JoinColumn(name = "permission_id")) + @ToString.Exclude + private Collection userHasPermissions; } diff --git a/src/main/java/com/mkruchok/persistant/ConnectionManager.java b/src/main/java/com/mkruchok/persistant/ConnectionManager.java deleted file mode 100644 index ddbb924..0000000 --- a/src/main/java/com/mkruchok/persistant/ConnectionManager.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mkruchok.persistant; - -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.sql.Connection; -import java.sql.DriverManager; - -@SuppressFBWarnings -public final class ConnectionManager { - static final Logger LOGGER = LoggerFactory.getLogger(ConnectionManager.class); - private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; - private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/ajax_curr?useUnicode=true&serverTimezone=UTC"; - private static final String USERNAME = "root"; - private static final String PASSWORD = "admin"; - private static Connection databaseConnection; - - public ConnectionManager() { - } - - public static Connection getConnection() { - try { - Class.forName(JDBC_DRIVER); - if (databaseConnection == null || databaseConnection.isClosed()) { - try { - databaseConnection = DriverManager.getConnection( - DATABASE_URL, - USERNAME, - PASSWORD - ); - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - } - } catch (Exception e) { - LOGGER.error("Ops!", e); - } - return databaseConnection; - } - -} diff --git a/src/main/java/com/mkruchok/view/Menu.java b/src/main/java/com/mkruchok/view/Menu.java index 5a84d28..cf4871e 100644 --- a/src/main/java/com/mkruchok/view/Menu.java +++ b/src/main/java/com/mkruchok/view/Menu.java @@ -4,25 +4,25 @@ import org.slf4j.LoggerFactory; public final class Menu { - static final Logger LOGGER = LoggerFactory.getLogger(Menu.class); + static final Logger LOGGER = LoggerFactory.getLogger(Menu.class); - public void displayMenu() { - LOGGER.debug("\n _________________________________________________\n" + - "| |\n" + - "| Enter entity and CRUD number : |\n" + - "| |\n" + - "| Table: CRUD: |\n" + - "|_________________________________________________|\n" + - "| 1 | user | 1 | GET TABLE |\n" + - "| 2 | hub | 2 | GET ROW BY ID |\n" + - "| 3 | device | 3 | CREATE ROW |\n" + - "| 4 | notification | 4 | UPDATE ROW |\n" + - "| 5 | group | 5 | DELETE ROW |\n" + - "| 6 | permission | | |\n" + - "| 7 | rex | | |\n" + - "|___|__________________|___|______________________|\n" + - "Enter numbers:" + public void displayMenu() { + LOGGER.debug("\n _________________________________________________\n" + + "| |\n" + + "| Enter entity and CRUD number : |\n" + + "| |\n" + + "| Table: CRUD: |\n" + + "|_________________________________________________|\n" + + "| 1 | user | 1 | GET TABLE |\n" + + "| 2 | hub | 2 | GET ROW BY ID |\n" + + "| 3 | device | 3 | CREATE ROW |\n" + + "| 4 | notification | 4 | UPDATE ROW |\n" + + "| 5 | group | 5 | DELETE ROW |\n" + + "| 6 | permission | | |\n" + + "| 7 | rex | | |\n" + + "|___|__________________|___|______________________|\n" + + "Enter numbers:" - ); - } + ); + } } diff --git a/src/main/java/com/mkruchok/view/Printable.java b/src/main/java/com/mkruchok/view/Printable.java index c536539..f6da866 100644 --- a/src/main/java/com/mkruchok/view/Printable.java +++ b/src/main/java/com/mkruchok/view/Printable.java @@ -4,5 +4,5 @@ @FunctionalInterface public interface Printable { - void print() throws SQLException; + void print() throws SQLException; } diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java index 7991003..8d5575e 100644 --- a/src/main/java/com/mkruchok/view/View.java +++ b/src/main/java/com/mkruchok/view/View.java @@ -1,469 +1,491 @@ package com.mkruchok.view; -import com.mkruchok.controller.implementation.*; -import com.mkruchok.model.entity.*; +import com.mkruchok.controller.implementation.DeviceController; +import com.mkruchok.controller.implementation.GroupController; +import com.mkruchok.controller.implementation.HubController; +import com.mkruchok.controller.implementation.NotificationController; +import com.mkruchok.controller.implementation.PermissionController; +import com.mkruchok.controller.implementation.RexController; +import com.mkruchok.controller.implementation.UserController; +import com.mkruchok.model.entity.Device; +import com.mkruchok.model.entity.Group; +import com.mkruchok.model.entity.Hub; +import com.mkruchok.model.entity.Notification; +import com.mkruchok.model.entity.Permission; +import com.mkruchok.model.entity.Rex; +import com.mkruchok.model.entity.User; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Scanner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.sql.Timestamp; -import java.util.*; - public final class View { - static final Logger LOGGER = LoggerFactory.getLogger(View.class); - private static final Scanner SCANNER = new Scanner(System.in, "UTF-8"); - private final Map menu = new LinkedHashMap<>(); - private final HubController hubController = new HubController(); - private final DeviceController deviceController = new DeviceController(); - private final NotificationController notificationController = new NotificationController(); - private final GroupController groupController = new GroupController(); - private final PermissionController permissionController = new PermissionController(); - private final UserController userController = new UserController(); - private final RexController rexController = new RexController(); - Menu showMenu = new Menu(); - - - public View() { - menu.put("11", this::getAllUsers); - menu.put("12", this::getUserById); - menu.put("13", this::createUser); - menu.put("14", this::updateUser); - menu.put("15", this::deleteUser); - - menu.put("21", this::getAllHubs); - menu.put("22", this::getHubById); - menu.put("23", this::createHub); - menu.put("24", this::updateHub); - menu.put("25", this::deleteHub); - - menu.put("31", this::getAllDevices); - menu.put("32", this::getDeviceByName); - menu.put("33", this::createDevice); - menu.put("34", this::updateDevice); - menu.put("35", this::deleteDevice); - - menu.put("41", this::getAllNotifications); - menu.put("42", this::getNotificationById); - menu.put("43", this::createNotification); - menu.put("44", this::updateNotification); - menu.put("45", this::deleteNotification); - - menu.put("51", this::getAllGroups); - menu.put("52", this::getGroupById); - menu.put("53", this::createGroup); - menu.put("54", this::updateGroup); - menu.put("55", this::deleteGroup); - - menu.put("61", this::getAllPermissions); - menu.put("62", this::getPermissionById); - menu.put("63", this::createPermission); - menu.put("64", this::updatePermission); - menu.put("65", this::deletePermission); - - menu.put("71", this::getAllRexes); - menu.put("72", this::getRexById); - menu.put("73", this::createRex); - menu.put("74", this::updateRex); - menu.put("75", this::deleteRex); - } - - public void show() { - String input; - showMenu.displayMenu(); - do { - try { - input = SCANNER.next(); - menu.get(input).print(); - } catch (Exception e) { - LOGGER.debug(String.valueOf(e)); - } - } while (SCANNER.hasNext()); - } - - private void getAllUsers() { - userController.findAll(); - showMenu.displayMenu(); - } - - private void getUserById() { - LOGGER.debug("\nEnter iD: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(userController.findById(id).toString()); - showMenu.displayMenu(); - } - - private User getUserInputs(Integer create) throws NullPointerException { - LOGGER.debug("Enter email: "); - String email = SCANNER.next(); - LOGGER.debug("Enter password: "); - String password = SCANNER.next(); - LOGGER.debug("Enter name: "); - String name = SCANNER.next(); - Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); - Group groupEntity = null; - Collection userHubs = new ArrayList<>(); - Collection userPermissions = new ArrayList<>(); - if (create == 0) { - LOGGER.debug("Enter group id: "); - Integer groupId = SCANNER.nextInt(); - LOGGER.debug("Enter hub id that user has: "); - Integer hubId = SCANNER.nextInt(); - userHubs.add(hubController.findById(hubId)); - LOGGER.debug("Enter permission id that user has: "); - Integer permissionId = SCANNER.nextInt(); - userPermissions.add(permissionController.findById(permissionId)); - groupEntity = groupController.findById(groupId); - } - return new User(null, email, password, dateCreated, name, groupEntity, userHubs, userPermissions); - } - - private void createUser() { - User user = getUserInputs(1); - userController.create(user); - LOGGER.debug("\nUser was added to the table.\n"); - showMenu.displayMenu(); - } - - private void updateUser() { - LOGGER.debug("\nEnter id to update: "); - Integer id = SCANNER.nextInt(); - User user = getUserInputs(0); - user.setId(id); - userController.update(user.getId(), user); - LOGGER.debug("Updated user, id = " + id); - showMenu.displayMenu(); - } - - private void deleteUser() { - LOGGER.debug("\nEnter ID to delete user: "); - int id = SCANNER.nextInt(); - userController.delete(id); - LOGGER.debug("Deleted user, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllHubs() { - hubController.findAll(); - } - - private void getHubById() { - LOGGER.debug("\nEnter Id: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(hubController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Hub getHubInputs() { - LOGGER.debug("\nEnter model: "); - String model = SCANNER.next(); - LOGGER.debug("Enter status: "); - String status = SCANNER.next(); - SCANNER.nextLine(); - LOGGER.debug("Enter service_life_end_time: "); - Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter warranty_end_time: "); - Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter users_max: "); - Integer usersMax = SCANNER.nextInt(); - LOGGER.debug("Enter rooms_max: "); - Integer roomsMax = SCANNER.nextInt(); - LOGGER.debug("Enter devices_max: "); - Integer devicesMax = SCANNER.nextInt(); - LOGGER.debug("Enter sirens_max: "); - Integer sirensMax = SCANNER.nextInt(); - LOGGER.debug("Enter on_battery: "); - Integer onBattery = SCANNER.nextInt(); - return new Hub(model, status, serviceLifeEndTime, warrantyEndTime, - usersMax, roomsMax, devicesMax, sirensMax, onBattery); - } - - private void createHub() { - Hub hub = getHubInputs(); - hubController.create(hub); - LOGGER.debug("Hub was added to the table."); - showMenu.displayMenu(); - } - - private void updateHub() { - LOGGER.debug("\nEnter id to update:"); - Integer id = SCANNER.nextInt(); - Hub hub = getHubInputs(); - hub.setId(id); - hubController.update(hub.getId(), hub); - LOGGER.debug("Updated hub, id = " + id); - showMenu.displayMenu(); - } - - private void deleteHub() { - LOGGER.debug("\nEnter id to delete hub: "); - Integer id = SCANNER.nextInt(); - hubController.delete(id); - LOGGER.debug("Deleted hub, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllDevices() { - deviceController.findAll(); - showMenu.displayMenu(); - } - - private void getDeviceByName() { - LOGGER.debug("\nEnter Id: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(deviceController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Device getDeviceInputs() { - LOGGER.debug("\nEnter model: "); - String model = SCANNER.next(); - LOGGER.debug("Enter status: "); - String status = SCANNER.next(); - SCANNER.nextLine(); - LOGGER.debug("Enter warranty_end_time: "); - Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter service_life_end_time: "); - Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter on_battery: "); - Integer onBattery = SCANNER.nextInt(); - LOGGER.debug("Enter hub_id: "); - Integer hubId = SCANNER.nextInt(); - Hub hubEntity = hubController.findById(hubId); - return new Device(model, status, serviceLifeEndTime, warrantyEndTime, - onBattery, hubEntity); - } - - private void createDevice() { - Device device = getDeviceInputs(); - deviceController.create(device); - LOGGER.debug("Device was added to the table."); - showMenu.displayMenu(); - } - - private void updateDevice() { - LOGGER.debug("\nEnter id to update : "); - Integer id = SCANNER.nextInt(); - Device device = getDeviceInputs(); - device.setId(id); - deviceController.update(device.getId(), device); - LOGGER.debug("Updated device, id = " + id); - showMenu.displayMenu(); - } - - private void deleteDevice() { - LOGGER.debug("\nEnter id to delete device: "); - Integer id = SCANNER.nextInt(); - deviceController.delete(id); - LOGGER.debug("Deleted device, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllNotifications() { - notificationController.findAll(); - showMenu.displayMenu(); - } - - private void getNotificationById() { - LOGGER.debug("\nEnter Id: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(notificationController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Notification getNotificationInputs() { - LOGGER.debug("Enter timestamp: ");SCANNER.nextLine(); - Timestamp timestamp = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter type: "); - String type = SCANNER.next(); - LOGGER.debug("\nEnter device_id: "); - Integer deviceId = SCANNER.nextInt(); - Device deviceEntity = deviceController.findById(deviceId); - LOGGER.debug("\nEnter hub_id: "); - Integer hubId = SCANNER.nextInt(); - Hub hubEntity = hubController.findById(hubId); - return new Notification(null, timestamp, type, deviceEntity, hubEntity); - } - - private void createNotification() { - Notification notification = getNotificationInputs(); - notificationController.create(notification); - LOGGER.debug("Notification was added to the table."); - showMenu.displayMenu(); - } - - private void updateNotification() { - LOGGER.debug("\nEnter id to update:"); - Integer id = SCANNER.nextInt(); - Notification notification = getNotificationInputs(); - notification.setId(id); - notificationController.update(notification.getId(), notification); - LOGGER.debug("Updated notification, id = " + id); - showMenu.displayMenu(); - } - - private void deleteNotification() { - LOGGER.debug("\nEnter id to delete notification: "); - Integer id = SCANNER.nextInt(); - notificationController.delete(id); - LOGGER.debug("Deleted notification, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllGroups() { - groupController.findAll(); - showMenu.displayMenu(); - } - - private void getGroupById() { - LOGGER.debug("\nEnter ID: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(groupController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Group getGroupInputs() { - LOGGER.debug("\nEnter name: "); - String name = SCANNER.next(); - LOGGER.debug("\nEnter description: "); - String description = SCANNER.next(); - LOGGER.debug("Enter hub_id: "); - Integer hubId = SCANNER.nextInt(); - Hub hubEntity = hubController.findById(hubId); - return new Group(name, description, hubEntity); - } - - private void createGroup() { - Group group = getGroupInputs(); - groupController.create(group); - LOGGER.debug("Group was added to the table."); - showMenu.displayMenu(); - } - - private void updateGroup() { - LOGGER.debug("\nEnter id to update:"); - Integer id = SCANNER.nextInt(); - Group group = getGroupInputs(); - group.setId(id); - groupController.update(group.getId(), group); - LOGGER.debug("Updated group, id = " + id); - showMenu.displayMenu(); - } - - private void deleteGroup() { - LOGGER.debug("\nEnter ID to delete group: "); - int id = SCANNER.nextInt(); - groupController.delete(id); - LOGGER.debug("Deleted group, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllPermissions() { - permissionController.findAll(); - showMenu.displayMenu(); - } - - private void getPermissionById() { - LOGGER.debug("\nEnter ID: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(permissionController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Permission getPermissionInputs(Integer create) { - LOGGER.debug("Enter name: "); - String name = SCANNER.next(); - LOGGER.debug("Enter description: "); - String description = SCANNER.next(); - Collection permissionUsers = new ArrayList<>(); - Collection permissionGroups = new ArrayList<>(); - if (create == 0) { - LOGGER.debug("Enter permission user id: "); - Integer userId = SCANNER.nextInt(); - permissionUsers.add(userController.findById(userId)); - LOGGER.debug("Enter permission group id: "); - Integer groupId = SCANNER.nextInt(); - permissionGroups.add(groupController.findById(groupId)); - } - return new Permission(null, name, description, permissionUsers, permissionGroups); - } - - private void createPermission() { - Permission permission = getPermissionInputs(1); - permissionController.create(permission); - LOGGER.debug("Permission was added to the table."); - showMenu.displayMenu(); - } - - private void updatePermission() { - LOGGER.debug("\nEnter id to update: "); - Integer id = SCANNER.nextInt(); - Permission permission = getPermissionInputs(0); - permission.setId(id); - permissionController.update(permission.getId(), permission); - LOGGER.debug("Updated permission, id = " + id); - showMenu.displayMenu(); - } - - private void deletePermission() { - LOGGER.debug("\nEnter ID to delete permission: "); - int id = SCANNER.nextInt(); - permissionController.delete(id); - LOGGER.debug("Deleted permission, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllRexes() { - rexController.findAll(); - showMenu.displayMenu(); - } - - private void getRexById() { - LOGGER.debug("\nEnter ID: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(rexController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Rex getRexInputs() { - LOGGER.debug("\nEnter name: "); - String name = SCANNER.next(); - LOGGER.debug("\nEnter range: "); - String range = SCANNER.next(); - LOGGER.debug("Enter hub_id: "); - Integer hubId = SCANNER.nextInt(); - Hub hubEntity = hubController.findById(hubId); - return new Rex(null, name, range, hubEntity); - } - - private void createRex() { - - Rex rex = getRexInputs(); - rexController.create(rex); - LOGGER.debug("Rex was added to the table."); - showMenu.displayMenu(); - } - - private void updateRex() { - LOGGER.debug("\nEnter id to update: "); - Integer id = SCANNER.nextInt(); - Rex rex = getRexInputs(); - rex.setId(id); - rexController.update(rex.getId(), rex); - LOGGER.debug("Updated rex, id = " + id); - showMenu.displayMenu(); - } - - private void deleteRex() { - LOGGER.debug("\nEnter id to delete rex: "); - int id = SCANNER.nextInt(); - rexController.delete(id); - LOGGER.debug("Deleted rex, id = " + id); - showMenu.displayMenu(); - } + static final Logger LOGGER = LoggerFactory.getLogger(View.class); + private static final Scanner SCANNER = new Scanner(System.in, "UTF-8"); + private final Map menu = new LinkedHashMap<>(); + private final HubController hubController = new HubController(); + private final DeviceController deviceController = new DeviceController(); + private final NotificationController notificationController = new NotificationController(); + private final GroupController groupController = new GroupController(); + private final PermissionController permissionController = new PermissionController(); + private final UserController userController = new UserController(); + private final RexController rexController = new RexController(); + Menu showMenu = new Menu(); + + + public View() { + menu.put("11", this::getAllUsers); + menu.put("12", this::getUserById); + menu.put("13", this::createUser); + menu.put("14", this::updateUser); + menu.put("15", this::deleteUser); + + menu.put("21", this::getAllHubs); + menu.put("22", this::getHubById); + menu.put("23", this::createHub); + menu.put("24", this::updateHub); + menu.put("25", this::deleteHub); + + menu.put("31", this::getAllDevices); + menu.put("32", this::getDeviceByName); + menu.put("33", this::createDevice); + menu.put("34", this::updateDevice); + menu.put("35", this::deleteDevice); + + menu.put("41", this::getAllNotifications); + menu.put("42", this::getNotificationById); + menu.put("43", this::createNotification); + menu.put("44", this::updateNotification); + menu.put("45", this::deleteNotification); + + menu.put("51", this::getAllGroups); + menu.put("52", this::getGroupById); + menu.put("53", this::createGroup); + menu.put("54", this::updateGroup); + menu.put("55", this::deleteGroup); + + menu.put("61", this::getAllPermissions); + menu.put("62", this::getPermissionById); + menu.put("63", this::createPermission); + menu.put("64", this::updatePermission); + menu.put("65", this::deletePermission); + + menu.put("71", this::getAllRexes); + menu.put("72", this::getRexById); + menu.put("73", this::createRex); + menu.put("74", this::updateRex); + menu.put("75", this::deleteRex); + } + + public void show() { + String input; + showMenu.displayMenu(); + do { + try { + input = SCANNER.next(); + menu.get(input).print(); + } catch (Exception e) { + LOGGER.debug(String.valueOf(e)); + } + } while (SCANNER.hasNext()); + } + + private void getAllUsers() { + userController.findAll(); + showMenu.displayMenu(); + } + + private void getUserById() { + LOGGER.debug("\nEnter iD: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(userController.findById(id).toString()); + showMenu.displayMenu(); + } + + private User getUserInputs(Integer create) throws NullPointerException { + LOGGER.debug("Enter email: "); + final String email = SCANNER.next(); + LOGGER.debug("Enter password: "); + final String password = SCANNER.next(); + LOGGER.debug("Enter name: "); + final String name = SCANNER.next(); + Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); + Group groupEntity = null; + final Collection userHubs = new ArrayList<>(); + final Collection userPermissions = new ArrayList<>(); + if (create == 0) { + LOGGER.debug("Enter group id: "); + final String groupId = SCANNER.next(); + LOGGER.debug("Enter hub id to add to user or put one that he has: "); + final Integer hubId = SCANNER.nextInt(); + userHubs.add(hubController.findById(hubId)); + LOGGER.debug("Enter permission id that user has: "); + final Integer permissionId = SCANNER.nextInt(); + userPermissions.add(permissionController.findById(permissionId)); + groupEntity = Objects.equals(groupId, "null") ? null : + groupController.findById(Integer.valueOf(groupId)); + } + return new User(null, email, password, dateCreated, name, groupEntity, + userHubs, userPermissions); + } + + private void createUser() { + final User user = getUserInputs(1); + userController.create(user); + LOGGER.debug("\nUser was added to the table.\n"); + showMenu.displayMenu(); + } + + private void updateUser() { + LOGGER.debug("\nEnter id to update: "); + final Integer id = SCANNER.nextInt(); + final User user = getUserInputs(0); + user.setId(id); + userController.update(user.getId(), user); + LOGGER.debug("Updated user, id = " + id); + showMenu.displayMenu(); + } + + private void deleteUser() { + LOGGER.debug("\nEnter ID to delete user: "); + final int id = SCANNER.nextInt(); + userController.delete(id); + LOGGER.debug("Deleted user, id = " + id); + showMenu.displayMenu(); + } + + + private void getAllHubs() { + hubController.findAll(); + } + + private void getHubById() { + LOGGER.debug("\nEnter Id: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(hubController.findById(id).toString()); + showMenu.displayMenu(); + } + + private Hub getHubInputs() { + LOGGER.debug("\nEnter model: "); + final String model = SCANNER.next(); + LOGGER.debug("Enter status: "); + final String status = SCANNER.next(); + SCANNER.nextLine(); + LOGGER.debug("Enter service_life_end_time: "); + final Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter warranty_end_time: "); + final Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter users_max: "); + final Integer usersMax = SCANNER.nextInt(); + LOGGER.debug("Enter rooms_max: "); + final Integer roomsMax = SCANNER.nextInt(); + LOGGER.debug("Enter devices_max: "); + final Integer devicesMax = SCANNER.nextInt(); + LOGGER.debug("Enter sirens_max: "); + final Integer sirensMax = SCANNER.nextInt(); + LOGGER.debug("Enter on_battery: "); + final Integer onBattery = SCANNER.nextInt(); + return new Hub(model, status, serviceLifeEndTime, warrantyEndTime, + usersMax, roomsMax, devicesMax, sirensMax, onBattery); + } + + private void createHub() { + final Hub hub = getHubInputs(); + hubController.create(hub); + LOGGER.debug("Hub was added to the table."); + showMenu.displayMenu(); + } + + private void updateHub() { + LOGGER.debug("\nEnter id to update:"); + final Integer id = SCANNER.nextInt(); + final Hub hub = getHubInputs(); + hub.setId(id); + hubController.update(hub.getId(), hub); + LOGGER.debug("Updated hub, id = " + id); + showMenu.displayMenu(); + } + + private void deleteHub() { + LOGGER.debug("\nEnter id to delete hub: "); + final Integer id = SCANNER.nextInt(); + hubController.delete(id); + LOGGER.debug("Deleted hub, id = " + id); + showMenu.displayMenu(); + } + + + private void getAllDevices() { + deviceController.findAll(); + showMenu.displayMenu(); + } + + private void getDeviceByName() { + LOGGER.debug("\nEnter Id: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(deviceController.findById(id).toString()); + showMenu.displayMenu(); + } + + private Device getDeviceInputs() { + LOGGER.debug("\nEnter model: "); + final String model = SCANNER.next(); + LOGGER.debug("Enter status: "); + final String status = SCANNER.next(); + SCANNER.nextLine(); + LOGGER.debug("Enter warranty_end_time: "); + final Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter service_life_end_time: "); + final Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter on_battery: "); + final Integer onBattery = SCANNER.nextInt(); + LOGGER.debug("Enter hub_id: "); + final Integer hubId = SCANNER.nextInt(); + final Hub hubEntity = hubController.findById(hubId); + return new Device(model, status, serviceLifeEndTime, warrantyEndTime, + onBattery, hubEntity); + } + + private void createDevice() { + final Device device = getDeviceInputs(); + deviceController.create(device); + LOGGER.debug("Device was added to the table."); + showMenu.displayMenu(); + } + + private void updateDevice() { + LOGGER.debug("\nEnter id to update : "); + final Integer id = SCANNER.nextInt(); + final Device device = getDeviceInputs(); + device.setId(id); + deviceController.update(device.getId(), device); + LOGGER.debug("Updated device, id = " + id); + showMenu.displayMenu(); + } + + private void deleteDevice() { + LOGGER.debug("\nEnter id to delete device: "); + final Integer id = SCANNER.nextInt(); + deviceController.delete(id); + LOGGER.debug("Deleted device, id = " + id); + showMenu.displayMenu(); + } + + + private void getAllNotifications() { + notificationController.findAll(); + showMenu.displayMenu(); + } + + private void getNotificationById() { + LOGGER.debug("\nEnter Id: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(notificationController.findById(id).toString()); + showMenu.displayMenu(); + } + + private Notification getNotificationInputs() { + LOGGER.debug("Enter timestamp: "); + SCANNER.nextLine(); + final Timestamp timestamp = Timestamp.valueOf(SCANNER.nextLine()); + LOGGER.debug("Enter type: "); + final String type = SCANNER.next(); + LOGGER.debug("\nEnter device_id: "); + final String deviceId = SCANNER.next(); + final Device deviceEntity = Objects.equals(deviceId, "null") ? null : + deviceController.findById(Integer.valueOf(deviceId)); + LOGGER.debug("\nEnter hub_id: "); + final String hubId = SCANNER.next(); + final Hub hubEntity = Objects.equals(hubId, "null") ? null : + hubController.findById(Integer.valueOf(hubId)); + return new Notification(null, timestamp, type, deviceEntity, hubEntity); + } + + private void createNotification() { + Notification notification = getNotificationInputs(); + notificationController.create(notification); + LOGGER.debug("Notification was added to the table."); + showMenu.displayMenu(); + } + + private void updateNotification() { + LOGGER.debug("\nEnter id to update:"); + Integer id = SCANNER.nextInt(); + Notification notification = getNotificationInputs(); + notification.setId(id); + notificationController.update(notification.getId(), notification); + LOGGER.debug("Updated notification, id = " + id); + showMenu.displayMenu(); + } + + private void deleteNotification() { + LOGGER.debug("\nEnter id to delete notification: "); + Integer id = SCANNER.nextInt(); + notificationController.delete(id); + LOGGER.debug("Deleted notification, id = " + id); + showMenu.displayMenu(); + } + + + private void getAllGroups() { + groupController.findAll(); + showMenu.displayMenu(); + } + + private void getGroupById() { + LOGGER.debug("\nEnter ID: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(groupController.findById(id).toString()); + showMenu.displayMenu(); + } + + private Group getGroupInputs() { + LOGGER.debug("\nEnter name: "); + String name = SCANNER.next(); + LOGGER.debug("\nEnter description: "); + String description = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + Integer hubId = SCANNER.nextInt(); + Hub hubEntity = hubController.findById(hubId); + return new Group(name, description, hubEntity); + } + + private void createGroup() { + Group group = getGroupInputs(); + groupController.create(group); + LOGGER.debug("Group was added to the table."); + showMenu.displayMenu(); + } + + private void updateGroup() { + LOGGER.debug("\nEnter id to update:"); + Integer id = SCANNER.nextInt(); + Group group = getGroupInputs(); + group.setId(id); + groupController.update(group.getId(), group); + LOGGER.debug("Updated group, id = " + id); + showMenu.displayMenu(); + } + + private void deleteGroup() { + LOGGER.debug("\nEnter ID to delete group: "); + int id = SCANNER.nextInt(); + groupController.delete(id); + LOGGER.debug("Deleted group, id = " + id); + showMenu.displayMenu(); + } + + + private void getAllPermissions() { + permissionController.findAll(); + showMenu.displayMenu(); + } + + private void getPermissionById() { + LOGGER.debug("\nEnter ID: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(permissionController.findById(id).toString()); + showMenu.displayMenu(); + } + + private Permission getPermissionInputs(Integer create) { + LOGGER.debug("Enter name: "); + String name = SCANNER.next(); + LOGGER.debug("Enter description: "); + String description = SCANNER.next(); + Collection permissionUsers = new ArrayList<>(); + Collection permissionGroups = new ArrayList<>(); + if (create == 0) { + LOGGER.debug("Enter permission user id: "); + Integer userId = SCANNER.nextInt(); + permissionUsers.add(userController.findById(userId)); + LOGGER.debug("Enter permission group id: "); + Integer groupId = SCANNER.nextInt(); + permissionGroups.add(groupController.findById(groupId)); + } + return new Permission(null, name, description, permissionUsers, + permissionGroups); + } + + private void createPermission() { + Permission permission = getPermissionInputs(1); + permissionController.create(permission); + LOGGER.debug("Permission was added to the table."); + showMenu.displayMenu(); + } + + private void updatePermission() { + LOGGER.debug("\nEnter id to update: "); + Integer id = SCANNER.nextInt(); + Permission permission = getPermissionInputs(0); + permission.setId(id); + permissionController.update(permission.getId(), permission); + LOGGER.debug("Updated permission, id = " + id); + showMenu.displayMenu(); + } + + private void deletePermission() { + LOGGER.debug("\nEnter ID to delete permission: "); + int id = SCANNER.nextInt(); + permissionController.delete(id); + LOGGER.debug("Deleted permission, id = " + id); + showMenu.displayMenu(); + } + + + private void getAllRexes() { + rexController.findAll(); + showMenu.displayMenu(); + } + + private void getRexById() { + LOGGER.debug("\nEnter ID: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(rexController.findById(id).toString()); + showMenu.displayMenu(); + } + + private Rex getRexInputs() { + LOGGER.debug("\nEnter name: "); + String name = SCANNER.next(); + LOGGER.debug("\nEnter range: "); + String range = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + Integer hubId = SCANNER.nextInt(); + Hub hubEntity = hubController.findById(hubId); + return new Rex(null, name, range, hubEntity); + } + + private void createRex() { + + Rex rex = getRexInputs(); + rexController.create(rex); + LOGGER.debug("Rex was added to the table."); + showMenu.displayMenu(); + } + + private void updateRex() { + LOGGER.debug("\nEnter id to update: "); + Integer id = SCANNER.nextInt(); + Rex rex = getRexInputs(); + rex.setId(id); + rexController.update(rex.getId(), rex); + LOGGER.debug("Updated rex, id = " + id); + showMenu.displayMenu(); + } + + private void deleteRex() { + LOGGER.debug("\nEnter id to delete rex: "); + int id = SCANNER.nextInt(); + rexController.delete(id); + LOGGER.debug("Deleted rex, id = " + id); + showMenu.displayMenu(); + } } diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml index 18c8306..f8e3203 100644 --- a/src/main/resources/hibernate.cfg.xml +++ b/src/main/resources/hibernate.cfg.xml @@ -1,7 +1,7 @@ + "-//Hibernate/Hibernate Configuration DTD//EN" + "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> jdbc:mysql://localhost:3306/ajax_curr From 8f13219a038f8c00346552e8ee61be2ebaf37289 Mon Sep 17 00:00:00 2001 From: Phlake Date: Sat, 21 May 2022 20:44:03 +0300 Subject: [PATCH 07/11] Update pom.xml --- pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pom.xml b/pom.xml index 2747166..3157e47 100644 --- a/pom.xml +++ b/pom.xml @@ -68,11 +68,6 @@ lombok 1.18.24 - - org.apache.maven.plugins - maven-checkstyle-plugin - 3.1.2 - mysql mysql-connector-java From 6f4994407b32554fb42026b265ee33c85ceb31f2 Mon Sep 17 00:00:00 2001 From: Phlake Date: Tue, 24 May 2022 10:43:06 +0300 Subject: [PATCH 08/11] Added Lab 6 --- .gitattributes | 2 - .gitignore | 1 + README.md | 4 +- mvnw | 316 +++++++++++ mvnw.cmd | 188 +++++++ pom.xml | 201 +++++-- src/main/java/com/mkruchok/App.java | 22 - src/main/java/com/mkruchok/Application.java | 11 + src/main/java/com/mkruchok/HibernateUtil.java | 30 -- .../mkruchok/config/SwaggerConfiguration.java | 42 ++ .../controller/AbstractController.java | 60 ++- .../mkruchok/controller/DeviceController.java | 29 ++ .../mkruchok/controller/GroupController.java | 29 ++ .../mkruchok/controller/HubController.java | 29 ++ .../controller/NotificationController.java | 30 ++ .../controller/PermissionController.java | 29 ++ .../mkruchok/controller/RexController.java | 29 ++ .../mkruchok/controller/UserController.java | 29 ++ .../AbstractControllerImpl.java | 36 -- .../implementation/DeviceController.java | 15 - .../implementation/GroupController.java | 15 - .../implementation/HubController.java | 15 - .../NotificationController.java | 16 - .../implementation/PermissionController.java | 15 - .../implementation/RexController.java | 14 - .../implementation/UserController.java | 14 - .../implementation/package-info.java | 1 - src/main/java/com/mkruchok/dto/DeviceDto.java | 30 ++ src/main/java/com/mkruchok/dto/GroupDto.java | 24 + src/main/java/com/mkruchok/dto/HubDto.java | 31 ++ .../com/mkruchok/dto/NotificationDto.java | 23 + .../java/com/mkruchok/dto/PermissionDto.java | 20 + src/main/java/com/mkruchok/dto/RexDto.java | 19 + src/main/java/com/mkruchok/dto/UserDto.java | 25 + .../java/com/mkruchok/dto/package-info.java | 1 + .../mkruchok/{model => }/entity/Device.java | 35 +- .../mkruchok/{model => }/entity/Group.java | 45 +- .../com/mkruchok/{model => }/entity/Hub.java | 84 +-- .../java/com/mkruchok/entity/MagicNumber.java | 7 + .../{model => }/entity/Notification.java | 21 +- .../{model => }/entity/Permission.java | 26 +- .../com/mkruchok/{model => }/entity/Rex.java | 16 +- .../com/mkruchok/{model => }/entity/User.java | 25 +- .../com/mkruchok/entity/package-info.java | 1 + .../com/mkruchok/mapper/AbstractMapper.java | 5 + .../com/mkruchok/mapper/DeviceMapper.java | 27 + .../java/com/mkruchok/mapper/GroupMapper.java | 25 + .../java/com/mkruchok/mapper/HubMapper.java | 33 ++ .../mkruchok/mapper/NotificationMapper.java | 25 + .../com/mkruchok/mapper/PermissionMapper.java | 23 + .../java/com/mkruchok/mapper/RexMapper.java | 22 + .../java/com/mkruchok/mapper/UserMapper.java | 27 + .../com/mkruchok/model/dao/AbstractDao.java | 23 - .../dao/implementation/AbstractDaoImpl.java | 105 ---- .../model/dao/implementation/DeviceDao.java | 9 - .../model/dao/implementation/GroupDao.java | 9 - .../model/dao/implementation/HubDao.java | 9 - .../dao/implementation/NotificationDao.java | 9 - .../dao/implementation/PermissionDao.java | 10 - .../model/dao/implementation/RexDao.java | 9 - .../model/dao/implementation/UserDao.java | 9 - .../dao/implementation/package-info.java | 1 - .../com/mkruchok/model/dao/package-info.java | 1 - .../mkruchok/model/entity/package-info.java | 1 - .../java/com/mkruchok/model/package-info.java | 1 - .../com/mkruchok/persistant/package-info.java | 1 - .../mkruchok/repository/DeviceRepository.java | 10 + .../mkruchok/repository/GroupRepository.java | 10 + .../mkruchok/repository/HubRepository.java | 11 + .../repository/NotificationRepository.java | 11 + .../repository/PermissionRepository.java | 11 + .../mkruchok/repository/RexRepository.java | 11 + .../mkruchok/repository/UserRepository.java | 10 + .../com/mkruchok/service/AbstractService.java | 29 ++ .../com/mkruchok/service/DeviceService.java | 19 + .../com/mkruchok/service/GroupService.java | 19 + .../java/com/mkruchok/service/HubService.java | 19 + .../mkruchok/service/NotificationService.java | 18 + .../mkruchok/service/PermissionService.java | 18 + .../java/com/mkruchok/service/RexService.java | 18 + .../com/mkruchok/service/UserService.java | 19 + src/main/java/com/mkruchok/view/Menu.java | 28 - .../java/com/mkruchok/view/Printable.java | 8 - src/main/java/com/mkruchok/view/View.java | 491 ------------------ .../java/com/mkruchok/view/package-info.java | 1 - src/main/resources/application.properties | 13 + src/main/resources/hibernate.cfg.xml | 20 - .../java/com/mkruchok/ApplicationTests.java | 13 + 88 files changed, 1727 insertions(+), 1119 deletions(-) delete mode 100644 .gitattributes create mode 100644 mvnw create mode 100644 mvnw.cmd delete mode 100644 src/main/java/com/mkruchok/App.java create mode 100644 src/main/java/com/mkruchok/Application.java delete mode 100644 src/main/java/com/mkruchok/HibernateUtil.java create mode 100644 src/main/java/com/mkruchok/config/SwaggerConfiguration.java create mode 100644 src/main/java/com/mkruchok/controller/DeviceController.java create mode 100644 src/main/java/com/mkruchok/controller/GroupController.java create mode 100644 src/main/java/com/mkruchok/controller/HubController.java create mode 100644 src/main/java/com/mkruchok/controller/NotificationController.java create mode 100644 src/main/java/com/mkruchok/controller/PermissionController.java create mode 100644 src/main/java/com/mkruchok/controller/RexController.java create mode 100644 src/main/java/com/mkruchok/controller/UserController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/DeviceController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/GroupController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/HubController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/NotificationController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/PermissionController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/RexController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/UserController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/package-info.java create mode 100644 src/main/java/com/mkruchok/dto/DeviceDto.java create mode 100644 src/main/java/com/mkruchok/dto/GroupDto.java create mode 100644 src/main/java/com/mkruchok/dto/HubDto.java create mode 100644 src/main/java/com/mkruchok/dto/NotificationDto.java create mode 100644 src/main/java/com/mkruchok/dto/PermissionDto.java create mode 100644 src/main/java/com/mkruchok/dto/RexDto.java create mode 100644 src/main/java/com/mkruchok/dto/UserDto.java create mode 100644 src/main/java/com/mkruchok/dto/package-info.java rename src/main/java/com/mkruchok/{model => }/entity/Device.java (69%) rename src/main/java/com/mkruchok/{model => }/entity/Group.java (73%) rename src/main/java/com/mkruchok/{model => }/entity/Hub.java (54%) create mode 100644 src/main/java/com/mkruchok/entity/MagicNumber.java rename src/main/java/com/mkruchok/{model => }/entity/Notification.java (68%) rename src/main/java/com/mkruchok/{model => }/entity/Permission.java (71%) rename src/main/java/com/mkruchok/{model => }/entity/Rex.java (72%) rename src/main/java/com/mkruchok/{model => }/entity/User.java (79%) create mode 100644 src/main/java/com/mkruchok/entity/package-info.java create mode 100644 src/main/java/com/mkruchok/mapper/AbstractMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/DeviceMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/GroupMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/HubMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/NotificationMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/PermissionMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/RexMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/UserMapper.java delete mode 100644 src/main/java/com/mkruchok/model/dao/AbstractDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/HubDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/RexDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/UserDao.java delete mode 100644 src/main/java/com/mkruchok/model/dao/implementation/package-info.java delete mode 100644 src/main/java/com/mkruchok/model/dao/package-info.java delete mode 100644 src/main/java/com/mkruchok/model/entity/package-info.java delete mode 100644 src/main/java/com/mkruchok/model/package-info.java delete mode 100644 src/main/java/com/mkruchok/persistant/package-info.java create mode 100644 src/main/java/com/mkruchok/repository/DeviceRepository.java create mode 100644 src/main/java/com/mkruchok/repository/GroupRepository.java create mode 100644 src/main/java/com/mkruchok/repository/HubRepository.java create mode 100644 src/main/java/com/mkruchok/repository/NotificationRepository.java create mode 100644 src/main/java/com/mkruchok/repository/PermissionRepository.java create mode 100644 src/main/java/com/mkruchok/repository/RexRepository.java create mode 100644 src/main/java/com/mkruchok/repository/UserRepository.java create mode 100644 src/main/java/com/mkruchok/service/AbstractService.java create mode 100644 src/main/java/com/mkruchok/service/DeviceService.java create mode 100644 src/main/java/com/mkruchok/service/GroupService.java create mode 100644 src/main/java/com/mkruchok/service/HubService.java create mode 100644 src/main/java/com/mkruchok/service/NotificationService.java create mode 100644 src/main/java/com/mkruchok/service/PermissionService.java create mode 100644 src/main/java/com/mkruchok/service/RexService.java create mode 100644 src/main/java/com/mkruchok/service/UserService.java delete mode 100644 src/main/java/com/mkruchok/view/Menu.java delete mode 100644 src/main/java/com/mkruchok/view/Printable.java delete mode 100644 src/main/java/com/mkruchok/view/View.java delete mode 100644 src/main/java/com/mkruchok/view/package-info.java create mode 100644 src/main/resources/application.properties delete mode 100644 src/main/resources/hibernate.cfg.xml create mode 100644 src/test/java/com/mkruchok/ApplicationTests.java diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe0770..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.gitignore b/.gitignore index a14753b..17c9dd6 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ *.html *.css *.rss +*.mvn *target diff --git a/README.md b/README.md index b2ad28c..6f54b47 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# Lab 5 +# Lab 6 -JDBC Maven Hibernate JPA +Spring Boot Maven JPA diff --git a/mvnw b/mvnw new file mode 100644 index 0000000..8a8fb22 --- /dev/null +++ b/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml index 3157e47..a336259 100644 --- a/pom.xml +++ b/pom.xml @@ -1,17 +1,124 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - + + org.springframework.boot + spring-boot-starter-parent + 2.7.0 + + com.mkruchok - DB5MK - 1.0-SNAPSHOT - - UTF-8 - UTF-8 + DB6MK + 0.0.1-SNAPSHOT + DB6MK + DB6MK + https://github.com/MKruchok/Databases/tree/lab_5 + + + 11 + false + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-hateoas + + + com.github.spotbugs + spotbugs + 4.4.1 + + + org.springframework.boot + spring-boot-starter-mustache + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-web-services + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-registry-prometheus + ${micrometer.version} + + + org.springframework.restdocs + spring-restdocs-mockmvc + test + + + org.springdoc + springdoc-openapi-ui + 1.6.8 + + + javax.xml.bind + jaxb-api + 2.3.1 + + + com.querydsl + querydsl-bom + 5.0.0 + pom + + + org.javassist + javassist + 3.25.0-GA + + + com.sun.xml.ws + jaxws-rt + 2.2.3 + test + + + org.springframework.session + spring-session-jdbc + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + com.microsoft.sqlserver + mssql-jdbc + runtime + + + mysql + mysql-connector-java + runtime + + + org.projectlombok + lombok + 1.18.24 + + + org.springframework.boot + spring-boot-starter-test + test + + @@ -44,79 +151,55 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 3.3.0 + 3.2.2 - org.apache.maven.plugins maven-pmd-plugin 3.13.0 - maven-compiler-plugin - 3.5.1 + org.springframework.boot + spring-boot-maven-plugin - 1.8 - 1.8 + + + org.projectlombok + lombok + + - - - org.projectlombok - lombok - 1.18.24 - - - mysql - mysql-connector-java - 8.0.29 - - - org.hibernate - hibernate-entitymanager - 5.6.8.Final - - - com.google.code.findbugs - annotations - 3.0.1 - provided - - - ch.qos.logback - logback-classic - 1.2.11 - - - com.puppycrawl.tools - checkstyle - 10.2 - - + - - org.codehaus.mojo - findbugs-maven-plugin - 3.0.5 - - true - target/site - - org.apache.maven.plugins maven-checkstyle-plugin 3.1.2 + + + + checkstyle + + + + true + UTF-8 google_checks.xml + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.3.0 - checkstyle + issue-management @@ -126,6 +209,12 @@ maven-pmd-plugin 3.13.0 + + com.github.spotbugs + spotbugs-maven-plugin + 4.4.1 + + diff --git a/src/main/java/com/mkruchok/App.java b/src/main/java/com/mkruchok/App.java deleted file mode 100644 index 0db9d5e..0000000 --- a/src/main/java/com/mkruchok/App.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.mkruchok; - -import com.mkruchok.view.View; -import org.hibernate.Session; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class App { - static final Logger LOGGER = LoggerFactory.getLogger(App.class); - - public static void main(final String[] args) { - System.err.close(); - System.setErr(System.out); - try (Session ignored = HibernateUtil.getSession()) { - LOGGER.info("Test session established. "); - new View().show(); - } catch (Exception ex) { - LOGGER.warn("Test session failed."); - LOGGER.error(ex.toString()); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/Application.java b/src/main/java/com/mkruchok/Application.java new file mode 100644 index 0000000..3254a49 --- /dev/null +++ b/src/main/java/com/mkruchok/Application.java @@ -0,0 +1,11 @@ +package com.mkruchok; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/src/main/java/com/mkruchok/HibernateUtil.java b/src/main/java/com/mkruchok/HibernateUtil.java deleted file mode 100644 index a42fede..0000000 --- a/src/main/java/com/mkruchok/HibernateUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.mkruchok; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.cfg.Configuration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class HibernateUtil { - static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); - private static final SessionFactory SESSION_FACTORY; - - static { - try { - SESSION_FACTORY = new Configuration().configure().buildSessionFactory(); - } catch (Exception ex) { - LOGGER.warn("SessionFactory init failed."); - LOGGER.error(ex.toString()); - throw new ExceptionInInitializerError(ex); - } - } - - public static SessionFactory getSessionFactory() { - return SESSION_FACTORY; - } - - public static Session getSession() { - return SESSION_FACTORY.openSession(); - } -} diff --git a/src/main/java/com/mkruchok/config/SwaggerConfiguration.java b/src/main/java/com/mkruchok/config/SwaggerConfiguration.java new file mode 100644 index 0000000..b51e9a1 --- /dev/null +++ b/src/main/java/com/mkruchok/config/SwaggerConfiguration.java @@ -0,0 +1,42 @@ +package com.mkruchok.config; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.servers.Server; +import java.util.ArrayList; +import java.util.List; +import org.springdoc.core.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.hateoas.client.LinkDiscoverer; +import org.springframework.hateoas.client.LinkDiscoverers; +import org.springframework.hateoas.mediatype.collectionjson.CollectionJsonLinkDiscoverer; +import org.springframework.plugin.core.SimplePluginRegistry; + + +@Configuration +public class SwaggerConfiguration { + @Bean + public LinkDiscoverers discoverers() { + List plugins = new ArrayList<>(); + plugins.add(new CollectionJsonLinkDiscoverer()); + return new LinkDiscoverers(SimplePluginRegistry.of(plugins)); + } + + @Bean + public GroupedOpenApi decksApi() { + return GroupedOpenApi.builder().group("public").pathsToMatch("/public/**").build(); + } + + @Bean + public OpenAPI ajaxOpenApi() { + Server server = new Server(); + server.setUrl("http://localhost:8888"); + return new OpenAPI().info(new Info().title("AJAX SYSTEMS CRUD DEMO") + .description("Application for ajax security systems") + .version("v0.0.1") + .license(new License().name("Apache 2.0").url("https://springdoc.org"))); + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/controller/AbstractController.java b/src/main/java/com/mkruchok/controller/AbstractController.java index 892f6ee..fc8c288 100644 --- a/src/main/java/com/mkruchok/controller/AbstractController.java +++ b/src/main/java/com/mkruchok/controller/AbstractController.java @@ -1,22 +1,66 @@ package com.mkruchok.controller; -import java.sql.SQLException; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.service.AbstractService; +import java.util.ArrayList; import java.util.List; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; -public interface AbstractController { +public abstract class AbstractController { + protected abstract AbstractService getService(); - List findAll() throws SQLException; + protected abstract AbstractMapper getMapper(); - default E findById(Integer id) { - return null; + @RequestMapping(method = RequestMethod.GET) + public @ResponseBody ResponseEntity> findAll() { + List objects = getService().findAll(); + List objectsDto = new ArrayList<>(); + for (T object : objects) { + objectsDto.add(getMapper().mapObjectToDto(object)); + } + return new ResponseEntity<>(objectsDto, HttpStatus.OK); } - default void create(E entity) { + @RequestMapping(method = RequestMethod.GET, + value = "/{id}") + public @ResponseBody ResponseEntity findById( + @PathVariable + id id) { + T object = getService().getById(id); + return new ResponseEntity<>(getMapper().mapObjectToDto(object), HttpStatus.OK); } - default void update(Integer id, E entity) { + @RequestMapping(method = RequestMethod.POST, + consumes = {MediaType.APPLICATION_JSON_VALUE}) + public @ResponseBody ResponseEntity create( + @RequestBody + T newObject) { + getService().create(newObject); + return new ResponseEntity<>(HttpStatus.CREATED); } - default void delete(Integer id) { + @RequestMapping(method = RequestMethod.PUT, + consumes = {MediaType.APPLICATION_JSON_VALUE}) + public @ResponseBody ResponseEntity update( + @RequestBody + T object) { + return new ResponseEntity<>(getService().update(object), HttpStatus.OK); } + + @RequestMapping(method = RequestMethod.DELETE, + value = "/{id}") + public @ResponseBody ResponseEntity delete( + @PathVariable + id id) { + getService().delete(id); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/src/main/java/com/mkruchok/controller/DeviceController.java b/src/main/java/com/mkruchok/controller/DeviceController.java new file mode 100644 index 0000000..edd48bc --- /dev/null +++ b/src/main/java/com/mkruchok/controller/DeviceController.java @@ -0,0 +1,29 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.DeviceDto; +import com.mkruchok.entity.Device; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.DeviceMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.DeviceService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/devices") +@AllArgsConstructor +@RestController +public class DeviceController extends AbstractController { + private final DeviceService deviceService; + private final DeviceMapper deviceMapper; + + @Override + protected AbstractService getService() { + return deviceService; + } + + @Override + protected AbstractMapper getMapper() { + return deviceMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/GroupController.java b/src/main/java/com/mkruchok/controller/GroupController.java new file mode 100644 index 0000000..4f2a670 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/GroupController.java @@ -0,0 +1,29 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.GroupDto; +import com.mkruchok.entity.Group; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.GroupMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.GroupService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/groups") +@AllArgsConstructor +@RestController +public class GroupController extends AbstractController { + private final GroupService groupService; + private final GroupMapper groupMapper; + + @Override + protected AbstractService getService() { + return groupService; + } + + @Override + protected AbstractMapper getMapper() { + return groupMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/HubController.java b/src/main/java/com/mkruchok/controller/HubController.java new file mode 100644 index 0000000..99e7e8c --- /dev/null +++ b/src/main/java/com/mkruchok/controller/HubController.java @@ -0,0 +1,29 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.HubDto; +import com.mkruchok.entity.Hub; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.HubMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.HubService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/hubs") +@AllArgsConstructor +@RestController +public class HubController extends AbstractController { + private final HubService hubService; + private final HubMapper hubMapper; + + @Override + protected AbstractService getService() { + return hubService; + } + + @Override + protected AbstractMapper getMapper() { + return hubMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/NotificationController.java b/src/main/java/com/mkruchok/controller/NotificationController.java new file mode 100644 index 0000000..3ad2865 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/NotificationController.java @@ -0,0 +1,30 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.NotificationDto; +import com.mkruchok.entity.Notification; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.NotificationMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.NotificationService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/notifications") +@AllArgsConstructor +@RestController +public class NotificationController + extends AbstractController { + private final NotificationService notificationService; + private final NotificationMapper notificationMapper; + + @Override + protected AbstractService getService() { + return notificationService; + } + + @Override + protected AbstractMapper getMapper() { + return notificationMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/PermissionController.java b/src/main/java/com/mkruchok/controller/PermissionController.java new file mode 100644 index 0000000..3e0a758 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/PermissionController.java @@ -0,0 +1,29 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.PermissionDto; +import com.mkruchok.entity.Permission; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.PermissionMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.PermissionService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/permissions") +@AllArgsConstructor +@RestController +public class PermissionController extends AbstractController { + private final PermissionService permissionService; + private final PermissionMapper permissionMapper; + + @Override + protected AbstractService getService() { + return permissionService; + } + + @Override + protected AbstractMapper getMapper() { + return permissionMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/RexController.java b/src/main/java/com/mkruchok/controller/RexController.java new file mode 100644 index 0000000..79bf31c --- /dev/null +++ b/src/main/java/com/mkruchok/controller/RexController.java @@ -0,0 +1,29 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.RexDto; +import com.mkruchok.entity.Rex; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.RexMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.RexService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/rexes") +@AllArgsConstructor +@RestController +public class RexController extends AbstractController { + private final RexService rexService; + private final RexMapper rexMapper; + + @Override + protected AbstractService getService() { + return rexService; + } + + @Override + protected AbstractMapper getMapper() { + return rexMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/UserController.java b/src/main/java/com/mkruchok/controller/UserController.java new file mode 100644 index 0000000..bc8a532 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/UserController.java @@ -0,0 +1,29 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.UserDto; +import com.mkruchok.entity.User; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.UserMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.UserService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/users") +@AllArgsConstructor +@RestController +public class UserController extends AbstractController { + private final UserService userService; + private final UserMapper userMapper; + + @Override + protected AbstractService getService() { + return userService; + } + + @Override + protected AbstractMapper getMapper() { + return userMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java b/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java deleted file mode 100644 index b1a4901..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/AbstractControllerImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.mkruchok.controller.implementation; - - -import com.mkruchok.controller.AbstractController; -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import java.util.List; - -public abstract class AbstractControllerImpl implements AbstractController { - public abstract AbstractDaoImpl getDao(); - - @Override - public final List findAll() { - return (List) getDao().findAll(); - } - - @Override - public final E findById(final Integer id) { - return getDao().findById(id); - } - - @Override - public final void create(final E object) { - getDao().create(object); - } - - @Override - public final void update(final Integer id, E object) { - getDao().update(id, object); - } - - @Override - public final void delete(final Integer id) { - getDao().delete(id); - } - -} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/controller/implementation/DeviceController.java b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java deleted file mode 100644 index dc8e027..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/DeviceController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mkruchok.controller.implementation; - -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.DeviceDao; -import com.mkruchok.model.entity.Device; - -public final class DeviceController extends AbstractControllerImpl { - - private final DeviceDao deviceDao = new DeviceDao(); - - @Override - public AbstractDaoImpl getDao() { - return deviceDao; - } -} diff --git a/src/main/java/com/mkruchok/controller/implementation/GroupController.java b/src/main/java/com/mkruchok/controller/implementation/GroupController.java deleted file mode 100644 index 2b2f44f..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/GroupController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mkruchok.controller.implementation; - -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.GroupDao; -import com.mkruchok.model.entity.Group; - - -public final class GroupController extends AbstractControllerImpl { - private final GroupDao groupDao = new GroupDao(); - - @Override - public AbstractDaoImpl getDao() { - return groupDao; - } -} diff --git a/src/main/java/com/mkruchok/controller/implementation/HubController.java b/src/main/java/com/mkruchok/controller/implementation/HubController.java deleted file mode 100644 index 08a0552..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/HubController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mkruchok.controller.implementation; - -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.HubDao; -import com.mkruchok.model.entity.Hub; - -public final class HubController extends AbstractControllerImpl { - - private final HubDao hubDao = new HubDao(); - - @Override - public AbstractDaoImpl getDao() { - return hubDao; - } -} diff --git a/src/main/java/com/mkruchok/controller/implementation/NotificationController.java b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java deleted file mode 100644 index 69aa5af..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/NotificationController.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mkruchok.controller.implementation; - -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.NotificationDao; -import com.mkruchok.model.entity.Notification; - - -public final class NotificationController extends AbstractControllerImpl { - private final NotificationDao notificationDao = new NotificationDao(); - - @Override - public AbstractDaoImpl getDao() { - return notificationDao; - } - -} diff --git a/src/main/java/com/mkruchok/controller/implementation/PermissionController.java b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java deleted file mode 100644 index 3a9783b..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/PermissionController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mkruchok.controller.implementation; - -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.PermissionDao; -import com.mkruchok.model.entity.Permission; - - -public final class PermissionController extends AbstractControllerImpl { - private final PermissionDao permissionDao = new PermissionDao(); - - @Override - public AbstractDaoImpl getDao() { - return permissionDao; - } -} diff --git a/src/main/java/com/mkruchok/controller/implementation/RexController.java b/src/main/java/com/mkruchok/controller/implementation/RexController.java deleted file mode 100644 index 3ae3634..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/RexController.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mkruchok.controller.implementation; - -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.RexDao; -import com.mkruchok.model.entity.Rex; - -public final class RexController extends AbstractControllerImpl { - private final RexDao rexDao = new RexDao(); - - @Override - public AbstractDaoImpl getDao() { - return rexDao; - } -} diff --git a/src/main/java/com/mkruchok/controller/implementation/UserController.java b/src/main/java/com/mkruchok/controller/implementation/UserController.java deleted file mode 100644 index d55fa50..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/UserController.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mkruchok.controller.implementation; - -import com.mkruchok.model.dao.implementation.AbstractDaoImpl; -import com.mkruchok.model.dao.implementation.UserDao; -import com.mkruchok.model.entity.User; - -public final class UserController extends AbstractControllerImpl { - public final UserDao userDao = new UserDao(); - - @Override - public AbstractDaoImpl getDao() { - return userDao; - } -} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/controller/implementation/package-info.java b/src/main/java/com/mkruchok/controller/implementation/package-info.java deleted file mode 100644 index 1dbf70e..0000000 --- a/src/main/java/com/mkruchok/controller/implementation/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.controller.implementation; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/dto/DeviceDto.java b/src/main/java/com/mkruchok/dto/DeviceDto.java new file mode 100644 index 0000000..14bcebd --- /dev/null +++ b/src/main/java/com/mkruchok/dto/DeviceDto.java @@ -0,0 +1,30 @@ +package com.mkruchok.dto; + +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + + +@ToString +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder(builderClassName = "DeviceBuilder") +public class DeviceDto { + private Integer id; + private String model; + private String status; + private Timestamp serviceLifeEndTime; + private Timestamp warrantyEndTime; + private Integer onBattery; + + private String hubModel; + private Integer notificationsCounter; + + +} diff --git a/src/main/java/com/mkruchok/dto/GroupDto.java b/src/main/java/com/mkruchok/dto/GroupDto.java new file mode 100644 index 0000000..f42c0b9 --- /dev/null +++ b/src/main/java/com/mkruchok/dto/GroupDto.java @@ -0,0 +1,24 @@ +package com.mkruchok.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(of = "id") +@Builder(builderClassName = "GroupBuilder") +public class GroupDto { + private Integer id; + private String name; + private String groupDescription; + private Integer groupHubId; + + private String groupHubModel; + private Integer usersCounter; + private Integer groupHasPermissionsCounter; +} diff --git a/src/main/java/com/mkruchok/dto/HubDto.java b/src/main/java/com/mkruchok/dto/HubDto.java new file mode 100644 index 0000000..d329fdd --- /dev/null +++ b/src/main/java/com/mkruchok/dto/HubDto.java @@ -0,0 +1,31 @@ +package com.mkruchok.dto; + +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder(builderClassName = "HubBuilder") +public class HubDto { + private Integer id; + private String model; + private String status; + private Timestamp serviceLifeEndTime; + private Timestamp warrantyEndTime; + private Integer usersMax; + private Integer roomsMax; + private Integer devicesMax; + private Integer sirensMax; + private Integer onBattery; + + private Integer groupsCounter; + private Integer rexesCounter; + private Integer notificationsCounter; + private Integer devicesCounter; + private Integer hubHasUsersCounter; +} diff --git a/src/main/java/com/mkruchok/dto/NotificationDto.java b/src/main/java/com/mkruchok/dto/NotificationDto.java new file mode 100644 index 0000000..9471665 --- /dev/null +++ b/src/main/java/com/mkruchok/dto/NotificationDto.java @@ -0,0 +1,23 @@ +package com.mkruchok.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +@Builder(builderClassName = "NotificationBuilder") +public class NotificationDto { + private Integer id; + private Timestamp timestamp; + private String type; + + private String deviceModel; + private String hubModel; +} diff --git a/src/main/java/com/mkruchok/dto/PermissionDto.java b/src/main/java/com/mkruchok/dto/PermissionDto.java new file mode 100644 index 0000000..66d4339 --- /dev/null +++ b/src/main/java/com/mkruchok/dto/PermissionDto.java @@ -0,0 +1,20 @@ +package com.mkruchok.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder(builderClassName = "PermissionBuilder") +public class PermissionDto { + private Integer id; + private String name; + private String permissionDescription; + + private Integer permissionHasUsersCounter; + private Integer permissionHasGroupsCounter; +} diff --git a/src/main/java/com/mkruchok/dto/RexDto.java b/src/main/java/com/mkruchok/dto/RexDto.java new file mode 100644 index 0000000..9e2e824 --- /dev/null +++ b/src/main/java/com/mkruchok/dto/RexDto.java @@ -0,0 +1,19 @@ +package com.mkruchok.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder(builderClassName = "RexBuilder") +public class RexDto { + private Integer id; + private String name; + private String range; + + private String hubRexModel; +} diff --git a/src/main/java/com/mkruchok/dto/UserDto.java b/src/main/java/com/mkruchok/dto/UserDto.java new file mode 100644 index 0000000..56a6694 --- /dev/null +++ b/src/main/java/com/mkruchok/dto/UserDto.java @@ -0,0 +1,25 @@ +package com.mkruchok.dto; + +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder(builderClassName = "UserBuilder") +public class UserDto { + private Integer id; + private Integer groupId; + private String email; + private Timestamp dateCreated; + private String name; + private String password; + + private String groupName; + private Integer userHasHubsCounter; + private Integer userHasPermissionsCounter; +} diff --git a/src/main/java/com/mkruchok/dto/package-info.java b/src/main/java/com/mkruchok/dto/package-info.java new file mode 100644 index 0000000..792437d --- /dev/null +++ b/src/main/java/com/mkruchok/dto/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.dto; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/entity/Device.java b/src/main/java/com/mkruchok/entity/Device.java similarity index 69% rename from src/main/java/com/mkruchok/model/entity/Device.java rename to src/main/java/com/mkruchok/entity/Device.java index c5aa170..68f8285 100644 --- a/src/main/java/com/mkruchok/model/entity/Device.java +++ b/src/main/java/com/mkruchok/entity/Device.java @@ -1,7 +1,9 @@ -package com.mkruchok.model.entity; +package com.mkruchok.entity; + import java.sql.Timestamp; import java.util.Collection; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -24,7 +26,6 @@ import org.hibernate.annotations.LazyCollectionOption; @Table(name = "device") - @AllArgsConstructor @NoArgsConstructor @ToString @@ -37,9 +38,11 @@ public class Device { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "model", length = 45) + @Column(name = "model", + length = MagicNumber.L45) private String model; - @Column(name = "device_status", length = 45) + @Column(name = "device_status", + length = MagicNumber.L45) private String status; @CreationTimestamp @Column(name = "service_life_end_time") @@ -47,28 +50,22 @@ public class Device { @CreationTimestamp @Column(name = "warranty_end_time") private Timestamp warrantyEndTime; - @Column(name = "on_battery", length = 1) + @Column(name = "on_battery", + length = 1) private Integer onBattery; - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @ManyToOne(cascade = CascadeType.MERGE) + + @JoinColumn(name = "hub_id", + referencedColumnName = "id") private Hub hubId; @OrderColumn @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(mappedBy = "deviceId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "deviceId", + cascade = CascadeType.ALL, + fetch = FetchType.LAZY) @ToString.Exclude private Collection notifications; - - public Device( - String model, String status, Timestamp serviceLifeEndTime, - Timestamp warrantyEndTime, Integer onBattery, Hub hubId) { - this.model = model; - this.status = status; - this.serviceLifeEndTime = serviceLifeEndTime; - this.warrantyEndTime = warrantyEndTime; - this.onBattery = onBattery; - this.hubId = hubId; - } } diff --git a/src/main/java/com/mkruchok/model/entity/Group.java b/src/main/java/com/mkruchok/entity/Group.java similarity index 73% rename from src/main/java/com/mkruchok/model/entity/Group.java rename to src/main/java/com/mkruchok/entity/Group.java index b188916..5263fa3 100644 --- a/src/main/java/com/mkruchok/model/entity/Group.java +++ b/src/main/java/com/mkruchok/entity/Group.java @@ -1,6 +1,8 @@ -package com.mkruchok.model.entity; +package com.mkruchok.entity; + import java.util.Collection; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -23,8 +25,8 @@ import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; -@Table(name = "hub_group") +@Table(name = "hub_group") @AllArgsConstructor @ToString @EqualsAndHashCode(of = "id") @@ -33,33 +35,34 @@ @Entity @NoArgsConstructor public class Group { - @OrderColumn - @ManyToMany - @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "group_has_permission", - joinColumns = @JoinColumn(name = "group_id"), - inverseJoinColumns = @JoinColumn(name = "permission_id")) - @ToString.Exclude - Collection groupHasPermissions; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "group_name", length = 45) + @Column(name = "group_name", + length = MagicNumber.L45) private String name; - @Column(name = "group_description", length = 150) + @Column(name = "group_description", + length = MagicNumber.L150) private String groupDescription; - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @ManyToOne(cascade = CascadeType.MERGE) + + @JoinColumn(name = "hub_id", + referencedColumnName = "id") private Hub hubGroupId; @OrderColumn - @OneToMany(mappedBy = "groupId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "groupId", + cascade = CascadeType.ALL, + fetch = FetchType.LAZY) @ToString.Exclude private Collection users; - - public Group(String name, String description, Hub hubId) { - this.name = name; - this.groupDescription = description; - this.hubGroupId = hubId; - } + @OrderColumn + @ManyToMany(cascade = CascadeType.ALL) + @LazyCollection(LazyCollectionOption.FALSE) + @JoinTable(name = "group_has_permission", + joinColumns = @JoinColumn(name = "group_id"), + inverseJoinColumns = @JoinColumn(name = "permission_id")) + @ToString.Exclude + private Collection groupHasPermissions; } + diff --git a/src/main/java/com/mkruchok/model/entity/Hub.java b/src/main/java/com/mkruchok/entity/Hub.java similarity index 54% rename from src/main/java/com/mkruchok/model/entity/Hub.java rename to src/main/java/com/mkruchok/entity/Hub.java index 6dede25..ffbea4f 100644 --- a/src/main/java/com/mkruchok/model/entity/Hub.java +++ b/src/main/java/com/mkruchok/entity/Hub.java @@ -1,15 +1,15 @@ -package com.mkruchok.model.entity; +package com.mkruchok.entity; + import java.sql.Timestamp; import java.util.Collection; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.OrderColumn; @@ -34,70 +34,76 @@ @Setter @Entity public class Hub { - @OrderColumn - @LazyCollection(LazyCollectionOption.FALSE) - @ManyToMany - @JoinTable(name = "user_has_hub", - joinColumns = @JoinColumn(name = "hub_id"), - inverseJoinColumns = @JoinColumn(name = "user_id")) - @ToString.Exclude - Collection hubHasUsers; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "model", length = 45) + @Column(name = "model", + length = MagicNumber.L45) private String model; - @Column(name = "hub_status", length = 45) + @Column(name = "hub_status", + length = MagicNumber.L45) private String status; @CreationTimestamp - @Column(name = "service_life_end_time", length = 45) + @Column(name = "service_life_end_time", + length = MagicNumber.L45) private Timestamp serviceLifeEndTime; @CreationTimestamp - @Column(name = "warranty_end_time", length = 45) + @Column(name = "warranty_end_time", + length = MagicNumber.L45) private Timestamp warrantyEndTime; - @Column(name = "users_max", length = 45) + @Column(name = "users_max", + length = MagicNumber.L45) private Integer usersMax; - @Column(name = "rooms_max", length = 45) + @Column(name = "rooms_max", + length = MagicNumber.L45) private Integer roomsMax; - @Column(name = "devices_max", length = 45) + @Column(name = "devices_max", + length = MagicNumber.L45) private Integer devicesMax; - @Column(name = "sirens_max", length = 45) + @Column(name = "sirens_max", + length = MagicNumber.L45) private Integer sirensMax; - @Column(name = "on_battery", length = 1) + @Column(name = "on_battery", + length = 1) private Integer onBattery; @OrderColumn - @OneToMany(mappedBy = "hubGroupId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "hubGroupId", + cascade = CascadeType.ALL, + fetch = FetchType.LAZY) @ToString.Exclude private Collection groups; @OrderColumn - @OneToMany(mappedBy = "hubRexId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "hubRexId", + cascade = CascadeType.ALL, + fetch = FetchType.LAZY) @ToString.Exclude private Collection rexes; @OrderColumn - @OneToMany(mappedBy = "hubNotificationId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "hubNotificationId", + cascade = CascadeType.ALL, + fetch = FetchType.LAZY) @ToString.Exclude private Collection notifications; + + @OrderColumn @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(mappedBy = "hubId") + @OneToMany(mappedBy = "hubId", + cascade = CascadeType.ALL, + fetch = FetchType.LAZY) @ToString.Exclude private Collection devices; - public Hub( - String model, String status, Timestamp serviceLifeEndTime, - Timestamp warrantyEndTime, - Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, - Integer onBattery) { - this.model = model; - this.status = status; - this.serviceLifeEndTime = serviceLifeEndTime; - this.warrantyEndTime = warrantyEndTime; - this.usersMax = usersMax; - this.roomsMax = roomsMax; - this.devicesMax = devicesMax; - this.sirensMax = sirensMax; - this.onBattery = onBattery; - } + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @ManyToMany(mappedBy = "userHasHubs", + cascade = CascadeType.ALL) + @ToString.Exclude + private Collection hubHasUsers; + + public Hub(String s) { + this.model = s; + } } diff --git a/src/main/java/com/mkruchok/entity/MagicNumber.java b/src/main/java/com/mkruchok/entity/MagicNumber.java new file mode 100644 index 0000000..5683fa5 --- /dev/null +++ b/src/main/java/com/mkruchok/entity/MagicNumber.java @@ -0,0 +1,7 @@ +package com.mkruchok.entity; + + +public class MagicNumber { + public static final int L45 = 45; + public static final int L150 = 150; +} diff --git a/src/main/java/com/mkruchok/model/entity/Notification.java b/src/main/java/com/mkruchok/entity/Notification.java similarity index 68% rename from src/main/java/com/mkruchok/model/entity/Notification.java rename to src/main/java/com/mkruchok/entity/Notification.java index 6897500..8aba9dd 100644 --- a/src/main/java/com/mkruchok/model/entity/Notification.java +++ b/src/main/java/com/mkruchok/entity/Notification.java @@ -1,6 +1,9 @@ -package com.mkruchok.model.entity; +package com.mkruchok.entity; + +import com.fasterxml.jackson.annotation.JsonInclude; import java.sql.Timestamp; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -23,6 +26,7 @@ @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(of = "id") +@JsonInclude(JsonInclude.Include.NON_NULL) @Getter @Setter @ToString @@ -35,16 +39,21 @@ public class Notification { @CreationTimestamp @Column(name = "timestamp") private Timestamp timestamp; - @Column(name = "notification_type", length = 45) + @Column(name = "notification_type", + length = MagicNumber.L45) private String type; - @ManyToOne - @JoinColumn(name = "device_id", referencedColumnName = "id") + @ManyToOne(cascade = CascadeType.MERGE) + + @JoinColumn(name = "device_id", + referencedColumnName = "id") private Device deviceId; - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @ManyToOne(cascade = CascadeType.MERGE) + + @JoinColumn(name = "hub_id", + referencedColumnName = "id") private Hub hubNotificationId; diff --git a/src/main/java/com/mkruchok/model/entity/Permission.java b/src/main/java/com/mkruchok/entity/Permission.java similarity index 71% rename from src/main/java/com/mkruchok/model/entity/Permission.java rename to src/main/java/com/mkruchok/entity/Permission.java index 90da9a4..fe15117 100644 --- a/src/main/java/com/mkruchok/model/entity/Permission.java +++ b/src/main/java/com/mkruchok/entity/Permission.java @@ -1,6 +1,9 @@ -package com.mkruchok.model.entity; +package com.mkruchok.entity; -import java.util.Collection; + +import java.util.HashSet; +import java.util.Set; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -35,25 +38,26 @@ public class Permission { @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; - @Column(name = "permission_name", length = 45) + @Column(name = "permission_name", + length = MagicNumber.L45) private String name; - @Column(name = "permission_description", length = 45) + @Column(name = "permission_description", + length = MagicNumber.L45) private String permissionDescription; + @OrderColumn - @ManyToMany + @ManyToMany(mappedBy = "userHasPermissions", + cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "user_has_permission", - joinColumns = @JoinColumn(name = "permission_id"), - inverseJoinColumns = @JoinColumn(name = "user_id")) @ToString.Exclude - private Collection permissionHasUsers; + private Set permissionHasUsers = new HashSet<>(); @OrderColumn - @ManyToMany + @ManyToMany(cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) @JoinTable(name = "group_has_permission", joinColumns = @JoinColumn(name = "permission_id"), inverseJoinColumns = @JoinColumn(name = "group_id")) @ToString.Exclude - private Collection permissionHasGroups; + private Set permissionHasGroups = new HashSet<>(); } diff --git a/src/main/java/com/mkruchok/model/entity/Rex.java b/src/main/java/com/mkruchok/entity/Rex.java similarity index 72% rename from src/main/java/com/mkruchok/model/entity/Rex.java rename to src/main/java/com/mkruchok/entity/Rex.java index 351610d..bcc876c 100644 --- a/src/main/java/com/mkruchok/model/entity/Rex.java +++ b/src/main/java/com/mkruchok/entity/Rex.java @@ -1,5 +1,7 @@ -package com.mkruchok.model.entity; +package com.mkruchok.entity; + +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -30,14 +32,18 @@ public class Rex { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "rex_name", length = 45) + @Column(name = "rex_name", + length = MagicNumber.L45) private String name; - @Column(name = "rex_range", length = 45) + @Column(name = "rex_range", + length = MagicNumber.L45) private String range; - @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @ManyToOne(cascade = CascadeType.MERGE) + + @JoinColumn(name = "hub_id", + referencedColumnName = "id") private Hub hubRexId; diff --git a/src/main/java/com/mkruchok/model/entity/User.java b/src/main/java/com/mkruchok/entity/User.java similarity index 79% rename from src/main/java/com/mkruchok/model/entity/User.java rename to src/main/java/com/mkruchok/entity/User.java index 83130be..23587d7 100644 --- a/src/main/java/com/mkruchok/model/entity/User.java +++ b/src/main/java/com/mkruchok/entity/User.java @@ -1,8 +1,9 @@ -package com.mkruchok.model.entity; +package com.mkruchok.entity; import java.sql.Timestamp; import java.util.Collection; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -30,7 +31,6 @@ @AllArgsConstructor @ToString @EqualsAndHashCode(of = "id") - @Getter @Setter @Entity @@ -39,20 +39,23 @@ public class User { @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; - @Column(name = "email", length = 45) + @Column(name = "email", + length = MagicNumber.L45) private String email; - @Column(name = "user_password", length = 45) + @Column(name = "user_password", + length = MagicNumber.L45) private String password; @CreationTimestamp @Column(name = "date_created") private Timestamp dateCreated; - @Column(name = "user_name", length = 45) + @Column(name = "user_name", + length = MagicNumber.L45) private String name; - @ManyToOne - @JoinColumn(name = "group_id", referencedColumnName = "id") + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "group_id", + referencedColumnName = "id") private Group groupId; - @OrderColumn - @ManyToMany + @ManyToMany(cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) @JoinTable(name = "user_has_hub", joinColumns = @JoinColumn(name = "user_id"), @@ -60,13 +63,11 @@ public class User { @ToString.Exclude private Collection userHasHubs; @OrderColumn - @ManyToMany + @ManyToMany(cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) @JoinTable(name = "user_has_permission", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "permission_id")) @ToString.Exclude private Collection userHasPermissions; - - } diff --git a/src/main/java/com/mkruchok/entity/package-info.java b/src/main/java/com/mkruchok/entity/package-info.java new file mode 100644 index 0000000..c380b1c --- /dev/null +++ b/src/main/java/com/mkruchok/entity/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.entity; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/mapper/AbstractMapper.java b/src/main/java/com/mkruchok/mapper/AbstractMapper.java new file mode 100644 index 0000000..76637c1 --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/AbstractMapper.java @@ -0,0 +1,5 @@ +package com.mkruchok.mapper; + +public abstract class AbstractMapper { + public abstract dto mapObjectToDto(T object); +} diff --git a/src/main/java/com/mkruchok/mapper/DeviceMapper.java b/src/main/java/com/mkruchok/mapper/DeviceMapper.java new file mode 100644 index 0000000..3356faf --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/DeviceMapper.java @@ -0,0 +1,27 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.DeviceDto; +import com.mkruchok.entity.Device; +import org.springframework.stereotype.Component; + +@Component +public class DeviceMapper extends AbstractMapper { + + @Override + public DeviceDto mapObjectToDto(Device device) { + if (device == null) { + return null; + } + DeviceDto.DeviceBuilder deviceDtoBuilder = DeviceDto.builder() + .id(device.getId()) + .model(device.getModel()) + .status(device.getStatus()) + .serviceLifeEndTime(device.getServiceLifeEndTime()) + .warrantyEndTime(device.getWarrantyEndTime()) + .onBattery(device.getOnBattery()) + .hubModel(device.getHubId().getModel()) + .notificationsCounter(device.getNotifications().size()); + + return deviceDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/mapper/GroupMapper.java b/src/main/java/com/mkruchok/mapper/GroupMapper.java new file mode 100644 index 0000000..7e587f7 --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/GroupMapper.java @@ -0,0 +1,25 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.GroupDto; +import com.mkruchok.entity.Group; +import org.springframework.stereotype.Component; + +@Component +public class GroupMapper extends AbstractMapper { + + @Override + public GroupDto mapObjectToDto(Group group) { + if (group == null) { + return null; + } + GroupDto.GroupBuilder groupDtoBuilder = GroupDto.builder() + .id(group.getId()) + .name(group.getName()) + .groupDescription(group.getGroupDescription()) + .groupHubModel(group.getHubGroupId().getModel()) + .groupHubId(group.getHubGroupId().getId()) + .usersCounter(group.getUsers().size()) + .groupHasPermissionsCounter(group.getGroupHasPermissions().size()); + return groupDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/mapper/HubMapper.java b/src/main/java/com/mkruchok/mapper/HubMapper.java new file mode 100644 index 0000000..8cae37f --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/HubMapper.java @@ -0,0 +1,33 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.HubDto; +import com.mkruchok.entity.Hub; +import org.springframework.stereotype.Component; + +@Component +public class HubMapper extends AbstractMapper { + + @Override + public HubDto mapObjectToDto(Hub hub) { + if (hub == null) { + return null; + } + HubDto.HubBuilder hubDtoBuilder = HubDto.builder() + .id(hub.getId()) + .model(hub.getModel()) + .status(hub.getStatus()) + .serviceLifeEndTime(hub.getServiceLifeEndTime()) + .warrantyEndTime(hub.getWarrantyEndTime()) + .usersMax(hub.getUsersMax()) + .roomsMax(hub.getRoomsMax()) + .devicesMax(hub.getDevicesMax()) + .sirensMax(hub.getSirensMax()) + .onBattery(hub.getOnBattery()) + .groupsCounter(hub.getGroups().size()) + .rexesCounter(hub.getRexes().size()) + .notificationsCounter(hub.getNotifications().size()) + .devicesCounter(hub.getDevices().size()) + .hubHasUsersCounter(hub.getHubHasUsers().size()); + return hubDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/mapper/NotificationMapper.java b/src/main/java/com/mkruchok/mapper/NotificationMapper.java new file mode 100644 index 0000000..91baba9 --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/NotificationMapper.java @@ -0,0 +1,25 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.NotificationDto; +import com.mkruchok.entity.Notification; +import org.springframework.stereotype.Component; + +@Component +public class NotificationMapper extends AbstractMapper { + + @Override + public NotificationDto mapObjectToDto(Notification notification) { + if (notification == null) { + return null; + } + NotificationDto.NotificationBuilder notificationDtoBuilder = NotificationDto.builder() + .id(notification.getId()) + .timestamp(notification.getTimestamp()) + .type(notification.getType()) + .deviceModel( + notification.getDeviceId() == null ? "null" : notification.getDeviceId().getModel()) + .hubModel(notification.getHubNotificationId() == null ? "null" : + notification.getHubNotificationId().getModel()); + return notificationDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/mapper/PermissionMapper.java b/src/main/java/com/mkruchok/mapper/PermissionMapper.java new file mode 100644 index 0000000..9eae4ff --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/PermissionMapper.java @@ -0,0 +1,23 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.PermissionDto; +import com.mkruchok.entity.Permission; +import org.springframework.stereotype.Component; + +@Component +public class PermissionMapper extends AbstractMapper { + + @Override + public PermissionDto mapObjectToDto(Permission permission) { + if (permission == null) { + return null; + } + PermissionDto.PermissionBuilder permissionDtoBuilder = PermissionDto.builder() + .id(permission.getId()) + .name(permission.getName()) + .permissionDescription(permission.getPermissionDescription()) + .permissionHasUsersCounter(permission.getPermissionHasUsers().size()) + .permissionHasGroupsCounter(permission.getPermissionHasGroups().size()); + return permissionDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/mapper/RexMapper.java b/src/main/java/com/mkruchok/mapper/RexMapper.java new file mode 100644 index 0000000..1a972e8 --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/RexMapper.java @@ -0,0 +1,22 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.RexDto; +import com.mkruchok.entity.Rex; +import org.springframework.stereotype.Component; + +@Component +public class RexMapper extends AbstractMapper { + + @Override + public RexDto mapObjectToDto(Rex rex) { + if (rex == null) { + return null; + } + RexDto.RexBuilder rexDtoBuilder = RexDto.builder() + .id(rex.getId()) + .name(rex.getName()) + .range(rex.getRange()) + .hubRexModel(rex.getHubRexId().getModel()); + return rexDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/mapper/UserMapper.java b/src/main/java/com/mkruchok/mapper/UserMapper.java new file mode 100644 index 0000000..998970a --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/UserMapper.java @@ -0,0 +1,27 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.UserDto; +import com.mkruchok.entity.User; +import org.springframework.stereotype.Component; + +@Component +public class UserMapper extends AbstractMapper { + + @Override + public UserDto mapObjectToDto(User user) { + if (user == null) { + return null; + } + UserDto.UserBuilder userDtoBuilder = UserDto.builder() + .id(user.getId()) + .email(user.getEmail()) + .password(user.getPassword()) + .dateCreated(user.getDateCreated()) + .name(user.getName()) + .groupId(user.getGroupId() == null ? null : user.getGroupId().getId()) + .groupName(user.getGroupId() == null ? "null" : user.getGroupId().getName()) + .userHasHubsCounter(user.getUserHasHubs().size()) + .userHasPermissionsCounter(user.getUserHasPermissions().size()); + return userDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/model/dao/AbstractDao.java b/src/main/java/com/mkruchok/model/dao/AbstractDao.java deleted file mode 100644 index 247aae7..0000000 --- a/src/main/java/com/mkruchok/model/dao/AbstractDao.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.mkruchok.model.dao; - -import java.sql.SQLException; -import java.util.Collection; - -public interface AbstractDao { - - Collection findAll() throws SQLException; - - default void create(E entity) { - } - - default E findById(Integer id) { - return null; - } - - default void update(Integer id, E entity) { - } - - default void delete(Integer id) { - } - -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java b/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java deleted file mode 100644 index 05dca8e..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.HibernateUtil; -import com.mkruchok.model.dao.AbstractDao; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -public abstract class AbstractDaoImpl implements AbstractDao { - - static final Logger LOGGER = LoggerFactory.getLogger(AbstractDaoImpl.class); - protected final SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); - private final Class currentClass; - - public AbstractDaoImpl(Class currentClass) { - this.currentClass = currentClass; - } - - @Override - @SuppressWarnings("unchecked") - public final Collection findAll() { - List entities = new ArrayList<>(); - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - entities = session.createQuery("from " + currentClass.getName()) - .getResultList(); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } - entities.forEach(e -> LOGGER.debug(e.toString())); - return entities; - } - - - @Override - public final E findById(Integer id) { - E entity = null; - - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - entity = session.get(currentClass, id); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } - return entity; - } - - @Override - public final void update(Integer id, E entity) { - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - session.update(entity); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } - } - - @Override - public final void create(E entity) { - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - session.save(entity); - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } - } - - @Override - public final void delete(Integer id) { - try (Session session = sessionFactory.getCurrentSession()) { - session.beginTransaction(); - E entity = session.get(currentClass, id); - if (entity != null) { - session.delete(entity); - } - session.getTransaction().commit(); - if (session.isOpen()) { - session.close(); - } - } catch (Exception e) { - LOGGER.error(String.valueOf(e)); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java deleted file mode 100644 index 1ad3942..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Device; - -public final class DeviceDao extends AbstractDaoImpl { - public DeviceDao() { - super(Device.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java b/src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java deleted file mode 100644 index 730da03..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/GroupDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Group; - -public final class GroupDao extends AbstractDaoImpl { - public GroupDao() { - super(Group.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/HubDao.java b/src/main/java/com/mkruchok/model/dao/implementation/HubDao.java deleted file mode 100644 index 16ee2ee..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/HubDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Hub; - -public final class HubDao extends AbstractDaoImpl { - public HubDao() { - super(Hub.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java deleted file mode 100644 index cf713ad..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Notification; - -public final class NotificationDao extends AbstractDaoImpl { - public NotificationDao() { - super(Notification.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java deleted file mode 100644 index fd00992..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.mkruchok.model.dao.implementation; - - -import com.mkruchok.model.entity.Permission; - -public final class PermissionDao extends AbstractDaoImpl { - public PermissionDao() { - super(Permission.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/RexDao.java b/src/main/java/com/mkruchok/model/dao/implementation/RexDao.java deleted file mode 100644 index b6ebcc2..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/RexDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.Rex; - -public final class RexDao extends AbstractDaoImpl { - public RexDao() { - super(Rex.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/UserDao.java b/src/main/java/com/mkruchok/model/dao/implementation/UserDao.java deleted file mode 100644 index dfd2e2e..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/UserDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mkruchok.model.dao.implementation; - -import com.mkruchok.model.entity.User; - -public final class UserDao extends AbstractDaoImpl { - public UserDao() { - super(User.class); - } -} diff --git a/src/main/java/com/mkruchok/model/dao/implementation/package-info.java b/src/main/java/com/mkruchok/model/dao/implementation/package-info.java deleted file mode 100644 index e1c00af..0000000 --- a/src/main/java/com/mkruchok/model/dao/implementation/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.model.dao.implementation; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/package-info.java b/src/main/java/com/mkruchok/model/dao/package-info.java deleted file mode 100644 index 951a6b6..0000000 --- a/src/main/java/com/mkruchok/model/dao/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.model.dao; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/entity/package-info.java b/src/main/java/com/mkruchok/model/entity/package-info.java deleted file mode 100644 index cd73ddd..0000000 --- a/src/main/java/com/mkruchok/model/entity/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.model.entity; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/package-info.java b/src/main/java/com/mkruchok/model/package-info.java deleted file mode 100644 index 8f40d85..0000000 --- a/src/main/java/com/mkruchok/model/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.model; \ No newline at end of file diff --git a/src/main/java/com/mkruchok/persistant/package-info.java b/src/main/java/com/mkruchok/persistant/package-info.java deleted file mode 100644 index 866ce58..0000000 --- a/src/main/java/com/mkruchok/persistant/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.persistant; diff --git a/src/main/java/com/mkruchok/repository/DeviceRepository.java b/src/main/java/com/mkruchok/repository/DeviceRepository.java new file mode 100644 index 0000000..c4538c2 --- /dev/null +++ b/src/main/java/com/mkruchok/repository/DeviceRepository.java @@ -0,0 +1,10 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.Device; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DeviceRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/repository/GroupRepository.java b/src/main/java/com/mkruchok/repository/GroupRepository.java new file mode 100644 index 0000000..f4f60f6 --- /dev/null +++ b/src/main/java/com/mkruchok/repository/GroupRepository.java @@ -0,0 +1,10 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.Group; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface GroupRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/repository/HubRepository.java b/src/main/java/com/mkruchok/repository/HubRepository.java new file mode 100644 index 0000000..88e88a2 --- /dev/null +++ b/src/main/java/com/mkruchok/repository/HubRepository.java @@ -0,0 +1,11 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.Hub; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface HubRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/repository/NotificationRepository.java b/src/main/java/com/mkruchok/repository/NotificationRepository.java new file mode 100644 index 0000000..3aaabb0 --- /dev/null +++ b/src/main/java/com/mkruchok/repository/NotificationRepository.java @@ -0,0 +1,11 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.Notification; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface NotificationRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/repository/PermissionRepository.java b/src/main/java/com/mkruchok/repository/PermissionRepository.java new file mode 100644 index 0000000..92c3281 --- /dev/null +++ b/src/main/java/com/mkruchok/repository/PermissionRepository.java @@ -0,0 +1,11 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.Permission; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface PermissionRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/repository/RexRepository.java b/src/main/java/com/mkruchok/repository/RexRepository.java new file mode 100644 index 0000000..373df10 --- /dev/null +++ b/src/main/java/com/mkruchok/repository/RexRepository.java @@ -0,0 +1,11 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.Rex; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface RexRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/repository/UserRepository.java b/src/main/java/com/mkruchok/repository/UserRepository.java new file mode 100644 index 0000000..b11885e --- /dev/null +++ b/src/main/java/com/mkruchok/repository/UserRepository.java @@ -0,0 +1,10 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/service/AbstractService.java b/src/main/java/com/mkruchok/service/AbstractService.java new file mode 100644 index 0000000..2b43136 --- /dev/null +++ b/src/main/java/com/mkruchok/service/AbstractService.java @@ -0,0 +1,29 @@ +package com.mkruchok.service; + +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; + +public abstract class AbstractService { + protected abstract JpaRepository getRepository(); + + public final List findAll() { + return getRepository().findAll(); + } + + public T getById(id id) { + return getRepository().getReferenceById(id); + } + + public final void create(final T object) { + getRepository().save(object); + } + + public final T update(final T object) { + return getRepository().save(object); + } + + public final void delete(final id id) { + getRepository().deleteById(id); + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/DeviceService.java b/src/main/java/com/mkruchok/service/DeviceService.java new file mode 100644 index 0000000..eb679f7 --- /dev/null +++ b/src/main/java/com/mkruchok/service/DeviceService.java @@ -0,0 +1,19 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.Device; +import com.mkruchok.repository.DeviceRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class DeviceService extends AbstractService { + private DeviceRepository deviceRepository; + + @Override + protected JpaRepository getRepository() { + return deviceRepository; + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/GroupService.java b/src/main/java/com/mkruchok/service/GroupService.java new file mode 100644 index 0000000..0efd98d --- /dev/null +++ b/src/main/java/com/mkruchok/service/GroupService.java @@ -0,0 +1,19 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.Group; +import com.mkruchok.repository.GroupRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class GroupService extends AbstractService { + private GroupRepository groupRepository; + + @Override + protected JpaRepository getRepository() { + return groupRepository; + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/HubService.java b/src/main/java/com/mkruchok/service/HubService.java new file mode 100644 index 0000000..77ab3a3 --- /dev/null +++ b/src/main/java/com/mkruchok/service/HubService.java @@ -0,0 +1,19 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.Hub; +import com.mkruchok.repository.HubRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class HubService extends AbstractService { + private HubRepository hubRepository; + + @Override + protected JpaRepository getRepository() { + return hubRepository; + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/NotificationService.java b/src/main/java/com/mkruchok/service/NotificationService.java new file mode 100644 index 0000000..8046336 --- /dev/null +++ b/src/main/java/com/mkruchok/service/NotificationService.java @@ -0,0 +1,18 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.Notification; +import com.mkruchok.repository.NotificationRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class NotificationService extends AbstractService { + private NotificationRepository notificationRepository; + + @Override + protected JpaRepository getRepository() { + return notificationRepository; + } +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/PermissionService.java b/src/main/java/com/mkruchok/service/PermissionService.java new file mode 100644 index 0000000..d14ff29 --- /dev/null +++ b/src/main/java/com/mkruchok/service/PermissionService.java @@ -0,0 +1,18 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.Permission; +import com.mkruchok.repository.PermissionRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class PermissionService extends AbstractService { + private PermissionRepository permissionRepository; + + @Override + protected JpaRepository getRepository() { + return permissionRepository; + } +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/RexService.java b/src/main/java/com/mkruchok/service/RexService.java new file mode 100644 index 0000000..57331c3 --- /dev/null +++ b/src/main/java/com/mkruchok/service/RexService.java @@ -0,0 +1,18 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.Rex; +import com.mkruchok.repository.RexRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class RexService extends AbstractService { + private RexRepository rexRepository; + + @Override + protected JpaRepository getRepository() { + return rexRepository; + } +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/UserService.java b/src/main/java/com/mkruchok/service/UserService.java new file mode 100644 index 0000000..597a59a --- /dev/null +++ b/src/main/java/com/mkruchok/service/UserService.java @@ -0,0 +1,19 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.User; +import com.mkruchok.repository.UserRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class UserService extends AbstractService { + private UserRepository userRepository; + + @Override + protected JpaRepository getRepository() { + return userRepository; + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/view/Menu.java b/src/main/java/com/mkruchok/view/Menu.java deleted file mode 100644 index cf4871e..0000000 --- a/src/main/java/com/mkruchok/view/Menu.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.mkruchok.view; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class Menu { - static final Logger LOGGER = LoggerFactory.getLogger(Menu.class); - - public void displayMenu() { - LOGGER.debug("\n _________________________________________________\n" - + "| |\n" - + "| Enter entity and CRUD number : |\n" - + "| |\n" - + "| Table: CRUD: |\n" - + "|_________________________________________________|\n" - + "| 1 | user | 1 | GET TABLE |\n" - + "| 2 | hub | 2 | GET ROW BY ID |\n" - + "| 3 | device | 3 | CREATE ROW |\n" - + "| 4 | notification | 4 | UPDATE ROW |\n" - + "| 5 | group | 5 | DELETE ROW |\n" - + "| 6 | permission | | |\n" - + "| 7 | rex | | |\n" - + "|___|__________________|___|______________________|\n" - + "Enter numbers:" - - ); - } -} diff --git a/src/main/java/com/mkruchok/view/Printable.java b/src/main/java/com/mkruchok/view/Printable.java deleted file mode 100644 index f6da866..0000000 --- a/src/main/java/com/mkruchok/view/Printable.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.mkruchok.view; - -import java.sql.SQLException; - -@FunctionalInterface -public interface Printable { - void print() throws SQLException; -} diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java deleted file mode 100644 index 8d5575e..0000000 --- a/src/main/java/com/mkruchok/view/View.java +++ /dev/null @@ -1,491 +0,0 @@ -package com.mkruchok.view; - -import com.mkruchok.controller.implementation.DeviceController; -import com.mkruchok.controller.implementation.GroupController; -import com.mkruchok.controller.implementation.HubController; -import com.mkruchok.controller.implementation.NotificationController; -import com.mkruchok.controller.implementation.PermissionController; -import com.mkruchok.controller.implementation.RexController; -import com.mkruchok.controller.implementation.UserController; -import com.mkruchok.model.entity.Device; -import com.mkruchok.model.entity.Group; -import com.mkruchok.model.entity.Hub; -import com.mkruchok.model.entity.Notification; -import com.mkruchok.model.entity.Permission; -import com.mkruchok.model.entity.Rex; -import com.mkruchok.model.entity.User; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Scanner; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -public final class View { - static final Logger LOGGER = LoggerFactory.getLogger(View.class); - private static final Scanner SCANNER = new Scanner(System.in, "UTF-8"); - private final Map menu = new LinkedHashMap<>(); - private final HubController hubController = new HubController(); - private final DeviceController deviceController = new DeviceController(); - private final NotificationController notificationController = new NotificationController(); - private final GroupController groupController = new GroupController(); - private final PermissionController permissionController = new PermissionController(); - private final UserController userController = new UserController(); - private final RexController rexController = new RexController(); - Menu showMenu = new Menu(); - - - public View() { - menu.put("11", this::getAllUsers); - menu.put("12", this::getUserById); - menu.put("13", this::createUser); - menu.put("14", this::updateUser); - menu.put("15", this::deleteUser); - - menu.put("21", this::getAllHubs); - menu.put("22", this::getHubById); - menu.put("23", this::createHub); - menu.put("24", this::updateHub); - menu.put("25", this::deleteHub); - - menu.put("31", this::getAllDevices); - menu.put("32", this::getDeviceByName); - menu.put("33", this::createDevice); - menu.put("34", this::updateDevice); - menu.put("35", this::deleteDevice); - - menu.put("41", this::getAllNotifications); - menu.put("42", this::getNotificationById); - menu.put("43", this::createNotification); - menu.put("44", this::updateNotification); - menu.put("45", this::deleteNotification); - - menu.put("51", this::getAllGroups); - menu.put("52", this::getGroupById); - menu.put("53", this::createGroup); - menu.put("54", this::updateGroup); - menu.put("55", this::deleteGroup); - - menu.put("61", this::getAllPermissions); - menu.put("62", this::getPermissionById); - menu.put("63", this::createPermission); - menu.put("64", this::updatePermission); - menu.put("65", this::deletePermission); - - menu.put("71", this::getAllRexes); - menu.put("72", this::getRexById); - menu.put("73", this::createRex); - menu.put("74", this::updateRex); - menu.put("75", this::deleteRex); - } - - public void show() { - String input; - showMenu.displayMenu(); - do { - try { - input = SCANNER.next(); - menu.get(input).print(); - } catch (Exception e) { - LOGGER.debug(String.valueOf(e)); - } - } while (SCANNER.hasNext()); - } - - private void getAllUsers() { - userController.findAll(); - showMenu.displayMenu(); - } - - private void getUserById() { - LOGGER.debug("\nEnter iD: "); - final Integer id = SCANNER.nextInt(); - LOGGER.debug(userController.findById(id).toString()); - showMenu.displayMenu(); - } - - private User getUserInputs(Integer create) throws NullPointerException { - LOGGER.debug("Enter email: "); - final String email = SCANNER.next(); - LOGGER.debug("Enter password: "); - final String password = SCANNER.next(); - LOGGER.debug("Enter name: "); - final String name = SCANNER.next(); - Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); - Group groupEntity = null; - final Collection userHubs = new ArrayList<>(); - final Collection userPermissions = new ArrayList<>(); - if (create == 0) { - LOGGER.debug("Enter group id: "); - final String groupId = SCANNER.next(); - LOGGER.debug("Enter hub id to add to user or put one that he has: "); - final Integer hubId = SCANNER.nextInt(); - userHubs.add(hubController.findById(hubId)); - LOGGER.debug("Enter permission id that user has: "); - final Integer permissionId = SCANNER.nextInt(); - userPermissions.add(permissionController.findById(permissionId)); - groupEntity = Objects.equals(groupId, "null") ? null : - groupController.findById(Integer.valueOf(groupId)); - } - return new User(null, email, password, dateCreated, name, groupEntity, - userHubs, userPermissions); - } - - private void createUser() { - final User user = getUserInputs(1); - userController.create(user); - LOGGER.debug("\nUser was added to the table.\n"); - showMenu.displayMenu(); - } - - private void updateUser() { - LOGGER.debug("\nEnter id to update: "); - final Integer id = SCANNER.nextInt(); - final User user = getUserInputs(0); - user.setId(id); - userController.update(user.getId(), user); - LOGGER.debug("Updated user, id = " + id); - showMenu.displayMenu(); - } - - private void deleteUser() { - LOGGER.debug("\nEnter ID to delete user: "); - final int id = SCANNER.nextInt(); - userController.delete(id); - LOGGER.debug("Deleted user, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllHubs() { - hubController.findAll(); - } - - private void getHubById() { - LOGGER.debug("\nEnter Id: "); - final Integer id = SCANNER.nextInt(); - LOGGER.debug(hubController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Hub getHubInputs() { - LOGGER.debug("\nEnter model: "); - final String model = SCANNER.next(); - LOGGER.debug("Enter status: "); - final String status = SCANNER.next(); - SCANNER.nextLine(); - LOGGER.debug("Enter service_life_end_time: "); - final Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter warranty_end_time: "); - final Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter users_max: "); - final Integer usersMax = SCANNER.nextInt(); - LOGGER.debug("Enter rooms_max: "); - final Integer roomsMax = SCANNER.nextInt(); - LOGGER.debug("Enter devices_max: "); - final Integer devicesMax = SCANNER.nextInt(); - LOGGER.debug("Enter sirens_max: "); - final Integer sirensMax = SCANNER.nextInt(); - LOGGER.debug("Enter on_battery: "); - final Integer onBattery = SCANNER.nextInt(); - return new Hub(model, status, serviceLifeEndTime, warrantyEndTime, - usersMax, roomsMax, devicesMax, sirensMax, onBattery); - } - - private void createHub() { - final Hub hub = getHubInputs(); - hubController.create(hub); - LOGGER.debug("Hub was added to the table."); - showMenu.displayMenu(); - } - - private void updateHub() { - LOGGER.debug("\nEnter id to update:"); - final Integer id = SCANNER.nextInt(); - final Hub hub = getHubInputs(); - hub.setId(id); - hubController.update(hub.getId(), hub); - LOGGER.debug("Updated hub, id = " + id); - showMenu.displayMenu(); - } - - private void deleteHub() { - LOGGER.debug("\nEnter id to delete hub: "); - final Integer id = SCANNER.nextInt(); - hubController.delete(id); - LOGGER.debug("Deleted hub, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllDevices() { - deviceController.findAll(); - showMenu.displayMenu(); - } - - private void getDeviceByName() { - LOGGER.debug("\nEnter Id: "); - final Integer id = SCANNER.nextInt(); - LOGGER.debug(deviceController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Device getDeviceInputs() { - LOGGER.debug("\nEnter model: "); - final String model = SCANNER.next(); - LOGGER.debug("Enter status: "); - final String status = SCANNER.next(); - SCANNER.nextLine(); - LOGGER.debug("Enter warranty_end_time: "); - final Timestamp warrantyEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter service_life_end_time: "); - final Timestamp serviceLifeEndTime = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter on_battery: "); - final Integer onBattery = SCANNER.nextInt(); - LOGGER.debug("Enter hub_id: "); - final Integer hubId = SCANNER.nextInt(); - final Hub hubEntity = hubController.findById(hubId); - return new Device(model, status, serviceLifeEndTime, warrantyEndTime, - onBattery, hubEntity); - } - - private void createDevice() { - final Device device = getDeviceInputs(); - deviceController.create(device); - LOGGER.debug("Device was added to the table."); - showMenu.displayMenu(); - } - - private void updateDevice() { - LOGGER.debug("\nEnter id to update : "); - final Integer id = SCANNER.nextInt(); - final Device device = getDeviceInputs(); - device.setId(id); - deviceController.update(device.getId(), device); - LOGGER.debug("Updated device, id = " + id); - showMenu.displayMenu(); - } - - private void deleteDevice() { - LOGGER.debug("\nEnter id to delete device: "); - final Integer id = SCANNER.nextInt(); - deviceController.delete(id); - LOGGER.debug("Deleted device, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllNotifications() { - notificationController.findAll(); - showMenu.displayMenu(); - } - - private void getNotificationById() { - LOGGER.debug("\nEnter Id: "); - final Integer id = SCANNER.nextInt(); - LOGGER.debug(notificationController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Notification getNotificationInputs() { - LOGGER.debug("Enter timestamp: "); - SCANNER.nextLine(); - final Timestamp timestamp = Timestamp.valueOf(SCANNER.nextLine()); - LOGGER.debug("Enter type: "); - final String type = SCANNER.next(); - LOGGER.debug("\nEnter device_id: "); - final String deviceId = SCANNER.next(); - final Device deviceEntity = Objects.equals(deviceId, "null") ? null : - deviceController.findById(Integer.valueOf(deviceId)); - LOGGER.debug("\nEnter hub_id: "); - final String hubId = SCANNER.next(); - final Hub hubEntity = Objects.equals(hubId, "null") ? null : - hubController.findById(Integer.valueOf(hubId)); - return new Notification(null, timestamp, type, deviceEntity, hubEntity); - } - - private void createNotification() { - Notification notification = getNotificationInputs(); - notificationController.create(notification); - LOGGER.debug("Notification was added to the table."); - showMenu.displayMenu(); - } - - private void updateNotification() { - LOGGER.debug("\nEnter id to update:"); - Integer id = SCANNER.nextInt(); - Notification notification = getNotificationInputs(); - notification.setId(id); - notificationController.update(notification.getId(), notification); - LOGGER.debug("Updated notification, id = " + id); - showMenu.displayMenu(); - } - - private void deleteNotification() { - LOGGER.debug("\nEnter id to delete notification: "); - Integer id = SCANNER.nextInt(); - notificationController.delete(id); - LOGGER.debug("Deleted notification, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllGroups() { - groupController.findAll(); - showMenu.displayMenu(); - } - - private void getGroupById() { - LOGGER.debug("\nEnter ID: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(groupController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Group getGroupInputs() { - LOGGER.debug("\nEnter name: "); - String name = SCANNER.next(); - LOGGER.debug("\nEnter description: "); - String description = SCANNER.next(); - LOGGER.debug("Enter hub_id: "); - Integer hubId = SCANNER.nextInt(); - Hub hubEntity = hubController.findById(hubId); - return new Group(name, description, hubEntity); - } - - private void createGroup() { - Group group = getGroupInputs(); - groupController.create(group); - LOGGER.debug("Group was added to the table."); - showMenu.displayMenu(); - } - - private void updateGroup() { - LOGGER.debug("\nEnter id to update:"); - Integer id = SCANNER.nextInt(); - Group group = getGroupInputs(); - group.setId(id); - groupController.update(group.getId(), group); - LOGGER.debug("Updated group, id = " + id); - showMenu.displayMenu(); - } - - private void deleteGroup() { - LOGGER.debug("\nEnter ID to delete group: "); - int id = SCANNER.nextInt(); - groupController.delete(id); - LOGGER.debug("Deleted group, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllPermissions() { - permissionController.findAll(); - showMenu.displayMenu(); - } - - private void getPermissionById() { - LOGGER.debug("\nEnter ID: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(permissionController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Permission getPermissionInputs(Integer create) { - LOGGER.debug("Enter name: "); - String name = SCANNER.next(); - LOGGER.debug("Enter description: "); - String description = SCANNER.next(); - Collection permissionUsers = new ArrayList<>(); - Collection permissionGroups = new ArrayList<>(); - if (create == 0) { - LOGGER.debug("Enter permission user id: "); - Integer userId = SCANNER.nextInt(); - permissionUsers.add(userController.findById(userId)); - LOGGER.debug("Enter permission group id: "); - Integer groupId = SCANNER.nextInt(); - permissionGroups.add(groupController.findById(groupId)); - } - return new Permission(null, name, description, permissionUsers, - permissionGroups); - } - - private void createPermission() { - Permission permission = getPermissionInputs(1); - permissionController.create(permission); - LOGGER.debug("Permission was added to the table."); - showMenu.displayMenu(); - } - - private void updatePermission() { - LOGGER.debug("\nEnter id to update: "); - Integer id = SCANNER.nextInt(); - Permission permission = getPermissionInputs(0); - permission.setId(id); - permissionController.update(permission.getId(), permission); - LOGGER.debug("Updated permission, id = " + id); - showMenu.displayMenu(); - } - - private void deletePermission() { - LOGGER.debug("\nEnter ID to delete permission: "); - int id = SCANNER.nextInt(); - permissionController.delete(id); - LOGGER.debug("Deleted permission, id = " + id); - showMenu.displayMenu(); - } - - - private void getAllRexes() { - rexController.findAll(); - showMenu.displayMenu(); - } - - private void getRexById() { - LOGGER.debug("\nEnter ID: "); - Integer id = SCANNER.nextInt(); - LOGGER.debug(rexController.findById(id).toString()); - showMenu.displayMenu(); - } - - private Rex getRexInputs() { - LOGGER.debug("\nEnter name: "); - String name = SCANNER.next(); - LOGGER.debug("\nEnter range: "); - String range = SCANNER.next(); - LOGGER.debug("Enter hub_id: "); - Integer hubId = SCANNER.nextInt(); - Hub hubEntity = hubController.findById(hubId); - return new Rex(null, name, range, hubEntity); - } - - private void createRex() { - - Rex rex = getRexInputs(); - rexController.create(rex); - LOGGER.debug("Rex was added to the table."); - showMenu.displayMenu(); - } - - private void updateRex() { - LOGGER.debug("\nEnter id to update: "); - Integer id = SCANNER.nextInt(); - Rex rex = getRexInputs(); - rex.setId(id); - rexController.update(rex.getId(), rex); - LOGGER.debug("Updated rex, id = " + id); - showMenu.displayMenu(); - } - - private void deleteRex() { - LOGGER.debug("\nEnter id to delete rex: "); - int id = SCANNER.nextInt(); - rexController.delete(id); - LOGGER.debug("Deleted rex, id = " + id); - showMenu.displayMenu(); - } -} diff --git a/src/main/java/com/mkruchok/view/package-info.java b/src/main/java/com/mkruchok/view/package-info.java deleted file mode 100644 index 45044f2..0000000 --- a/src/main/java/com/mkruchok/view/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.mkruchok.view; \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..8b3d63d --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,13 @@ +spring.datasource.url=jdbc:mysql://localhost:3306/ajax_curr?useSSL=false&allowPublicKeyRetrieval=true +spring.datasource.username=root +spring.datasource.password=admin +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect +spring.mvc.pathmatch.matching-strategy=ant-path-matcher +management.endpoints.web.exposure.include=* +management.endpoint.health.show-details=always +spring.session.jdbc.initialize-schema=always +management.metrics.tags.application=Application +spring.jpa.show_sql=true +spring.jpa.hibernate.ddl-auto=update +server.port=8888 \ No newline at end of file diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml deleted file mode 100644 index f8e3203..0000000 --- a/src/main/resources/hibernate.cfg.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - jdbc:mysql://localhost:3306/ajax_curr - com.mysql.cj.jdbc.Driver - root - admin - thread - - - - - - - - - \ No newline at end of file diff --git a/src/test/java/com/mkruchok/ApplicationTests.java b/src/test/java/com/mkruchok/ApplicationTests.java new file mode 100644 index 0000000..9965ac2 --- /dev/null +++ b/src/test/java/com/mkruchok/ApplicationTests.java @@ -0,0 +1,13 @@ +package com.mkruchok; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ApplicationTests { + + @Test + void contextLoads() { + } + +} From c2361c5828c03417ad1002ea2b14bb14f6bb2c02 Mon Sep 17 00:00:00 2001 From: Phlake Date: Tue, 24 May 2022 11:19:08 +0300 Subject: [PATCH 09/11] Naming fixes --- pom.xml | 25 +++++++++++-------- .../controller/AbstractController.java | 16 ++++++------ .../com/mkruchok/mapper/AbstractMapper.java | 4 +-- .../com/mkruchok/service/AbstractService.java | 8 +++--- 4 files changed, 28 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index a336259..d3234db 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ DB6MK DB6MK - https://github.com/MKruchok/Databases/tree/lab_5 + https://github.com/MKruchok/Databases/tree/lab_6 11 @@ -30,11 +30,6 @@ org.springframework.boot spring-boot-starter-hateoas - - com.github.spotbugs - spotbugs - 4.4.1 - org.springframework.boot spring-boot-starter-mustache @@ -143,6 +138,19 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.4.1 + + + + com.github.spotbugs + spotbugs + 4.7.0 + + + org.apache.maven.plugins maven-site-plugin @@ -209,11 +217,6 @@ maven-pmd-plugin 3.13.0 - - com.github.spotbugs - spotbugs-maven-plugin - 4.4.1 - diff --git a/src/main/java/com/mkruchok/controller/AbstractController.java b/src/main/java/com/mkruchok/controller/AbstractController.java index fc8c288..63c0a87 100644 --- a/src/main/java/com/mkruchok/controller/AbstractController.java +++ b/src/main/java/com/mkruchok/controller/AbstractController.java @@ -13,15 +13,15 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; -public abstract class AbstractController { - protected abstract AbstractService getService(); +public abstract class AbstractController { + protected abstract AbstractService getService(); - protected abstract AbstractMapper getMapper(); + protected abstract AbstractMapper getMapper(); @RequestMapping(method = RequestMethod.GET) - public @ResponseBody ResponseEntity> findAll() { + public @ResponseBody ResponseEntity> findAll() { List objects = getService().findAll(); - List objectsDto = new ArrayList<>(); + List objectsDto = new ArrayList<>(); for (T object : objects) { objectsDto.add(getMapper().mapObjectToDto(object)); } @@ -30,9 +30,9 @@ public abstract class AbstractController { @RequestMapping(method = RequestMethod.GET, value = "/{id}") - public @ResponseBody ResponseEntity findById( + public @ResponseBody ResponseEntity findById( @PathVariable - id id) { + I id) { T object = getService().getById(id); return new ResponseEntity<>(getMapper().mapObjectToDto(object), HttpStatus.OK); } @@ -58,7 +58,7 @@ public abstract class AbstractController { value = "/{id}") public @ResponseBody ResponseEntity delete( @PathVariable - id id) { + I id) { getService().delete(id); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/src/main/java/com/mkruchok/mapper/AbstractMapper.java b/src/main/java/com/mkruchok/mapper/AbstractMapper.java index 76637c1..c724bab 100644 --- a/src/main/java/com/mkruchok/mapper/AbstractMapper.java +++ b/src/main/java/com/mkruchok/mapper/AbstractMapper.java @@ -1,5 +1,5 @@ package com.mkruchok.mapper; -public abstract class AbstractMapper { - public abstract dto mapObjectToDto(T object); +public abstract class AbstractMapper { + public abstract D mapObjectToDto(T object); } diff --git a/src/main/java/com/mkruchok/service/AbstractService.java b/src/main/java/com/mkruchok/service/AbstractService.java index 2b43136..dd0e2d3 100644 --- a/src/main/java/com/mkruchok/service/AbstractService.java +++ b/src/main/java/com/mkruchok/service/AbstractService.java @@ -3,14 +3,14 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; -public abstract class AbstractService { - protected abstract JpaRepository getRepository(); +public abstract class AbstractService { + protected abstract JpaRepository getRepository(); public final List findAll() { return getRepository().findAll(); } - public T getById(id id) { + public T getById(I id) { return getRepository().getReferenceById(id); } @@ -22,7 +22,7 @@ public final T update(final T object) { return getRepository().save(object); } - public final void delete(final id id) { + public final void delete(final I id) { getRepository().deleteById(id); } From c28b41ddfc656790982906002df2d6b765d86033 Mon Sep 17 00:00:00 2001 From: Phlake Date: Wed, 15 Jun 2022 18:33:00 +0300 Subject: [PATCH 10/11] big changes --- pom.xml | 21 +++++---- spotbugs-exclude.xml | 16 +++++++ .../mkruchok/controller/DeviceController.java | 2 +- .../controller/DevicesGroupController.java | 30 ++++++++++++ .../mkruchok/controller/GroupController.java | 29 ------------ .../mkruchok/controller/HubController.java | 2 +- .../controller/NotificationController.java | 2 +- .../controller/PermissionController.java | 2 +- .../mkruchok/controller/RexController.java | 2 +- .../mkruchok/controller/UserController.java | 2 +- .../controller/UsersGroupController.java | 29 ++++++++++++ src/main/java/com/mkruchok/dto/DeviceDto.java | 2 +- .../com/mkruchok/dto/DevicesGroupDto.java | 20 ++++++++ .../java/com/mkruchok/dto/PermissionDto.java | 7 +-- src/main/java/com/mkruchok/dto/RexDto.java | 2 +- src/main/java/com/mkruchok/dto/UserDto.java | 8 ++-- .../dto/{GroupDto.java => UsersGroupDto.java} | 6 +-- src/main/java/com/mkruchok/entity/Device.java | 16 ++++++- .../com/mkruchok/entity/DevicesGroup.java | 46 +++++++++++++++++++ src/main/java/com/mkruchok/entity/Hub.java | 20 +++++--- .../com/mkruchok/entity/Notification.java | 5 -- .../java/com/mkruchok/entity/Permission.java | 43 +++++++---------- src/main/java/com/mkruchok/entity/Rex.java | 2 - src/main/java/com/mkruchok/entity/User.java | 16 ++++--- .../entity/{Group.java => UsersGroup.java} | 19 +++----- .../com/mkruchok/mapper/DeviceMapper.java | 5 +- .../mkruchok/mapper/DevicesGroupMapper.java | 21 +++++++++ .../java/com/mkruchok/mapper/GroupMapper.java | 25 ---------- .../java/com/mkruchok/mapper/HubMapper.java | 2 +- .../mkruchok/mapper/NotificationMapper.java | 4 +- .../com/mkruchok/mapper/PermissionMapper.java | 8 ++-- .../java/com/mkruchok/mapper/RexMapper.java | 2 +- .../java/com/mkruchok/mapper/UserMapper.java | 10 ++-- .../com/mkruchok/mapper/UsersGroupMapper.java | 27 +++++++++++ .../repository/DevicesGroupRepository.java | 10 ++++ ...ository.java => UsersGroupRepository.java} | 4 +- .../mkruchok/service/DevicesGroupService.java | 19 ++++++++ .../com/mkruchok/service/GroupService.java | 19 -------- .../mkruchok/service/UsersGroupService.java | 19 ++++++++ 39 files changed, 348 insertions(+), 176 deletions(-) create mode 100644 spotbugs-exclude.xml create mode 100644 src/main/java/com/mkruchok/controller/DevicesGroupController.java delete mode 100644 src/main/java/com/mkruchok/controller/GroupController.java create mode 100644 src/main/java/com/mkruchok/controller/UsersGroupController.java create mode 100644 src/main/java/com/mkruchok/dto/DevicesGroupDto.java rename src/main/java/com/mkruchok/dto/{GroupDto.java => UsersGroupDto.java} (78%) create mode 100644 src/main/java/com/mkruchok/entity/DevicesGroup.java rename src/main/java/com/mkruchok/entity/{Group.java => UsersGroup.java} (78%) create mode 100644 src/main/java/com/mkruchok/mapper/DevicesGroupMapper.java delete mode 100644 src/main/java/com/mkruchok/mapper/GroupMapper.java create mode 100644 src/main/java/com/mkruchok/mapper/UsersGroupMapper.java create mode 100644 src/main/java/com/mkruchok/repository/DevicesGroupRepository.java rename src/main/java/com/mkruchok/repository/{GroupRepository.java => UsersGroupRepository.java} (57%) create mode 100644 src/main/java/com/mkruchok/service/DevicesGroupService.java delete mode 100644 src/main/java/com/mkruchok/service/GroupService.java create mode 100644 src/main/java/com/mkruchok/service/UsersGroupService.java diff --git a/pom.xml b/pom.xml index d3234db..72480de 100644 --- a/pom.xml +++ b/pom.xml @@ -113,6 +113,11 @@ spring-boot-starter-test test + + com.github.spotbugs + spotbugs + 4.7.0 + @@ -142,14 +147,6 @@ com.github.spotbugs spotbugs-maven-plugin 4.4.1 - - - - com.github.spotbugs - spotbugs - 4.7.0 - - org.apache.maven.plugins @@ -183,6 +180,14 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.4.1 + + spotbugs-exclude.xml + + org.apache.maven.plugins maven-checkstyle-plugin diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml new file mode 100644 index 0000000..897861d --- /dev/null +++ b/spotbugs-exclude.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/mkruchok/controller/DeviceController.java b/src/main/java/com/mkruchok/controller/DeviceController.java index edd48bc..2b56ac9 100644 --- a/src/main/java/com/mkruchok/controller/DeviceController.java +++ b/src/main/java/com/mkruchok/controller/DeviceController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@RequestMapping(value = "/devices") +@RequestMapping(value = "/device") @AllArgsConstructor @RestController public class DeviceController extends AbstractController { diff --git a/src/main/java/com/mkruchok/controller/DevicesGroupController.java b/src/main/java/com/mkruchok/controller/DevicesGroupController.java new file mode 100644 index 0000000..d2535d8 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/DevicesGroupController.java @@ -0,0 +1,30 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.DevicesGroupDto; +import com.mkruchok.entity.DevicesGroup; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.DevicesGroupMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.DevicesGroupService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/devices_group") +@AllArgsConstructor +@RestController +public class DevicesGroupController + extends AbstractController { + private final DevicesGroupService devicesGroupService; + private final DevicesGroupMapper devicesGroupMapper; + + @Override + protected AbstractService getService() { + return devicesGroupService; + } + + @Override + protected AbstractMapper getMapper() { + return devicesGroupMapper; + } +} diff --git a/src/main/java/com/mkruchok/controller/GroupController.java b/src/main/java/com/mkruchok/controller/GroupController.java deleted file mode 100644 index 4f2a670..0000000 --- a/src/main/java/com/mkruchok/controller/GroupController.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.mkruchok.controller; - -import com.mkruchok.dto.GroupDto; -import com.mkruchok.entity.Group; -import com.mkruchok.mapper.AbstractMapper; -import com.mkruchok.mapper.GroupMapper; -import com.mkruchok.service.AbstractService; -import com.mkruchok.service.GroupService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RequestMapping(value = "/groups") -@AllArgsConstructor -@RestController -public class GroupController extends AbstractController { - private final GroupService groupService; - private final GroupMapper groupMapper; - - @Override - protected AbstractService getService() { - return groupService; - } - - @Override - protected AbstractMapper getMapper() { - return groupMapper; - } -} diff --git a/src/main/java/com/mkruchok/controller/HubController.java b/src/main/java/com/mkruchok/controller/HubController.java index 99e7e8c..5def569 100644 --- a/src/main/java/com/mkruchok/controller/HubController.java +++ b/src/main/java/com/mkruchok/controller/HubController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@RequestMapping(value = "/hubs") +@RequestMapping(value = "/hub") @AllArgsConstructor @RestController public class HubController extends AbstractController { diff --git a/src/main/java/com/mkruchok/controller/NotificationController.java b/src/main/java/com/mkruchok/controller/NotificationController.java index 3ad2865..d82bc84 100644 --- a/src/main/java/com/mkruchok/controller/NotificationController.java +++ b/src/main/java/com/mkruchok/controller/NotificationController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@RequestMapping(value = "/notifications") +@RequestMapping(value = "/notification") @AllArgsConstructor @RestController public class NotificationController diff --git a/src/main/java/com/mkruchok/controller/PermissionController.java b/src/main/java/com/mkruchok/controller/PermissionController.java index 3e0a758..c3f7fd1 100644 --- a/src/main/java/com/mkruchok/controller/PermissionController.java +++ b/src/main/java/com/mkruchok/controller/PermissionController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@RequestMapping(value = "/permissions") +@RequestMapping(value = "/permission") @AllArgsConstructor @RestController public class PermissionController extends AbstractController { diff --git a/src/main/java/com/mkruchok/controller/RexController.java b/src/main/java/com/mkruchok/controller/RexController.java index 79bf31c..48689f2 100644 --- a/src/main/java/com/mkruchok/controller/RexController.java +++ b/src/main/java/com/mkruchok/controller/RexController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@RequestMapping(value = "/rexes") +@RequestMapping(value = "/rex") @AllArgsConstructor @RestController public class RexController extends AbstractController { diff --git a/src/main/java/com/mkruchok/controller/UserController.java b/src/main/java/com/mkruchok/controller/UserController.java index bc8a532..a7371a9 100644 --- a/src/main/java/com/mkruchok/controller/UserController.java +++ b/src/main/java/com/mkruchok/controller/UserController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -@RequestMapping(value = "/users") +@RequestMapping(value = "/user") @AllArgsConstructor @RestController public class UserController extends AbstractController { diff --git a/src/main/java/com/mkruchok/controller/UsersGroupController.java b/src/main/java/com/mkruchok/controller/UsersGroupController.java new file mode 100644 index 0000000..b3d4ff3 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/UsersGroupController.java @@ -0,0 +1,29 @@ +package com.mkruchok.controller; + +import com.mkruchok.dto.UsersGroupDto; +import com.mkruchok.entity.UsersGroup; +import com.mkruchok.mapper.AbstractMapper; +import com.mkruchok.mapper.UsersGroupMapper; +import com.mkruchok.service.AbstractService; +import com.mkruchok.service.UsersGroupService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(value = "/users_group") +@AllArgsConstructor +@RestController +public class UsersGroupController extends AbstractController { + private final UsersGroupService usersGroupService; + private final UsersGroupMapper usersGroupMapper; + + @Override + protected AbstractService getService() { + return usersGroupService; + } + + @Override + protected AbstractMapper getMapper() { + return usersGroupMapper; + } +} diff --git a/src/main/java/com/mkruchok/dto/DeviceDto.java b/src/main/java/com/mkruchok/dto/DeviceDto.java index 14bcebd..923fcd8 100644 --- a/src/main/java/com/mkruchok/dto/DeviceDto.java +++ b/src/main/java/com/mkruchok/dto/DeviceDto.java @@ -25,6 +25,6 @@ public class DeviceDto { private String hubModel; private Integer notificationsCounter; - + private String devicesGroupName; } diff --git a/src/main/java/com/mkruchok/dto/DevicesGroupDto.java b/src/main/java/com/mkruchok/dto/DevicesGroupDto.java new file mode 100644 index 0000000..81dea08 --- /dev/null +++ b/src/main/java/com/mkruchok/dto/DevicesGroupDto.java @@ -0,0 +1,20 @@ +package com.mkruchok.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(of = "id") +@Builder(builderClassName = "DevicesGroupBuilder") +public class DevicesGroupDto { + private Integer id; + private String name; + + private Integer devicesCounter; +} diff --git a/src/main/java/com/mkruchok/dto/PermissionDto.java b/src/main/java/com/mkruchok/dto/PermissionDto.java index 66d4339..2d81a5d 100644 --- a/src/main/java/com/mkruchok/dto/PermissionDto.java +++ b/src/main/java/com/mkruchok/dto/PermissionDto.java @@ -13,8 +13,9 @@ public class PermissionDto { private Integer id; private String name; - private String permissionDescription; - private Integer permissionHasUsersCounter; - private Integer permissionHasGroupsCounter; + private String hubModel; + private String userName; + private String usersGroupName; + private String deviceModel; } diff --git a/src/main/java/com/mkruchok/dto/RexDto.java b/src/main/java/com/mkruchok/dto/RexDto.java index 9e2e824..7b4456a 100644 --- a/src/main/java/com/mkruchok/dto/RexDto.java +++ b/src/main/java/com/mkruchok/dto/RexDto.java @@ -15,5 +15,5 @@ public class RexDto { private String name; private String range; - private String hubRexModel; + private String rexHubModel; } diff --git a/src/main/java/com/mkruchok/dto/UserDto.java b/src/main/java/com/mkruchok/dto/UserDto.java index 56a6694..12c0f5d 100644 --- a/src/main/java/com/mkruchok/dto/UserDto.java +++ b/src/main/java/com/mkruchok/dto/UserDto.java @@ -13,13 +13,13 @@ @Builder(builderClassName = "UserBuilder") public class UserDto { private Integer id; - private Integer groupId; private String email; - private Timestamp dateCreated; - private String name; private String password; + private Timestamp dateCreated; + private String userName; + private Integer usersGroupId; private String groupName; private Integer userHasHubsCounter; - private Integer userHasPermissionsCounter; + private Integer permissionsCounter; } diff --git a/src/main/java/com/mkruchok/dto/GroupDto.java b/src/main/java/com/mkruchok/dto/UsersGroupDto.java similarity index 78% rename from src/main/java/com/mkruchok/dto/GroupDto.java rename to src/main/java/com/mkruchok/dto/UsersGroupDto.java index f42c0b9..a3df950 100644 --- a/src/main/java/com/mkruchok/dto/GroupDto.java +++ b/src/main/java/com/mkruchok/dto/UsersGroupDto.java @@ -11,8 +11,8 @@ @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(of = "id") -@Builder(builderClassName = "GroupBuilder") -public class GroupDto { +@Builder(builderClassName = "UsersGroupBuilder") +public class UsersGroupDto { private Integer id; private String name; private String groupDescription; @@ -20,5 +20,5 @@ public class GroupDto { private String groupHubModel; private Integer usersCounter; - private Integer groupHasPermissionsCounter; + private Integer permissionsCounter; } diff --git a/src/main/java/com/mkruchok/entity/Device.java b/src/main/java/com/mkruchok/entity/Device.java index 68f8285..7965e56 100644 --- a/src/main/java/com/mkruchok/entity/Device.java +++ b/src/main/java/com/mkruchok/entity/Device.java @@ -1,6 +1,5 @@ package com.mkruchok.entity; - import java.sql.Timestamp; import java.util.Collection; import javax.persistence.CascadeType; @@ -26,6 +25,7 @@ import org.hibernate.annotations.LazyCollectionOption; @Table(name = "device") + @AllArgsConstructor @NoArgsConstructor @ToString @@ -56,11 +56,15 @@ public class Device { @ManyToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "hub_id", referencedColumnName = "id") private Hub hubId; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "devices_group_id", + referencedColumnName = "id") + private DevicesGroup devicesGroupId; + @OrderColumn @LazyCollection(LazyCollectionOption.FALSE) @OneToMany(mappedBy = "deviceId", @@ -68,4 +72,12 @@ public class Device { fetch = FetchType.LAZY) @ToString.Exclude private Collection notifications; + + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "deviceId", + fetch = FetchType.LAZY) + @ToString.Exclude + private Collection permissions; + } diff --git a/src/main/java/com/mkruchok/entity/DevicesGroup.java b/src/main/java/com/mkruchok/entity/DevicesGroup.java new file mode 100644 index 0000000..79f9ebe --- /dev/null +++ b/src/main/java/com/mkruchok/entity/DevicesGroup.java @@ -0,0 +1,46 @@ +package com.mkruchok.entity; + + +import java.util.Collection; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.OrderColumn; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Table(name = "devices_group") + +@AllArgsConstructor +@ToString +@EqualsAndHashCode(of = "id") +@Getter +@Setter +@Entity +@NoArgsConstructor +public class DevicesGroup { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + @Column(name = "group_name", + length = MagicNumber.L45) + private String name; + @OrderColumn + @OneToMany(mappedBy = "devicesGroupId", + cascade = CascadeType.ALL, + fetch = FetchType.LAZY) + @ToString.Exclude + private Collection devices; + +} diff --git a/src/main/java/com/mkruchok/entity/Hub.java b/src/main/java/com/mkruchok/entity/Hub.java index ffbea4f..0d07d86 100644 --- a/src/main/java/com/mkruchok/entity/Hub.java +++ b/src/main/java/com/mkruchok/entity/Hub.java @@ -10,6 +10,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.OrderColumn; @@ -34,6 +36,14 @@ @Setter @Entity public class Hub { + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @ManyToMany + @JoinTable(name = "user_has_hub", + joinColumns = @JoinColumn(name = "hub_id"), + inverseJoinColumns = @JoinColumn(name = "user_id")) + @ToString.Exclude + Collection hubHasUsers; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @@ -72,7 +82,7 @@ public class Hub { cascade = CascadeType.ALL, fetch = FetchType.LAZY) @ToString.Exclude - private Collection groups; + private Collection usersGroups; @OrderColumn @OneToMany(mappedBy = "hubRexId", cascade = CascadeType.ALL, @@ -98,12 +108,8 @@ public class Hub { @OrderColumn @LazyCollection(LazyCollectionOption.FALSE) - @ManyToMany(mappedBy = "userHasHubs", - cascade = CascadeType.ALL) + @OneToMany(mappedBy = "hubId") @ToString.Exclude - private Collection hubHasUsers; + private Collection permissions; - public Hub(String s) { - this.model = s; - } } diff --git a/src/main/java/com/mkruchok/entity/Notification.java b/src/main/java/com/mkruchok/entity/Notification.java index 8aba9dd..c322022 100644 --- a/src/main/java/com/mkruchok/entity/Notification.java +++ b/src/main/java/com/mkruchok/entity/Notification.java @@ -1,7 +1,5 @@ package com.mkruchok.entity; - -import com.fasterxml.jackson.annotation.JsonInclude; import java.sql.Timestamp; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -26,7 +24,6 @@ @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(of = "id") -@JsonInclude(JsonInclude.Include.NON_NULL) @Getter @Setter @ToString @@ -45,13 +42,11 @@ public class Notification { @ManyToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "device_id", referencedColumnName = "id") private Device deviceId; @ManyToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "hub_id", referencedColumnName = "id") private Hub hubNotificationId; diff --git a/src/main/java/com/mkruchok/entity/Permission.java b/src/main/java/com/mkruchok/entity/Permission.java index fe15117..683b5bf 100644 --- a/src/main/java/com/mkruchok/entity/Permission.java +++ b/src/main/java/com/mkruchok/entity/Permission.java @@ -1,8 +1,5 @@ package com.mkruchok.entity; - -import java.util.HashSet; -import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -10,9 +7,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.OrderColumn; +import javax.persistence.ManyToOne; import javax.persistence.Table; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; @@ -20,8 +15,6 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; @Table(name = "permission") @@ -41,23 +34,21 @@ public class Permission { @Column(name = "permission_name", length = MagicNumber.L45) private String name; - @Column(name = "permission_description", - length = MagicNumber.L45) - private String permissionDescription; - - @OrderColumn - @ManyToMany(mappedBy = "userHasPermissions", - cascade = CascadeType.ALL) - @LazyCollection(LazyCollectionOption.FALSE) - @ToString.Exclude - private Set permissionHasUsers = new HashSet<>(); - @OrderColumn - @ManyToMany(cascade = CascadeType.ALL) - @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "group_has_permission", - joinColumns = @JoinColumn(name = "permission_id"), - inverseJoinColumns = @JoinColumn(name = "group_id")) - @ToString.Exclude - private Set permissionHasGroups = new HashSet<>(); + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "hub_id", + referencedColumnName = "id") + private Hub hubId; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "user_id", + referencedColumnName = "id") + private User userId; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "group_id", + referencedColumnName = "id") + private UsersGroup usersGroupId; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name = "device_id", + referencedColumnName = "id") + private Device deviceId; } diff --git a/src/main/java/com/mkruchok/entity/Rex.java b/src/main/java/com/mkruchok/entity/Rex.java index bcc876c..28322e7 100644 --- a/src/main/java/com/mkruchok/entity/Rex.java +++ b/src/main/java/com/mkruchok/entity/Rex.java @@ -1,6 +1,5 @@ package com.mkruchok.entity; - import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -41,7 +40,6 @@ public class Rex { @ManyToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "hub_id", referencedColumnName = "id") private Hub hubRexId; diff --git a/src/main/java/com/mkruchok/entity/User.java b/src/main/java/com/mkruchok/entity/User.java index 23587d7..7f60429 100644 --- a/src/main/java/com/mkruchok/entity/User.java +++ b/src/main/java/com/mkruchok/entity/User.java @@ -13,6 +13,7 @@ import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; import javax.persistence.OrderColumn; import javax.persistence.Table; import lombok.AllArgsConstructor; @@ -52,9 +53,10 @@ public class User { length = MagicNumber.L45) private String name; @ManyToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "group_id", + @JoinColumn(name = "users_group_id", referencedColumnName = "id") - private Group groupId; + private UsersGroup usersGroupId; + @OrderColumn @ManyToMany(cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) @JoinTable(name = "user_has_hub", @@ -63,11 +65,11 @@ public class User { @ToString.Exclude private Collection userHasHubs; @OrderColumn - @ManyToMany(cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "user_has_permission", - joinColumns = @JoinColumn(name = "user_id"), - inverseJoinColumns = @JoinColumn(name = "permission_id")) + @OneToMany(mappedBy = "userId", + cascade = CascadeType.ALL) @ToString.Exclude - private Collection userHasPermissions; + private Collection permissions; + + } diff --git a/src/main/java/com/mkruchok/entity/Group.java b/src/main/java/com/mkruchok/entity/UsersGroup.java similarity index 78% rename from src/main/java/com/mkruchok/entity/Group.java rename to src/main/java/com/mkruchok/entity/UsersGroup.java index 5263fa3..fdb9f1e 100644 --- a/src/main/java/com/mkruchok/entity/Group.java +++ b/src/main/java/com/mkruchok/entity/UsersGroup.java @@ -1,6 +1,5 @@ package com.mkruchok.entity; - import java.util.Collection; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -10,8 +9,6 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OrderColumn; @@ -25,8 +22,8 @@ import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; +@Table(name = "users_group") -@Table(name = "hub_group") @AllArgsConstructor @ToString @EqualsAndHashCode(of = "id") @@ -34,7 +31,7 @@ @Setter @Entity @NoArgsConstructor -public class Group { +public class UsersGroup { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @@ -46,23 +43,19 @@ public class Group { length = MagicNumber.L150) private String groupDescription; @ManyToOne(cascade = CascadeType.MERGE) - @JoinColumn(name = "hub_id", referencedColumnName = "id") private Hub hubGroupId; @OrderColumn - @OneToMany(mappedBy = "groupId", + @OneToMany(mappedBy = "usersGroupId", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @ToString.Exclude private Collection users; @OrderColumn - @ManyToMany(cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) - @JoinTable(name = "group_has_permission", - joinColumns = @JoinColumn(name = "group_id"), - inverseJoinColumns = @JoinColumn(name = "permission_id")) + @OneToMany(mappedBy = "usersGroupId") @ToString.Exclude - private Collection groupHasPermissions; -} + private Collection permissions; +} diff --git a/src/main/java/com/mkruchok/mapper/DeviceMapper.java b/src/main/java/com/mkruchok/mapper/DeviceMapper.java index 3356faf..5a958dd 100644 --- a/src/main/java/com/mkruchok/mapper/DeviceMapper.java +++ b/src/main/java/com/mkruchok/mapper/DeviceMapper.java @@ -20,7 +20,10 @@ public DeviceDto mapObjectToDto(Device device) { .warrantyEndTime(device.getWarrantyEndTime()) .onBattery(device.getOnBattery()) .hubModel(device.getHubId().getModel()) - .notificationsCounter(device.getNotifications().size()); + .notificationsCounter( + device.getNotifications() == null ? null : device.getNotifications().size()) + .devicesGroupName( + device.getDevicesGroupId() == null ? null : device.getDevicesGroupId().getName()); return deviceDtoBuilder.build(); } diff --git a/src/main/java/com/mkruchok/mapper/DevicesGroupMapper.java b/src/main/java/com/mkruchok/mapper/DevicesGroupMapper.java new file mode 100644 index 0000000..3478b17 --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/DevicesGroupMapper.java @@ -0,0 +1,21 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.DevicesGroupDto; +import com.mkruchok.entity.DevicesGroup; +import org.springframework.stereotype.Component; + +@Component +public class DevicesGroupMapper extends AbstractMapper { + + @Override + public DevicesGroupDto mapObjectToDto(DevicesGroup devicesGroup) { + if (devicesGroup == null) { + return null; + } + DevicesGroupDto.DevicesGroupBuilder devicesGroupDtoBuilder = DevicesGroupDto.builder() + .id(devicesGroup.getId()) + .name(devicesGroup.getName()) + .devicesCounter(devicesGroup.getDevices().size()); + return devicesGroupDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/mapper/GroupMapper.java b/src/main/java/com/mkruchok/mapper/GroupMapper.java deleted file mode 100644 index 7e587f7..0000000 --- a/src/main/java/com/mkruchok/mapper/GroupMapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.mkruchok.mapper; - -import com.mkruchok.dto.GroupDto; -import com.mkruchok.entity.Group; -import org.springframework.stereotype.Component; - -@Component -public class GroupMapper extends AbstractMapper { - - @Override - public GroupDto mapObjectToDto(Group group) { - if (group == null) { - return null; - } - GroupDto.GroupBuilder groupDtoBuilder = GroupDto.builder() - .id(group.getId()) - .name(group.getName()) - .groupDescription(group.getGroupDescription()) - .groupHubModel(group.getHubGroupId().getModel()) - .groupHubId(group.getHubGroupId().getId()) - .usersCounter(group.getUsers().size()) - .groupHasPermissionsCounter(group.getGroupHasPermissions().size()); - return groupDtoBuilder.build(); - } -} diff --git a/src/main/java/com/mkruchok/mapper/HubMapper.java b/src/main/java/com/mkruchok/mapper/HubMapper.java index 8cae37f..4d0fd8e 100644 --- a/src/main/java/com/mkruchok/mapper/HubMapper.java +++ b/src/main/java/com/mkruchok/mapper/HubMapper.java @@ -23,7 +23,7 @@ public HubDto mapObjectToDto(Hub hub) { .devicesMax(hub.getDevicesMax()) .sirensMax(hub.getSirensMax()) .onBattery(hub.getOnBattery()) - .groupsCounter(hub.getGroups().size()) + .groupsCounter(hub.getUsersGroups().size()) .rexesCounter(hub.getRexes().size()) .notificationsCounter(hub.getNotifications().size()) .devicesCounter(hub.getDevices().size()) diff --git a/src/main/java/com/mkruchok/mapper/NotificationMapper.java b/src/main/java/com/mkruchok/mapper/NotificationMapper.java index 91baba9..082264d 100644 --- a/src/main/java/com/mkruchok/mapper/NotificationMapper.java +++ b/src/main/java/com/mkruchok/mapper/NotificationMapper.java @@ -17,8 +17,8 @@ public NotificationDto mapObjectToDto(Notification notification) { .timestamp(notification.getTimestamp()) .type(notification.getType()) .deviceModel( - notification.getDeviceId() == null ? "null" : notification.getDeviceId().getModel()) - .hubModel(notification.getHubNotificationId() == null ? "null" : + notification.getDeviceId() == null ? null : notification.getDeviceId().getModel()) + .hubModel(notification.getHubNotificationId() == null ? null : notification.getHubNotificationId().getModel()); return notificationDtoBuilder.build(); } diff --git a/src/main/java/com/mkruchok/mapper/PermissionMapper.java b/src/main/java/com/mkruchok/mapper/PermissionMapper.java index 9eae4ff..972a95b 100644 --- a/src/main/java/com/mkruchok/mapper/PermissionMapper.java +++ b/src/main/java/com/mkruchok/mapper/PermissionMapper.java @@ -15,9 +15,11 @@ public PermissionDto mapObjectToDto(Permission permission) { PermissionDto.PermissionBuilder permissionDtoBuilder = PermissionDto.builder() .id(permission.getId()) .name(permission.getName()) - .permissionDescription(permission.getPermissionDescription()) - .permissionHasUsersCounter(permission.getPermissionHasUsers().size()) - .permissionHasGroupsCounter(permission.getPermissionHasGroups().size()); + .hubModel(permission.getHubId() == null ? null : permission.getHubId().getModel()) + .userName(permission.getUserId() == null ? null : permission.getUserId().getName()) + .usersGroupName( + permission.getUsersGroupId() == null ? null : permission.getUsersGroupId().getName()) + .deviceModel(permission.getDeviceId() == null ? null : permission.getDeviceId().getModel()); return permissionDtoBuilder.build(); } } diff --git a/src/main/java/com/mkruchok/mapper/RexMapper.java b/src/main/java/com/mkruchok/mapper/RexMapper.java index 1a972e8..a9d4b01 100644 --- a/src/main/java/com/mkruchok/mapper/RexMapper.java +++ b/src/main/java/com/mkruchok/mapper/RexMapper.java @@ -16,7 +16,7 @@ public RexDto mapObjectToDto(Rex rex) { .id(rex.getId()) .name(rex.getName()) .range(rex.getRange()) - .hubRexModel(rex.getHubRexId().getModel()); + .rexHubModel(rex.getHubRexId() == null ? null : rex.getHubRexId().getModel()); return rexDtoBuilder.build(); } } diff --git a/src/main/java/com/mkruchok/mapper/UserMapper.java b/src/main/java/com/mkruchok/mapper/UserMapper.java index 998970a..68e5495 100644 --- a/src/main/java/com/mkruchok/mapper/UserMapper.java +++ b/src/main/java/com/mkruchok/mapper/UserMapper.java @@ -17,11 +17,11 @@ public UserDto mapObjectToDto(User user) { .email(user.getEmail()) .password(user.getPassword()) .dateCreated(user.getDateCreated()) - .name(user.getName()) - .groupId(user.getGroupId() == null ? null : user.getGroupId().getId()) - .groupName(user.getGroupId() == null ? "null" : user.getGroupId().getName()) - .userHasHubsCounter(user.getUserHasHubs().size()) - .userHasPermissionsCounter(user.getUserHasPermissions().size()); + .userName(user.getName()) + .usersGroupId(user.getUsersGroupId() == null ? null : user.getUsersGroupId().getId()) + .groupName(user.getUsersGroupId() == null ? null : user.getUsersGroupId().getName()) + .userHasHubsCounter(user.getUserHasHubs() == null ? null : user.getUserHasHubs().size()) + .permissionsCounter(user.getPermissions() == null ? null : user.getPermissions().size()); return userDtoBuilder.build(); } } diff --git a/src/main/java/com/mkruchok/mapper/UsersGroupMapper.java b/src/main/java/com/mkruchok/mapper/UsersGroupMapper.java new file mode 100644 index 0000000..3fd3dbd --- /dev/null +++ b/src/main/java/com/mkruchok/mapper/UsersGroupMapper.java @@ -0,0 +1,27 @@ +package com.mkruchok.mapper; + +import com.mkruchok.dto.UsersGroupDto; +import com.mkruchok.entity.UsersGroup; +import org.springframework.stereotype.Component; + +@Component +public class UsersGroupMapper extends AbstractMapper { + + @Override + public UsersGroupDto mapObjectToDto(UsersGroup usersGroup) { + if (usersGroup == null) { + return null; + } + UsersGroupDto.UsersGroupBuilder groupDtoBuilder = UsersGroupDto.builder() + .id(usersGroup.getId()) + .name(usersGroup.getName()) + .groupDescription(usersGroup.getGroupDescription()) + .groupHubId(usersGroup.getHubGroupId() == null ? null : usersGroup.getHubGroupId().getId()) + .groupHubModel( + usersGroup.getHubGroupId() == null ? null : usersGroup.getHubGroupId().getModel()) + .usersCounter(usersGroup.getUsers() == null ? null : usersGroup.getUsers().size()) + .permissionsCounter( + usersGroup.getPermissions() == null ? null : usersGroup.getPermissions().size()); + return groupDtoBuilder.build(); + } +} diff --git a/src/main/java/com/mkruchok/repository/DevicesGroupRepository.java b/src/main/java/com/mkruchok/repository/DevicesGroupRepository.java new file mode 100644 index 0000000..76c416d --- /dev/null +++ b/src/main/java/com/mkruchok/repository/DevicesGroupRepository.java @@ -0,0 +1,10 @@ +package com.mkruchok.repository; + +import com.mkruchok.entity.DevicesGroup; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DevicesGroupRepository extends JpaRepository { + +} diff --git a/src/main/java/com/mkruchok/repository/GroupRepository.java b/src/main/java/com/mkruchok/repository/UsersGroupRepository.java similarity index 57% rename from src/main/java/com/mkruchok/repository/GroupRepository.java rename to src/main/java/com/mkruchok/repository/UsersGroupRepository.java index f4f60f6..52bfafa 100644 --- a/src/main/java/com/mkruchok/repository/GroupRepository.java +++ b/src/main/java/com/mkruchok/repository/UsersGroupRepository.java @@ -1,10 +1,10 @@ package com.mkruchok.repository; -import com.mkruchok.entity.Group; +import com.mkruchok.entity.UsersGroup; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface GroupRepository extends JpaRepository { +public interface UsersGroupRepository extends JpaRepository { } diff --git a/src/main/java/com/mkruchok/service/DevicesGroupService.java b/src/main/java/com/mkruchok/service/DevicesGroupService.java new file mode 100644 index 0000000..0e759d8 --- /dev/null +++ b/src/main/java/com/mkruchok/service/DevicesGroupService.java @@ -0,0 +1,19 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.DevicesGroup; +import com.mkruchok.repository.DevicesGroupRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class DevicesGroupService extends AbstractService { + private DevicesGroupRepository devicesGroupRepository; + + @Override + protected JpaRepository getRepository() { + return devicesGroupRepository; + } + +} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/GroupService.java b/src/main/java/com/mkruchok/service/GroupService.java deleted file mode 100644 index 0efd98d..0000000 --- a/src/main/java/com/mkruchok/service/GroupService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.mkruchok.service; - -import com.mkruchok.entity.Group; -import com.mkruchok.repository.GroupRepository; -import lombok.AllArgsConstructor; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Service; - -@AllArgsConstructor -@Service -public class GroupService extends AbstractService { - private GroupRepository groupRepository; - - @Override - protected JpaRepository getRepository() { - return groupRepository; - } - -} \ No newline at end of file diff --git a/src/main/java/com/mkruchok/service/UsersGroupService.java b/src/main/java/com/mkruchok/service/UsersGroupService.java new file mode 100644 index 0000000..99dcf2e --- /dev/null +++ b/src/main/java/com/mkruchok/service/UsersGroupService.java @@ -0,0 +1,19 @@ +package com.mkruchok.service; + +import com.mkruchok.entity.UsersGroup; +import com.mkruchok.repository.UsersGroupRepository; +import lombok.AllArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@AllArgsConstructor +@Service +public class UsersGroupService extends AbstractService { + private UsersGroupRepository usersGroupRepository; + + @Override + protected JpaRepository getRepository() { + return usersGroupRepository; + } + +} \ No newline at end of file From 0e987d77781f7be0a7d034a0c05d0fbfb79243e4 Mon Sep 17 00:00:00 2001 From: Phlake Date: Wed, 10 Aug 2022 14:51:17 +0200 Subject: [PATCH 11/11] fixed dependencies --- pom.xml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 72480de..f33c513 100644 --- a/pom.xml +++ b/pom.xml @@ -118,6 +118,22 @@ spotbugs 4.7.0 + + com.puppycrawl.tools + checkstyle + 10.3.2 + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.3.0 + + @@ -136,7 +152,7 @@ com.puppycrawl.tools checkstyle - 10.2 + 10.3.2 @@ -166,6 +182,7 @@ org.springframework.boot spring-boot-maven-plugin + 2.7.0