diff --git a/.gitignore b/.gitignore index 6366460f0..52c780c05 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -.idea/* -*.iml -target/* +# logs +logs/ +*.log diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 000000000..a0016596d --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 000000000..aa00ffab7 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 000000000..712ab9d98 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..f88c0a7df --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..35eb1ddfb --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d524faa08..4f1967df2 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,18 @@ + + org.slf4j + slf4j-api + 2.0.9 + + + + ch.qos.logback + logback-classic + 1.4.11 + + junit junit diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 085758fbf..d2e09f58d 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -6,17 +6,28 @@ import mate.academy.service.AuthenticationServiceImpl; import mate.academy.service.OrderService; import mate.academy.service.OrderServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Main { + private static final Logger logger = LoggerFactory.getLogger(Main.class); + public static void main(String[] args) { + logger.info("Application started"); + AuthenticationService authenticationService = new AuthenticationServiceImpl(); User user; + + String login = "bob"; + String password = "1234"; + try { - user = authenticationService.login("bob", "1234"); + user = authenticationService.login(login, password); } catch (AuthenticationException e) { - e.printStackTrace(); + logger.error("Login failed for user. login={}", login, e); return; } + OrderService orderService = new OrderServiceImpl(); orderService.completeOrder(user.getUserId()); } diff --git a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java index f9fe83b70..095dbd04a 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -2,21 +2,29 @@ import mate.academy.exception.AuthenticationException; import mate.academy.model.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class AuthenticationServiceImpl implements AuthenticationService { + private static final Logger logger = + LoggerFactory.getLogger(AuthenticationServiceImpl.class); + @Override public User login(String login, String password) throws AuthenticationException { - //TODO: add corresponding log message about method login was called + logger.debug("Method login was called. Params: login={}", login); + User user = findByLogin(login); + if (!user.getPassword().equals(password)) { + logger.warn("Invalid password for login={}", login); throw new AuthenticationException("Username or password are incorrect"); } + logger.info("User successfully logged in. userId={}", user.getUserId()); return user; } private User findByLogin(String login) { User user = new User(login, "1234"); - // this user identifier should be set by DB. We will use dummy data for this example user.setUserId(2L); return user; } diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java index eeabe1555..b75aa0ea1 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -4,16 +4,25 @@ import java.util.List; import mate.academy.model.Order; import mate.academy.model.Product; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class OrderServiceImpl implements OrderService { + private static final Logger logger = + LoggerFactory.getLogger(OrderServiceImpl.class); + @Override public Order completeOrder(Long userId) { - // TODO: add log message about method completeOrder was called + logger.info("Method completeOrder was called. Params: userId={}", userId); + List products = getAllProductsFromShoppingCart(userId); Order order = new Order(products, userId); // NOTE: In production ready code this order identifier should be generated by DB // For test purpose we simplify this and return dummy data order.setOrderId(1L); + + logger.info("Order completed successfully. orderId={}, userId={}", + order.getOrderId(), userId); return order; } @@ -23,8 +32,12 @@ private List getAllProductsFromShoppingCart(Long userId) { Product iphone = new Product("iPhone X", BigDecimal.valueOf(1199)); Product macBook = new Product("MacBook Air 2020", BigDecimal.valueOf(1399)); Product xiaomi = new Product("Xiaomi 12", BigDecimal.valueOf(499)); + List products = List.of(iphone, macBook, xiaomi); - // TODO: add log message about successful fetched data from DB + + logger.debug("Products fetched from DB successfully. userId={}, count={}", + userId, products.size()); + return products; } } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 000000000..1d66d622b --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,21 @@ + + + logs/app.log + true + + %d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] %logger{10} - %msg%n + + + + + + %d{HH:mm:ss} [%level] %logger{10} - %msg%n + + + + + + + + + diff --git a/target/checkstyle-cachefile b/target/checkstyle-cachefile new file mode 100644 index 000000000..2845f5dc6 --- /dev/null +++ b/target/checkstyle-cachefile @@ -0,0 +1,11 @@ +#Thu Mar 19 16:09:00 CET 2026 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\Main.java=1773931834648 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\exception\\AuthenticationException.java=1773764970934 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\model\\Order.java=1773764970934 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\model\\Product.java=1773764970935 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\model\\User.java=1773764970936 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\AuthenticationService.java=1773764970937 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\AuthenticationServiceImpl.java=1773932366339 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\OrderService.java=1773764970938 +C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\OrderServiceImpl.java=1773932849902 +configuration*?=8630E6DC4E424D54441EA9302A85FDAA43E423CA diff --git a/target/checkstyle-checker.xml b/target/checkstyle-checker.xml new file mode 100644 index 000000000..ea0a5295c --- /dev/null +++ b/target/checkstyle-checker.xml @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/checkstyle-result.xml b/target/checkstyle-result.xml new file mode 100644 index 000000000..abfd4dadb --- /dev/null +++ b/target/checkstyle-result.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/logback.xml b/target/classes/logback.xml new file mode 100644 index 000000000..865b387b7 --- /dev/null +++ b/target/classes/logback.xml @@ -0,0 +1,21 @@ + + + logs/app.log + true + + %d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] %logger{10} - %msg%n + + + + + + %d{HH:mm:ss} [%level] %logger{10} - %msg%n + + + + + + + + + \ No newline at end of file diff --git a/target/classes/mate/academy/Main.class b/target/classes/mate/academy/Main.class new file mode 100644 index 000000000..c44fa0fb5 Binary files /dev/null and b/target/classes/mate/academy/Main.class differ diff --git a/target/classes/mate/academy/exception/AuthenticationException.class b/target/classes/mate/academy/exception/AuthenticationException.class new file mode 100644 index 000000000..340dafd89 Binary files /dev/null and b/target/classes/mate/academy/exception/AuthenticationException.class differ diff --git a/target/classes/mate/academy/model/Order.class b/target/classes/mate/academy/model/Order.class new file mode 100644 index 000000000..6e3e67471 Binary files /dev/null and b/target/classes/mate/academy/model/Order.class differ diff --git a/target/classes/mate/academy/model/Product.class b/target/classes/mate/academy/model/Product.class new file mode 100644 index 000000000..975532716 Binary files /dev/null and b/target/classes/mate/academy/model/Product.class differ diff --git a/target/classes/mate/academy/model/User.class b/target/classes/mate/academy/model/User.class new file mode 100644 index 000000000..6ffa61acb Binary files /dev/null and b/target/classes/mate/academy/model/User.class differ diff --git a/target/classes/mate/academy/service/AuthenticationService.class b/target/classes/mate/academy/service/AuthenticationService.class new file mode 100644 index 000000000..f9a4e9048 Binary files /dev/null and b/target/classes/mate/academy/service/AuthenticationService.class differ diff --git a/target/classes/mate/academy/service/AuthenticationServiceImpl.class b/target/classes/mate/academy/service/AuthenticationServiceImpl.class new file mode 100644 index 000000000..414e0f3a0 Binary files /dev/null and b/target/classes/mate/academy/service/AuthenticationServiceImpl.class differ diff --git a/target/classes/mate/academy/service/OrderService.class b/target/classes/mate/academy/service/OrderService.class new file mode 100644 index 000000000..95a9022ae Binary files /dev/null and b/target/classes/mate/academy/service/OrderService.class differ diff --git a/target/classes/mate/academy/service/OrderServiceImpl.class b/target/classes/mate/academy/service/OrderServiceImpl.class new file mode 100644 index 000000000..c747e0ded Binary files /dev/null and b/target/classes/mate/academy/service/OrderServiceImpl.class differ diff --git a/target/jv-logger-1.0-SNAPSHOT.jar b/target/jv-logger-1.0-SNAPSHOT.jar new file mode 100644 index 000000000..e41810be7 Binary files /dev/null and b/target/jv-logger-1.0-SNAPSHOT.jar differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 000000000..efb1dcc02 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=jv-logger +groupId=mate-academy +version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 000000000..c9a929f24 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,9 @@ +mate\academy\service\OrderServiceImpl.class +mate\academy\exception\AuthenticationException.class +mate\academy\model\Order.class +mate\academy\model\User.class +mate\academy\service\AuthenticationService.class +mate\academy\model\Product.class +mate\academy\service\OrderService.class +mate\academy\Main.class +mate\academy\service\AuthenticationServiceImpl.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 000000000..a05fdf064 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,9 @@ +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\exception\AuthenticationException.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\OrderServiceImpl.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\model\User.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\AuthenticationServiceImpl.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\model\Order.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\model\Product.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\Main.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\OrderService.java +C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\AuthenticationService.java