From 2c9098aecc62f2396e2fabe4ae7b15aaa0156ffa Mon Sep 17 00:00:00 2001 From: Piyush Chaudhari Date: Mon, 18 Sep 2017 22:31:13 +0530 Subject: [PATCH] #352- Unit Of Work : added the launching point of the module --- .../java/com/iluwatar/unitofwork/Student.java | 11 ++++ .../unitofwork/StudentManagementApp.java | 52 +++++++++++++++++++ .../unitofwork/StudentRepository.java | 29 ++++++++--- 3 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentManagementApp.java diff --git a/unit-of-work/src/main/java/com/iluwatar/unitofwork/Student.java b/unit-of-work/src/main/java/com/iluwatar/unitofwork/Student.java index 9b77717ec..648a70462 100644 --- a/unit-of-work/src/main/java/com/iluwatar/unitofwork/Student.java +++ b/unit-of-work/src/main/java/com/iluwatar/unitofwork/Student.java @@ -43,4 +43,15 @@ public class Student { this.address = address; } + public String getName() { + return name; + } + + public Integer getId() { + return id; + } + + public String getAddress() { + return address; + } } diff --git a/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentManagementApp.java b/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentManagementApp.java new file mode 100644 index 000000000..23d3b251b --- /dev/null +++ b/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentManagementApp.java @@ -0,0 +1,52 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2017 Piyush Chaudhari + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package com.iluwatar.unitofwork; + +import java.util.HashMap; +import java.util.List; + +/** + * {@link StudentManagementApp} Application for managing student data. + */ +public class StudentManagementApp { + /** + * + * @param args no argument sent + */ + public static void main(String[] args) { + Student ram = new Student(1, "Ram", "Street 9, Cupertino"); + Student shyam = new Student(2, "Shyam", "Z bridge, Pune"); + Student gopi = new Student(3, "Gopi", "Street 10, Mumbai"); + + HashMap> context = new HashMap<>(); + StudentDatabase studentDatabase = new StudentDatabase(); + StudentRepository studentRepository = new StudentRepository(context, studentDatabase); + + studentRepository.registerNew(ram); + studentRepository.registerModified(shyam); + studentRepository.registerDeleted(gopi); + studentRepository.commit(); + } +} diff --git a/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java b/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java index a2cff4ada..e26f0b7a4 100644 --- a/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java +++ b/unit-of-work/src/main/java/com/iluwatar/unitofwork/StudentRepository.java @@ -24,6 +24,9 @@ package com.iluwatar.unitofwork; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -33,6 +36,8 @@ import java.util.Map; * supports unit of work for student data. */ public class StudentRepository implements IUnitOfWork { + private static final Logger LOGGER = LoggerFactory.getLogger(StudentRepository.class); + private Map> context; private StudentDatabase studentDatabase; @@ -47,17 +52,20 @@ public class StudentRepository implements IUnitOfWork { @Override public void registerNew(Student student) { + LOGGER.info("Registering {} for insert in context.", student.getName()); register(student, IUnitOfWork.INSERT); } @Override public void registerModified(Student student) { + LOGGER.info("Registering {} for modify in context.", student.getName()); register(student, IUnitOfWork.MODIFY); } @Override public void registerDeleted(Student student) { + LOGGER.info("Registering {} for delete in context.", student.getName()); register(student, IUnitOfWork.DELETE); } @@ -75,6 +83,7 @@ public class StudentRepository implements IUnitOfWork { if (context == null || context.size() == 0) { return; } + LOGGER.info("Commit started"); if (context.containsKey(IUnitOfWork.INSERT)) { commitInsert(); } @@ -85,26 +94,30 @@ public class StudentRepository implements IUnitOfWork { if (context.containsKey(IUnitOfWork.DELETE)) { commitDelete(); } + LOGGER.info("Commit finished."); } - private void commitDelete() { - List deletedStudents = context.get(IUnitOfWork.DELETE); - for (Student student : deletedStudents) { - studentDatabase.delete(student); + private void commitInsert() { + List studentsToBeInserted = context.get(IUnitOfWork.INSERT); + for (Student student : studentsToBeInserted) { + LOGGER.info("Saving {} to database.", student.getName()); + studentDatabase.insert(student); } } private void commitModify() { List modifiedStudents = context.get(IUnitOfWork.MODIFY); for (Student student : modifiedStudents) { + LOGGER.info("Modifying {} to database.", student.getName()); studentDatabase.modify(student); } } - private void commitInsert() { - List studentsToBeInserted = context.get(IUnitOfWork.INSERT); - for (Student student : studentsToBeInserted) { - studentDatabase.insert(student); + private void commitDelete() { + List deletedStudents = context.get(IUnitOfWork.DELETE); + for (Student student : deletedStudents) { + LOGGER.info("Deleting {} to database.", student.getName()); + studentDatabase.delete(student); } } }