Skip to content

Commit

Permalink
Resolves checkstyle errors for converter, cqrs (#1063)
Browse files Browse the repository at this point in the history
* Reduces checkstyle errors in converter

* Reduces checkstyle errors in cqrs
  • Loading branch information
anuragagarwal561994 authored and iluwatar committed Nov 10, 2019
1 parent 2f49648 commit 4f9ee01
Show file tree
Hide file tree
Showing 16 changed files with 129 additions and 127 deletions.
7 changes: 3 additions & 4 deletions converter/src/main/java/com/iluwatar/converter/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,10 @@

package com.iluwatar.converter;


import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

/**
* The Converter pattern is a behavioral design pattern which allows a common way of bidirectional
* conversion between corresponding types (e.g. DTO and domain representations of the logically
Expand All @@ -38,8 +36,9 @@
public class App {

private static final Logger LOGGER = LoggerFactory.getLogger(App.class);

/**
* Program entry point
* Program entry point.
*
* @param args command line args
*/
Expand Down
31 changes: 22 additions & 9 deletions converter/src/main/java/com/iluwatar/converter/Converter.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@

/**
* Generic converter, thanks to Java8 features not only provides a way of generic bidirectional
* conversion between corresponding types, but also a common way of converting a collection of objects
* of the same type, reducing boilerplate code to the absolute minimum.
* conversion between corresponding types, but also a common way of converting a collection of
* objects of the same type, reducing boilerplate code to the absolute minimum.
*
* @param <T> DTO representation's type
* @param <U> Domain representation's type
*/
Expand All @@ -41,7 +42,9 @@ public class Converter<T, U> {
private final Function<U, T> fromEntity;

/**
* @param fromDto Function that converts given dto entity into the domain entity.
* Constructor.
*
* @param fromDto Function that converts given dto entity into the domain entity.
* @param fromEntity Function that converts given domain entity into the dto entity.
*/
public Converter(final Function<T, U> fromDto, final Function<U, T> fromEntity) {
Expand All @@ -50,34 +53,44 @@ public Converter(final Function<T, U> fromDto, final Function<U, T> fromEntity)
}

/**
* Converts DTO to Entity.
*
* @param dto DTO entity
* @return The domain representation - the result of the converting function application on dto entity.
* @return The domain representation - the result of the converting function application on dto
* entity.
*/
public final U convertFromDto(final T dto) {
return fromDto.apply(dto);
}

/**
* Converts Entity to DTO.
*
* @param entity domain entity
* @return The DTO representation - the result of the converting function application on domain entity.
* @return The DTO representation - the result of the converting function application on domain
* entity.
*/
public final T convertFromEntity(final U entity) {
return fromEntity.apply(entity);
}

/**
* Converts list of DTOs to list of Entities.
*
* @param dtos collection of DTO entities
* @return List of domain representation of provided entities retrieved by
* mapping each of them with the conversion function
* @return List of domain representation of provided entities retrieved by mapping each of them
* with the conversion function
*/
public final List<U> createFromDtos(final Collection<T> dtos) {
return dtos.stream().map(this::convertFromDto).collect(Collectors.toList());
}

/**
* Converts list of Entities to list of DTOs.
*
* @param entities collection of domain entities
* @return List of domain representation of provided entities retrieved by
* mapping each of them with the conversion function
* @return List of domain representation of provided entities retrieved by mapping each of them
* with the conversion function
*/
public final List<T> createFromEntities(final Collection<U> entities) {
return entities.stream().map(this::convertFromEntity).collect(Collectors.toList());
Expand Down
19 changes: 12 additions & 7 deletions converter/src/main/java/com/iluwatar/converter/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import java.util.Objects;

/**
* User class
* User class.
*/
public class User {
private String firstName;
Expand All @@ -35,10 +35,12 @@ public class User {
private String userId;

/**
* Constructor.
*
* @param firstName user's first name
* @param lastName user's last name
* @param isActive flag indicating whether the user is active
* @param userId user's identificator
* @param userId user's identificator
*/
public User(String firstName, String lastName, boolean isActive, String userId) {
this.firstName = firstName;
Expand All @@ -63,7 +65,8 @@ public String getUserId() {
return userId;
}

@Override public boolean equals(Object o) {
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
Expand All @@ -72,15 +75,17 @@ public String getUserId() {
}
User user = (User) o;
return isActive == user.isActive && Objects.equals(firstName, user.firstName) && Objects
.equals(lastName, user.lastName) && Objects.equals(userId, user.userId);
.equals(lastName, user.lastName) && Objects.equals(userId, user.userId);
}

@Override public int hashCode() {
@Override
public int hashCode() {
return Objects.hash(firstName, lastName, isActive, userId);
}

@Override public String toString() {
@Override
public String toString() {
return "User{" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\''
+ ", isActive=" + isActive + ", userId='" + userId + '\'' + '}';
+ ", isActive=" + isActive + ", userId='" + userId + '\'' + '}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ public class UserConverter extends Converter<UserDto, User> {
*/
public UserConverter() {
super(userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
userDto.getEmail()),
userDto.getEmail()),
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
user.getUserId()));
user.getUserId()));
}
}
18 changes: 11 additions & 7 deletions converter/src/main/java/com/iluwatar/converter/UserDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,10 @@

package com.iluwatar.converter;


import java.util.Objects;

/**
* User DTO class
* User DTO class.
*/
public class UserDto {

Expand All @@ -37,6 +36,8 @@ public class UserDto {
private String email;

/**
* Constructor.
*
* @param firstName user's first name
* @param lastName user's last name
* @param isActive flag indicating whether the user is active
Expand Down Expand Up @@ -65,7 +66,8 @@ public String getEmail() {
return email;
}

@Override public boolean equals(Object o) {
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
Expand All @@ -74,15 +76,17 @@ public String getEmail() {
}
UserDto userDto = (UserDto) o;
return isActive == userDto.isActive && Objects.equals(firstName, userDto.firstName) && Objects
.equals(lastName, userDto.lastName) && Objects.equals(email, userDto.email);
.equals(lastName, userDto.lastName) && Objects.equals(email, userDto.email);
}

@Override public int hashCode() {
@Override
public int hashCode() {
return Objects.hash(firstName, lastName, isActive, email);
}

@Override public String toString() {
@Override
public String toString() {
return "UserDto{" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\''
+ ", isActive=" + isActive + ", email='" + email + '\'' + '}';
+ ", isActive=" + isActive + ", email='" + email + '\'' + '}';
}
}
50 changes: 24 additions & 26 deletions cqrs/src/main/java/com/iluwatar/cqrs/app/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -37,59 +31,63 @@
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");

commands.bookAddedToAuthor("Domain-Driven Design", 60.08, AppConstants.E_EVANS);
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");

IQueryService queries = new QueryServiceImpl();

// 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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,16 @@

package com.iluwatar.cqrs.commandes;

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;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

/**
* 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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@
package com.iluwatar.cqrs.constants;

/**
*
* Class to define the constants
*
* Class to define the constants.
*/
public class AppConstants {

Expand Down
13 changes: 5 additions & 8 deletions cqrs/src/main/java/com/iluwatar/cqrs/domain/model/Author.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

/**
* This is an Author entity. It is used by Hibernate for persistence.
*
*/
@Entity
public class Author {
Expand All @@ -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;
Expand Down

0 comments on commit 4f9ee01

Please sign in to comment.