Commit c77e2144b8fc1661fa78b8cdc6b93c0a4cdc559b

Authored by Thomas Ziemer
1 parent 52fa3280

Grundsatzstruktur eingeführt

src/main/java/net/ziemers/swxercise/db/BaseEntity.java 0 → 100644
  1 +package net.ziemers.swxercise.db;
  2 +
  3 +import javax.persistence.GeneratedValue;
  4 +import javax.persistence.Id;
  5 +
  6 +public class BaseEntity {
  7 +
  8 + @Id
  9 + @GeneratedValue
  10 + protected Long id;
  11 +
  12 + public Long getId() {
  13 + return id;
  14 + }
  15 +
  16 +}
0 \ No newline at end of file 17 \ No newline at end of file
src/main/java/net/ziemers/swxercise/db/dao/GenericDao.java 0 → 100644
  1 +package net.ziemers.swxercise.db.dao;
  2 +
  3 +import java.util.Collection;
  4 +
  5 +import javax.ejb.Stateless;
  6 +import javax.inject.Inject;
  7 +import javax.persistence.EntityManager;
  8 +import javax.persistence.criteria.CriteriaBuilder;
  9 +import javax.persistence.criteria.CriteriaQuery;
  10 +// import javax.persistence.criteria.Predicate;
  11 +// import javax.persistence.criteria.Root;
  12 +
  13 +import net.ziemers.swxercise.db.BaseEntity;
  14 +
  15 +@Stateless
  16 +public class GenericDao {
  17 +
  18 + @Inject
  19 + private EntityManager entityManager;
  20 +
  21 + /**
  22 + * Speichert die gegebene Entität.
  23 + *
  24 + * @see EntityManager#persist(Object)
  25 + * @param entity die zu speichernde Entität
  26 + * @param <T> Generic für den Entity-Typ.
  27 + * @return die Id der persistierten Entität
  28 + */
  29 + public <T extends BaseEntity> Long save(final T entity) {
  30 + entityManager.persist(entity);
  31 + return entity.getId();
  32 + }
  33 +
  34 + public <T extends BaseEntity> T saveOrUpdate(final T entity) {
  35 + return entityManager.merge(entity);
  36 + }
  37 +
  38 + /**
  39 + * @param entityType Entity-Typ.
  40 + * @param primaryKey Id
  41 + * @param <T> Generic für Entity-Typ
  42 + * @return die Entität mit gegebener Id oder <code>null</code>, wenn keine gefunden
  43 + */
  44 + public <T extends BaseEntity> T findById(Class<T> entityType, Long primaryKey) {
  45 + T entity = entityManager.find(entityType, primaryKey);
  46 + return entity;
  47 + }
  48 +
  49 + /**
  50 + * @param entityType Entity-Typ.
  51 + * @param <T> Generic für den Entity-Typ.
  52 + * @return alle (aktiven) Entitäten vom gegebenen Typ
  53 + */
  54 + public <T extends BaseEntity> Collection<T> findAll(Class<T> entityType) {
  55 + CriteriaBuilder cb = entityManager.getCriteriaBuilder();
  56 + CriteriaQuery<T> query = cb.createQuery(entityType);
  57 + // Root<T> root = query.from(entityType);
  58 + // Predicate activeStatus = cb.equal(root.get(STATUS), Status.ACTIVE);
  59 + // query.where(activeStatus);
  60 + return entityManager.createQuery(query).getResultList();
  61 + }
  62 +
  63 +}
src/main/java/net/ziemers/swxercise/lg/user/Address.java 0 → 100644
  1 +package net.ziemers.swxercise.lg.user;
  2 +
  3 +import javax.persistence.Entity;
  4 +
  5 +import net.ziemers.swxercise.db.BaseEntity;
  6 +
  7 +@Entity
  8 +public class Address extends BaseEntity {
  9 +
  10 + private String street;
  11 +
  12 + private String zipcode;
  13 +
  14 + private String city;
  15 +
  16 + private String country;
  17 +
  18 + public String getStreet() {
  19 + return street;
  20 + }
  21 +
  22 + public void setStreet(String street) {
  23 + this.street = street;
  24 + }
  25 +
  26 + public String getZipcode() {
  27 + return zipcode;
  28 + }
  29 +
  30 + public void setZipcode(String zipcode) {
  31 + this.zipcode = zipcode;
  32 + }
  33 +
  34 + public String getCity() {
  35 + return city;
  36 + }
  37 +
  38 + public void setCity(String city) {
  39 + this.city = city;
  40 + }
  41 +
  42 + public String getCountry() {
  43 + return country;
  44 + }
  45 +
  46 + public void setCountry(String country) {
  47 + this.country = country;
  48 + }
  49 +
  50 +}
src/main/java/net/ziemers/swxercise/lg/user/Profile.java 0 → 100644
  1 +package net.ziemers.swxercise.lg.user;
  2 +
  3 +import javax.persistence.Entity;
  4 +
  5 +import net.ziemers.swxercise.db.BaseEntity;
  6 +
  7 +@Entity
  8 +public class Profile extends BaseEntity {
  9 +
  10 + private String passwordHash;
  11 +
  12 + private String mailaddress;
  13 +
  14 + public String getPasswordHash() {
  15 + return passwordHash;
  16 + }
  17 +
  18 + public void setPasswordHash(String passwordHash) {
  19 + this.passwordHash = passwordHash;
  20 + }
  21 +
  22 + public String getMailaddress() {
  23 + return mailaddress;
  24 + }
  25 +
  26 + public void setMailaddress(String mailaddress) {
  27 + this.mailaddress = mailaddress;
  28 + }
  29 +
  30 +}
src/main/java/net/ziemers/swxercise/lg/user/User.java 0 → 100644
  1 +package net.ziemers.swxercise.lg.user;
  2 +
  3 +import javax.persistence.Entity;
  4 +
  5 +import net.ziemers.swxercise.db.BaseEntity;
  6 +
  7 +@Entity
  8 +public class User extends BaseEntity {
  9 +
  10 + private String firstname;
  11 +
  12 + private String lastname;
  13 +
  14 + public String getFirstname() {
  15 + return firstname;
  16 + }
  17 +
  18 + public void setFirstname(String firstname) {
  19 + this.firstname = firstname;
  20 + }
  21 +
  22 + public String getLastname() {
  23 + return lastname;
  24 + }
  25 +
  26 + public void setLastname(String lastname) {
  27 + this.lastname = lastname;
  28 + }
  29 +
  30 +}
src/main/java/net/ziemers/swxercise/lg/user/service/UserService.java 0 → 100644
  1 +package net.ziemers.swxercise.lg.user.service;
  2 +
  3 +import java.util.Collection;
  4 +
  5 +import javax.ejb.Stateless;
  6 +import javax.inject.Inject;
  7 +
  8 +import net.ziemers.swxercise.db.BaseEntity;
  9 +import net.ziemers.swxercise.db.dao.GenericDao;
  10 +import net.ziemers.swxercise.lg.user.User;
  11 +
  12 +@Stateless
  13 +public class UserService {
  14 +
  15 + @Inject
  16 + private GenericDao genericDao;
  17 +
  18 + public User findUser(final Long id) {
  19 + return genericDao.findById(User.class, id);
  20 + }
  21 +
  22 + public Collection<User> findAllUsers() {
  23 + return genericDao.findAll(User.class);
  24 + }
  25 +
  26 + public <T extends BaseEntity> Long saveUser(final User user) {
  27 + return genericDao.save(user);
  28 + }
  29 +
  30 +}
src/main/java/net/ziemers/swxercise/ui/RestController.java
1 package net.ziemers.swxercise.ui; 1 package net.ziemers.swxercise.ui;
2 2
  3 +import java.util.Collection;
  4 +
3 import javax.annotation.PostConstruct; 5 import javax.annotation.PostConstruct;
4 import javax.enterprise.context.ApplicationScoped; 6 import javax.enterprise.context.ApplicationScoped;
  7 +import javax.inject.Inject;
5 import javax.ws.rs.GET; 8 import javax.ws.rs.GET;
6 import javax.ws.rs.Path; 9 import javax.ws.rs.Path;
7 import javax.ws.rs.PathParam; 10 import javax.ws.rs.PathParam;
8 import javax.ws.rs.Produces; 11 import javax.ws.rs.Produces;
9 import javax.ws.rs.core.MediaType; 12 import javax.ws.rs.core.MediaType;
10 13
  14 +import net.ziemers.swxercise.lg.user.User;
  15 +import net.ziemers.swxercise.lg.user.service.UserService;
