Skip to content

Commit

Permalink
Added implementations of persistence logic (logic copied form EJB layer)
Browse files Browse the repository at this point in the history
  • Loading branch information
azzazzel committed Mar 15, 2015
1 parent 8af888c commit 7ff311b
Show file tree
Hide file tree
Showing 10 changed files with 551 additions and 66 deletions.
119 changes: 67 additions & 52 deletions jpa-persistence/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,56 +13,71 @@

<name>JPA persistence module</name>

<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>dukes-domain-model</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>false</skip>
<executable>${glassfish.home}/bin/asadmin${glassfish.executables.suffix}</executable>
<successCodes>
<successCode>0</successCode>
<successCode>1</successCode>
</successCodes>
<arguments>
<argument>create-auth-realm</argument>
<argument>--classname=com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm</argument>
<argument>--property=jaas-context=jdbcRealm:datasource-jndi=java\:global/ForestDataSource:user-table=forest.PERSON:user-name-column=email:password-column=password:group-table=forest.GROUPS:group-table-user-name-column=name:group-name-column=name:assign-groups=USERS,ADMINS:digest-algorithm=MD5</argument>
<argument>jdbcRealm</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.javaeetutorial</groupId>
<artifactId>dukes-domain-model</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.javaeetutorial</groupId>
<artifactId>usecases-identity</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.javaeetutorial</groupId>
<artifactId>usecases-catalog</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.javaeetutorial</groupId>
<artifactId>usecases-ecommerce</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>false</skip>
<executable>${glassfish.home}/bin/asadmin${glassfish.executables.suffix}</executable>
<successCodes>
<successCode>0</successCode>
<successCode>1</successCode>
</successCodes>
<arguments>
<argument>create-auth-realm</argument>
<argument>--classname=com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm</argument>
<argument>--property=jaas-context=jdbcRealm:datasource-jndi=java\:global/ForestDataSource:user-table=forest.PERSON:user-name-column=email:password-column=password:group-table=forest.GROUPS:group-table-user-name-column=name:group-name-column=name:assign-groups=USERS,ADMINS:digest-algorithm=MD5</argument>
<argument>jdbcRealm</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
* compliance with the terms of the License at:
* http://java.net/projects/javaeetutorial/pages/BerkeleyLicense
*/
package com.forest.ejb;
package com.forest.persitence.jpa;

import java.util.List;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
Expand All @@ -16,42 +17,41 @@
*
* @author markito
*/
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
public abstract class AbstractBasePersistence<E extends M, M> {
private Class<E> entityClass;

public AbstractFacade() {
private static final Logger logger = Logger.getLogger(AbstractBasePersistence.class.getCanonicalName());

}

public AbstractFacade(final Class<T> entityClass) {
public AbstractBasePersistence(final Class<E> entityClass) {
this.entityClass = entityClass;
}

protected abstract EntityManager getEntityManager();

public void create(T entity) {
public void create(M entity) {
getEntityManager().persist(entity);
}

public void edit(T entity) {
public void update(M entity) {
getEntityManager().merge(entity);
}

public void remove(T entity) {
public void remove(M entity) {
getEntityManager().remove(getEntityManager().merge(entity));
}

public T find(Object id) {
public M find(Object id) {
return getEntityManager().find(entityClass, id);
}

public List<T> findAll() {
public List<M> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}

public List<T> findRange(int[] range) {
public List<M> findRange(int[] range) {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
javax.persistence.Query q = getEntityManager().createQuery(cq);
Expand All @@ -60,7 +60,7 @@ public List<T> findRange(int[] range) {
return q.getResultList();
}

public List<T> findRange(int[] range, CriteriaQuery query) {
public List<M> findRange(int[] range, CriteriaQuery query) {
javax.persistence.Query q = getEntityManager().createQuery(query);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
Expand All @@ -74,7 +74,7 @@ public CriteriaBuilder getCriteriaBuilder() {

public int count() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
javax.persistence.criteria.Root<E> rt = cq.from(entityClass);
cq.select(getEntityManager().getCriteriaBuilder().count(rt));
javax.persistence.Query q = getEntityManager().createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.forest.persitence.jpa;

import javax.persistence.EntityManager;

import com.forest.entity.AdministratorEntity;
import com.forest.model.Administrator;
import com.forest.usecase.identity.persistence.AdministratorPersistence;

public class AdministratorPersistenceJPA extends AbstractBasePersistence<AdministratorEntity, Administrator> implements AdministratorPersistence {

public AdministratorPersistenceJPA() {
super(AdministratorEntity.class);
}

private EntityManager entityManager;

public void setEntityManager(EntityManager em) {
this.entityManager = em;
}

@Override
protected EntityManager getEntityManager() {
return entityManager;
}

@Override
public void createAdministrator(Administrator administrator) {
super.create(administrator);
}


@Override
public void updateAdministrator(Administrator person) {
update(person);
}

@Override
public void removeAdministrator(Administrator person) {
remove(person);
}

@Override
public Administrator getAdministrator(int id) {
return find(id);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.forest.persitence.jpa;

import javax.persistence.EntityManager;

import com.forest.entity.CategoryEntity;
import com.forest.model.Category;
import com.forest.usecase.catalog.persistence.CategoryPersistence;

public class CategoryPersistenceJPA extends AbstractBasePersistence<CategoryEntity, Category> implements CategoryPersistence {

public CategoryPersistenceJPA() {
super(CategoryEntity.class);
}

private EntityManager entityManager;

public void setEntityManager(EntityManager em) {
this.entityManager = em;
}

@Override
protected EntityManager getEntityManager() {
return entityManager;
}

@Override
public void createCategory(Category category) {
create(category);
}

@Override
public void updateCategory(Category category) {
update(category);
}

@Override
public void removeCategory(Category category) {
remove(category);
}

@Override
public Category getCategory(int id) {
return find(id);
}




}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.forest.persitence.jpa;

import javax.persistence.EntityManager;

import com.forest.entity.GroupsEntity;
import com.forest.model.Group;
import com.forest.usecase.identity.persistence.GroupPersistence;

public class GroupPersistenceJPA extends AbstractBasePersistence<GroupsEntity, Group> implements GroupPersistence {

public GroupPersistenceJPA() {
super(GroupsEntity.class);
}

private EntityManager entityManager;

public void setEntityManager(EntityManager em) {
this.entityManager = em;
}

@Override
protected EntityManager getEntityManager() {
return entityManager;
}

@Override
public void createGroup(Group group) {
super.create(group);

}

@Override
public void updateGroup(Group group) {
update(group);
}

@Override
public void removeGroup(Group group) {
remove(group);
}

@Override
public Group getGroup(int id) {
return find(id);
}

@Override
public Group findGroupByName(String name) {
return (Group) entityManager.createNamedQuery("Groups.findByName")
.setParameter("name", "Administrator")
.getSingleResult();
}



}
Loading

0 comments on commit 7ff311b

Please sign in to comment.