Resolves checkstyle errors for converter, cqrs (#1063)

* Reduces checkstyle errors in converter

* Reduces checkstyle errors in cqrs
This commit is contained in:
Anurag Agarwal
2019-11-10 22:09:27 +05:30
committed by Ilkka Seppälä
parent 2f49648047
commit 4f9ee0189c
16 changed files with 129 additions and 127 deletions

View File

@ -23,12 +23,6 @@
package com.iluwatar.cqrs.app;
import java.math.BigInteger;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.iluwatar.cqrs.commandes.CommandServiceImpl;
import com.iluwatar.cqrs.commandes.ICommandService;
import com.iluwatar.cqrs.constants.AppConstants;
@ -37,32 +31,35 @@ import com.iluwatar.cqrs.dto.Book;
import com.iluwatar.cqrs.queries.IQueryService;
import com.iluwatar.cqrs.queries.QueryServiceImpl;
import com.iluwatar.cqrs.util.HibernateUtil;
import java.math.BigInteger;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* CQRS : Command Query Responsibility Segregation. A pattern used to separate query services from commands or writes
* services. The pattern is very simple but it has many consequences. For example, it can be used to tackle down a
* complex domain, or to use other architectures that were hard to implement with the classical way.
*
* This implementation is an example of managing books and authors in a library. The persistence of books and authors is
* done according to the CQRS architecture. A command side that deals with a data model to persist(insert,update,delete)
* objects to a database. And a query side that uses native queries to get data from the database and return objects as
* DTOs (Data transfer Objects).
* CQRS : Command Query Responsibility Segregation. A pattern used to separate query services from
* commands or writes services. The pattern is very simple but it has many consequences. For
* example, it can be used to tackle down a complex domain, or to use other architectures that were
* hard to implement with the classical way.
*
* <p>This implementation is an example of managing books and authors in a library. The persistence
* of books and authors is done according to the CQRS architecture. A command side that deals with a
* data model to persist(insert,update,delete) objects to a database. And a query side that uses
* native queries to get data from the database and return objects as DTOs (Data transfer Objects).
*/
public class App {
private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
/**
* Program entry point
*
* @param args
* command line args
* Program entry point.
*
* @param args command line args
*/
public static void main(String[] args) {
ICommandService commands = new CommandServiceImpl();
// Create Authors and Books using CommandService
commands.authorCreated(AppConstants.E_EVANS, "Eric Evans", "eEvans@email.com");
commands.authorCreated(AppConstants.E_EVANS, "Eric Evans", "evans@email.com");
commands.authorCreated(AppConstants.J_BLOCH, "Joshua Bloch", "jBloch@email.com");
commands.authorCreated(AppConstants.M_FOWLER, "Martin Fowler", "mFowler@email.com");
@ -70,7 +67,8 @@ public class App {
commands.bookAddedToAuthor("Effective Java", 40.54, AppConstants.J_BLOCH);
commands.bookAddedToAuthor("Java Puzzlers", 39.99, AppConstants.J_BLOCH);
commands.bookAddedToAuthor("Java Concurrency in Practice", 29.40, AppConstants.J_BLOCH);
commands.bookAddedToAuthor("Patterns of Enterprise Application Architecture", 54.01, AppConstants.M_FOWLER);
commands.bookAddedToAuthor("Patterns of Enterprise"
+ " Application Architecture", 54.01, AppConstants.M_FOWLER);
commands.bookAddedToAuthor("Domain Specific Languages", 48.89, AppConstants.M_FOWLER);
commands.authorNameUpdated(AppConstants.E_EVANS, "Eric J. Evans");
@ -78,18 +76,18 @@ public class App {
// Query the database using QueryService
Author nullAuthor = queries.getAuthorByUsername("username");
Author eEvans = queries.getAuthorByUsername(AppConstants.E_EVANS);
BigInteger jBlochBooksCount = queries.getAuthorBooksCount(AppConstants.J_BLOCH);
Author evans = queries.getAuthorByUsername(AppConstants.E_EVANS);
BigInteger blochBooksCount = queries.getAuthorBooksCount(AppConstants.J_BLOCH);
BigInteger authorsCount = queries.getAuthorsCount();
Book dddBook = queries.getBook("Domain-Driven Design");
List<Book> jBlochBooks = queries.getAuthorBooks(AppConstants.J_BLOCH);
List<Book> blochBooks = queries.getAuthorBooks(AppConstants.J_BLOCH);
LOGGER.info("Author username : {}", nullAuthor);
LOGGER.info("Author eEvans : {}", eEvans);
LOGGER.info("jBloch number of books : {}", jBlochBooksCount);
LOGGER.info("Author evans : {}", evans);
LOGGER.info("jBloch number of books : {}", blochBooksCount);
LOGGER.info("Number of authors : {}", authorsCount);
LOGGER.info("DDD book : {}", dddBook);
LOGGER.info("jBloch books : {}", jBlochBooks);
LOGGER.info("jBloch books : {}", blochBooks);
HibernateUtil.getSessionFactory().close();
}

View File

@ -23,17 +23,16 @@
package com.iluwatar.cqrs.commandes;
import com.iluwatar.cqrs.domain.model.Author;
import com.iluwatar.cqrs.domain.model.Book;
import com.iluwatar.cqrs.util.HibernateUtil;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.iluwatar.cqrs.domain.model.Author;
import com.iluwatar.cqrs.domain.model.Book;
import com.iluwatar.cqrs.util.HibernateUtil;
/**
* This class is an implementation of {@link ICommandService} interface. It uses Hibernate as an api for persistence.
*
* This class is an implementation of {@link ICommandService} interface. It uses Hibernate as an api
* for persistence.
*/
public class CommandServiceImpl implements ICommandService {

View File

@ -24,8 +24,7 @@
package com.iluwatar.cqrs.commandes;
/**
* This interface represents the commands of the CQRS pattern
*
* This interface represents the commands of the CQRS pattern.
*/
public interface ICommandService {

View File

@ -24,9 +24,7 @@
package com.iluwatar.cqrs.constants;
/**
*
* Class to define the constants
*
* Class to define the constants.
*/
public class AppConstants {

View File

@ -30,7 +30,6 @@ import javax.persistence.Id;
/**
* This is an Author entity. It is used by Hibernate for persistence.
*
*/
@Entity
public class Author {
@ -42,13 +41,11 @@ public class Author {
private String email;
/**
*
* @param username
* username of the author
* @param name
* name of the author
* @param email
* email of the author
* Constructor.
*
* @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) {
this.username = username;

View File

@ -30,8 +30,8 @@ import javax.persistence.Id;
import javax.persistence.ManyToOne;
/**
* This is a Book entity. It is used by Hibernate for persistence. Many books can be written by one {@link Author}
*
* This is a Book entity. It is used by Hibernate for persistence. Many books can be written by one
* {@link Author}
*/
@Entity
public class Book {
@ -44,13 +44,11 @@ public class Book {
private Author author;
/**
* Constructor.
*
* @param title
* title of the book
* @param price
* price of the book
* @param author
* author of the 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) {
this.title = title;

View File

@ -26,9 +26,7 @@ package com.iluwatar.cqrs.dto;
import java.util.Objects;
/**
*
* This is a DTO (Data Transfer Object) author, contains only useful information to be returned
*
* This is a DTO (Data Transfer Object) author, contains only useful information to be returned.
*/
public class Author {
@ -37,13 +35,11 @@ public class Author {
private String username;
/**
*
* @param name
* name of the author
* @param email
* email of the author
* @param username
* username of the author
* Constructor.
*
* @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) {
this.name = name;
@ -85,7 +81,8 @@ public class Author {
return false;
}
Author other = (Author) obj;
return username.equals(other.getUsername()) && email.equals(other.getEmail()) && name.equals(other.getName());
return username.equals(other.getUsername()) && email.equals(other.getEmail()) && name
.equals(other.getName());
}

View File

@ -26,9 +26,7 @@ package com.iluwatar.cqrs.dto;
import java.util.Objects;
/**
*
* This is a DTO (Data Transfer Object) book, contains only useful information to be returned
*
* This is a DTO (Data Transfer Object) book, contains only useful information to be returned.
*/
public class Book {
@ -36,11 +34,10 @@ public class Book {
private double price;
/**
*
* @param title
* title of the book
* @param price
* price of the book
* Constructor.
*
* @param title title of the book
* @param price price of the book
*/
public Book(String title, double price) {
this.title = title;

View File

@ -23,16 +23,13 @@
package com.iluwatar.cqrs.queries;
import com.iluwatar.cqrs.dto.Author;
import com.iluwatar.cqrs.dto.Book;
import java.math.BigInteger;
import java.util.List;
import com.iluwatar.cqrs.dto.Author;
import com.iluwatar.cqrs.dto.Book;
/**
*
* This interface represents the query methods of the CQRS pattern
*
* This interface represents the query methods of the CQRS pattern.
*/
public interface IQueryService {

View File

@ -23,23 +23,20 @@
package com.iluwatar.cqrs.queries;
import com.iluwatar.cqrs.constants.AppConstants;
import com.iluwatar.cqrs.dto.Author;
import com.iluwatar.cqrs.dto.Book;
import com.iluwatar.cqrs.util.HibernateUtil;
import java.math.BigInteger;
import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import com.iluwatar.cqrs.constants.AppConstants;
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.
*
* This class is an implementation of {@link IQueryService}. It uses Hibernate native queries to
* return DTOs from the database.
*/
public class QueryServiceImpl implements IQueryService {
@ -49,11 +46,12 @@ public class QueryServiceImpl implements IQueryService {
public Author getAuthorByUsername(String username) {
Author authorDTo = null;
try (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 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(AppConstants.USER_NAME, username);
authorDTo = (Author) sqlQuery.setResultTransformer(Transformers.aliasToBean(Author.class)).uniqueResult();
authorDTo = (Author) sqlQuery.setResultTransformer(Transformers.aliasToBean(Author.class))
.uniqueResult();
}
return authorDTo;
}
@ -62,10 +60,11 @@ public class QueryServiceImpl implements IQueryService {
public Book getBook(String title) {
Book bookDTo = null;
try (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 sqlQuery = session.createSQLQuery("SELECT b.title as \"title\","
+ " b.price as \"price\"" + " FROM Book b where b.title=:title");
sqlQuery.setParameter("title", title);
bookDTo = (Book) sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).uniqueResult();
bookDTo =
(Book) sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).uniqueResult();
}
return bookDTo;
}
@ -87,7 +86,8 @@ public class QueryServiceImpl implements IQueryService {
BigInteger bookcount = null;
try (Session session = sessionFactory.openSession()) {
SQLQuery sqlQuery = session.createSQLQuery(
"SELECT count(b.title)" + " FROM Book b, Author a where b.author_id = a.id and a.username=:username");
"SELECT count(b.title)" + " FROM Book b, Author a"
+ " where b.author_id = a.id and a.username=:username");
sqlQuery.setParameter(AppConstants.USER_NAME, username);
bookcount = (BigInteger) sqlQuery.uniqueResult();
}

View File

@ -31,8 +31,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class simply returns one instance of {@link SessionFactory} initialized when the application is started
*
* This class simply returns one instance of {@link SessionFactory} initialized when the application
* is started.
*/
public class HibernateUtil {
@ -42,7 +42,8 @@ public class HibernateUtil {
private static SessionFactory buildSessionFactory() {
// configures settings from hibernate.cfg.xml
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
final StandardServiceRegistry registry =
new StandardServiceRegistryBuilder().configure().build();
try {
return new MetadataSources(registry).buildMetadata().buildSessionFactory();
} catch (Exception ex) {