From a2dba5bf6d9462ed54e5be67d1790fa022c9985e Mon Sep 17 00:00:00 2001 From: Sabiq Ihab Date: Thu, 22 Jun 2017 23:56:57 +0000 Subject: [PATCH] add logs, javadoc and format to checkstyle conventions --- .../cqrs/commandes/CommandServiceImpl.java | 4 +++ .../cqrs/commandes/ICommandService.java | 4 +++ .../iluwatar/cqrs/domain/model/Author.java | 6 ++-- .../com/iluwatar/cqrs/domain/model/Book.java | 6 ++-- .../cqrs/dto/{AuthorDTO.java => Author.java} | 20 +++++++++++-- .../cqrs/dto/{BookDTO.java => Book.java} | 18 ++++++++++-- .../iluwatar/cqrs/queries/IQueryService.java | 15 ++++++---- .../cqrs/queries/QueryServiceImpl.java | 28 +++++++++++-------- .../com/iluwatar/cqrs/util/HibernateUtil.java | 18 ++++++------ cqrs/src/main/resources/hibernate.cfg.xml | 18 ++++++------ cqrs/src/main/resources/logback.xml | 13 +++++++++ 11 files changed, 105 insertions(+), 45 deletions(-) rename cqrs/src/main/java/com/iluwatar/cqrs/dto/{AuthorDTO.java => Author.java} (56%) rename cqrs/src/main/java/com/iluwatar/cqrs/dto/{BookDTO.java => Book.java} (55%) create mode 100644 cqrs/src/main/resources/logback.xml diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java index 6fd2e2900..18a80dc16 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java @@ -8,6 +8,10 @@ import com.iluwatar.cqrs.domain.model.Author; import com.iluwatar.cqrs.domain.model.Book; import com.iluwatar.cqrs.util.HibernateUtil; +/** + * This class is implementation of {@link ICommandService} interface. It uses Hibernate as an api for persistence. + * + */ public class CommandServiceImpl implements ICommandService { private SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java index 4ccb0f456..d752a107e 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/ICommandService.java @@ -1,5 +1,9 @@ package com.iluwatar.cqrs.commandes; +/** + * This interface represents the commands of the CQRS pattern + * + */ public interface ICommandService { public abstract void authorCreated(String username, String name, String email); diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java index 5008a233a..308fb4f5d 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java @@ -6,8 +6,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; /** - * - * @author Sabiq Ihab + * This is an Author entity. It is used by Hibernate for persistence. * */ @Entity @@ -22,8 +21,11 @@ public class Author { /** * * @param username + * username of the author * @param name + * name of the author * @param email + * email of the author */ public Author(String username, String name, String email) { super(); diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java index 6c04f2bf5..3d14fae47 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Book.java @@ -7,8 +7,7 @@ import javax.persistence.Id; import javax.persistence.ManyToOne; /** - * - * @author Sabiq Ihab + * This is a Book entity. It is used by Hibernate for persistence. Many books can be written by one {@link Author} * */ @Entity @@ -24,8 +23,11 @@ public class Book { /** * * @param title + * title of the book * @param price + * price of the book * @param author + * author of the book */ public Book(String title, double price, Author author) { super(); diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/dto/AuthorDTO.java b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java similarity index 56% rename from cqrs/src/main/java/com/iluwatar/cqrs/dto/AuthorDTO.java rename to cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java index a6ce20912..53bc22d1f 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/dto/AuthorDTO.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java @@ -1,19 +1,33 @@ package com.iluwatar.cqrs.dto; -public class AuthorDTO { +/** + * + * This is a DTO (Data Transfer Object) author, contains only useful information to be returned + * + */ +public class Author { private String name; private String email; private String username; - public AuthorDTO(String name, String email, String username) { + /** + * + * @param name + * name of the author + * @param email + * email of the author + * @param username + * username of the author + */ + public Author(String name, String email, String username) { super(); this.name = name; this.email = email; this.username = username; } - public AuthorDTO() { + public Author() { super(); } diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/dto/BookDTO.java b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java similarity index 55% rename from cqrs/src/main/java/com/iluwatar/cqrs/dto/BookDTO.java rename to cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java index aa015d01b..1d4282cd5 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/dto/BookDTO.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java @@ -1,17 +1,29 @@ package com.iluwatar.cqrs.dto; -public class BookDTO { +/** + * + * This is a DTO (Data Transfer Object) book, contains only useful information to be returned + * + */ +public class Book { private String title; private double price; - public BookDTO(String title, double price) { + /** + * + * @param title + * title of the book + * @param price + * price of the book + */ + public Book(String title, double price) { super(); this.title = title; this.price = price; } - public BookDTO() { + public Book() { super(); } diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java b/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java index 3abf2ec16..255796d89 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/queries/IQueryService.java @@ -3,16 +3,21 @@ package com.iluwatar.cqrs.queries; import java.math.BigInteger; import java.util.List; -import com.iluwatar.cqrs.dto.AuthorDTO; -import com.iluwatar.cqrs.dto.BookDTO; +import com.iluwatar.cqrs.dto.Author; +import com.iluwatar.cqrs.dto.Book; +/** + * + * This interface represents the query methods of the CQRS pattern + * + */ public interface IQueryService { - public abstract AuthorDTO getAuthorByUsername(String username); + public abstract Author getAuthorByUsername(String username); - public abstract BookDTO getBook(String title); + public abstract Book getBook(String title); - public abstract List getAuthorBooks(String username); + public abstract List getAuthorBooks(String username); public abstract BigInteger getAuthorBooksCount(String username); diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java b/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java index b383a850b..55a40c277 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java @@ -8,47 +8,51 @@ import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.transform.Transformers; -import com.iluwatar.cqrs.dto.AuthorDTO; -import com.iluwatar.cqrs.dto.BookDTO; +import com.iluwatar.cqrs.dto.Author; +import com.iluwatar.cqrs.dto.Book; import com.iluwatar.cqrs.util.HibernateUtil; +/** + * This class is an implementation of {@link IQueryService}. It uses Hibernate native queries to return DTOs from the + * database. + * + */ public class QueryServiceImpl implements IQueryService { private SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); @Override - public AuthorDTO getAuthorByUsername(String username) { + public Author getAuthorByUsername(String username) { Session session = sessionFactory.openSession(); SQLQuery sqlQuery = session .createSQLQuery("SELECT a.username as \"username\", a.name as \"name\", a.email as \"email\"" + "FROM Author a where a.username=:username"); sqlQuery.setParameter("username", username); - AuthorDTO authorDTO = (AuthorDTO) sqlQuery.setResultTransformer(Transformers.aliasToBean(AuthorDTO.class)) - .uniqueResult(); + Author authorDTo = (Author) sqlQuery.setResultTransformer(Transformers.aliasToBean(Author.class)).uniqueResult(); session.close(); - return authorDTO; + return authorDTo; } @Override - public BookDTO getBook(String title) { + public Book getBook(String title) { Session session = sessionFactory.openSession(); SQLQuery sqlQuery = session .createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" + " FROM Book b where b.title=:title"); sqlQuery.setParameter("title", title); - BookDTO bookDTO = (BookDTO) sqlQuery.setResultTransformer(Transformers.aliasToBean(BookDTO.class)).uniqueResult(); + Book bookDTo = (Book) sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).uniqueResult(); session.close(); - return bookDTO; + return bookDTo; } @Override - public List getAuthorBooks(String username) { + public List getAuthorBooks(String username) { Session session = sessionFactory.openSession(); SQLQuery sqlQuery = session.createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" + " FROM Author a , Book b where b.author_id = a.id and a.username=:username"); sqlQuery.setParameter("username", username); - List bookDTOs = sqlQuery.setResultTransformer(Transformers.aliasToBean(BookDTO.class)).list(); + List bookDTos = sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).list(); session.close(); - return bookDTOs; + return bookDTos; } @Override diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java b/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java index 9e19e05d4..c8f41762e 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/util/HibernateUtil.java @@ -4,27 +4,27 @@ import org.hibernate.SessionFactory; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** - * - * @author Sabiq Ihab + * This class simply returns one instance of {@link SessionFactory} initialized when the application is started * */ public class HibernateUtil { private static final SessionFactory SESSIONFACTORY = buildSessionFactory(); + private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); private static SessionFactory buildSessionFactory() { - // A SessionFactory is set up once for an application! - final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure() // configures settings // - // from hibernate.cfg.xml - .build(); + + // configures settings from hibernate.cfg.xml + final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build(); try { return new MetadataSources(registry).buildMetadata().buildSessionFactory(); - } catch (Throwable ex) { + } catch (Exception ex) { StandardServiceRegistryBuilder.destroy(registry); - // TODO HibernateUtil : change print with logger - System.err.println("Initial SessionFactory creation failed." + ex); + LOGGER.error("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } diff --git a/cqrs/src/main/resources/hibernate.cfg.xml b/cqrs/src/main/resources/hibernate.cfg.xml index a6ca21983..151983337 100644 --- a/cqrs/src/main/resources/hibernate.cfg.xml +++ b/cqrs/src/main/resources/hibernate.cfg.xml @@ -3,13 +3,13 @@ "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> - - org.hibernate.dialect.H2Dialect - org.h2.Driver - jdbc:h2:mem:test - sa - create - - - + + org.hibernate.dialect.H2Dialect + org.h2.Driver + jdbc:h2:mem:test + sa + create + + + \ No newline at end of file diff --git a/cqrs/src/main/resources/logback.xml b/cqrs/src/main/resources/logback.xml new file mode 100644 index 000000000..6b5d24345 --- /dev/null +++ b/cqrs/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + +