diff --git a/README.md b/README.md
index 91452bf..16b644a 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,5 @@ Create an information system allowing sportsmen to sign up for a sporting event.
Team No. 4
- Petra Halová
-- Martin Ondo-Eštok
- Martin Šmíd
- Jiří Tobiáš (team leader)
\ No newline at end of file
diff --git a/persistence/persistence.iml b/persistence/persistence.iml
index 4286d11..80c0757 100644
--- a/persistence/persistence.iml
+++ b/persistence/persistence.iml
@@ -9,7 +9,7 @@
-
+
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDao.java b/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDao.java
index febcf63..7da4fad 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDao.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDao.java
@@ -28,6 +28,11 @@ public interface BaseDao {
* @return Entity object with the input ID
*/
T findById(Long id);
+ /**
+ *
+ * Updates entity.
+ */
+ void update(T entity);
/**
* Finds all entity objects in DB
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDaoImpl.java b/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDaoImpl.java
index 0958403..ca932cd 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDaoImpl.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDaoImpl.java
@@ -2,7 +2,6 @@
import cz.fi.muni.pa165.entity.BaseEntity;
import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@@ -25,6 +24,11 @@ public void delete(T entity) {
entityManager.remove(entity);
}
+ @Override
+ public void update(T entity) {
+ entityManager.merge(entity);
+ }
+
public T findByIdAndClass(Class entityClass, Long id) {
return entityManager.find(entityClass, id);
}
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDao.java b/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDao.java
index 2471a9e..9549046 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDao.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDao.java
@@ -7,14 +7,5 @@
* @author jiritobias
*/
public interface SportsMenDao extends UserDao {
- /**
- * Add sportsMan to competiton.
- */
- void addToCompetition(Competition competition, User sportsMan);
-
- /**
- * Removes sportsmen from competition.
- */
- void removeFromCompetition(Competition competition, User sportsMan);
}
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDaoImpl.java b/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDaoImpl.java
index 8fcf4f2..435de46 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDaoImpl.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/dao/SportsMenDaoImpl.java
@@ -20,24 +20,6 @@ public void create(User sportsMan) {
entityManager.merge(sportsMan);
}
- @Override
- public void addToCompetition(Competition competition, User sportsMan) {
- assert competition != null;
- assert sportsMan != null;
-
- sportsMan.addToCompetition(competition);
- entityManager.merge(sportsMan);
- }
-
- @Override
- public void removeFromCompetition(Competition competition, User sportsMan) {
- assert competition != null;
- assert sportsMan != null;
-
- sportsMan.removeFromCompetition(competition);
- entityManager.merge(sportsMan);
- }
-
@Override
public List findAll() {
return entityManager.createQuery("SELECT s FROM User s where s.role = :role", User.class)
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/entity/Competition.java b/persistence/src/main/java/cz/fi/muni/pa165/entity/Competition.java
index b07151f..536b17d 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/entity/Competition.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/entity/Competition.java
@@ -59,17 +59,19 @@ public boolean equals(Object o) {
Competition that = (Competition) o;
- if (!getSport().equals(that.getSport())) {
+ if (!id.equals(that.id)) {
return false;
}
- return getSportsMen().equals(that.getSportsMen());
+ if (sport != null ? !sport.equals(that.sport) : that.sport != null) {
+ return false;
+ }
+ return sportsMen != null ? sportsMen.equals(that.sportsMen) : that.sportsMen == null;
}
@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + (sport != null ? sport.hashCode() : 0);
- result = 31 * result + sportsMen.hashCode();
return result;
}
}
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/entity/Sport.java b/persistence/src/main/java/cz/fi/muni/pa165/entity/Sport.java
index 01b7213..a27abea 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/entity/Sport.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/entity/Sport.java
@@ -46,7 +46,7 @@ public boolean equals(Object o) {
if (this == o) {
return true;
}
- if (o == null || getClass() != o.getClass()) {
+ if (o == null || !(o instanceof Sport)) {
return false;
}
if (!super.equals(o)) {
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/entity/SportEvent.java b/persistence/src/main/java/cz/fi/muni/pa165/entity/SportEvent.java
index 41c5d8d..ff33eab 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/entity/SportEvent.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/entity/SportEvent.java
@@ -72,7 +72,10 @@ public Set getCompetitions() {
}
public void addCompetition(Competition competition) {
- competitions.add(competition);
+ this.competitions.add(competition);
+ }
+ public void removeCompetition(Competition competition){
+ this.competitions.remove(competition);
}
@Override
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/entity/User.java b/persistence/src/main/java/cz/fi/muni/pa165/entity/User.java
index d8a06da..97a16d7 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/entity/User.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/entity/User.java
@@ -14,7 +14,7 @@
* @author jiritobias
*/
@Entity
-@Table(name = "USER_TABLE")
+@Table(name = "Users")
public class User extends BaseEntity {
private static final String EMAIL_REGEX = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
@@ -153,7 +153,7 @@ public boolean equals(Object o) {
if (this == o) {
return true;
}
- if (o == null || getClass() != o.getClass()) {
+ if (o == null || !(o instanceof User)) {
return false;
}
@@ -176,11 +176,14 @@ public boolean equals(Object o) {
@Override
public int hashCode() {
- int result = id.hashCode();
+ int result = id != null ? id.hashCode() : 0;
result = 31 * result + passwordHash.hashCode();
result = 31 * result + email.hashCode();
result = 31 * result + firstname.hashCode();
result = 31 * result + lastname.hashCode();
+ result = 31 * result + (birthdate != null ? birthdate.hashCode() : 0);
+ result = 31 * result + (phone != null ? phone.hashCode() : 0);
+ result = 31 * result + (address != null ? address.hashCode() : 0);
return result;
}
}
diff --git a/persistence/src/main/java/cz/fi/muni/pa165/enums/Gendre.java b/persistence/src/main/java/cz/fi/muni/pa165/enums/Gendre.java
index 8739c42..704b22f 100644
--- a/persistence/src/main/java/cz/fi/muni/pa165/enums/Gendre.java
+++ b/persistence/src/main/java/cz/fi/muni/pa165/enums/Gendre.java
@@ -4,7 +4,7 @@
* @author jiritobias
*/
public enum Gendre {
- MEN,
+ MAN,
WOMAN,
ANOTHER
}
diff --git a/persistence/src/test/java/cz/fi/muni/pa165/dao/BaseDaoImplTest.java b/persistence/src/test/java/cz/fi/muni/pa165/dao/BaseDaoImplTest.java
index aafd308..d4213f6 100644
--- a/persistence/src/test/java/cz/fi/muni/pa165/dao/BaseDaoImplTest.java
+++ b/persistence/src/test/java/cz/fi/muni/pa165/dao/BaseDaoImplTest.java
@@ -2,6 +2,8 @@
import cz.fi.muni.pa165.PersistenceSampleApplicationContext;
import cz.fi.muni.pa165.entity.Sport;
+import cz.fi.muni.pa165.entity.User;
+import cz.fi.muni.pa165.enums.Gendre;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
@@ -11,8 +13,6 @@
import org.springframework.transaction.annotation.Transactional;
import org.testng.annotations.Test;
import java.util.List;
-import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
-import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
/**
@@ -27,6 +27,14 @@ public class BaseDaoImplTest extends AbstractTestNGSpringContextTests {
@Autowired
BaseDao baseDao;
+ @Qualifier("userDaoImpl")
+ @Autowired
+ BaseDao userDao;
+
+ @Qualifier("sportsMenDaoImpl")
+ @Autowired
+ BaseDao sportsMenDao;
+
@Test
@Transactional
public void createTest() {
@@ -38,4 +46,36 @@ public void createTest() {
List all = baseDao.findAll();
assertTrue(all.contains(sport));
}
+
+ protected User createUser(String firstname) {
+ assert firstname != null;
+
+ User user = buildUser(firstname);
+ userDao.create(user);
+
+ return user;
+ }
+
+ protected User buildUser(String firstname) {
+ assert firstname != null;
+
+ User user = new User();
+ user.setPasswordHash("psswd");
+ user.setFirstname(firstname);
+ user.setLastname("Horolezec");
+ user.setEmail("fake@gmail.com");
+ user.setGendre(Gendre.MAN);
+ user.setAddress("Pricna ulice");
+
+ return user;
+ }
+
+ protected User createSportsMen(String firstname) {
+ assert firstname != null;
+
+ User sportsMen = buildUser("SportsMen");
+ sportsMenDao.create(sportsMen);
+
+ return sportsMen;
+ }
}
\ No newline at end of file
diff --git a/persistence/src/test/java/cz/fi/muni/pa165/dao/CompetitionDaoImplTest.java b/persistence/src/test/java/cz/fi/muni/pa165/dao/CompetitionDaoImplTest.java
index ef8ce14..1b44d54 100644
--- a/persistence/src/test/java/cz/fi/muni/pa165/dao/CompetitionDaoImplTest.java
+++ b/persistence/src/test/java/cz/fi/muni/pa165/dao/CompetitionDaoImplTest.java
@@ -39,7 +39,7 @@ public void setUp() {
sportman.setLastname("Novy");
sportman.setEmail("test@test.com");
sportman.setAddress("address");
- sportman.setGendre(Gendre.MEN);
+ sportman.setGendre(Gendre.MAN);
sportman.setRole(Role.SPORTSMEN);
sportman.setPasswordHash("hash");
diff --git a/persistence/src/test/java/cz/fi/muni/pa165/dao/SportEventDaoImplTest.java b/persistence/src/test/java/cz/fi/muni/pa165/dao/SportEventDaoImplTest.java
index 87d8d17..583b431 100644
--- a/persistence/src/test/java/cz/fi/muni/pa165/dao/SportEventDaoImplTest.java
+++ b/persistence/src/test/java/cz/fi/muni/pa165/dao/SportEventDaoImplTest.java
@@ -1,22 +1,34 @@
package cz.fi.muni.pa165.dao;
+import cz.fi.muni.pa165.entity.Competition;
+import cz.fi.muni.pa165.entity.Sport;
import cz.fi.muni.pa165.entity.SportEvent;
+import cz.fi.muni.pa165.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.Date;
import java.util.List;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
-import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
+/**
+ * @author jiritobias
+ */
public class SportEventDaoImplTest extends BaseDaoImplTest {
@Autowired
SportEventDao sportEventDao;
+ @Autowired
+ SportDao sportDao;
+ @Autowired
+ SportsMenDao sportsMenDao;
+ @Autowired
+ CompetitionDao competitionDao;
private SportEvent sportEvent1;
private SportEvent sportEvent2;
+ private Competition competition;
@BeforeMethod
public void createEvents() {
@@ -33,6 +45,18 @@ public void createEvents() {
sportEventDao.create(sportEvent1);
sportEventDao.create(sportEvent2);
+ Sport sport = new Sport();
+ sport.setName("Ice hockey");
+ sportDao.create(sport);
+
+ User pepik = createSportsMen("Pepik");
+
+ competition = new Competition();
+ competition.setSport(sport);
+ competition.addSportman(pepik);
+
+ competitionDao.create(competition);
+
}
@Test
@@ -59,11 +83,47 @@ public void delete() {
}
@Test
- public void fail(){
+ public void fail() {
SportEvent sportEvent = new SportEvent();
// hashcode returns NullPointerException
assertThatThrownBy(() -> sportEventDao.create(sportEvent))
.isInstanceOf(NullPointerException.class);
}
+ @Test
+ public void addAndRemoveCompetitonTest() {
+ SportEvent sportEvent = new SportEvent();
+ sportEvent.setName("ME");
+ sportEvent.setPlace("Prague");
+ sportEvent.setDate(new Date());
+
+ sportEvent.addCompetition(competition);
+ sportEventDao.create(sportEvent);
+
+ SportEvent found = sportEventDao.findById(sportEvent.getId());
+
+ assertThat(
+ found
+ .getCompetitions()
+ .size())
+ .isOne();
+
+ assertThat(
+ found
+ .getCompetitions()
+ .contains(competition))
+ .isTrue();
+
+ sportEvent.removeCompetition(competition);
+ sportEventDao.update(sportEvent);
+
+ SportEvent foundById = sportEventDao.findById(sportEvent.getId());
+ assertThat(
+ foundById
+ .getCompetitions()
+ .size())
+ .isZero();
+
+ }
+
}
\ No newline at end of file
diff --git a/persistence/src/test/java/cz/fi/muni/pa165/dao/SportsMenDaoImplTest.java b/persistence/src/test/java/cz/fi/muni/pa165/dao/SportsMenDaoImplTest.java
index ecbc389..6cc7e3d 100644
--- a/persistence/src/test/java/cz/fi/muni/pa165/dao/SportsMenDaoImplTest.java
+++ b/persistence/src/test/java/cz/fi/muni/pa165/dao/SportsMenDaoImplTest.java
@@ -10,6 +10,7 @@
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import static org.testng.Assert.*;
@@ -33,7 +34,7 @@ public void setUp() {
sportsmen.setRole(Role.SPORTSMEN);
sportsmen.setFirstname("Martin");
sportsmen.setLastname("Novy");
- sportsmen.setGendre(Gendre.MEN);
+ sportsmen.setGendre(Gendre.MAN);
sportsmen.setAddress("address");
sportsmen.setEmail("abc@test.com");
sportsmen.setPasswordHash("password");
@@ -56,15 +57,20 @@ public void testAddToCompetition() {
Competition competition = new Competition();
competitionDao.create(competition);
+ sportsmen.addToCompetition(competition);
sportsMenDao.create(sportsmen);
- sportsMenDao.addToCompetition(competition, sportsmen);
Competition foundCompetition = competitionDao.findById(competition.getId());
Set sportsmenInComp = foundCompetition.getSportsMen();
assertTrue(sportsmen.getCompetitions().contains(competition));
assertEquals(sportsmenInComp.size(), 1);
- assertTrue(sportsmenInComp.contains(sportsmen));
+
+ Optional first = sportsmenInComp
+ .stream()
+ .findFirst();
+ assertTrue(first.isPresent());
+ assertTrue(first.get().equals(sportsmen));
}
@Test
@@ -76,16 +82,15 @@ public void testRemoveFromCompetition() {
sportsMenDao.create(sportsmen);
- sportsMenDao.removeFromCompetition(competition, sportsmen);
assertEquals(sportsMenDao.findById(sportsmen.getId()).getCompetitions().size(), 0);
- sportsMenDao.addToCompetition(competition, sportsmen);
- sportsMenDao.addToCompetition(competition1, sportsmen);
- sportsMenDao.removeFromCompetition(competition, sportsmen);
+ sportsmen.addToCompetition(competition);
+ sportsmen.addToCompetition(competition1);
+ sportsmen.removeFromCompetition(competition);
assertEquals(sportsmen.getCompetitions().size(), 1);
Competition found = competitionDao.findById(competition1.getId());
-
+
Set sportsmenInComp = found.getSportsMen();
assertTrue(sportsmen.getCompetitions().contains(competition1));
diff --git a/persistence/src/test/java/cz/fi/muni/pa165/dao/UserDaoTest.java b/persistence/src/test/java/cz/fi/muni/pa165/dao/UserDaoTest.java
index b2e044e..746b3d6 100755
--- a/persistence/src/test/java/cz/fi/muni/pa165/dao/UserDaoTest.java
+++ b/persistence/src/test/java/cz/fi/muni/pa165/dao/UserDaoTest.java
@@ -1,12 +1,14 @@
package cz.fi.muni.pa165.dao;
import cz.fi.muni.pa165.entity.User;
+import cz.fi.muni.pa165.enums.Gendre;
import cz.fi.muni.pa165.enums.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.List;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.testng.Assert.assertEquals;
/**
@@ -25,7 +27,7 @@ public void createUsers() {
user.setEmail("fake@gmail.com");
user.setFirstname("Honza");
user.setLastname("Novotny");
-
+ user.setGendre(Gendre.MAN);
userDao.create(user);
}
@@ -37,4 +39,16 @@ public void findAll() {
assertEquals(allSportsMen.get(0).getRole(), Role.USER);
}
+ @Test
+ public void findByGendre() {
+ List womem = userDao.findByGendre(Gendre.WOMAN);
+ List men = userDao.findByGendre(Gendre.MAN);
+
+ assertThat(womem.size() == 0);
+ assertThat(men.size() == 1);
+ assertThat(men.get(0).getFirstname())
+ .isEqualTo("Honza");
+
+ }
+
}
\ No newline at end of file