11 import org.slf4j.Logger; 16 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory; 17 import org.slf4j.LoggerFactory;
13 18
@@ -15,10 +20,13 @@ import org.slf4j.LoggerFactory; @@ -15,10 +20,13 @@ import org.slf4j.LoggerFactory;
15 @Path(RestController.webContextPath) 20 @Path(RestController.webContextPath)
16 public class RestController { 21 public class RestController {
17 22
18 - static final String webContextPath = "/misc"; 23 + static final String webContextPath = "/user";
19 24
20 private Logger logger; 25 private Logger logger;
21 26
  27 + @Inject
  28 + private UserService userService;
  29 +
22 @PostConstruct 30 @PostConstruct
23 public void init() { 31 public void init() {
24 logger = LoggerFactory.getLogger(RestController.class); 32 logger = LoggerFactory.getLogger(RestController.class);
@@ -39,4 +47,11 @@ public class RestController { @@ -39,4 +47,11 @@ public class RestController {
39 return String.format("Hello %s", name); 47 return String.format("Hello %s", name);
40 } 48 }
41 49
  50 + @GET
  51 + @Path("/get")
  52 + @Produces(MediaType.APPLICATION_JSON)
  53 + public Collection<User> getAllUsers() {
  54 + return userService.findAllUsers();
  55 + }
  56 +
42 } 57 }
src/main/resources/META-INF/persistence.xml 0 → 100644
  1 +<persistence version="2.0"
  2 + xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  4 + <persistence-unit name="swXercisePU" transaction-type="JTA">
  5 + <jta-data-source>java:jboss/datasources/swXerciseDS</jta-data-source>
  6 + <properties>
  7 + <!-- property name="hibernate.hbm2ddl.auto" value="create-drop" / -->
  8 + <property name="hibernate.hbm2ddl.auto" value="update" />
  9 + </properties>
  10 + </persistence-unit>
  11 + <persistence-unit name="swXerciseTestPU"
  12 + transaction-type="RESOURCE_LOCAL">
  13 + <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
  14 + <exclude-unlisted-classes>false</exclude-unlisted-classes>
  15 +
  16 + <properties>
  17 + <!-- Property for WildFly to ignore this -->
  18 + <property name="jboss.as.jpa.managed" value="false" />
  19 + <!-- Properties for Hibernate -->
  20 + <property name="javax.persistence.jdbc.url"
  21 + value="jdbc:mariadb://${abisnext.test.host}:${abisnext.test.port}/${abisnext.test.schema}" />
  22 + <property name="javax.persistence.jdbc.user" value="${abisnext.test.user}" />
  23 + <property name="javax.persistence.jdbc.password" value="${abisnext.test.password}" />
  24 + <property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver" />
  25 + <property name="hibernate.show_sql" value="false" />
  26 + <property name="hibernate.format_sql" value="false" />
  27 + <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
  28 + <!--<property name="hibernate.hbm2ddl.auto" value="create-drop" /> -->
  29 + <property name="hibernate.connection.useUnicode" value="true" />
  30 + <property name="hibernate.connection.characterEncoding"
  31 + value="UTF-8" />
  32 + <property name="hibernate.connection.provider_class"
  33 + value="org.hibernate.connection.C3P0ConnectionProvider" />
  34 +
  35 + <property name="hibernate.c3p0.min_size" value="2" />
  36 + <property name="hibernate.c3p0.max_size" value="100" />
  37 + <property name="hibernate.c3p0.timeout" value="10" />
  38 + <property name="hibernate.c3p0.max_statements" value="100" />
  39 + <property name="hibernate.c3p0.idle_test_period" value="30" />
  40 +
  41 + <property name="hibernate.temp.use_jdbc_metadata_defaults"
  42 + value="false" />
  43 + <property name="hibernate.ejb.entitymanager_factory_name"
  44 + value="abisnext_test" />
  45 + </properties>
  46 + </persistence-unit>
  47 +</persistence>
0 \ No newline at end of file 48 \ No newline at end of file