Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Your Name committed Sep 17, 2021
0 parents commit a7b9867
Show file tree
Hide file tree
Showing 16 changed files with 461 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Project exclude paths
/target/
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/jpa-buddy.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/runConfigurations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

124 changes: 124 additions & 0 deletions .idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

81 changes: 81 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.ocolak</groupId>
<artifactId>DBJUnitTestExample</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>[2.13.2,)</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>[2.13.2,)</version>
</dependency>
<!-- Provided -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!-- JAVA EE dependencies -->
<dependency> <!-- Java EE -->
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<!-- need for entityManager tests: PersistenceException: No Persistence provider for EntityManager named persistence-unit-test -->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.7.9</version>
<scope>provided</scope>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>1.7.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>3.8.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>
17 changes: 17 additions & 0 deletions src/main/java/com/ocolak/dao/GenericDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.ocolak.dao;

import java.util.List;

import javax.persistence.EntityManager;

public interface GenericDao<K, E> {

List<E> findAll();

E getByField(String field, String value);

E getById(K key);

EntityManager getEntityManager();

}
19 changes: 19 additions & 0 deletions src/main/java/com/ocolak/dao/impl/BookDaoImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.ocolak.dao.impl;

import com.ocolak.entity.Book;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;


@Stateless
public class BookDaoImpl extends GenericDaoImpl<Integer, Book> {
@PersistenceContext(unitName = "persistence-unit")
protected EntityManager em;

@Override
public EntityManager getEntityManager() {
return em;
}
}
51 changes: 51 additions & 0 deletions src/main/java/com/ocolak/dao/impl/GenericDaoImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.ocolak.dao.impl;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;


import com.ocolak.dao.GenericDao;
import lombok.extern.log4j.Log4j2;

@Log4j2
public abstract class GenericDaoImpl<K, E> implements GenericDao<K, E> {

private Class<E> persistentClass;

@SuppressWarnings("unchecked")
public GenericDaoImpl() {
Type genericSuperClass = getClass().getGenericSuperclass();

ParameterizedType parametrizedType = null;
while (parametrizedType == null) {
if (genericSuperClass instanceof ParameterizedType) {
parametrizedType = (ParameterizedType) genericSuperClass;
} else {
genericSuperClass = ((Class<?>) genericSuperClass).getGenericSuperclass();
}
}
this.persistentClass = (Class<E>) parametrizedType.getActualTypeArguments()[1];
}

@Override
public List<E> findAll() {
return getEntityManager().createNamedQuery(String.format("%s.findAll", persistentClass.getSimpleName()), persistentClass)
.getResultList();
}

@Override
public E getByField(final String field, final String value) {
log.debug(String.format("persistentClass: %s", persistentClass.getSimpleName()));
log.debug(String.format("field: %s", field));
return getEntityManager()
.createQuery(String.format("SELECT t FROM %s t where t.%s = :value", persistentClass.getSimpleName(), field),
persistentClass)
.setParameter("value", value).getResultStream().findFirst().orElse(null);
}

@Override
public E getById(final K key) {
return getEntityManager().find(persistentClass, key);
}
}
Loading

0 comments on commit a7b9867

Please sign in to comment.