#112 changed mapping
This commit is contained in:
parent
2d230afa35
commit
3898dcf1c1
@ -8,6 +8,7 @@ import ru.ulstu.core.model.BaseEntity;
|
||||
import ru.ulstu.core.model.UserActivity;
|
||||
import ru.ulstu.deadline.model.Deadline;
|
||||
import ru.ulstu.paper.model.Paper;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.user.model.User;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
@ -71,6 +72,11 @@ public class Conference extends BaseEntity implements UserActivity {
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
private List<ConferenceUser> users = new ArrayList<>();
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "conference_id")
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
private List<Ping> pings;
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
@ -156,4 +162,13 @@ public class Conference extends BaseEntity implements UserActivity {
|
||||
public Set<User> getActivityUsers() {
|
||||
return getUsers().stream().map(ConferenceUser::getUser).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public void addPing(Ping ping) {
|
||||
this.pings.add(ping);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Ping> getPings() {
|
||||
return this.pings;
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,14 @@
|
||||
package ru.ulstu.core.model;
|
||||
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.user.model.User;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface UserActivity {
|
||||
String getTitle();
|
||||
Set<User> getActivityUsers();
|
||||
void addPing(Ping ping);
|
||||
List<Ping> getPings();
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import ru.ulstu.core.model.UserActivity;
|
||||
import ru.ulstu.deadline.model.Deadline;
|
||||
import ru.ulstu.file.model.FileData;
|
||||
import ru.ulstu.paper.model.Paper;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.project.model.Project;
|
||||
import ru.ulstu.timeline.model.Event;
|
||||
import ru.ulstu.user.model.User;
|
||||
@ -98,6 +99,11 @@ public class Grant extends BaseEntity implements UserActivity {
|
||||
@JoinColumn(name = "grant_id")
|
||||
private List<Event> events = new ArrayList<>();
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "grant_id")
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
private List<Ping> pings;
|
||||
|
||||
public GrantStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
@ -191,4 +197,13 @@ public class Grant extends BaseEntity implements UserActivity {
|
||||
.filter(d -> d.getDate().after(new Date()))
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
public void addPing(Ping ping) {
|
||||
this.pings.add(ping);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Ping> getPings() {
|
||||
return this.pings;
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import ru.ulstu.name.BaseService;
|
||||
import ru.ulstu.paper.model.Paper;
|
||||
import ru.ulstu.paper.model.PaperDto;
|
||||
import ru.ulstu.paper.service.PaperService;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.ping.service.PingService;
|
||||
import ru.ulstu.project.model.Project;
|
||||
import ru.ulstu.project.model.ProjectDto;
|
||||
@ -347,6 +348,8 @@ public class GrantService extends BaseService {
|
||||
|
||||
@Transactional
|
||||
public void ping(int grantId) throws IOException {
|
||||
pingService.addPing(findById(grantId));
|
||||
Grant grant = findById(grantId);
|
||||
grant.addPing(new Ping(new Date(), userService.getCurrentUser()));
|
||||
grantRepository.save(grant);
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import ru.ulstu.core.model.UserActivity;
|
||||
import ru.ulstu.deadline.model.Deadline;
|
||||
import ru.ulstu.file.model.FileData;
|
||||
import ru.ulstu.grant.model.Grant;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.timeline.model.Event;
|
||||
import ru.ulstu.user.model.User;
|
||||
|
||||
@ -128,6 +129,11 @@ public class Paper extends BaseEntity implements UserActivity {
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
private List<Reference> references = new ArrayList<>();
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "paper_id")
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
private List<Ping> pings;
|
||||
|
||||
public PaperStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
@ -310,4 +316,13 @@ public class Paper extends BaseEntity implements UserActivity {
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), title, status, type, createDate, updateDate, deadlines, comment, url, locked, events, files, authors, latexText, conferences, grants);
|
||||
}
|
||||
|
||||
public void addPing(Ping ping) {
|
||||
this.pings.add(ping);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Ping> getPings() {
|
||||
return this.pings;
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import ru.ulstu.paper.model.Reference;
|
||||
import ru.ulstu.paper.model.ReferenceDto;
|
||||
import ru.ulstu.paper.repository.PaperRepository;
|
||||
import ru.ulstu.paper.repository.ReferenceRepository;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.ping.service.PingService;
|
||||
import ru.ulstu.timeline.service.EventService;
|
||||
import ru.ulstu.user.model.User;
|
||||
@ -393,6 +394,8 @@ public class PaperService {
|
||||
|
||||
@Transactional
|
||||
public void ping(int paperId) throws IOException {
|
||||
pingService.addPing(findPaperById(paperId));
|
||||
Paper paper = findPaperById(paperId);
|
||||
paper.addPing(new Ping(new Date(), userService.getCurrentUser()));
|
||||
paperRepository.save(paper);
|
||||
}
|
||||
}
|
||||
|
@ -54,6 +54,5 @@ public class PingScheduler {
|
||||
mailService.sendEmailFromTemplate(ImmutableMap.of("pings", pingInfo.getPings()),
|
||||
pingInfo.getUser(), "pingsInfoWeekEmail", PING_MAIL_SUBJECT);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,14 @@
|
||||
package ru.ulstu.project.model;
|
||||
|
||||
import org.hibernate.annotations.Fetch;
|
||||
import org.hibernate.annotations.FetchMode;
|
||||
import org.hibernate.validator.constraints.NotBlank;
|
||||
import ru.ulstu.core.model.BaseEntity;
|
||||
import ru.ulstu.core.model.UserActivity;
|
||||
import ru.ulstu.deadline.model.Deadline;
|
||||
import ru.ulstu.file.model.FileData;
|
||||
import ru.ulstu.grant.model.Grant;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.user.model.User;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
@ -76,6 +79,11 @@ public class Project extends BaseEntity implements UserActivity {
|
||||
@ManyToMany(fetch = FetchType.LAZY)
|
||||
private List<User> executors = new ArrayList<>();
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "project_id")
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
private List<Ping> pings = new ArrayList<>();
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
@ -140,9 +148,16 @@ public class Project extends BaseEntity implements UserActivity {
|
||||
this.executors = executors;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<User> getUsers() {
|
||||
Set<User> users = new HashSet<User>(getExecutors());
|
||||
return users;
|
||||
return new HashSet<User>(getExecutors());
|
||||
}
|
||||
|
||||
public void addPing(Ping ping) {
|
||||
this.pings.add(new Ping());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Ping> getPings() {
|
||||
return this.pings;
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import org.thymeleaf.util.StringUtils;
|
||||
import ru.ulstu.deadline.service.DeadlineService;
|
||||
import ru.ulstu.file.service.FileService;
|
||||
import ru.ulstu.grant.repository.GrantRepository;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.ping.service.PingService;
|
||||
import ru.ulstu.project.model.Project;
|
||||
import ru.ulstu.project.model.ProjectDto;
|
||||
@ -15,6 +16,7 @@ import ru.ulstu.user.service.UserService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.springframework.util.ObjectUtils.isEmpty;
|
||||
@ -131,6 +133,8 @@ public class ProjectService {
|
||||
|
||||
@Transactional
|
||||
public void ping(int projectId) throws IOException {
|
||||
pingService.addPing(findById(projectId));
|
||||
Project project = findById(projectId);
|
||||
project.addPing(new Ping(new Date(), userService.getCurrentUser()));
|
||||
projectRepository.save(project);
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
import ru.ulstu.conference.model.Conference;
|
||||
import ru.ulstu.conference.service.ConferenceService;
|
||||
import ru.ulstu.configuration.ApplicationProperties;
|
||||
import ru.ulstu.core.error.EntityIdIsNullException;
|
||||
@ -21,8 +22,11 @@ import ru.ulstu.core.jpa.OffsetablePageRequest;
|
||||
import ru.ulstu.core.model.BaseEntity;
|
||||
import ru.ulstu.core.model.UserActivity;
|
||||
import ru.ulstu.core.model.response.PageableItems;
|
||||
import ru.ulstu.grant.service.GrantService;
|
||||
import ru.ulstu.paper.service.PaperService;
|
||||
import ru.ulstu.ping.model.Ping;
|
||||
import ru.ulstu.ping.service.PingService;
|
||||
import ru.ulstu.project.service.ProjectService;
|
||||
import ru.ulstu.user.error.UserActivationError;
|
||||
import ru.ulstu.user.error.UserEmailExistsException;
|
||||
import ru.ulstu.user.error.UserIdExistsException;
|
||||
@ -78,6 +82,9 @@ public class UserService implements UserDetailsService {
|
||||
private final ConferenceService conferenceService;
|
||||
private final UserSessionService userSessionService;
|
||||
private final PingService pingService;
|
||||
private final PaperService paperService;
|
||||
private final ProjectService projectService;
|
||||
private final GrantService grantService;
|
||||
|
||||
public UserService(UserRepository userRepository,
|
||||
PasswordEncoder passwordEncoder,
|
||||
@ -87,7 +94,10 @@ public class UserService implements UserDetailsService {
|
||||
ApplicationProperties applicationProperties,
|
||||
@Lazy PingService pingService,
|
||||
@Lazy ConferenceService conferenceRepository,
|
||||
@Lazy UserSessionService userSessionService) throws ParseException {
|
||||
@Lazy UserSessionService userSessionService,
|
||||
@Lazy PaperService paperService,
|
||||
@Lazy ProjectService projectService,
|
||||
@Lazy GrantService grantService) throws ParseException {
|
||||
this.userRepository = userRepository;
|
||||
this.passwordEncoder = passwordEncoder;
|
||||
this.userRoleRepository = userRoleRepository;
|
||||
@ -98,6 +108,9 @@ public class UserService implements UserDetailsService {
|
||||
this.timetableService = new TimetableService();
|
||||
this.userSessionService = userSessionService;
|
||||
this.pingService = pingService;
|
||||
this.paperService = paperService;
|
||||
this.projectService = projectService;
|
||||
this.grantService = grantService;
|
||||
}
|
||||
|
||||
private User getUserByEmail(String email) {
|
||||
@ -405,9 +418,24 @@ public class UserService implements UserDetailsService {
|
||||
}
|
||||
Map<String, Integer> activitiesPings = new HashMap<>();
|
||||
|
||||
for (Ping ping : pingService.getPings(activityName)) {
|
||||
UserActivity activity = ping.getActivity();
|
||||
List<? extends UserActivity> activities = new ArrayList<>();
|
||||
|
||||
switch (activityName) {
|
||||
case "conferences":
|
||||
activities = conferenceService.findAll();
|
||||
break;
|
||||
case "papers":
|
||||
activities = paperService.findAll();
|
||||
break;
|
||||
case "projects":
|
||||
activities = projectService.findAll();
|
||||
break;
|
||||
case "grants":
|
||||
activities = grantService.findAll();
|
||||
break;
|
||||
}
|
||||
|
||||
for (UserActivity activity : activities) {
|
||||
if (user != null && !activity.getActivityUsers().contains(user)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFact
|
||||
# JPA Settings
|
||||
spring.datasource.url=jdbc:postgresql://localhost:5432/ng-tracker
|
||||
spring.datasource.username=postgres
|
||||
spring.datasource.password=postgres
|
||||
spring.datasource.password=password
|
||||
spring.datasource.driverclassName=org.postgresql.Driver
|
||||
spring.jpa.hibernate.ddl-auto=validate
|
||||
# Liquibase Settings
|
||||
@ -34,7 +34,7 @@ liquibase.change-log=classpath:db/changelog-master.xml
|
||||
# Application Settings
|
||||
ng-tracker.base-url=http://127.0.0.1:8080
|
||||
ng-tracker.undead-user-login=admin
|
||||
ng-tracker.dev-mode=true
|
||||
ng-tracker.dev-mode=false
|
||||
ng-tracker.debug_email=
|
||||
ng-tracker.use-https=false
|
||||
ng-tracker.check-run=false
|
@ -1,18 +0,0 @@
|
||||
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
|
||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||
<changeSet author="arefyev" id="20190525_000000-1">
|
||||
<addColumn tableName="ping">
|
||||
<column name="paper_id" type="integer"/>
|
||||
<column name="grant_id" type="integer"/>
|
||||
<column name="project_id" type="integer"/>
|
||||
</addColumn>
|
||||
<addForeignKeyConstraint baseTableName="ping" baseColumnNames="paper_id" constraintName="paper_fk" referencedTableName="paper"
|
||||
referencedColumnNames="id"/>
|
||||
<addForeignKeyConstraint baseTableName="ping" baseColumnNames="grant_id" constraintName="grant_fk" referencedTableName="grants"
|
||||
referencedColumnNames="id"/>
|
||||
<addForeignKeyConstraint baseTableName="ping" baseColumnNames="project_id" constraintName="project_fk" referencedTableName="project"
|
||||
referencedColumnNames="id"/>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
@ -49,5 +49,5 @@
|
||||
<include file="db/changelog-20190523_000000-schema.xml"/>
|
||||
<include file="db/changelog-20190528_000000-schema.xml"/>
|
||||
<include file="db/changelog-20190528_000002-schema.xml"/>
|
||||
<include file="db/changelog-20190525_000000-schema.xml"/>
|
||||
<include file="db/changelog-20190531_000000-schema.xml"/>
|
||||
</databaseChangeLog>
|
Loading…
Reference in New Issue
Block a user