add logs, javadoc and format to checkstyle conventions
This commit is contained in:
		| @@ -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(); | ||||
|   | ||||
| @@ -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); | ||||
|   | ||||
| @@ -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(); | ||||
|   | ||||
| @@ -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(); | ||||
|   | ||||
| @@ -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(); | ||||
|   } | ||||
| 
 | ||||
| @@ -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(); | ||||
|   } | ||||
| 
 | ||||
| @@ -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<BookDTO> getAuthorBooks(String username); | ||||
|   public abstract List<Book> getAuthorBooks(String username); | ||||
|  | ||||
|   public abstract BigInteger getAuthorBooksCount(String username); | ||||
|  | ||||
|   | ||||
| @@ -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<BookDTO> getAuthorBooks(String username) { | ||||
|   public List<Book> 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<BookDTO> bookDTOs = sqlQuery.setResultTransformer(Transformers.aliasToBean(BookDTO.class)).list(); | ||||
|     List<Book> bookDTos = sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).list(); | ||||
|     session.close(); | ||||
|     return bookDTOs; | ||||
|     return bookDTos; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   | ||||
| @@ -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); | ||||
|     } | ||||
|   } | ||||
|   | ||||
| @@ -3,13 +3,13 @@ | ||||
| "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> | ||||
|  | ||||
| <hibernate-configuration> | ||||
| 	<session-factory> | ||||
| 		<property name="dialect">org.hibernate.dialect.H2Dialect</property> | ||||
| 		<property name="connection.driver_class">org.h2.Driver</property> | ||||
| 		<property name="connection.url">jdbc:h2:mem:test</property> | ||||
| 		<property name="connection.username">sa</property> | ||||
| 		<property name="hbm2ddl.auto">create</property> | ||||
| 		<mapping class="com.iluwatar.cqrs.domain.model.Author" /> | ||||
| 		<mapping class="com.iluwatar.cqrs.domain.model.Book" /> | ||||
| 	</session-factory> | ||||
|     <session-factory> | ||||
|         <property name="dialect">org.hibernate.dialect.H2Dialect</property> | ||||
|         <property name="connection.driver_class">org.h2.Driver</property> | ||||
|         <property name="connection.url">jdbc:h2:mem:test</property> | ||||
|         <property name="connection.username">sa</property> | ||||
|         <property name="hbm2ddl.auto">create</property> | ||||
|         <mapping class="com.iluwatar.cqrs.domain.model.Author" /> | ||||
|         <mapping class="com.iluwatar.cqrs.domain.model.Book" /> | ||||
|     </session-factory> | ||||
| </hibernate-configuration> | ||||
							
								
								
									
										13
									
								
								cqrs/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								cqrs/src/main/resources/logback.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <configuration> | ||||
|     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||||
|         <encoder> | ||||
|             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n | ||||
|             </pattern> | ||||
|         </encoder> | ||||
|     </appender> | ||||
|  | ||||
|     <root level="info"> | ||||
|         <appender-ref ref="STDOUT" /> | ||||
|     </root> | ||||
| </configuration> | ||||
		Reference in New Issue
	
	Block a user