From 3dc18647fa2bd9ad4f0d7f4e3c4bd02857c4a2ad Mon Sep 17 00:00:00 2001 From: Phlake Date: Sun, 15 May 2022 15:53:26 +0300 Subject: [PATCH 01/14] 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/14] 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/14] 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/14] 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/14] 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/14] 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/14] 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 39ab93a4e1b3ac69e7e274b295e35fabd56188ec Mon Sep 17 00:00:00 2001 From: Phlake Date: Tue, 24 May 2022 10:51:28 +0300 Subject: [PATCH 08/14] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a14753b..17c9dd6 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ *.html *.css *.rss +*.mvn *target From 93e36c66589765c5e0eead257443f167b86c6300 Mon Sep 17 00:00:00 2001 From: Phlake Date: Tue, 14 Jun 2022 14:22:05 +0300 Subject: [PATCH 09/14] big changes --- .../DevicesGroupController.java | 15 ++ .../implementation/GroupController.java | 15 -- .../implementation/UsersGroupController.java | 15 ++ .../dao/implementation/AbstractDaoImpl.java | 89 ++++---- .../dao/implementation/DevicesGroupDao.java | 9 + .../model/dao/implementation/GroupDao.java | 9 - .../dao/implementation/UsersGroupDao.java | 9 + .../com/mkruchok/model/entity/Device.java | 42 +++- .../mkruchok/model/entity/DevicesGroup.java | 44 ++++ .../java/com/mkruchok/model/entity/Hub.java | 53 +++-- .../mkruchok/model/entity/Notification.java | 9 +- .../com/mkruchok/model/entity/Permission.java | 44 ++-- .../java/com/mkruchok/model/entity/Rex.java | 9 +- .../java/com/mkruchok/model/entity/User.java | 23 +- .../entity/{Group.java => UsersGroup.java} | 34 +-- src/main/java/com/mkruchok/view/Menu.java | 10 +- src/main/java/com/mkruchok/view/View.java | 208 ++++++++++++------ src/main/resources/hibernate.cfg.xml | 7 +- 18 files changed, 408 insertions(+), 236 deletions(-) create mode 100644 src/main/java/com/mkruchok/controller/implementation/DevicesGroupController.java delete mode 100644 src/main/java/com/mkruchok/controller/implementation/GroupController.java create mode 100644 src/main/java/com/mkruchok/controller/implementation/UsersGroupController.java create mode 100644 src/main/java/com/mkruchok/model/dao/implementation/DevicesGroupDao.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/UsersGroupDao.java create mode 100644 src/main/java/com/mkruchok/model/entity/DevicesGroup.java rename src/main/java/com/mkruchok/model/entity/{Group.java => UsersGroup.java} (67%) diff --git a/src/main/java/com/mkruchok/controller/implementation/DevicesGroupController.java b/src/main/java/com/mkruchok/controller/implementation/DevicesGroupController.java new file mode 100644 index 0000000..4f1c80a --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/DevicesGroupController.java @@ -0,0 +1,15 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.DevicesGroupDao; +import com.mkruchok.model.entity.DevicesGroup; + + +public final class DevicesGroupController extends AbstractControllerImpl { + private final DevicesGroupDao devicesGroupDao = new DevicesGroupDao(); + + @Override + public AbstractDaoImpl getDao() { + return devicesGroupDao; + } +} 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/UsersGroupController.java b/src/main/java/com/mkruchok/controller/implementation/UsersGroupController.java new file mode 100644 index 0000000..2155c3e --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/UsersGroupController.java @@ -0,0 +1,15 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.model.dao.implementation.AbstractDaoImpl; +import com.mkruchok.model.dao.implementation.UsersGroupDao; +import com.mkruchok.model.entity.UsersGroup; + + +public final class UsersGroupController extends AbstractControllerImpl { + private final UsersGroupDao usersGroupDao = new UsersGroupDao(); + + @Override + public AbstractDaoImpl getDao() { + return usersGroupDao; + } +} 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 05dca8e..e4bfdcc 100644 --- a/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java +++ b/src/main/java/com/mkruchok/model/dao/implementation/AbstractDaoImpl.java @@ -2,7 +2,6 @@ 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; @@ -16,6 +15,7 @@ public abstract class AbstractDaoImpl implements AbstractDao { static final Logger LOGGER = LoggerFactory.getLogger(AbstractDaoImpl.class); protected final SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); private final Class currentClass; + Session session = sessionFactory.getCurrentSession(); public AbstractDaoImpl(Class currentClass) { this.currentClass = currentClass; @@ -24,17 +24,13 @@ public AbstractDaoImpl(Class 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)); + List entities; + session = sessionFactory.getCurrentSession(); + session.beginTransaction(); + entities = session.createQuery("from " + currentClass.getName()).getResultList(); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); } entities.forEach(e -> LOGGER.debug(e.toString())); return entities; @@ -43,63 +39,52 @@ public final Collection findAll() { @Override public final E findById(Integer id) { - E entity = null; + E 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)); + session = sessionFactory.getCurrentSession(); + session.beginTransaction(); + entity = session.get(currentClass, id); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); } 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)); + session = sessionFactory.getCurrentSession(); + session.beginTransaction(); + session.update(entity); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); } } @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)); + session = sessionFactory.getCurrentSession(); + session.beginTransaction(); + session.save(entity); + session.getTransaction().commit(); + if (session.isOpen()) { + session.close(); } } @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)); + 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(); + } + } } \ No newline at end of file diff --git a/src/main/java/com/mkruchok/model/dao/implementation/DevicesGroupDao.java b/src/main/java/com/mkruchok/model/dao/implementation/DevicesGroupDao.java new file mode 100644 index 0000000..4ed8d6c --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/DevicesGroupDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.DevicesGroup; + +public final class DevicesGroupDao extends AbstractDaoImpl { + public DevicesGroupDao() { + super(DevicesGroup.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/UsersGroupDao.java b/src/main/java/com/mkruchok/model/dao/implementation/UsersGroupDao.java new file mode 100644 index 0000000..e64e186 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/UsersGroupDao.java @@ -0,0 +1,9 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.entity.UsersGroup; + +public final class UsersGroupDao extends AbstractDaoImpl { + public UsersGroupDao() { + super(UsersGroup.class); + } +} diff --git a/src/main/java/com/mkruchok/model/entity/Device.java b/src/main/java/com/mkruchok/model/entity/Device.java index c5aa170..abad536 100644 --- a/src/main/java/com/mkruchok/model/entity/Device.java +++ b/src/main/java/com/mkruchok/model/entity/Device.java @@ -37,38 +37,60 @@ public class Device { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "model", length = 45) + @Column(name = "model", + length = 45) private String model; - @Column(name = "device_status", length = 45) - private String status; + @Column(name = "device_status", + length = 45) + private String deviceStatus; @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) + @Column(name = "on_battery", + length = 1) private Integer onBattery; @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @JoinColumn(name = "hub_id", + referencedColumnName = "id") private Hub hubId; + @ManyToOne + @JoinColumn(name = "devices_group_id", + referencedColumnName = "id") + private DevicesGroup devicesGroupId; + @OrderColumn @LazyCollection(LazyCollectionOption.FALSE) - @OneToMany(mappedBy = "deviceId", fetch = FetchType.LAZY) + @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) { + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "deviceId", + fetch = FetchType.LAZY) + @ToString.Exclude + private Collection permissions; + + public Device(String model, + String deviceStatus, + Timestamp serviceLifeEndTime, + Timestamp warrantyEndTime, + Integer onBattery, + Hub hubId, + DevicesGroup devicesGroupId) { this.model = model; - this.status = status; + this.deviceStatus = deviceStatus; this.serviceLifeEndTime = serviceLifeEndTime; this.warrantyEndTime = warrantyEndTime; this.onBattery = onBattery; this.hubId = hubId; + this.devicesGroupId = devicesGroupId; } } diff --git a/src/main/java/com/mkruchok/model/entity/DevicesGroup.java b/src/main/java/com/mkruchok/model/entity/DevicesGroup.java new file mode 100644 index 0000000..a30c346 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/DevicesGroup.java @@ -0,0 +1,44 @@ +package com.mkruchok.model.entity; + +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.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 = 45) + private String name; + @OrderColumn + @OneToMany(mappedBy = "devicesGroupId", + fetch = FetchType.LAZY) + @ToString.Exclude + private Collection devices; + + +} diff --git a/src/main/java/com/mkruchok/model/entity/Hub.java b/src/main/java/com/mkruchok/model/entity/Hub.java index 6dede25..0d9cd52 100644 --- a/src/main/java/com/mkruchok/model/entity/Hub.java +++ b/src/main/java/com/mkruchok/model/entity/Hub.java @@ -46,36 +46,48 @@ public class Hub { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "model", length = 45) + @Column(name = "model", + length = 45) private String model; - @Column(name = "hub_status", length = 45) + @Column(name = "hub_status", + length = 45) private String status; @CreationTimestamp - @Column(name = "service_life_end_time", length = 45) + @Column(name = "service_life_end_time", + length = 45) private Timestamp serviceLifeEndTime; @CreationTimestamp - @Column(name = "warranty_end_time", length = 45) + @Column(name = "warranty_end_time", + length = 45) private Timestamp warrantyEndTime; - @Column(name = "users_max", length = 45) + @Column(name = "users_max", + length = 45) private Integer usersMax; - @Column(name = "rooms_max", length = 45) + @Column(name = "rooms_max", + length = 45) private Integer roomsMax; - @Column(name = "devices_max", length = 45) + @Column(name = "devices_max", + length = 45) private Integer devicesMax; - @Column(name = "sirens_max", length = 45) + @Column(name = "sirens_max", + length = 45) 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", + fetch = FetchType.LAZY) @ToString.Exclude - private Collection groups; + private Collection userGroups; @OrderColumn - @OneToMany(mappedBy = "hubRexId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "hubRexId", + fetch = FetchType.LAZY) @ToString.Exclude private Collection rexes; @OrderColumn - @OneToMany(mappedBy = "hubNotificationId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "hubNotificationId", + fetch = FetchType.LAZY) @ToString.Exclude private Collection notifications; @OrderColumn @@ -83,11 +95,20 @@ public class Hub { @OneToMany(mappedBy = "hubId") @ToString.Exclude private Collection devices; + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "hubId") + @ToString.Exclude + private Collection permissions; - public Hub( - String model, String status, Timestamp serviceLifeEndTime, + public Hub(String model, + String status, + Timestamp serviceLifeEndTime, Timestamp warrantyEndTime, - Integer usersMax, Integer roomsMax, Integer devicesMax, Integer sirensMax, + Integer usersMax, + Integer roomsMax, + Integer devicesMax, + Integer sirensMax, Integer onBattery) { this.model = model; this.status = status; diff --git a/src/main/java/com/mkruchok/model/entity/Notification.java b/src/main/java/com/mkruchok/model/entity/Notification.java index 6897500..84b4227 100644 --- a/src/main/java/com/mkruchok/model/entity/Notification.java +++ b/src/main/java/com/mkruchok/model/entity/Notification.java @@ -35,16 +35,19 @@ public class Notification { @CreationTimestamp @Column(name = "timestamp") private Timestamp timestamp; - @Column(name = "notification_type", length = 45) + @Column(name = "notification_type", + length = 45) private String type; @ManyToOne - @JoinColumn(name = "device_id", referencedColumnName = "id") + @JoinColumn(name = "device_id", + referencedColumnName = "id") private Device deviceId; @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @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 90da9a4..6832b71 100644 --- a/src/main/java/com/mkruchok/model/entity/Permission.java +++ b/src/main/java/com/mkruchok/model/entity/Permission.java @@ -1,15 +1,12 @@ package com.mkruchok.model.entity; -import java.util.Collection; import javax.persistence.Column; import javax.persistence.Entity; 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.OrderColumn; +import javax.persistence.ManyToOne; import javax.persistence.Table; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; @@ -17,8 +14,6 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; -import org.hibernate.annotations.LazyCollection; -import org.hibernate.annotations.LazyCollectionOption; @Table(name = "permission") @@ -35,25 +30,24 @@ public class Permission { @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; - @Column(name = "permission_name", length = 45) + @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; + @ManyToOne + @JoinColumn(name = "hub_id", + referencedColumnName = "id") + private Hub hubId; + @ManyToOne + @JoinColumn(name = "user_id", + referencedColumnName = "id") + private User userId; + @ManyToOne + @JoinColumn(name = "group_id", + referencedColumnName = "id") + private UsersGroup groupId; + @ManyToOne + @JoinColumn(name = "device_id", + referencedColumnName = "id") + private Device deviceId; } diff --git a/src/main/java/com/mkruchok/model/entity/Rex.java b/src/main/java/com/mkruchok/model/entity/Rex.java index 351610d..3e213c9 100644 --- a/src/main/java/com/mkruchok/model/entity/Rex.java +++ b/src/main/java/com/mkruchok/model/entity/Rex.java @@ -30,14 +30,17 @@ public class Rex { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "rex_name", length = 45) + @Column(name = "rex_name", + length = 45) private String name; - @Column(name = "rex_range", length = 45) + @Column(name = "rex_range", + length = 45) private String range; @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @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 83130be..5f66a8c 100644 --- a/src/main/java/com/mkruchok/model/entity/User.java +++ b/src/main/java/com/mkruchok/model/entity/User.java @@ -12,6 +12,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; @@ -30,7 +31,6 @@ @AllArgsConstructor @ToString @EqualsAndHashCode(of = "id") - @Getter @Setter @Entity @@ -39,18 +39,22 @@ public class User { @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; - @Column(name = "email", length = 45) + @Column(name = "email", + length = 45) private String email; - @Column(name = "user_password", length = 45) + @Column(name = "user_password", + length = 45) private String password; @CreationTimestamp @Column(name = "date_created") private Timestamp dateCreated; - @Column(name = "user_name", length = 45) + @Column(name = "user_name", + length = 45) private String name; @ManyToOne - @JoinColumn(name = "group_id", referencedColumnName = "id") - private Group groupId; + @JoinColumn(name = "users_group_id", + referencedColumnName = "id") + private UsersGroup groupId; @OrderColumn @ManyToMany @LazyCollection(LazyCollectionOption.FALSE) @@ -60,13 +64,10 @@ public class User { @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")) + @OneToMany(mappedBy = "userId") @ToString.Exclude - private Collection userHasPermissions; + private Collection permissions; } diff --git a/src/main/java/com/mkruchok/model/entity/Group.java b/src/main/java/com/mkruchok/model/entity/UsersGroup.java similarity index 67% rename from src/main/java/com/mkruchok/model/entity/Group.java rename to src/main/java/com/mkruchok/model/entity/UsersGroup.java index b188916..7927587 100644 --- a/src/main/java/com/mkruchok/model/entity/Group.java +++ b/src/main/java/com/mkruchok/model/entity/UsersGroup.java @@ -8,8 +8,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; @@ -23,7 +21,7 @@ import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; -@Table(name = "hub_group") +@Table(name = "users_group") @AllArgsConstructor @ToString @@ -32,32 +30,34 @@ @Setter @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; +public class UsersGroup { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; - @Column(name = "group_name", length = 45) + @Column(name = "group_name", + length = 45) private String name; - @Column(name = "group_description", length = 150) + @Column(name = "group_description", + length = 150) private String groupDescription; @ManyToOne - @JoinColumn(name = "hub_id", referencedColumnName = "id") + @JoinColumn(name = "hub_id", + referencedColumnName = "id") private Hub hubGroupId; @OrderColumn - @OneToMany(mappedBy = "groupId", fetch = FetchType.LAZY) + @OneToMany(mappedBy = "groupId", + fetch = FetchType.LAZY) @ToString.Exclude private Collection users; + @OrderColumn + @LazyCollection(LazyCollectionOption.FALSE) + @OneToMany(mappedBy = "groupId") + @ToString.Exclude + private Collection permissions; + - public Group(String name, String description, Hub hubId) { + public UsersGroup(String name, String description, Hub hubId) { this.name = name; this.groupDescription = description; this.hubGroupId = hubId; diff --git a/src/main/java/com/mkruchok/view/Menu.java b/src/main/java/com/mkruchok/view/Menu.java index cf4871e..8d5c0f7 100644 --- a/src/main/java/com/mkruchok/view/Menu.java +++ b/src/main/java/com/mkruchok/view/Menu.java @@ -17,11 +17,11 @@ public void displayMenu() { + "| 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:" + + "| 5 | userGroup | 5 | DELETE ROW |\n" + + "| 6 | devicesGroup | 5 | DELETE ROW |\n" + + "| 7 | permission | | |\n" + + "| 8 | 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 8d5575e..c0e6683 100644 --- a/src/main/java/com/mkruchok/view/View.java +++ b/src/main/java/com/mkruchok/view/View.java @@ -1,19 +1,21 @@ package com.mkruchok.view; import com.mkruchok.controller.implementation.DeviceController; -import com.mkruchok.controller.implementation.GroupController; +import com.mkruchok.controller.implementation.DevicesGroupController; 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.controller.implementation.UsersGroupController; import com.mkruchok.model.entity.Device; -import com.mkruchok.model.entity.Group; +import com.mkruchok.model.entity.DevicesGroup; 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 com.mkruchok.model.entity.UsersGroup; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; @@ -32,7 +34,8 @@ public final class View { 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 UsersGroupController usersGroupController = new UsersGroupController(); + private final DevicesGroupController devicesGroupController = new DevicesGroupController(); private final PermissionController permissionController = new PermissionController(); private final UserController userController = new UserController(); private final RexController rexController = new RexController(); @@ -64,23 +67,29 @@ public View() { 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("51", this::getAllUsersGroups); + menu.put("52", this::getUsersGroupById); + menu.put("53", this::createUsersGroup); + menu.put("54", this::updateUsersGroup); + menu.put("55", this::deleteUsersGroup); - 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("61", this::getAllDevicesGroups); + menu.put("62", this::getDevicesGroupById); + menu.put("63", this::createDevicesGroup); + menu.put("64", this::updateDevicesGroup); + menu.put("65", this::deleteDevicesGroup); - 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); + menu.put("71", this::getAllPermissions); + menu.put("72", this::getPermissionById); + menu.put("73", this::createPermission); + menu.put("74", this::updatePermission); + menu.put("75", this::deletePermission); + + menu.put("81", this::getAllRexes); + menu.put("82", this::getRexById); + menu.put("83", this::createRex); + menu.put("84", this::updateRex); + menu.put("85", this::deleteRex); } public void show() { @@ -116,7 +125,7 @@ private User getUserInputs(Integer create) throws NullPointerException { LOGGER.debug("Enter name: "); final String name = SCANNER.next(); Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); - Group groupEntity = null; + UsersGroup groupEntity = null; final Collection userHubs = new ArrayList<>(); final Collection userPermissions = new ArrayList<>(); if (create == 0) { @@ -129,10 +138,16 @@ private User getUserInputs(Integer create) throws NullPointerException { final Integer permissionId = SCANNER.nextInt(); userPermissions.add(permissionController.findById(permissionId)); groupEntity = Objects.equals(groupId, "null") ? null : - groupController.findById(Integer.valueOf(groupId)); + usersGroupController.findById(Integer.valueOf(groupId)); } - return new User(null, email, password, dateCreated, name, groupEntity, - userHubs, userPermissions); + return new User(null, + email, + password, + dateCreated, + name, + groupEntity, + userHubs, + userPermissions); } private void createUser() { @@ -192,8 +207,15 @@ private Hub getHubInputs() { 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); + return new Hub(model, + status, + serviceLifeEndTime, + warrantyEndTime, + usersMax, + roomsMax, + devicesMax, + sirensMax, + onBattery); } private void createHub() { @@ -247,10 +269,19 @@ private Device getDeviceInputs() { 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); + int hubIdNull = SCANNER.nextInt(); + Hub hubEntity = hubIdNull == 0 ? null : hubController.findById(hubIdNull); + LOGGER.debug("Enter devices_group_id: "); + int groupIdNull = SCANNER.nextInt(); + DevicesGroup deviceEntity = + groupIdNull == 0 ? null : devicesGroupController.findById(groupIdNull); + return new Device(model, + status, + serviceLifeEndTime, + warrantyEndTime, + onBattery, + hubEntity, + deviceEntity); } private void createDevice() { @@ -298,13 +329,13 @@ private Notification getNotificationInputs() { 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)); + Integer deviceIdNull = SCANNER.nextInt(); + deviceIdNull = deviceIdNull == 0 ? null : deviceIdNull; + final Device deviceEntity = deviceController.findById(deviceIdNull); LOGGER.debug("\nEnter hub_id: "); - final String hubId = SCANNER.next(); - final Hub hubEntity = Objects.equals(hubId, "null") ? null : - hubController.findById(Integer.valueOf(hubId)); + Integer hubIdNull = SCANNER.nextInt(); + hubIdNull = hubIdNull == 0 ? null : hubIdNull; + final Hub hubEntity = hubController.findById(hubIdNull); return new Notification(null, timestamp, type, deviceEntity, hubEntity); } @@ -334,19 +365,19 @@ private void deleteNotification() { } - private void getAllGroups() { - groupController.findAll(); + private void getAllUsersGroups() { + usersGroupController.findAll(); showMenu.displayMenu(); } - private void getGroupById() { + private void getUsersGroupById() { LOGGER.debug("\nEnter ID: "); Integer id = SCANNER.nextInt(); - LOGGER.debug(groupController.findById(id).toString()); + LOGGER.debug(usersGroupController.findById(id).toString()); showMenu.displayMenu(); } - private Group getGroupInputs() { + private UsersGroup getUsersGroupInputs() { LOGGER.debug("\nEnter name: "); String name = SCANNER.next(); LOGGER.debug("\nEnter description: "); @@ -354,30 +385,74 @@ private Group getGroupInputs() { LOGGER.debug("Enter hub_id: "); Integer hubId = SCANNER.nextInt(); Hub hubEntity = hubController.findById(hubId); - return new Group(name, description, hubEntity); + return new UsersGroup(name, description, hubEntity); + } + + private void createUsersGroup() { + UsersGroup group = getUsersGroupInputs(); + usersGroupController.create(group); + LOGGER.debug("Group was added to the table."); + showMenu.displayMenu(); + } + + private void updateUsersGroup() { + LOGGER.debug("\nEnter id to update:"); + Integer id = SCANNER.nextInt(); + UsersGroup group = getUsersGroupInputs(); + group.setId(id); + usersGroupController.update(group.getId(), group); + LOGGER.debug("Updated group, id = " + id); + showMenu.displayMenu(); + } + + private void deleteUsersGroup() { + LOGGER.debug("\nEnter ID to delete group: "); + int id = SCANNER.nextInt(); + usersGroupController.delete(id); + LOGGER.debug("Deleted group, id = " + id); + showMenu.displayMenu(); + } + + + private void getAllDevicesGroups() { + devicesGroupController.findAll(); + showMenu.displayMenu(); + } + + private void getDevicesGroupById() { + LOGGER.debug("\nEnter ID: "); + Integer id = SCANNER.nextInt(); + LOGGER.debug(devicesGroupController.findById(id).toString()); + showMenu.displayMenu(); } - private void createGroup() { - Group group = getGroupInputs(); - groupController.create(group); + private DevicesGroup getDevicesGroupInputs() { + LOGGER.debug("\nEnter name: "); + String name = SCANNER.next(); + return new DevicesGroup(null, name, null); + } + + private void createDevicesGroup() { + DevicesGroup group = getDevicesGroupInputs(); + devicesGroupController.create(group); LOGGER.debug("Group was added to the table."); showMenu.displayMenu(); } - private void updateGroup() { + private void updateDevicesGroup() { LOGGER.debug("\nEnter id to update:"); Integer id = SCANNER.nextInt(); - Group group = getGroupInputs(); + DevicesGroup group = getDevicesGroupInputs(); group.setId(id); - groupController.update(group.getId(), group); + devicesGroupController.update(group.getId(), group); LOGGER.debug("Updated group, id = " + id); showMenu.displayMenu(); } - private void deleteGroup() { + private void deleteDevicesGroup() { LOGGER.debug("\nEnter ID to delete group: "); int id = SCANNER.nextInt(); - groupController.delete(id); + usersGroupController.delete(id); LOGGER.debug("Deleted group, id = " + id); showMenu.displayMenu(); } @@ -395,27 +470,26 @@ private void getPermissionById() { 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 Permission getPermissionInputs() { + LOGGER.debug("Enter permission_name: "); + final String name = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + int hubIdNull = SCANNER.nextInt(); + final Hub hubId = hubIdNull == 0 ? null : hubController.findById(hubIdNull); + LOGGER.debug("Enter user_id: "); + int userIdNull = SCANNER.nextInt(); + final User userId = userIdNull == 0 ? null : userController.findById(userIdNull); + LOGGER.debug("Enter group_id: "); + int groupIdNull = SCANNER.nextInt(); + final UsersGroup groupId = groupIdNull == 0 ? null : usersGroupController.findById(groupIdNull); + LOGGER.debug("Enter device_id: "); + int deviceIdNull = SCANNER.nextInt(); + Device deviceId = deviceIdNull == 0 ? null : deviceController.findById(deviceIdNull); + return new Permission(null, name, hubId, userId, groupId, deviceId); } private void createPermission() { - Permission permission = getPermissionInputs(1); + Permission permission = getPermissionInputs(); permissionController.create(permission); LOGGER.debug("Permission was added to the table."); showMenu.displayMenu(); @@ -424,7 +498,7 @@ private void createPermission() { private void updatePermission() { LOGGER.debug("\nEnter id to update: "); Integer id = SCANNER.nextInt(); - Permission permission = getPermissionInputs(0); + Permission permission = getPermissionInputs(); permission.setId(id); permissionController.update(permission.getId(), permission); LOGGER.debug("Updated permission, id = " + id); diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml index f8e3203..f53a139 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 @@ -12,7 +12,8 @@ - + + From fd1a476e6a903d0226917c5364a1bd2537f2c9c7 Mon Sep 17 00:00:00 2001 From: Phlake Date: Thu, 16 Jun 2022 15:20:48 +0300 Subject: [PATCH 10/14] minor changes --- pom.xml | 26 ++++++++++++++------------ spotbugs-exclude.xml | 11 +++++++++++ 2 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 spotbugs-exclude.xml diff --git a/pom.xml b/pom.xml index 3157e47..a55cef1 100644 --- a/pom.xml +++ b/pom.xml @@ -46,12 +46,16 @@ maven-project-info-reports-plugin 3.3.0 - org.apache.maven.plugins maven-pmd-plugin 3.13.0 + + com.github.spotbugs + spotbugs-maven-plugin + 4.4.1 + maven-compiler-plugin 3.5.1 @@ -78,12 +82,6 @@ hibernate-entitymanager 5.6.8.Final - - com.google.code.findbugs - annotations - 3.0.1 - provided - ch.qos.logback logback-classic @@ -94,16 +92,20 @@ checkstyle 10.2 + + com.github.spotbugs + spotbugs + 4.7.0 + - org.codehaus.mojo - findbugs-maven-plugin - 3.0.5 + com.github.spotbugs + spotbugs-maven-plugin + 4.4.1 - true - target/site + spotbugs-exclude.xml diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml new file mode 100644 index 0000000..6922061 --- /dev/null +++ b/spotbugs-exclude.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + From 18e4806e74d5f0f192ee3ed0d8afdef06f092877 Mon Sep 17 00:00:00 2001 From: Phlake Date: Thu, 16 Jun 2022 17:45:06 +0300 Subject: [PATCH 11/14] minor changes --- src/main/java/com/mkruchok/view/View.java | 35 +++++++++++------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java index c0e6683..873d69c 100644 --- a/src/main/java/com/mkruchok/view/View.java +++ b/src/main/java/com/mkruchok/view/View.java @@ -16,12 +16,12 @@ import com.mkruchok.model.entity.Rex; import com.mkruchok.model.entity.User; import com.mkruchok.model.entity.UsersGroup; +import java.nio.charset.StandardCharsets; 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; @@ -29,7 +29,7 @@ public final class View { static final Logger LOGGER = LoggerFactory.getLogger(View.class); - private static final Scanner SCANNER = new Scanner(System.in, "UTF-8"); + private static final Scanner SCANNER = new Scanner(System.in, StandardCharsets.UTF_8); private final Map menu = new LinkedHashMap<>(); private final HubController hubController = new HubController(); private final DeviceController deviceController = new DeviceController(); @@ -117,7 +117,7 @@ private void getUserById() { showMenu.displayMenu(); } - private User getUserInputs(Integer create) throws NullPointerException { + private User getUserInputs() throws NullPointerException { LOGGER.debug("Enter email: "); final String email = SCANNER.next(); LOGGER.debug("Enter password: "); @@ -125,21 +125,19 @@ private User getUserInputs(Integer create) throws NullPointerException { LOGGER.debug("Enter name: "); final String name = SCANNER.next(); Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); - UsersGroup groupEntity = null; + UsersGroup groupEntity; 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 : - usersGroupController.findById(Integer.valueOf(groupId)); - } + LOGGER.debug("Enter group id: "); + final int groupId = SCANNER.nextInt(); + LOGGER.debug("Enter hub id to add or skip (0): "); + final int hubId = SCANNER.nextInt(); + if (hubId != 0) userHubs.add(hubController.findById(hubId)); + LOGGER.debug("Enter permission id to add or skip(0): "); + final int permissionId = SCANNER.nextInt(); + if (permissionId != 0) userPermissions.add(permissionController.findById(permissionId)); + groupEntity = groupId == 0 ? null : usersGroupController.findById(groupId); + return new User(null, email, password, @@ -151,7 +149,7 @@ private User getUserInputs(Integer create) throws NullPointerException { } private void createUser() { - final User user = getUserInputs(1); + final User user = getUserInputs(); userController.create(user); LOGGER.debug("\nUser was added to the table.\n"); showMenu.displayMenu(); @@ -160,7 +158,7 @@ private void createUser() { private void updateUser() { LOGGER.debug("\nEnter id to update: "); final Integer id = SCANNER.nextInt(); - final User user = getUserInputs(0); + final User user = getUserInputs(); user.setId(id); userController.update(user.getId(), user); LOGGER.debug("Updated user, id = " + id); @@ -178,6 +176,7 @@ private void deleteUser() { private void getAllHubs() { hubController.findAll(); + showMenu.displayMenu(); } private void getHubById() { From 8ab79e8409299772479a5fbf570de0a91c8d0f5c Mon Sep 17 00:00:00 2001 From: Phlake Date: Thu, 16 Jun 2022 18:54:21 +0300 Subject: [PATCH 12/14] minor changes --- src/main/java/com/mkruchok/view/View.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java index 873d69c..8eb4eae 100644 --- a/src/main/java/com/mkruchok/view/View.java +++ b/src/main/java/com/mkruchok/view/View.java @@ -124,18 +124,22 @@ private User getUserInputs() throws NullPointerException { final String password = SCANNER.next(); LOGGER.debug("Enter name: "); final String name = SCANNER.next(); - Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); - UsersGroup groupEntity; + final Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); + final UsersGroup groupEntity; final Collection userHubs = new ArrayList<>(); final Collection userPermissions = new ArrayList<>(); LOGGER.debug("Enter group id: "); final int groupId = SCANNER.nextInt(); LOGGER.debug("Enter hub id to add or skip (0): "); final int hubId = SCANNER.nextInt(); - if (hubId != 0) userHubs.add(hubController.findById(hubId)); + if (hubId != 0) { + userHubs.add(hubController.findById(hubId)); + } LOGGER.debug("Enter permission id to add or skip(0): "); final int permissionId = SCANNER.nextInt(); - if (permissionId != 0) userPermissions.add(permissionController.findById(permissionId)); + if (permissionId != 0) { + userPermissions.add(permissionController.findById(permissionId)); + } groupEntity = groupId == 0 ? null : usersGroupController.findById(groupId); return new User(null, From f926f67ecd6154c2aea78d99821ea9480ae56616 Mon Sep 17 00:00:00 2001 From: Phlake Date: Fri, 17 Jun 2022 17:08:18 +0300 Subject: [PATCH 13/14] minor changes --- pom.xml | 5 +++++ src/main/java/com/mkruchok/view/View.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a55cef1..dbbc1cc 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,11 @@ hibernate-entitymanager 5.6.8.Final + + org.slf4j + slf4j-api + 1.7.36 + ch.qos.logback logback-classic diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java index 8eb4eae..fa6d86e 100644 --- a/src/main/java/com/mkruchok/view/View.java +++ b/src/main/java/com/mkruchok/view/View.java @@ -29,7 +29,7 @@ public final class View { static final Logger LOGGER = LoggerFactory.getLogger(View.class); - private static final Scanner SCANNER = new Scanner(System.in, StandardCharsets.UTF_8); + 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(); From 5ecf402e2d32527e41ad4f77e6469e707c7ab78d Mon Sep 17 00:00:00 2001 From: Phlake Date: Fri, 17 Jun 2022 17:27:03 +0300 Subject: [PATCH 14/14] minor changes --- src/main/java/com/mkruchok/view/View.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/mkruchok/view/View.java b/src/main/java/com/mkruchok/view/View.java index fa6d86e..7546d1d 100644 --- a/src/main/java/com/mkruchok/view/View.java +++ b/src/main/java/com/mkruchok/view/View.java @@ -16,7 +16,6 @@ import com.mkruchok.model.entity.Rex; import com.mkruchok.model.entity.User; import com.mkruchok.model.entity.UsersGroup; -import java.nio.charset.StandardCharsets; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; @@ -475,7 +474,8 @@ private void getPermissionById() { private Permission getPermissionInputs() { LOGGER.debug("Enter permission_name: "); - final String name = SCANNER.next(); + SCANNER.nextLine(); + final String name = SCANNER.nextLine(); LOGGER.debug("Enter hub_id: "); int hubIdNull = SCANNER.nextInt(); final Hub hubId = hubIdNull == 0 ? null : hubController.findById(hubIdNull);