Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
# Conflicts:
#	persistence/src/main/java/cz/fi/muni/pa165/entity/SportEvent.java
  • Loading branch information
jiritobias committed Oct 29, 2017
2 parents 4c82071 + 479d729 commit 740d00e
Show file tree
Hide file tree
Showing 16 changed files with 161 additions and 53 deletions.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
2 changes: 1 addition & 1 deletion persistence/persistence.iml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping>
<factory-entry name="Entities" />
<factory-entry name="Entities" value="83319981-93e9-4bdf-b543-c578fa274cc5" />
</datasource-mapping>
</configuration>
</facet>
Expand Down
5 changes: 5 additions & 0 deletions persistence/src/main/java/cz/fi/muni/pa165/dao/BaseDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ public interface BaseDao<T extends BaseEntity> {
* @return Entity object with the input ID
*/
T findById(Long id);
/**
*
* Updates entity.
*/
void update(T entity);

/**
* Finds all entity objects in DB
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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<T> entityClass, Long id) {
return entityManager.find(entityClass, id);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);

}
Original file line number Diff line number Diff line change
Expand Up @@ -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<User> findAll() {
return entityManager.createQuery("SELECT s FROM User s where s.role = :role", User.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,10 @@ public Set<Competition> getCompetitions() {
}

public void addCompetition(Competition competition) {
competitions.add(competition);
this.competitions.add(competition);
}
public void removeCompetition(Competition competition){
this.competitions.remove(competition);
}

@Override
Expand Down
9 changes: 6 additions & 3 deletions persistence/src/main/java/cz/fi/muni/pa165/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -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])+)\\])";
Expand Down Expand Up @@ -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;
}

Expand All @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* @author jiritobias
*/
public enum Gendre {
MEN,
MAN,
WOMAN,
ANOTHER
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

/**
Expand All @@ -27,6 +27,14 @@ public class BaseDaoImplTest extends AbstractTestNGSpringContextTests {
@Autowired
BaseDao<Sport> baseDao;

@Qualifier("userDaoImpl")
@Autowired
BaseDao<User> userDao;

@Qualifier("sportsMenDaoImpl")
@Autowired
BaseDao<User> sportsMenDao;

@Test
@Transactional
public void createTest() {
Expand All @@ -38,4 +46,36 @@ public void createTest() {
List<Sport> 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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down
Original file line number Diff line number Diff line change
@@ -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() {
Expand All @@ -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
Expand All @@ -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();

}

}
Loading

0 comments on commit 740d00e

Please sign in to comment.