diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a14753b --- /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 + +*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/pom.xml b/pom.xml new file mode 100644 index 0000000..ff035ae --- /dev/null +++ b/pom.xml @@ -0,0 +1,141 @@ + + + 4.0.0 + + com.mkruchok + DB4MK + 1.0-SNAPSHOT + + UTF-8 + UTF-8 + https://github.com/MKruchok/Databases/tree/lab_4 + + + + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.13.0 + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + + com.puppycrawl.tools + checkstyle + 10.2 + + + + + org.apache.maven.plugins + 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 + 3.13.0 + + + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + com.github.spotbugs + spotbugs-maven-plugin + 4.4.1 + + + + + + org.projectlombok + lombok + 1.18.24 + + + com.github.spotbugs + spotbugs + 4.7.0 + + + 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 + + + org.slf4j + slf4j-api + 1.7.36 + + + ch.qos.logback + logback-classic + 1.2.11 + + + com.puppycrawl.tools + checkstyle + 10.2 + + + + + + com.github.spotbugs + spotbugs-maven-plugin + 4.4.1 + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + google_checks.xml + + + + + checkstyle + + + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.13.0 + + + + diff --git a/src/main/java/com/mkruchok/Application.java b/src/main/java/com/mkruchok/Application.java new file mode 100644 index 0000000..5673f70 --- /dev/null +++ b/src/main/java/com/mkruchok/Application.java @@ -0,0 +1,9 @@ +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..748d427 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/AbstractController.java @@ -0,0 +1,23 @@ +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 { + } + +} 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..0e6d4ff --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/DeviceController.java @@ -0,0 +1,37 @@ +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/DevicesGroupController.java b/src/main/java/com/mkruchok/controller/implementation/DevicesGroupController.java new file mode 100644 index 0000000..473c64f --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/DevicesGroupController.java @@ -0,0 +1,37 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.DevicesGroup; +import com.mkruchok.service.implementation.DevicesGroupService; +import java.sql.SQLException; +import java.util.List; + +public final class DevicesGroupController implements AbstractController { + + private final DevicesGroupService service = new DevicesGroupService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public DevicesGroup findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(DevicesGroup entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, DevicesGroup 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..000a104 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/HubController.java @@ -0,0 +1,37 @@ +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..49e31c2 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/NotificationController.java @@ -0,0 +1,37 @@ +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..ae70148 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/PermissionController.java @@ -0,0 +1,37 @@ +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..41f3846 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/RexController.java @@ -0,0 +1,37 @@ +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..e6bbd57 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/UserController.java @@ -0,0 +1,37 @@ +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/UsersGroupController.java b/src/main/java/com/mkruchok/controller/implementation/UsersGroupController.java new file mode 100644 index 0000000..4e26764 --- /dev/null +++ b/src/main/java/com/mkruchok/controller/implementation/UsersGroupController.java @@ -0,0 +1,37 @@ +package com.mkruchok.controller.implementation; + +import com.mkruchok.controller.AbstractController; +import com.mkruchok.model.entity.UsersGroup; +import com.mkruchok.service.implementation.UsersGroupService; +import java.sql.SQLException; +import java.util.List; + +public final class UsersGroupController implements AbstractController { + + private final UsersGroupService service = new UsersGroupService(); + + @Override + public List findAll() throws SQLException { + return service.findAll(); + } + + @Override + public UsersGroup findById(Integer id) throws SQLException { + return service.findById(id); + } + + @Override + public void create(UsersGroup entity) throws SQLException { + service.create(entity); + } + + @Override + public void update(Integer id, UsersGroup 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..103d773 --- /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.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 { + } + +} 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..eff956e --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/DeviceDao.java @@ -0,0 +1,121 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.Device; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public final class DeviceDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(DeviceDao.class); + 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`,`device_status`,`service_life_end_time`,`warranty_end_time`," + + "`on_battery`,`hub_id`, `devices_group_id`)" + " VALUES (?, ?, ?, ?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.device" + + " SET model=?, device_status=?, service_life_end_time=?, warranty_end_time=?," + + " on_battery=?, hub_id=?, devices_group_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.device WHERE id=?"; + + @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("device_status"), + resultSet.getTimestamp("service_life_end_time"), + resultSet.getTimestamp("warranty_end_time"), + resultSet.getInt("on_battery"), + resultSet.getInt("hub_id"), + resultSet.getInt("devices_group_id")); + devices.add(device); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + 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("device_status"), + resultSet.getTimestamp("service_life_end_time"), + resultSet.getTimestamp("warranty_end_time"), + resultSet.getInt("on_battery"), + resultSet.getInt("hub_id"), + resultSet.getInt("devices_group_id")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + 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.getDeviceStatus()); + statement.setTimestamp(3, device.getServiceLifeEndTime()); + statement.setTimestamp(4, device.getWarrantyEndTime()); + statement.setInt(5, device.getOnBattery()); + statement.setInt(6, device.getHubId()); + statement.setInt(6, device.getDevicesGroupId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @Override + public void update(Integer id, Device device) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(2, device.getDeviceStatus()); + 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(6, device.getDevicesGroupId()); + statement.setInt(8, device.getId()); + LOGGER.info(String.valueOf(statement)); + statement.executeUpdate(); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..a2987c6 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/DevicesGroupDao.java @@ -0,0 +1,93 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.DevicesGroup; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class DevicesGroupDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(DevicesGroupDao.class); + private static final String GET_ALL = "SELECT * FROM ajax_curr.devices_group"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.devices_group WHERE id=?"; + private static final String CREATE = + "INSERT ajax_curr.devices_group " + "(`group_name`)" + " VALUES (?)"; + private static final String UPDATE = + "UPDATE ajax_curr.devices_group" + " SET group_name=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.users_group WHERE id=?"; + + @Override + public List findAll() throws SQLException { + List devicesGroups = new ArrayList<>(); + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(GET_ALL)) { + LOGGER.info(String.valueOf(statement)); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + DevicesGroup devicesGroup = + new DevicesGroup(resultSet.getInt("id"), resultSet.getString("group_name")); + devicesGroups.add(devicesGroup); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + return devicesGroups; + } + + @Override + public DevicesGroup findById(Integer id) throws SQLException { + DevicesGroup 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 DevicesGroup(resultSet.getInt("id"), resultSet.getString("group_name")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + return group; + } + + @Override + public void create(DevicesGroup group) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, group.getGroupName()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @Override + public void update(Integer id, DevicesGroup group) throws SQLException { + try (PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, group.getGroupName()); + statement.setInt(2, group.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..a84b61f --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/HubDao.java @@ -0,0 +1,129 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.Hub; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class HubDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(HubDao.class); + 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`,`hub_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=?, hub_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=?"; + + @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("hub_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); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + 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("hub_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")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + 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.getHubStatus()); + 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 (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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.getHubStatus()); + 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 (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..e0dda94 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/NotificationDao.java @@ -0,0 +1,110 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.Notification; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class NotificationDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(NotificationDao.class); + 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`,`notification_type`,`device_id`,`hub_id`)" + + " VALUES (?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.notification" + + " SET timestamp=?, notification_type=?, device_id=?, hub_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.notification WHERE id=?"; + + @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("notification_type"), + resultSet.getInt("device_id"), + resultSet.getInt("hub_id")); + notifications.add(notification); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + 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("notification_type"), + resultSet.getInt("device_id"), + resultSet.getInt("hub_id")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + 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.getNotificationType()); + statement.setInt(3, notification.getDeviceId()); + statement.setInt(4, notification.getHubId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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.getNotificationType()); + statement.setInt(3, notification.getDeviceId()); + statement.setInt(4, notification.getHubId()); + statement.setInt(5, notification.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..aa53173 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/PermissionDao.java @@ -0,0 +1,114 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.Permission; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class PermissionDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(PermissionDao.class); + 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 " + + "(`permission_name`,`hub_id`,`user_id`,`group_id`,`device_id`)" + " VALUES (?, ?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.permission" + + " SET permission_name=?, hub_id=?, user_id=?, group_id=?, device_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.permission WHERE id=?"; + + @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("permission_name"), + resultSet.getInt("hub_id"), + resultSet.getInt("user_id"), + resultSet.getInt("group_id"), + resultSet.getInt("device_id")); + permissions.add(permission); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + 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("permission_name"), + resultSet.getInt("hub_id"), + resultSet.getInt("user_id"), + resultSet.getInt("group_id"), + resultSet.getInt("device_id")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + return permission; + } + + @Override + public void create(Permission permission) throws SQLException { + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, permission.getPermissionName()); + statement.setInt(2, permission.getHubId()); + statement.setInt(3, permission.getUserId()); + statement.setInt(4, permission.getGroupId()); + statement.setInt(5, permission.getDeviceId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @Override + public void update(Integer id, Permission permission) throws SQLException { + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, permission.getPermissionName()); + statement.setInt(2, permission.getHubId()); + statement.setInt(4, permission.getGroupId()); + statement.setInt(3, permission.getUserId()); + statement.setInt(5, permission.getDeviceId()); + statement.setInt(3, permission.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..e8bddc5 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/RexDao.java @@ -0,0 +1,106 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.Rex; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class RexDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(RexDao.class); + 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 " + "(`rex_name`,`rex_range`,`hub_id`)" + " VALUES (?, ?, ?)"; + private static final String UPDATE = + "UPDATE ajax_curr.rex" + " SET rex_name=?, rex_range=?, hub_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.rex WHERE id=?"; + + @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("rex_name"), + resultSet.getString("rex_range"), + resultSet.getInt("hub_id")); + rexes.add(rex); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + 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("rex_name"), + resultSet.getString("rex_range"), + resultSet.getInt("hub_id")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + return rex; + } + + @Override + public void create(Rex rex) throws SQLException { + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, rex.getRexName()); + statement.setString(2, rex.getRexRange()); + statement.setInt(3, rex.getHubId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + } + + @Override + public void update(Integer id, Rex rex) throws SQLException { + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, rex.getRexName()); + statement.setString(2, rex.getRexRange()); + statement.setInt(3, rex.getHubId()); + statement.setInt(4, rex.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..c0733b7 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/UserDao.java @@ -0,0 +1,117 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.User; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class UserDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(UserDao.class); + 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`, `user_password`, `date_created`, `user_name`, `users_group_id`)" + + " VALUES (?, ?, ?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.user" + + " SET email=?, user_password=?, date_created=?, user_name=?, users_group_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.user WHERE id=?"; + + @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("user_password"), + resultSet.getTimestamp("date_created"), + resultSet.getString("user_name"), + resultSet.getString("users_group_id")); + users.add(user); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + 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("user_password"), + resultSet.getTimestamp("date_created"), + resultSet.getString("user_name"), + resultSet.getString("users_group_id")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + 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.getUserPassword()); + statement.setTimestamp(3, user.getDateCreated()); + statement.setString(4, user.getUserName()); + statement.setString(5, user.getUsersGroupId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + } + + @Override + public void update(Integer id, User user) throws SQLException { + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, user.getEmail()); + statement.setTimestamp(3, user.getDateCreated()); + statement.setString(2, user.getUserPassword()); + statement.setString(4, user.getUserName()); + statement.setString(5, user.getUsersGroupId()); + statement.setInt(6, user.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..838f749 --- /dev/null +++ b/src/main/java/com/mkruchok/model/dao/implementation/UsersGroupDao.java @@ -0,0 +1,109 @@ +package com.mkruchok.model.dao.implementation; + +import com.mkruchok.model.dao.AbstractDao; +import com.mkruchok.model.entity.UsersGroup; +import com.mkruchok.persistent.ConnectionManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class UsersGroupDao implements AbstractDao { + + static final Logger LOGGER = LoggerFactory.getLogger(UsersGroupDao.class); + private static final String GET_ALL = "SELECT * FROM ajax_curr.users_group"; + private static final String GET_BY_ID = "SELECT * FROM ajax_curr.users_group WHERE id=?"; + private static final String CREATE = + "INSERT ajax_curr.users_group " + "(`group_name`,`group_description`,`hub_id`)" + + " VALUES (?, ?, ?)"; + private static final String UPDATE = "UPDATE ajax_curr.users_group" + + " SET group_name=?, group_description=?, hub_id=? WHERE id=?"; + private static final String DELETE = "DELETE FROM ajax_curr.users_group WHERE id=?"; + + @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()) { + UsersGroup group = new UsersGroup(resultSet.getInt("id"), + resultSet.getString("group_name"), + resultSet.getString("group_description"), + resultSet.getInt("hub_id")); + groups.add(group); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + return groups; + } + + @Override + public UsersGroup findById(Integer id) throws SQLException { + UsersGroup 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 UsersGroup(resultSet.getInt("id"), + resultSet.getString("name"), + resultSet.getString("description"), + resultSet.getInt("hub_id")); + } + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + return group; + } + + @Override + public void create(UsersGroup group) throws SQLException { + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(CREATE)) { + statement.setString(1, group.getGroupName()); + statement.setString(2, group.getGroupDescription()); + statement.setInt(3, group.getHubId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + + } + + @Override + public void update(Integer id, UsersGroup group) throws SQLException { + try ( + PreparedStatement statement = ConnectionManager.getConnection().prepareStatement(UPDATE)) { + statement.setString(1, group.getGroupName()); + statement.setString(2, group.getGroupDescription()); + statement.setInt(3, group.getHubId()); + statement.setInt(4, group.getId()); + statement.executeUpdate(); + LOGGER.info(String.valueOf(statement)); + } catch (SQLException e) { + LOGGER.error(e.toString()); + } + } + + @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 (SQLException e) { + LOGGER.error(e.toString()); + } + } +} 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..01cc254 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Device.java @@ -0,0 +1,27 @@ +package com.mkruchok.model.entity; + +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@ToString +public final class Device { + private Integer id; + private String model; + private String deviceStatus; + private Timestamp serviceLifeEndTime; + private Timestamp warrantyEndTime; + private Integer onBattery; + private Integer hubId; + private Integer 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..28f7f5b --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/DevicesGroup.java @@ -0,0 +1,20 @@ +package com.mkruchok.model.entity; + + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@ToString +public final class DevicesGroup { + private Integer id; + private String groupName; + +} 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..c390fb2 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Hub.java @@ -0,0 +1,37 @@ +package com.mkruchok.model.entity; + +import java.sql.Timestamp; +import javax.annotation.Nullable; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@Nullable +public final class Hub { + private Integer id; + private String model; + private String hubStatus; + private Timestamp serviceLifeEndTime; + private Timestamp warrantyEndTime; + private Integer usersMax; + private Integer roomsMax; + private Integer devicesMax; + private Integer sirensMax; + private Integer onBattery; + + + @Override + public String toString() { + return "\n\nHub: id: " + id + ", model: " + model + ", status: " + hubStatus + + ", 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..3eb2396 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Notification.java @@ -0,0 +1,27 @@ +package com.mkruchok.model.entity; + +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public final class Notification { + private Integer id; + private Timestamp timestamp; + private String notificationType; + private Integer deviceId; + private Integer hubId; + + + @Override + public String toString() { + return "\n\nNotification: id: " + id + ", timestamp: " + timestamp + ", type: " + + notificationType + ", 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..fb4c2b4 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Permission.java @@ -0,0 +1,25 @@ +package com.mkruchok.model.entity; + + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@ToString +public final class Permission { + private Integer id; + private String permissionName; + private Integer hubId; + private Integer userId; + private Integer groupId; + private Integer deviceId; + + +} 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..493bac9 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/Rex.java @@ -0,0 +1,32 @@ +package com.mkruchok.model.entity; + + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public final class Rex { + private Integer id; + private String rexName; + private String rexRange; + private Integer hubId; + + + public Rex(String rexName, String rexRange, Integer hubId) { + this.rexName = rexName; + this.rexRange = rexRange; + this.hubId = hubId; + } + + @Override + public String toString() { + return "\n\nRex: id: " + id + ", name: " + rexName + ", range: " + rexRange + ", 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..cf9d185 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/User.java @@ -0,0 +1,26 @@ +package com.mkruchok.model.entity; + + +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@ToString +public final class User { + private Integer id; + private String email; + private String userPassword; + private Timestamp dateCreated; + private String userName; + private String usersGroupId; + + +} diff --git a/src/main/java/com/mkruchok/model/entity/UsersGroup.java b/src/main/java/com/mkruchok/model/entity/UsersGroup.java new file mode 100644 index 0000000..4b6b686 --- /dev/null +++ b/src/main/java/com/mkruchok/model/entity/UsersGroup.java @@ -0,0 +1,26 @@ +package com.mkruchok.model.entity; + + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public final class UsersGroup { + private Integer id; + private String groupName; + private String groupDescription; + private Integer hubId; + + + @Override + public String toString() { + return "\n\nGroup: id: " + id + ", name: " + groupName + ", description: " + groupDescription + + ", hub_id: " + hubId; + } +} 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/persistent/ConnectionManager.java b/src/main/java/com/mkruchok/persistent/ConnectionManager.java new file mode 100644 index 0000000..37a129f --- /dev/null +++ b/src/main/java/com/mkruchok/persistent/ConnectionManager.java @@ -0,0 +1,37 @@ +package com.mkruchok.persistent; + +import java.sql.Connection; +import java.sql.DriverManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +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/persistent/package-info.java b/src/main/java/com/mkruchok/persistent/package-info.java new file mode 100644 index 0000000..5aff0f0 --- /dev/null +++ b/src/main/java/com/mkruchok/persistent/package-info.java @@ -0,0 +1 @@ +package com.mkruchok.persistent; 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..91cc9e8 --- /dev/null +++ b/src/main/java/com/mkruchok/service/AbstractService.java @@ -0,0 +1,22 @@ +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 { + } +} 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..7f05239 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/DeviceService.java @@ -0,0 +1,38 @@ +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/DevicesGroupService.java b/src/main/java/com/mkruchok/service/implementation/DevicesGroupService.java new file mode 100644 index 0000000..0936b3d --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/DevicesGroupService.java @@ -0,0 +1,38 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.DevicesGroupDao; +import com.mkruchok.model.entity.DevicesGroup; +import com.mkruchok.service.AbstractService; +import java.sql.SQLException; +import java.util.List; + +public final class DevicesGroupService implements AbstractService { + + private final DevicesGroupDao dao = new DevicesGroupDao(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public DevicesGroup findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(DevicesGroup entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, DevicesGroup 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..3a66f4c --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/HubService.java @@ -0,0 +1,38 @@ +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..7c16e5a --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/NotificationService.java @@ -0,0 +1,38 @@ +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..2cbb732 --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/PermissionService.java @@ -0,0 +1,38 @@ +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..acbe1bd --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/RexService.java @@ -0,0 +1,38 @@ +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..bb10e5d --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/UserService.java @@ -0,0 +1,39 @@ +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/UsersGroupService.java b/src/main/java/com/mkruchok/service/implementation/UsersGroupService.java new file mode 100644 index 0000000..13d43fd --- /dev/null +++ b/src/main/java/com/mkruchok/service/implementation/UsersGroupService.java @@ -0,0 +1,38 @@ +package com.mkruchok.service.implementation; + +import com.mkruchok.model.dao.implementation.UsersGroupDao; +import com.mkruchok.model.entity.UsersGroup; +import com.mkruchok.service.AbstractService; +import java.sql.SQLException; +import java.util.List; + +public final class UsersGroupService implements AbstractService { + + private final UsersGroupDao dao = new UsersGroupDao(); + + @Override + public List findAll() throws SQLException { + return dao.findAll(); + } + + @Override + public UsersGroup findById(Integer id) throws SQLException { + return dao.findById(id); + } + + @Override + public void create(UsersGroup entity) throws SQLException { + dao.create(entity); + } + + @Override + public void update(Integer id, UsersGroup 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..47d8139 --- /dev/null +++ b/src/main/java/com/mkruchok/view/Menu.java @@ -0,0 +1,26 @@ +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 | userGroup | 5 | DELETE ROW |"); + LOGGER.debug("| 6 | devicesGroup | 5 | DELETE ROW |"); + LOGGER.debug("| 7 | permission | | |"); + LOGGER.debug("| 8 | 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..f6da866 --- /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..8cd4bb4 --- /dev/null +++ b/src/main/java/com/mkruchok/view/View.java @@ -0,0 +1,515 @@ +package com.mkruchok.view; + +import com.mkruchok.controller.implementation.DeviceController; +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.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.SQLException; +import java.sql.Timestamp; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Scanner; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public final class View { + static final Logger LOGGER = LoggerFactory.getLogger(View.class); + private static final Scanner SCANNER = new Scanner(System.in, "UTF-8"); + private final Map menu = new LinkedHashMap<>(); + private final HubController hubController = new HubController(); + private final DeviceController deviceController = new DeviceController(); + private final NotificationController notificationController = new NotificationController(); + private final 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(); + + + 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::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::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::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() { + 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: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(userController.findById(id).toString()); + } + + private User getUserInputs() { + LOGGER.debug("Enter email: "); + final String email = SCANNER.next(); + LOGGER.debug("Enter password: "); + final String userPassword = SCANNER.next(); + LOGGER.debug("Enter name: "); + final String name = SCANNER.next(); + final Timestamp dateCreated = new Timestamp(System.currentTimeMillis()); + LOGGER.debug("Enter null or group_id: "); + final String groupId = SCANNER.next(); + return new User(null, + email, + userPassword, + dateCreated, + name, + Objects.equals(groupId, "null") ? null : groupId); + } + + private void createUser() throws SQLException { + + User user = getUserInputs(); + 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: "); + final Integer id = SCANNER.nextInt(); + User user = getUserInputs(); + 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: "); + final 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: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(hubController.findById(id).toString()); + } + + 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(null, + 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:"); + final 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: "); + final 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: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(deviceController.findById(id).toString()); + } + + 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(); + LOGGER.debug("Enter devices_group_id: "); + final Integer devicesGroupId = SCANNER.nextInt(); + return new Device(null, + model, + status, + serviceLifeEndTime, + warrantyEndTime, + onBattery, + hubId, + devicesGroupId); + } + + private void createDevice() throws SQLException { + + final 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 : "); + final Integer id = SCANNER.nextInt(); + final 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: "); + final 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: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(notificationController.findById(id).toString()); + } + + 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 null or device_id: "); + final String deviceId = SCANNER.next(); + LOGGER.debug("\nEnter null or hub_id: "); + final String hubId = SCANNER.next(); + return new Notification(null, + timestamp, + type, + Objects.equals(deviceId, "null") ? null : Integer.valueOf(deviceId), + Objects.equals(hubId, "null") ? null : Integer.valueOf(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:"); + final 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: "); + final Integer id = SCANNER.nextInt(); + notificationController.delete(id); + LOGGER.debug("Deleted notification, id = " + id); + } + + + private void getAllUsersGroups() throws SQLException { + LOGGER.debug(usersGroupController.findAll().toString()); + } + + private void getUsersGroupById() throws SQLException { + LOGGER.debug("\nEnter ID: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(usersGroupController.findById(id).toString()); + } + + private UsersGroup getGroupInputs() { + LOGGER.debug("\nEnter name: "); + final String name = SCANNER.next(); + LOGGER.debug("\nEnter description: "); + final String description = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + final Integer hubId = SCANNER.nextInt(); + return new UsersGroup(null, name, description, hubId); + } + + private void createUsersGroup() throws SQLException { + UsersGroup group = getGroupInputs(); + usersGroupController.create(group); + LOGGER.debug("Group was added to the table.\nEnter numbers: "); + } + + private void updateUsersGroup() throws SQLException { + LOGGER.debug("\nEnter id to update:"); + final Integer id = SCANNER.nextInt(); + UsersGroup group = getGroupInputs(); + group.setId(id); + usersGroupController.update(group.getId(), group); + LOGGER.debug("Updated group, id = " + id); + } + + private void deleteUsersGroup() throws SQLException { + LOGGER.debug("\nEnter ID to delete group: "); + final int id = SCANNER.nextInt(); + usersGroupController.delete(id); + LOGGER.debug("Deleted group, id = " + id); + } + + + private void getAllDevicesGroups() throws SQLException { + LOGGER.debug(devicesGroupController.findAll().toString()); + } + + private void getDevicesGroupById() throws SQLException { + LOGGER.debug("\nEnter ID: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(devicesGroupController.findById(id).toString()); + } + + private DevicesGroup getDevicesGroupInputs() { + LOGGER.debug("\nEnter name: "); + final String name = SCANNER.next(); + return new DevicesGroup(null, name); + } + + private void createDevicesGroup() throws SQLException { + DevicesGroup group = getDevicesGroupInputs(); + devicesGroupController.create(group); + LOGGER.debug("Devices group was added to the table.\nEnter numbers: "); + } + + private void updateDevicesGroup() throws SQLException { + LOGGER.debug("\nEnter id to update:"); + final Integer id = SCANNER.nextInt(); + DevicesGroup group = getDevicesGroupInputs(); + group.setId(id); + devicesGroupController.update(group.getId(), group); + LOGGER.debug("Updated group, id = " + id); + } + + private void deleteDevicesGroup() throws SQLException { + LOGGER.debug("\nEnter ID to delete group: "); + final int id = SCANNER.nextInt(); + devicesGroupController.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: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(permissionController.findById(id).toString()); + } + + private Permission getPermissionInputs() { + LOGGER.debug("Enter permission_name: "); + final String name = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + final Integer hub_id = SCANNER.nextInt(); + LOGGER.debug("Enter user_id: "); + final Integer user_id = SCANNER.nextInt(); + LOGGER.debug("Enter group_id: "); + final Integer group_id = SCANNER.nextInt(); + LOGGER.debug("Enter device_id: "); + final Integer device_id = SCANNER.nextInt(); + return new Permission(null, name, hub_id, user_id, group_id, device_id); + } + + 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: "); + final 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: "); + final 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: "); + final Integer id = SCANNER.nextInt(); + LOGGER.debug(rexController.findById(id).toString()); + } + + private Rex getRexInputs() { + LOGGER.debug("\nEnter name: "); + final String name = SCANNER.next(); + LOGGER.debug("\nEnter range: "); + final String range = SCANNER.next(); + LOGGER.debug("Enter hub_id: "); + final 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: "); + final 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: "); + final 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