diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..57abfda --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,15 @@ +pipeline { + agent any + stages { + stage('Build') { + steps { + ./gradlew build + } + } + stage('Test') { + steps { + ./gradlew test + } + } + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index bc20ab3..9949989 100644 --- a/build.gradle +++ b/build.gradle @@ -1,34 +1,19 @@ -buildscript { - ext { - versionSpringBoot = '2.1.6.RELEASE' - } - - repositories { - mavenLocal() - mavenCentral() - } - - dependencies { - classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: versionSpringBoot - } +plugins { + id 'java' + id 'org.springframework.boot' version '3.2.4' + id 'io.spring.dependency-management' version '1.1.4' + id 'checkstyle' } group 'ru.ulstu' version '0.1.0-SNAPSHOT' -apply plugin: 'application' -apply plugin: 'java' -apply plugin: 'org.springframework.boot' -apply plugin: 'io.spring.dependency-management' -apply plugin: 'checkstyle' - -mainClassName = 'ru.ulstu.NgTrackerApplication' - build.dependsOn checkstyleMain bootRun.dependsOn checkstyleMain -sourceCompatibility = 11 -targetCompatibility = 11 +java { + sourceCompatibility = '17' +} bootRun { systemProperties = System.properties @@ -64,7 +49,7 @@ checkstyle { checkstyle } - dependencies{ + dependencies { assert project.hasProperty("checkstyleVersion") checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}" @@ -76,9 +61,12 @@ task health(dependsOn: [ 'checkstyleMain' ]) - jar { - baseName = 'ng-tracker' + enabled = false +} + +bootJar { + archiveFileName = String.format('%s-%s.jar', rootProject.name, version) } compileJava { @@ -88,48 +76,44 @@ compileJava { repositories { mavenLocal() mavenCentral() - maven { - url "https://repository.primefaces.org/" - } } dependencies { - compile group: 'org.springframework.boot', name: 'spring-boot-starter-web' - compile group: 'org.springframework.boot', name: 'spring-boot-starter-security' - compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop' - compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail' - compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat' - compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa' - compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf' - compile group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect' - compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity5' - compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-afterburner' - compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-hibernate5' - compile group: 'org.springframework.security', name: 'spring-security-oauth2-client' - compile group: 'org.springframework.security', name: 'spring-security-oauth2-jose' - - compile group: 'org.postgresql', name: 'postgresql', version: '42.2.5' - - compile group: 'org.liquibase', name: 'liquibase-core', version: '3.6.3' - compile group: 'com.mattbertolini', name: 'liquibase-slf4j', version: '2.0.0' - - compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7' - - //primefaces - compile group: 'org.primefaces', name: 'primefaces', version: '7.0' - compile group: 'net.bootsfaces', name: 'bootsfaces', version: '1.4.2' - compile group: 'org.joinfaces', name: 'jsf-spring-boot-starter', version: '4.1.2' - compile group: 'org.javassist', name: 'javassist', version: '3.25.0-GA' - compile group: 'org.primefaces.themes', name: 'all-themes', version: '1.0.10' - - compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.6.0' - compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.6.0' - compile group: 'net.sourceforge.htmlunit', name: 'htmlunit', version: '2.35.0' - compile group: 'xalan', name: 'xalan', version: '2.7.2' - - testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-aop' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jetty' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf' + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation' + implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect' + implementation group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity6' + implementation group: 'com.fasterxml.jackson.module', name: 'jackson-module-afterburner' + implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-hibernate5' + implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client' + implementation group: 'org.springframework.security', name: 'spring-security-oauth2-jose' + + implementation group: 'org.postgresql', name: 'postgresql', version: '42.2.5' + + implementation group: 'org.liquibase', name: 'liquibase-core', version: '4.27.0' + implementation group: 'com.mattbertolini', name: 'liquibase-slf4j', version: '2.0.0' + + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.7' + + implementation group: 'org.webjars', name: 'bootstrap', version: '4.1.0' + implementation group: 'org.webjars', name: 'bootstrap-select', version: '1.13.3' + implementation group: 'org.webjars', name: 'jquery', version: '3.3.1-1' + implementation group: 'org.webjars.npm', name: 'jquery.easing', version: '1.4.1' + implementation group: 'org.webjars', name: 'font-awesome', version: '4.7.0' + + implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.8.0' + implementation group: 'net.sourceforge.htmlunit', name: 'htmlunit', version: '2.35.0' + implementation group: 'xalan', name: 'xalan', version: '2.7.2' + + testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test' //compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.3.1' //testCompile group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.3.1' //testCompile group: 'com.google.guava', name: 'guava', version: '21.0' - testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19' + testImplementation group: 'org.mockito', name: 'mockito-all', version: '1.10.19' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 663c448..0cea8ae 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +networkTimeout=10000 +validateDistributionUrl=true diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java index f9a4bac..aaa843e 100644 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java @@ -1,6 +1,8 @@ package ru.ulstu.conference.controller; +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; @@ -14,9 +16,7 @@ import ru.ulstu.conference.model.ConferenceFilterDto; import ru.ulstu.conference.model.ConferenceUser; import ru.ulstu.conference.service.ConferenceService; import ru.ulstu.user.model.User; -import springfox.documentation.annotations.ApiIgnore; -import javax.validation.Valid; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; @@ -29,7 +29,7 @@ import static ru.ulstu.core.controller.Navigation.REDIRECT_TO; @Controller() @RequestMapping(value = "/conferences") -@ApiIgnore +@Hidden public class ConferenceController { private final ConferenceService conferenceService; diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceConverter.java b/src/main/java/ru/ulstu/conference/controller/ConferenceConverter.java deleted file mode 100644 index b566624..0000000 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceConverter.java +++ /dev/null @@ -1,29 +0,0 @@ -package ru.ulstu.conference.controller; - -import org.springframework.stereotype.Service; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.conference.service.ConferenceService; - -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; -import javax.faces.convert.Converter; -import javax.inject.Inject; - - -@Service -public class ConferenceConverter implements Converter { - @Inject - private ConferenceService conferenceService; - - @Override - public Object getAsObject(FacesContext context, UIComponent component, String value) { - return value == null || value.equals("") ? null : conferenceService.findOne(Integer.valueOf(value)); - } - - @Override - public String getAsString(FacesContext context, UIComponent component, Object value) { - return value == null - ? "" - : (value.getClass().equals(Conference.class) ? ((Conference) value).getId().toString() : null); - } -} diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceDashboardView.java b/src/main/java/ru/ulstu/conference/controller/ConferenceDashboardView.java deleted file mode 100644 index 388dbfe..0000000 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceDashboardView.java +++ /dev/null @@ -1,71 +0,0 @@ -package ru.ulstu.conference.controller; - -import ru.ulstu.conference.model.Conference; -import ru.ulstu.conference.service.ConferenceService; -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.List; - -@Named -@ViewScoped -public class ConferenceDashboardView { - @Inject - private ConferenceService conferenceService; - - @Inject - private UserService userService; - - private List conferences; - - private List selectedConferences = new ArrayList<>(); - - private String newConferenceTitle; - - @PostConstruct - public void init() { - conferences = conferenceService.findAllActiveByCurrentUser(); - } - - public List getConferences() { - return conferences; - } - - public void create() { - conferenceService.createByTitle(newConferenceTitle); - FacesUtil.showInfoMessage("Статья создана", newConferenceTitle); - newConferenceTitle = ""; - conferences = conferenceService.findAllActiveByCurrentUser(); - } - - public void deleteSelected() { - conferenceService.delete(selectedConferences); - conferences = conferenceService.findAllActiveByCurrentUser(); - FacesUtil.showInfoMessage("Было удалено статей: " + selectedConferences.size(), ""); - } - - public String getNewConferenceTitle() { - return newConferenceTitle; - } - - public void setNewConferenceTitle(String newConferenceTitle) { - this.newConferenceTitle = newConferenceTitle; - } - - public List getSelectedConferences() { - return selectedConferences; - } - - public void setSelectedConferences(List selectedConferences) { - this.selectedConferences = selectedConferences; - } - - public String getCurrentUser() { - return userService.getCurrentUser().getUserAbbreviate(); - } -} diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceView.java b/src/main/java/ru/ulstu/conference/controller/ConferenceView.java deleted file mode 100644 index d0d28d2..0000000 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceView.java +++ /dev/null @@ -1,89 +0,0 @@ -package ru.ulstu.conference.controller; - -import ru.ulstu.conference.model.Conference; -import ru.ulstu.conference.service.ConferenceService; -import ru.ulstu.core.navigation.Page; -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -@Named -@ViewScoped -public class ConferenceView implements Serializable { - @Inject - private ConferenceService conferenceService; - - @Inject - private DeadlineService deadlineService; - - @Inject - private UserService userService; - - private Conference conference; - - private Date newDeadlineDate; - - private String newDeadlineDescription; - - @PostConstruct - public void init() { - conference = conferenceService.findOne(Integer.valueOf(FacesUtil.getRequestParams().get("id"))); - newDeadlineDescription = ""; - newDeadlineDate = new Date(); - FacesUtil.showInfoMessage("Статья открыта", ""); - } - - public Conference getConference() { - return conference; - } - - public void setConference(Conference conference) { - this.conference = conference; - } - - public List getAuthors() { - return userService.findAll(); - } - - public String save() { - conferenceService.save(conference); - FacesUtil.showInfoMessage("Статья сохранена", ""); - return Page.CONFERENCE_LIST + "?faces-redirect=true"; - } - - public Date getNewDeadlineDate() { - return newDeadlineDate; - } - - public void setNewDeadlineDate(Date newDeadlineDate) { - this.newDeadlineDate = newDeadlineDate; - } - - public String getNewDeadlineDescription() { - return newDeadlineDescription; - } - - public void setNewDeadlineDescription(String newDeadlineDescription) { - this.newDeadlineDescription = newDeadlineDescription; - } - - public void deleteDeadline(Deadline deadline) { - conference.getDeadlines().remove(deadline); - } - - public void addDeadline() { - conference.getDeadlines().add(deadlineService.create(newDeadlineDescription, newDeadlineDate)); - newDeadlineDescription = ""; - newDeadlineDate = new Date(); - } -} diff --git a/src/main/java/ru/ulstu/conference/controller/ConferencesView.java b/src/main/java/ru/ulstu/conference/controller/ConferencesView.java deleted file mode 100644 index 59fa81c..0000000 --- a/src/main/java/ru/ulstu/conference/controller/ConferencesView.java +++ /dev/null @@ -1,63 +0,0 @@ -package ru.ulstu.conference.controller; - -import ru.ulstu.conference.model.Conference; -import ru.ulstu.conference.service.ConferenceService; -import ru.ulstu.core.util.FacesUtil; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.List; - -@Named -@ViewScoped -public class ConferencesView { - @Inject - private ConferenceService conferenceService; - - private List conferences; - - private List selectedConferences = new ArrayList<>(); - - private String newConferenceTitle; - - @PostConstruct - public void init() { - conferences = conferenceService.findAll(); - } - - public void create() { - conferenceService.createByTitle(newConferenceTitle); - FacesUtil.showInfoMessage("Конференция создана", newConferenceTitle); - newConferenceTitle = ""; - conferences = conferenceService.findAll(); - } - - public void deleteSelected() { - conferenceService.delete(selectedConferences); - conferences = conferenceService.findAll(); - FacesUtil.showInfoMessage("Было удалено конференций: " + selectedConferences.size(), ""); - } - - public List getConferences() { - return conferences; - } - - public String getNewConferenceTitle() { - return newConferenceTitle; - } - - public void setNewConferenceTitle(String newConferenceTitle) { - this.newConferenceTitle = newConferenceTitle; - } - - public List getSelectedConferences() { - return selectedConferences; - } - - public void setSelectedConferences(List selectedConferences) { - this.selectedConferences = selectedConferences; - } -} diff --git a/src/main/java/ru/ulstu/conference/model/Conference.java b/src/main/java/ru/ulstu/conference/model/Conference.java index 941f825..4ab1cfa 100644 --- a/src/main/java/ru/ulstu/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/conference/model/Conference.java @@ -1,5 +1,17 @@ package ru.ulstu.conference.model; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OrderBy; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.NotBlank; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import org.springframework.format.annotation.DateTimeFormat; @@ -11,18 +23,6 @@ import ru.ulstu.paper.model.Paper; import ru.ulstu.timeline.model.Event; import ru.ulstu.user.model.User; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; -import javax.persistence.OrderBy; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.NotBlank; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java index 7246854..dad401b 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceDto.java @@ -2,16 +2,16 @@ package ru.ulstu.conference.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Size; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.name.NameContainer; import ru.ulstu.paper.model.Paper; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceUser.java b/src/main/java/ru/ulstu/conference/model/ConferenceUser.java index 1cc3244..978515b 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceUser.java +++ b/src/main/java/ru/ulstu/conference/model/ConferenceUser.java @@ -2,18 +2,17 @@ package ru.ulstu.conference.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.user.model.User; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; - @Entity @Table(name = "users_conference") public class ConferenceUser extends BaseEntity { @@ -70,7 +69,6 @@ public class ConferenceUser extends BaseEntity { public ConferenceUser(User user) { this.user = user; this.deposit = Deposit.REPORT; - this.participation = Participation.INTRAMURAL; } @JsonCreator diff --git a/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java b/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java index 53a9d84..60cd728 100644 --- a/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java +++ b/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java @@ -13,7 +13,7 @@ import java.util.List; public interface ConferenceRepository extends JpaRepository, BaseRepository { @Query("SELECT c FROM Conference c LEFT JOIN c.users u WHERE (:user IS NULL OR u.user = :user) " + - "AND (YEAR(c.beginDate) = :year OR :year IS NULL) ORDER BY begin_date DESC") + "AND (YEAR(c.beginDate) = :year OR :year IS NULL) ORDER BY c.beginDate DESC") List findByUserAndYear(@Param("user") User user, @Param("year") Integer year); @Query("SELECT c FROM Conference c WHERE c.beginDate > :date") diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceNotificationService.java b/src/main/java/ru/ulstu/conference/service/ConferenceNotificationService.java index 961d369..1e54395 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceNotificationService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceNotificationService.java @@ -1,6 +1,5 @@ package ru.ulstu.conference.service; -import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; import ru.ulstu.conference.model.Conference; import ru.ulstu.core.util.DateUtils; @@ -57,22 +56,22 @@ public class ConferenceNotificationService { } private void sendMessageDeadline(Conference conference) { - Map variables = ImmutableMap.of("conference", conference); + Map variables = Map.of("conference", conference); sendForAllParticipants(variables, conference, TEMPLATE_DEADLINE, String.format(TITLE_DEADLINE, conference.getTitle())); } public void sendCreateNotification(Conference conference) { - Map variables = ImmutableMap.of("conference", conference); + Map variables = Map.of("conference", conference); sendForAllUsers(variables, String.format(TITLE_CREATE, conference.getTitle())); } public void updateDeadlineNotification(Conference conference) { - Map variables = ImmutableMap.of("conference", conference); + Map variables = Map.of("conference", conference); sendForAllParticipants(variables, conference, TEMPLATE_UPDATE_DEADLINES, String.format(TITLE_UPDATE_DEADLINES, conference.getTitle())); } public void updateConferencesDatesNotification(Conference conference, Date oldBeginDate, Date oldEndDate) { - Map variables = ImmutableMap.of("conference", conference, "oldBeginDate", oldBeginDate, "oldEndDate", oldEndDate); + Map variables = Map.of("conference", conference, "oldBeginDate", oldBeginDate, "oldEndDate", oldEndDate); sendForAllParticipants(variables, conference, TEMPLATE_UPDATE_DATES, String.format(TITLE_UPDATE_DATES, conference.getTitle())); } @@ -107,7 +106,7 @@ public class ConferenceNotificationService { } private void sendMessagePing(Conference conference) { - Map variables = ImmutableMap.of("conference", conference); + Map variables = Map.of("conference", conference); sendForAllParticipants(variables, conference, TEMPLATE_PING, String.format(TITLE_PING, conference.getTitle())); } } diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/conference/service/ConferenceService.java index 830fea1..5a085ba 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/conference/service/ConferenceService.java @@ -81,7 +81,7 @@ public class ConferenceService extends BaseService { public List findAll() { - return conferenceRepository.findAll(new Sort(Sort.Direction.DESC, "beginDate")); + return conferenceRepository.findAll(Sort.by(Sort.Direction.DESC, "beginDate")); } public List findAllDto() { diff --git a/src/main/java/ru/ulstu/configuration/ApplicationProperties.java b/src/main/java/ru/ulstu/configuration/ApplicationProperties.java index 878e0b4..beef76b 100644 --- a/src/main/java/ru/ulstu/configuration/ApplicationProperties.java +++ b/src/main/java/ru/ulstu/configuration/ApplicationProperties.java @@ -1,11 +1,10 @@ package ru.ulstu.configuration; +import jakarta.validation.constraints.NotBlank; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated; -import javax.validation.constraints.NotBlank; - @Component @ConfigurationProperties(prefix = "ng-tracker") @Validated diff --git a/src/main/java/ru/ulstu/configuration/Constants.java b/src/main/java/ru/ulstu/configuration/Constants.java index 5738b8f..e018b07 100644 --- a/src/main/java/ru/ulstu/configuration/Constants.java +++ b/src/main/java/ru/ulstu/configuration/Constants.java @@ -14,7 +14,7 @@ public class Constants { public static final String LOGIN_REGEX = "^[_'.@A-Za-z0-9-]*$"; public static final String COOKIES_NAME = "JSESSIONID"; - public static final String LOGOUT_URL = "/login.xhtml"; + public static final String LOGOUT_URL = "/login?logout"; public static final String SESSION_ID_ATTR = "sessionId"; public static final int SESSION_TIMEOUT_SECONDS = 30 * 60; diff --git a/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java b/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java index 5df2377..d906316 100644 --- a/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java +++ b/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java @@ -1,10 +1,10 @@ package ru.ulstu.configuration; -import nz.net.ultraq.thymeleaf.LayoutDialect; +import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.thymeleaf.extras.springsecurity5.dialect.SpringSecurityDialect; -import org.thymeleaf.spring5.SpringTemplateEngine; +import org.thymeleaf.extras.springsecurity6.dialect.SpringSecurityDialect; +import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; import org.thymeleaf.templateresolver.ITemplateResolver; diff --git a/src/main/java/ru/ulstu/configuration/MvcConfiguration.java b/src/main/java/ru/ulstu/configuration/MvcConfiguration.java index 7d2ab4c..35e9ad2 100644 --- a/src/main/java/ru/ulstu/configuration/MvcConfiguration.java +++ b/src/main/java/ru/ulstu/configuration/MvcConfiguration.java @@ -1,10 +1,7 @@ package ru.ulstu.configuration; -import org.springframework.boot.web.server.ErrorPage; -import org.springframework.boot.web.server.ErrorPageRegistrar; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpStatus; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -12,14 +9,20 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; public class MvcConfiguration implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { - registry.addRedirectViewController("/", "/index.xhtml"); + registry.addViewController("/{articlename:\\w+}"); + registry.addViewController("/admin/{articlename:\\w+}"); + registry.addViewController("/papers/{articlename:\\w+}"); + registry.addViewController("/grants/{articlename:\\w+}"); + registry.addViewController("/conferences/{articlename:\\w+}"); + registry.addViewController("/students/{articlename:\\w+}"); + registry.addRedirectViewController("/", "/index"); + registry.addRedirectViewController("/default", "/index"); } - @Bean - public ErrorPageRegistrar errorPageRegistrar() { - return registry -> { - registry.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404.xhtml")); - registry.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500.xhtml")); - }; + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry + .addResourceHandler("/webjars/**") + .addResourceLocations("/webjars/"); } } diff --git a/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java b/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java index 190f697..ea90028 100644 --- a/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java +++ b/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java @@ -9,42 +9,24 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.config.oauth2.client.CommonOAuth2Provider; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.oauth2.client.endpoint.DefaultAuthorizationCodeTokenResponseClient; -import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient; -import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest; -import org.springframework.security.oauth2.client.registration.ClientRegistration; -import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; -import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository; -import org.springframework.security.oauth2.client.web.AuthorizationRequestRepository; -import org.springframework.security.oauth2.client.web.HttpSessionOAuth2AuthorizationRequestRepository; -import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import ru.ulstu.core.model.AuthFailureHandler; -import ru.ulstu.core.navigation.Page; +import ru.ulstu.user.controller.UserController; import ru.ulstu.user.model.UserRoleConstants; import ru.ulstu.user.service.UserService; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - @Configuration @EnableWebSecurity -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) -public class SecurityConfiguration extends WebSecurityConfigurerAdapter { +public class SecurityConfiguration { private final Logger log = LoggerFactory.getLogger(SecurityConfiguration.class); - private static List clients = Arrays.asList("google"); - private static final String CLIENT_PROPERTY_KEY - = "spring.security.oauth2.client.registration."; @Autowired private Environment env; @@ -75,110 +57,60 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { this.authenticationFailureHandler = authenticationFailureHandler; } - @Override - protected void configure(HttpSecurity http) throws Exception { - http.csrf().disable(); + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http.csrf(AbstractHttpConfigurer::disable); if (applicationProperties.isDevMode()) { log.debug("Security disabled"); - http.authorizeRequests() + http.authorizeHttpRequests((authz) -> authz .anyRequest() - .permitAll(); - http.anonymous() + .permitAll() + ); + http.anonymous((anonymousCustomizer) -> anonymousCustomizer .principal("admin") - .authorities(UserRoleConstants.ADMIN); + .authorities(UserRoleConstants.ADMIN) + ); } else { - http.authorizeRequests() - .antMatchers("/login.xhtml", "/logout") - .permitAll() - .anyRequest() - .authenticated() - .antMatchers("/swagger-ui.html").hasAuthority(UserRoleConstants.ADMIN) - .and() - .formLogin() - .loginPage("/login.xhtml") - .successHandler(authenticationSuccessHandler) - .failureHandler(authenticationFailureHandler) - .permitAll() - .and() - .oauth2Login() - .loginPage("/login.xhtml") - .authorizationEndpoint() - .baseUri("/oauth2/authorize-client") - .authorizationRequestRepository(authorizationRequestRepository()) - .and() - .tokenEndpoint() - .accessTokenResponseClient(accessTokenResponseClient()) - .and() - .defaultSuccessUrl(Page.INDEX) - .failureUrl("/loginFailure") - .and() - .logout() - .logoutSuccessHandler(logoutSuccessHandler) - .logoutSuccessUrl(Page.LOGOUT) - .invalidateHttpSession(true) - .clearAuthentication(true) - .deleteCookies(Constants.COOKIES_NAME) - .permitAll(); - http.csrf().disable(); + log.debug("Security enabled"); + http.authorizeHttpRequests((authz) -> authz + .requestMatchers(UserController.ACTIVATE_URL).permitAll() + .requestMatchers(Constants.PASSWORD_RESET_REQUEST_PAGE).permitAll() + .requestMatchers(Constants.PASSWORD_RESET_PAGE).permitAll() + .requestMatchers("/users/block").permitAll() + .requestMatchers(UserController.URL + UserController.REGISTER_URL).permitAll() + .requestMatchers(UserController.URL + UserController.ACTIVATE_URL).permitAll() + .requestMatchers(UserController.URL + UserController.PASSWORD_RESET_REQUEST_URL).permitAll() + .requestMatchers(UserController.URL + UserController.PASSWORD_RESET_URL).permitAll() + .requestMatchers("/swagger-ui.html").hasAuthority(UserRoleConstants.ADMIN) + .anyRequest().authenticated()) + .formLogin((formLoginCustomizer) -> formLoginCustomizer + .loginPage("/login") + .successHandler(authenticationSuccessHandler) + .failureHandler(authenticationFailureHandler) + .permitAll() + ) + .logout((logoutCustomizer) -> logoutCustomizer + .logoutSuccessHandler(logoutSuccessHandler) + .logoutSuccessUrl(Constants.LOGOUT_URL) + .invalidateHttpSession(false) + .clearAuthentication(true) + .deleteCookies(Constants.COOKIES_NAME) + .permitAll() + ); + http.csrf(AbstractHttpConfigurer::disable); } - if (applicationProperties.isUseHttps()) { - http.portMapper() - .http(httpPort) - .mapsTo(httpsPort) - .and() - .requiresChannel() - .anyRequest() - .requiresSecure(); - } - } - - @Bean - public AuthorizationRequestRepository authorizationRequestRepository() { - return new HttpSessionOAuth2AuthorizationRequestRepository(); + return http.build(); } @Bean - public OAuth2AccessTokenResponseClient accessTokenResponseClient() { - DefaultAuthorizationCodeTokenResponseClient accessTokenResponseClient = new DefaultAuthorizationCodeTokenResponseClient(); - return accessTokenResponseClient; - } - - //@Bean - public ClientRegistrationRepository clientRegistrationRepository() { - List registrations = clients.stream() - .map(c -> getRegistration(c)) - .filter(registration -> registration != null) - .collect(Collectors.toList()); - - return new InMemoryClientRegistrationRepository(registrations); - } - - private ClientRegistration getRegistration(String client) { - String clientId = env.getProperty(CLIENT_PROPERTY_KEY + client + ".client-id"); - - if (clientId == null) { - return null; - } - - String clientSecret = env.getProperty(CLIENT_PROPERTY_KEY + client + ".client-secret"); - if (client.equals("google")) { - return CommonOAuth2Provider.GOOGLE.getBuilder(client) - .clientId(clientId) - .clientSecret(clientSecret) - .build(); - } - return null; - } - - @Override - public void configure(WebSecurity web) { - web.ignoring() - .antMatchers("/css/**") - .antMatchers("/javax.faces.resource/**") - .antMatchers("/js/**") - .antMatchers("/templates/**") - .antMatchers("/webjars/**") - .antMatchers("/img/**"); + public WebSecurityCustomizer webSecurityCustomizer() { + return (web) -> web.ignoring() + .requestMatchers("/css/**", + "/javax.faces.resource/**", + "/js/**", + "/templates/**", + "/webjars/**", + "/img/**"); } @Autowired diff --git a/src/main/java/ru/ulstu/configuration/SwaggerConfiguration.java b/src/main/java/ru/ulstu/configuration/SwaggerConfiguration.java deleted file mode 100644 index c51811e..0000000 --- a/src/main/java/ru/ulstu/configuration/SwaggerConfiguration.java +++ /dev/null @@ -1,23 +0,0 @@ -package ru.ulstu.configuration; - -import com.google.common.base.Predicates; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -@Configuration -@EnableSwagger2 -public class SwaggerConfiguration { - @Bean - public Docket swaggerApi() { - return new Docket(DocumentationType.SWAGGER_2) - .select() - .apis(RequestHandlerSelectors.any()) - .paths(Predicates.not(PathSelectors.regex("/error"))) - .build(); - } -} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/core/controller/AdviceController.java b/src/main/java/ru/ulstu/core/controller/AdviceController.java new file mode 100644 index 0000000..aab904e --- /dev/null +++ b/src/main/java/ru/ulstu/core/controller/AdviceController.java @@ -0,0 +1,115 @@ +package ru.ulstu.core.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ModelAttribute; +import ru.ulstu.core.error.EntityIdIsNullException; +import ru.ulstu.core.model.ErrorConstants; +import ru.ulstu.core.model.response.Response; +import ru.ulstu.core.model.response.ResponseExtended; +import ru.ulstu.user.error.UserActivationError; +import ru.ulstu.user.error.UserEmailExistsException; +import ru.ulstu.user.error.UserIdExistsException; +import ru.ulstu.user.error.UserIsUndeadException; +import ru.ulstu.user.error.UserLoginExistsException; +import ru.ulstu.user.error.UserNotActivatedException; +import ru.ulstu.user.error.UserNotFoundException; +import ru.ulstu.user.error.UserPasswordsNotValidOrNotMatchException; +import ru.ulstu.user.error.UserResetKeyError; +import ru.ulstu.user.error.UserSendingMailException; +import ru.ulstu.user.service.UserService; + +import java.util.Set; +import java.util.stream.Collectors; + +//@ControllerAdvice +public class AdviceController { + private final Logger log = LoggerFactory.getLogger(AdviceController.class); + private final UserService userService; + + public AdviceController(UserService userService) { + this.userService = userService; + } + + @ModelAttribute("flashMessage") + public String getFlashMessage() { + return null; + } + + private Response handleException(ErrorConstants error) { + log.warn(error.toString()); + return new Response<>(error); + } + + private ResponseExtended handleException(ErrorConstants error, E errorData) { + log.warn(error.toString()); + return new ResponseExtended<>(error, errorData); + } + + @ExceptionHandler(EntityIdIsNullException.class) + public Response handleEntityIdIsNullException(Throwable e) { + return handleException(ErrorConstants.ID_IS_NULL); + } + + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseExtended> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { + final Set errors = e.getBindingResult().getAllErrors().stream() + .filter(error -> error instanceof FieldError) + .map(error -> ((FieldError) error).getField()) + .collect(Collectors.toSet()); + return handleException(ErrorConstants.VALIDATION_ERROR, errors); + } + + @ExceptionHandler(UserIdExistsException.class) + public Response handleUserIdExistsException(Throwable e) { + return handleException(ErrorConstants.USER_ID_EXISTS); + } + + @ExceptionHandler(UserActivationError.class) + public ResponseExtended handleUserActivationError(Throwable e) { + return handleException(ErrorConstants.USER_ACTIVATION_ERROR, e.getMessage()); + } + + @ExceptionHandler(UserLoginExistsException.class) + public ResponseExtended handleUserLoginExistsException(Throwable e) { + return handleException(ErrorConstants.USER_LOGIN_EXISTS, e.getMessage()); + } + + @ExceptionHandler(UserEmailExistsException.class) + public ResponseExtended handleUserEmailExistsException(Throwable e) { + return handleException(ErrorConstants.USER_EMAIL_EXISTS, e.getMessage()); + } + + @ExceptionHandler(UserPasswordsNotValidOrNotMatchException.class) + public Response handleUserPasswordsNotValidOrNotMatchException(Throwable e) { + return handleException(ErrorConstants.USER_PASSWORDS_NOT_VALID_OR_NOT_MATCH); + } + + @ExceptionHandler(UserNotFoundException.class) + public ResponseExtended handleUserNotFoundException(Throwable e) { + return handleException(ErrorConstants.USER_NOT_FOUND, e.getMessage()); + } + + @ExceptionHandler(UserNotActivatedException.class) + public Response handleUserNotActivatedException(Throwable e) { + return handleException(ErrorConstants.USER_NOT_ACTIVATED); + } + + @ExceptionHandler(UserResetKeyError.class) + public ResponseExtended handleUserResetKeyError(Throwable e) { + return handleException(ErrorConstants.USER_RESET_ERROR, e.getMessage()); + } + + @ExceptionHandler(UserIsUndeadException.class) + public ResponseExtended handleUserIsUndeadException(Throwable e) { + return handleException(ErrorConstants.USER_UNDEAD_ERROR, e.getMessage()); + } + + @ExceptionHandler(UserSendingMailException.class) + public ResponseExtended handleUserSendingMailException(Throwable e) { + return handleException(ErrorConstants.USER_SENDING_MAIL_EXCEPTION, e.getMessage()); + } +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/core/jpa/OffsetablePageRequest.java b/src/main/java/ru/ulstu/core/jpa/OffsetablePageRequest.java index 148a931..b59bf66 100644 --- a/src/main/java/ru/ulstu/core/jpa/OffsetablePageRequest.java +++ b/src/main/java/ru/ulstu/core/jpa/OffsetablePageRequest.java @@ -15,7 +15,7 @@ public class OffsetablePageRequest implements Pageable, Serializable { } public OffsetablePageRequest(long offset, int count, Sort.Direction direction, String... properties) { - this(offset, count, new Sort(direction, properties)); + this(offset, count, Sort.by(direction, properties)); } public OffsetablePageRequest(long offset, int count, Sort sort) { @@ -30,6 +30,12 @@ public class OffsetablePageRequest implements Pageable, Serializable { this.sort = sort; } + @Override + public Pageable withPage(int pageNumber) { + //TODO + return null; + } + @Override public Sort getSort() { return sort; diff --git a/src/main/java/ru/ulstu/core/model/AuthFailureHandler.java b/src/main/java/ru/ulstu/core/model/AuthFailureHandler.java index 8b6bd9d..b2b8d91 100644 --- a/src/main/java/ru/ulstu/core/model/AuthFailureHandler.java +++ b/src/main/java/ru/ulstu/core/model/AuthFailureHandler.java @@ -1,12 +1,12 @@ package ru.ulstu.core.model; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.stereotype.Component; import ru.ulstu.user.error.UserBlockedException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Component diff --git a/src/main/java/ru/ulstu/core/model/BaseEntity.java b/src/main/java/ru/ulstu/core/model/BaseEntity.java index a985dcc..85c8ea7 100644 --- a/src/main/java/ru/ulstu/core/model/BaseEntity.java +++ b/src/main/java/ru/ulstu/core/model/BaseEntity.java @@ -1,11 +1,12 @@ package ru.ulstu.core.model; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.MappedSuperclass; -import javax.persistence.Version; -import javax.validation.constraints.NotNull; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.Version; +import jakarta.validation.constraints.NotNull; + import java.io.Serializable; @MappedSuperclass diff --git a/src/main/java/ru/ulstu/core/navigation/Page.java b/src/main/java/ru/ulstu/core/navigation/Page.java index bd86917..3cd6a7f 100644 --- a/src/main/java/ru/ulstu/core/navigation/Page.java +++ b/src/main/java/ru/ulstu/core/navigation/Page.java @@ -1,22 +1,19 @@ package ru.ulstu.core.navigation; -import javax.inject.Named; - -@Named public class Page { - public static final String INDEX = "/index.xhtml"; - public static final String PAPER = "/paper/paper.xhtml"; - public static final String PAPER_LIST = "/paper/papers.xhtml"; - public static final String PAPER_DASHBOARD = "/paper/dashboard.xhtml"; - public static final String GRANT = "/grant/grant.xhtml"; - public static final String GRANT_LIST = "/grant/grants.xhtml"; - public static final String GRANT_DASHBOARD = "/grant/dashboard.xhtml"; - public static final String USER_LIST = "/admin/users.xhtml"; + public static final String INDEX = "/index.html"; + public static final String PAPER = "/paper/paper.html"; + public static final String PAPER_LIST = "/paper/papers.html"; + public static final String PAPER_DASHBOARD = "/paper/dashboard.html"; + public static final String GRANT = "/grant/grant.html"; + public static final String GRANT_LIST = "/grant/grants.html"; + public static final String GRANT_DASHBOARD = "/grant/dashboard.html"; + public static final String USER_LIST = "/admin/users.html"; public static final String LOGOUT = "/logout"; - public static final String CONFERENCE = "/conference/conference.xhtml"; - public static final String CONFERENCE_DASHBOARD = "/conference/dashboard.xhtml"; - public static final String CONFERENCE_LIST = "/conference/conferences.xhtml"; - public static final String PROJECT_DASHBOARD = "/conference/dashboard.xhtml"; + public static final String CONFERENCE = "/conference/conference.html"; + public static final String CONFERENCE_DASHBOARD = "/conference/dashboard.html"; + public static final String CONFERENCE_LIST = "/conference/conferences.html"; + public static final String PROJECT_DASHBOARD = "/conference/dashboard.html"; public String getIndex() { return INDEX; diff --git a/src/main/java/ru/ulstu/core/repository/JpaDetachableRepositoryImpl.java b/src/main/java/ru/ulstu/core/repository/JpaDetachableRepositoryImpl.java index facc071..718974f 100644 --- a/src/main/java/ru/ulstu/core/repository/JpaDetachableRepositoryImpl.java +++ b/src/main/java/ru/ulstu/core/repository/JpaDetachableRepositoryImpl.java @@ -1,9 +1,9 @@ package ru.ulstu.core.repository; +import jakarta.persistence.EntityManager; import org.springframework.data.jpa.repository.support.JpaEntityInformation; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; -import javax.persistence.EntityManager; import java.io.Serializable; public class JpaDetachableRepositoryImpl extends SimpleJpaRepository diff --git a/src/main/java/ru/ulstu/core/util/FacesUtil.java b/src/main/java/ru/ulstu/core/util/FacesUtil.java deleted file mode 100644 index 74279dd..0000000 --- a/src/main/java/ru/ulstu/core/util/FacesUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -package ru.ulstu.core.util; - -import javax.faces.FacesException; -import javax.faces.application.FacesMessage; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import java.io.IOException; -import java.util.Map; - -public class FacesUtil { - public static void redirectToPage(FacesContext context, String page, String params) { - ExternalContext extContext = context.getExternalContext(); - String url = extContext.encodeActionURL(context.getApplication().getViewHandler().getActionURL(context, page) - + params); - try { - extContext.redirect(url); - } catch (IOException e) { - throw new FacesException(e); - } - } - - public static void redirectToPage(String page) { - redirectToPage(FacesContext.getCurrentInstance(), page, ""); - } - - public static void redirectToPage(String page, String params) { - redirectToPage(FacesContext.getCurrentInstance(), page, params); - } - - public static Map getRequestParams() { - return FacesContext.getCurrentInstance(). - getExternalContext().getRequestParameterMap(); - } - - public static void showInfoMessage(String summary, String detail) { - FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail); - FacesContext fc = FacesContext.getCurrentInstance(); - fc.getExternalContext().getFlash().setKeepMessages(true); - fc.addMessage("messages", message); - } - - public static void showDangerMessage(String summary, String detail) { - FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail); - FacesContext.getCurrentInstance().addMessage(null, message); - } - -} diff --git a/src/main/java/ru/ulstu/deadline/model/Deadline.java b/src/main/java/ru/ulstu/deadline/model/Deadline.java index d0564a0..e530be5 100644 --- a/src/main/java/ru/ulstu/deadline/model/Deadline.java +++ b/src/main/java/ru/ulstu/deadline/model/Deadline.java @@ -2,15 +2,15 @@ package ru.ulstu.deadline.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.user.model.User; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.OneToMany; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; import java.util.Date; import java.util.List; import java.util.Objects; @@ -108,9 +108,7 @@ public class Deadline extends BaseEntity { } return getId().equals(deadline.getId()) && description.equals(deadline.description) && - date.equals(deadline.date) && - executors.equals(deadline.executors) && - done.equals(deadline.done); + date.equals(deadline.date); } @Override diff --git a/src/main/java/ru/ulstu/file/model/FileData.java b/src/main/java/ru/ulstu/file/model/FileData.java index 3f97130..41e30bb 100644 --- a/src/main/java/ru/ulstu/file/model/FileData.java +++ b/src/main/java/ru/ulstu/file/model/FileData.java @@ -1,10 +1,10 @@ package ru.ulstu.file.model; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Table; import java.util.Date; @Entity diff --git a/src/main/java/ru/ulstu/grant/controller/GrantController.java b/src/main/java/ru/ulstu/grant/controller/GrantController.java index 48dee8e..669dc5d 100644 --- a/src/main/java/ru/ulstu/grant/controller/GrantController.java +++ b/src/main/java/ru/ulstu/grant/controller/GrantController.java @@ -1,5 +1,7 @@ package ru.ulstu.grant.controller; +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; @@ -16,9 +18,7 @@ import ru.ulstu.grant.model.GrantDto; import ru.ulstu.grant.service.GrantService; import ru.ulstu.paper.model.PaperDto; import ru.ulstu.user.model.User; -import springfox.documentation.annotations.ApiIgnore; -import javax.validation.Valid; import java.io.IOException; import java.util.List; @@ -29,7 +29,7 @@ import static ru.ulstu.core.controller.Navigation.REDIRECT_TO; @Controller() @RequestMapping(value = "/grants") -@ApiIgnore +@Hidden public class GrantController { private final GrantService grantService; diff --git a/src/main/java/ru/ulstu/grant/controller/GrantDashboardView.java b/src/main/java/ru/ulstu/grant/controller/GrantDashboardView.java deleted file mode 100644 index 81b4685..0000000 --- a/src/main/java/ru/ulstu/grant/controller/GrantDashboardView.java +++ /dev/null @@ -1,76 +0,0 @@ -package ru.ulstu.grant.controller; - -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.grant.service.GrantService; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -@Named -@ViewScoped -public class GrantDashboardView { - @Inject - private GrantService grantService; - - @Inject - private UserService userService; - - private List grants; - - private List selectedGrants = new ArrayList<>(); - - private String newGrantTitle; - - @PostConstruct - public void init() { - grants = grantService.findAllActiveByCurrentUser(); - } - - public List getGrants() { - return grants; - } - - public void create() { - grantService.createByTitle(newGrantTitle); - FacesUtil.showInfoMessage("Статья создана", newGrantTitle); - newGrantTitle = ""; - grants = grantService.findAllActiveByCurrentUser(); - } - - public void deleteSelected() { - grantService.delete(selectedGrants); - grants = grantService.findAllActiveByCurrentUser(); - FacesUtil.showInfoMessage("Было удалено грантов: " + selectedGrants.size(), ""); - } - - public List getGrantStatuses() { - return Arrays.asList(Grant.GrantStatus.values()); - } - - public String getNewGrantTitle() { - return newGrantTitle; - } - - public void setNewGrantTitle(String newGrantTitle) { - this.newGrantTitle = newGrantTitle; - } - - public List getSelectedGrants() { - return selectedGrants; - } - - public void setSelectedGrants(List selectedGrants) { - this.selectedGrants = selectedGrants; - } - - public String getCurrentUser() { - return userService.getCurrentUser().getUserAbbreviate(); - } -} diff --git a/src/main/java/ru/ulstu/grant/controller/GrantStatusConverter.java b/src/main/java/ru/ulstu/grant/controller/GrantStatusConverter.java deleted file mode 100644 index 51d1b2c..0000000 --- a/src/main/java/ru/ulstu/grant/controller/GrantStatusConverter.java +++ /dev/null @@ -1,21 +0,0 @@ -package ru.ulstu.grant.controller; - -import ru.ulstu.grant.model.Grant; - -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; -import javax.faces.convert.Converter; -import javax.faces.convert.FacesConverter; - -@FacesConverter(value = "grantStatusConverter") -public class GrantStatusConverter implements Converter { - @Override - public Object getAsObject(FacesContext context, UIComponent component, String value) { - return Grant.GrantStatus.valueOf(value); - } - - @Override - public String getAsString(FacesContext context, UIComponent component, Object value) { - return value == null ? "" : ((Grant.GrantStatus) value).name(); - } -} diff --git a/src/main/java/ru/ulstu/grant/controller/GrantView.java b/src/main/java/ru/ulstu/grant/controller/GrantView.java deleted file mode 100644 index 105f5da..0000000 --- a/src/main/java/ru/ulstu/grant/controller/GrantView.java +++ /dev/null @@ -1,94 +0,0 @@ -package ru.ulstu.grant.controller; - -import ru.ulstu.core.navigation.Page; -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.grant.service.GrantService; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.io.Serializable; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - -@Named -@ViewScoped -public class GrantView implements Serializable { - @Inject - private GrantService grantService; - - @Inject - private DeadlineService deadlineService; - - @Inject - private UserService userService; - - private Grant grant; - - private Date newDeadlineDate; - - private String newDeadlineDescription; - - @PostConstruct - public void init() { - grant = grantService.findById(Integer.valueOf(FacesUtil.getRequestParams().get("id"))); - newDeadlineDescription = ""; - newDeadlineDate = new Date(); - FacesUtil.showInfoMessage("Статья открыта", ""); - } - - public Grant getGrant() { - return grant; - } - - public void setGrant(Grant grant) { - this.grant = grant; - } - - public List getGrantStatuses() { - return Arrays.asList(Grant.GrantStatus.values()); - } - - public List getAuthors() { - return userService.findAll(); - } - - public String save() { - grantService.save(grant); - FacesUtil.showInfoMessage("Грант сохранен", ""); - return Page.GRANT_LIST + "?faces-redirect=true"; - } - - public Date getNewDeadlineDate() { - return newDeadlineDate; - } - - public void setNewDeadlineDate(Date newDeadlineDate) { - this.newDeadlineDate = newDeadlineDate; - } - - public String getNewDeadlineDescription() { - return newDeadlineDescription; - } - - public void setNewDeadlineDescription(String newDeadlineDescription) { - this.newDeadlineDescription = newDeadlineDescription; - } - - public void deleteDeadline(Deadline deadline) { - grant.getDeadlines().remove(deadline); - } - - public void addDeadline() { - grant.getDeadlines().add(deadlineService.create(newDeadlineDescription, newDeadlineDate)); - newDeadlineDescription = ""; - newDeadlineDate = new Date(); - } -} diff --git a/src/main/java/ru/ulstu/grant/controller/GrantsView.java b/src/main/java/ru/ulstu/grant/controller/GrantsView.java deleted file mode 100644 index f3c693d..0000000 --- a/src/main/java/ru/ulstu/grant/controller/GrantsView.java +++ /dev/null @@ -1,68 +0,0 @@ -package ru.ulstu.grant.controller; - -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.grant.service.GrantService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -@Named -@ViewScoped -public class GrantsView { - @Inject - private GrantService grantService; - - private List grants; - - private List selectedGrants = new ArrayList<>(); - - private String newGrantTitle; - - @PostConstruct - public void init() { - grants = grantService.findAll(); - } - - public void create() { - grantService.createByTitle(newGrantTitle); - FacesUtil.showInfoMessage("Статья создана", newGrantTitle); - newGrantTitle = ""; - grants = grantService.findAll(); - } - - public void deleteSelected() { - grantService.delete(selectedGrants); - grants = grantService.findAll(); - FacesUtil.showInfoMessage("Было удалено грантов: " + selectedGrants.size(), ""); - } - - public List getGrantStatuses() { - return Arrays.asList(Grant.GrantStatus.values()); - } - - public List getGrants() { - return grants; - } - - public String getNewGrantTitle() { - return newGrantTitle; - } - - public void setNewGrantTitle(String newGrantTitle) { - this.newGrantTitle = newGrantTitle; - } - - public List getSelectedGrants() { - return selectedGrants; - } - - public void setSelectedGrants(List selectedGrants) { - this.selectedGrants = selectedGrants; - } -} diff --git a/src/main/java/ru/ulstu/grant/model/Grant.java b/src/main/java/ru/ulstu/grant/model/Grant.java index ec6e90f..cf8171d 100644 --- a/src/main/java/ru/ulstu/grant/model/Grant.java +++ b/src/main/java/ru/ulstu/grant/model/Grant.java @@ -1,5 +1,20 @@ package ru.ulstu.grant.model; +import jakarta.persistence.CascadeType; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OrderBy; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import ru.ulstu.core.model.BaseEntity; @@ -12,21 +27,6 @@ import ru.ulstu.project.model.Project; import ru.ulstu.timeline.model.Event; import ru.ulstu.user.model.User; -import javax.persistence.CascadeType; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.OrderBy; -import javax.persistence.Table; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; diff --git a/src/main/java/ru/ulstu/grant/model/GrantDto.java b/src/main/java/ru/ulstu/grant/model/GrantDto.java index 541dae8..0c7f212 100644 --- a/src/main/java/ru/ulstu/grant/model/GrantDto.java +++ b/src/main/java/ru/ulstu/grant/model/GrantDto.java @@ -2,6 +2,7 @@ package ru.ulstu.grant.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotEmpty; import org.apache.commons.lang3.StringUtils; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.file.model.FileDataDto; @@ -10,7 +11,6 @@ import ru.ulstu.paper.model.PaperDto; import ru.ulstu.project.model.ProjectDto; import ru.ulstu.user.model.UserDto; -import javax.validation.constraints.NotEmpty; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/grant/service/GrantNotificationService.java b/src/main/java/ru/ulstu/grant/service/GrantNotificationService.java index 677b38f..93af783 100644 --- a/src/main/java/ru/ulstu/grant/service/GrantNotificationService.java +++ b/src/main/java/ru/ulstu/grant/service/GrantNotificationService.java @@ -1,6 +1,5 @@ package ru.ulstu.grant.service; -import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; import ru.ulstu.core.util.DateUtils; import ru.ulstu.grant.model.Grant; @@ -46,22 +45,22 @@ public class GrantNotificationService { } private void sendMessageDeadline(Grant grant) { - Map variables = ImmutableMap.of("grant", grant); + Map variables = Map.of("grant", grant); sendForAllAuthors(variables, grant, TEMPLATE_DEADLINE, String.format(TITLE_DEADLINE, grant.getTitle())); } public void sendCreateNotification(Grant grant) { - Map variables = ImmutableMap.of("grant", grant); + Map variables = Map.of("grant", grant); sendForAllAuthors(variables, grant, TEMPLATE_CREATE, String.format(TITLE_CREATE, grant.getTitle())); } public void sendAuthorsChangeNotification(Grant grant, Set oldAuthors) { - Map variables = ImmutableMap.of("grant", grant, "oldAuthors", oldAuthors); + Map variables = Map.of("grant", grant, "oldAuthors", oldAuthors); sendForAllAuthors(variables, grant, TEMPLATE_AUTHORS_CHANGED, String.format(TITLE_AUTHORS_CHANGED, grant.getTitle())); } public void sendLeaderChangeNotification(Grant grant, User oldLeader) { - Map variables = ImmutableMap.of("grant", grant, "oldLeader", oldLeader); + Map variables = Map.of("grant", grant, "oldLeader", oldLeader); sendForAllAuthors(variables, grant, TEMPLATE_LEADER_CHANGED, String.format(TITLE_LEADER_CHANGED, grant.getTitle())); } diff --git a/src/main/java/ru/ulstu/index/controller/IndexController.java b/src/main/java/ru/ulstu/index/controller/IndexController.java new file mode 100644 index 0000000..bacf283 --- /dev/null +++ b/src/main/java/ru/ulstu/index/controller/IndexController.java @@ -0,0 +1,23 @@ +package ru.ulstu.index.controller; + +import io.swagger.v3.oas.annotations.Hidden; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import ru.ulstu.core.controller.AdviceController; +import ru.ulstu.user.service.UserService; + +@Controller() +@RequestMapping(value = "/index") +@Hidden +public class IndexController extends AdviceController { + public IndexController(UserService userService) { + super(userService); + } + + @GetMapping + public void currentUser(ModelMap modelMap) { + //нужен здесь для добавления параметров на стартовой странице + } +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/index/controller/IndexView.java b/src/main/java/ru/ulstu/index/controller/IndexView.java deleted file mode 100644 index 9756992..0000000 --- a/src/main/java/ru/ulstu/index/controller/IndexView.java +++ /dev/null @@ -1,28 +0,0 @@ -package ru.ulstu.index.controller; - -import ru.ulstu.core.navigation.Page; -import ru.ulstu.index.model.Section; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.List; - -@Named -@ViewScoped -public class IndexView { - private List
sections = new ArrayList<>(); - - @PostConstruct - public void init() { - sections.add(new Section("Статьи", Page.PAPER_DASHBOARD, "papers.jpg")); - sections.add(new Section("Конференции", Page.CONFERENCE_DASHBOARD, "conf.jpg")); - sections.add(new Section("Гранты", Page.GRANT_DASHBOARD, "grants.jpg")); - sections.add(new Section("Проекты", Page.PROJECT_DASHBOARD, "projects.jpg")); - } - - public List
getSections() { - return sections; - } -} diff --git a/src/main/java/ru/ulstu/odin/model/OdinField.java b/src/main/java/ru/ulstu/odin/model/OdinField.java index b0d99c9..564e203 100644 --- a/src/main/java/ru/ulstu/odin/model/OdinField.java +++ b/src/main/java/ru/ulstu/odin/model/OdinField.java @@ -1,14 +1,14 @@ package ru.ulstu.odin.model; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import ru.ulstu.core.error.OdinException; import ru.ulstu.odin.model.annotation.OdinCaption; import ru.ulstu.odin.model.annotation.OdinReadOnly; import ru.ulstu.odin.model.annotation.OdinVisible; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; diff --git a/src/main/java/ru/ulstu/odin/model/OdinStringField.java b/src/main/java/ru/ulstu/odin/model/OdinStringField.java index 498b375..d37d69f 100644 --- a/src/main/java/ru/ulstu/odin/model/OdinStringField.java +++ b/src/main/java/ru/ulstu/odin/model/OdinStringField.java @@ -1,10 +1,10 @@ package ru.ulstu.odin.model; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Size; import ru.ulstu.odin.model.annotation.OdinString; import ru.ulstu.odin.model.annotation.OdinString.OdinStringType; -import javax.validation.constraints.Email; -import javax.validation.constraints.Size; import java.lang.reflect.Field; import static ru.ulstu.odin.model.annotation.OdinString.OdinStringType.EMAIL; diff --git a/src/main/java/ru/ulstu/paper/controller/PaperController.java b/src/main/java/ru/ulstu/paper/controller/PaperController.java index 29da57d..e2b85f2 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperController.java @@ -1,5 +1,7 @@ package ru.ulstu.paper.controller; +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.validation.Valid; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -21,9 +23,7 @@ import ru.ulstu.paper.model.ReferenceDto; import ru.ulstu.paper.service.LatexService; import ru.ulstu.paper.service.PaperService; import ru.ulstu.user.model.User; -import springfox.documentation.annotations.ApiIgnore; -import javax.validation.Valid; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; @@ -37,7 +37,7 @@ import static org.springframework.util.StringUtils.isEmpty; @Controller() @RequestMapping(value = "/papers") -@ApiIgnore +@Hidden public class PaperController { private final PaperService paperService; private final ConferenceService conferenceService; diff --git a/src/main/java/ru/ulstu/paper/controller/PaperDashboardView.java b/src/main/java/ru/ulstu/paper/controller/PaperDashboardView.java deleted file mode 100644 index 5bbf85d..0000000 --- a/src/main/java/ru/ulstu/paper/controller/PaperDashboardView.java +++ /dev/null @@ -1,76 +0,0 @@ -package ru.ulstu.paper.controller; - -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.service.PaperService; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -@Named -@ViewScoped -public class PaperDashboardView { - @Inject - private PaperService paperService; - - @Inject - private UserService userService; - - private List papers; - - private List selectedPapers = new ArrayList<>(); - - private String newPaperTitle; - - @PostConstruct - public void init() { - papers = paperService.findAllActiveByCurrentUser(); - } - - public List getPapers() { - return papers; - } - - public void create() { - paperService.createByTitle(newPaperTitle); - FacesUtil.showInfoMessage("Статья создана", newPaperTitle); - newPaperTitle = ""; - papers = paperService.findAllActiveByCurrentUser(); - } - - public void deleteSelected() { - paperService.delete(selectedPapers); - papers = paperService.findAllActiveByCurrentUser(); - FacesUtil.showInfoMessage("Было удалено статей: " + selectedPapers.size(), ""); - } - - public List getPaperStatuses() { - return Arrays.asList(Paper.PaperStatus.values()); - } - - public String getNewPaperTitle() { - return newPaperTitle; - } - - public void setNewPaperTitle(String newPaperTitle) { - this.newPaperTitle = newPaperTitle; - } - - public List getSelectedPapers() { - return selectedPapers; - } - - public void setSelectedPapers(List selectedPapers) { - this.selectedPapers = selectedPapers; - } - - public String getCurrentUser() { - return userService.getCurrentUser().getUserAbbreviate(); - } -} diff --git a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java index b6dd11d..f1baad1 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java @@ -1,5 +1,6 @@ package ru.ulstu.paper.controller; +import jakarta.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -16,7 +17,6 @@ import ru.ulstu.paper.model.PaperListDto; import ru.ulstu.paper.model.ReferenceDto; import ru.ulstu.paper.service.PaperService; -import javax.validation.Valid; import java.io.IOException; import java.util.List; diff --git a/src/main/java/ru/ulstu/paper/controller/PaperStatusConverter.java b/src/main/java/ru/ulstu/paper/controller/PaperStatusConverter.java deleted file mode 100644 index 8f809b0..0000000 --- a/src/main/java/ru/ulstu/paper/controller/PaperStatusConverter.java +++ /dev/null @@ -1,21 +0,0 @@ -package ru.ulstu.paper.controller; - -import ru.ulstu.paper.model.Paper; - -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; -import javax.faces.convert.Converter; -import javax.faces.convert.FacesConverter; - -@FacesConverter(value = "paperStatusConverter") -public class PaperStatusConverter implements Converter { - @Override - public Object getAsObject(FacesContext context, UIComponent component, String value) { - return Paper.PaperStatus.valueOf(value); - } - - @Override - public String getAsString(FacesContext context, UIComponent component, Object value) { - return value == null ? "" : ((Paper.PaperStatus) value).name(); - } -} diff --git a/src/main/java/ru/ulstu/paper/controller/PaperTypeConverter.java b/src/main/java/ru/ulstu/paper/controller/PaperTypeConverter.java deleted file mode 100644 index b06fb38..0000000 --- a/src/main/java/ru/ulstu/paper/controller/PaperTypeConverter.java +++ /dev/null @@ -1,21 +0,0 @@ -package ru.ulstu.paper.controller; - -import ru.ulstu.paper.model.Paper; - -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; -import javax.faces.convert.Converter; -import javax.faces.convert.FacesConverter; - -@FacesConverter(value = "paperTypeConverter") -public class PaperTypeConverter implements Converter { - @Override - public Object getAsObject(FacesContext context, UIComponent component, String value) { - return Paper.PaperType.valueOf(value); - } - - @Override - public String getAsString(FacesContext context, UIComponent component, Object value) { - return ((Paper.PaperType) value).name(); - } -} diff --git a/src/main/java/ru/ulstu/paper/controller/PaperView.java b/src/main/java/ru/ulstu/paper/controller/PaperView.java deleted file mode 100644 index f37ae79..0000000 --- a/src/main/java/ru/ulstu/paper/controller/PaperView.java +++ /dev/null @@ -1,120 +0,0 @@ -package ru.ulstu.paper.controller; - -import org.apache.commons.lang3.StringUtils; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.conference.service.ConferenceService; -import ru.ulstu.core.navigation.Page; -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.service.PaperService; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.io.Serializable; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - -@Named -@ViewScoped -public class PaperView implements Serializable { - private static final int MAX_CONFERENCE_TITLE_LENGTH = 20; - - @Inject - private PaperService paperService; - - @Inject - private DeadlineService deadlineService; - - @Inject - private UserService userService; - - @Inject - private ConferenceService conferenceService; - - private Paper paper; - - private Date newDeadlineDate; - - private String newDeadlineDescription; - - @PostConstruct - public void init() { - paper = paperService.findPaperById(Integer.valueOf(FacesUtil.getRequestParams().get("id"))); - newDeadlineDescription = ""; - newDeadlineDate = new Date(); - FacesUtil.showInfoMessage("Статья открыта", ""); - } - - public Paper getPaper() { - return paper; - } - - public void setPaper(Paper paper) { - this.paper = paper; - } - - public List getPaperStatuses() { - return Arrays.asList(Paper.PaperStatus.values()); - } - - public List getPaperTypes() { - return Arrays.asList(Paper.PaperType.values()); - } - - public List getAuthors() { - return userService.findAll(); - } - - public String save() { - paperService.save(paper); - FacesUtil.showInfoMessage("Статья сохранена", ""); - return Page.PAPER_LIST + "?faces-redirect=true"; - } - - public Date getNewDeadlineDate() { - return newDeadlineDate; - } - - public void setNewDeadlineDate(Date newDeadlineDate) { - this.newDeadlineDate = newDeadlineDate; - } - - public String getNewDeadlineDescription() { - return newDeadlineDescription; - } - - public void setNewDeadlineDescription(String newDeadlineDescription) { - this.newDeadlineDescription = newDeadlineDescription; - } - - public void deleteDeadline(Deadline deadline) { - paper.getDeadlines().remove(deadline); - } - - public void addDeadline() { - paper.getDeadlines().add(deadlineService.create(newDeadlineDescription, newDeadlineDate)); - newDeadlineDescription = ""; - newDeadlineDate = new Date(); - } - - public List getConferences() { - return conferenceService.findAllActive(); - } - - public String getConferenceTitle(Conference conference) { - if (conference == null) { - return null; - } - if (conference.getTitle().length() > MAX_CONFERENCE_TITLE_LENGTH) { - return StringUtils.truncate(conference.getTitle(), MAX_CONFERENCE_TITLE_LENGTH) + "..."; - } - return conference.getTitle(); - } -} diff --git a/src/main/java/ru/ulstu/paper/controller/PapersView.java b/src/main/java/ru/ulstu/paper/controller/PapersView.java deleted file mode 100644 index ae5f7e9..0000000 --- a/src/main/java/ru/ulstu/paper/controller/PapersView.java +++ /dev/null @@ -1,68 +0,0 @@ -package ru.ulstu.paper.controller; - -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.service.PaperService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -@Named -@ViewScoped -public class PapersView { - @Inject - private PaperService paperService; - - private List papers; - - private List selectedPapers = new ArrayList<>(); - - private String newPaperTitle; - - @PostConstruct - public void init() { - papers = paperService.findAll(); - } - - public void create() { - paperService.createByTitle(newPaperTitle); - FacesUtil.showInfoMessage("Статья создана", newPaperTitle); - newPaperTitle = ""; - papers = paperService.findAll(); - } - - public void deleteSelected() { - paperService.delete(selectedPapers); - papers = paperService.findAll(); - FacesUtil.showInfoMessage("Было удалено статей: " + selectedPapers.size(), ""); - } - - public List getPaperStatuses() { - return Arrays.asList(Paper.PaperStatus.values()); - } - - public List getPapers() { - return papers; - } - - public String getNewPaperTitle() { - return newPaperTitle; - } - - public void setNewPaperTitle(String newPaperTitle) { - this.newPaperTitle = newPaperTitle; - } - - public List getSelectedPapers() { - return selectedPapers; - } - - public void setSelectedPapers(List selectedPapers) { - this.selectedPapers = selectedPapers; - } -} diff --git a/src/main/java/ru/ulstu/paper/model/Paper.java b/src/main/java/ru/ulstu/paper/model/Paper.java index bc86bf8..74141f9 100644 --- a/src/main/java/ru/ulstu/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/paper/model/Paper.java @@ -1,5 +1,20 @@ package ru.ulstu.paper.model; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OrderBy; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.NotBlank; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import ru.ulstu.conference.model.Conference; @@ -12,21 +27,6 @@ import ru.ulstu.grant.model.Grant; import ru.ulstu.timeline.model.Event; import ru.ulstu.user.model.User; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.OrderBy; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.NotBlank; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; @@ -100,7 +100,7 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @Temporal(TemporalType.TIMESTAMP) private Date updateDate = new Date(); - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "paper_id", unique = true) @Fetch(FetchMode.SUBSELECT) @OrderBy("date") @@ -123,10 +123,6 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @ManyToMany(fetch = FetchType.EAGER) private Set authors = new HashSet<>(); - - @Column(name = "latex_text") - private String latexText; - @ManyToOne() @JoinColumn(name = "conference_id") private Conference conference; @@ -245,14 +241,6 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { this.url = url; } - public String getLatexText() { - return latexText; - } - - public void setLatexText(String latexText) { - this.latexText = latexText; - } - public Conference getConference() { return conference; } @@ -322,13 +310,12 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { Objects.equals(events, paper.events) && Objects.equals(files, paper.files) && Objects.equals(authors, paper.authors) && - Objects.equals(latexText, paper.latexText) && Objects.equals(conference, paper.conference) && Objects.equals(grants, paper.grants); } @Override public int hashCode() { - return Objects.hash(super.hashCode(), title, status, type, createDate, updateDate, deadlines, comment, url, locked, events, files, authors, latexText, conference, grants); + return Objects.hash(super.hashCode(), title, status, type, createDate, updateDate, deadlines, comment, url, locked, events, files, authors, conference, grants); } } diff --git a/src/main/java/ru/ulstu/paper/model/PaperDto.java b/src/main/java/ru/ulstu/paper/model/PaperDto.java index cc44af5..96d2e75 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperDto.java @@ -2,13 +2,14 @@ package ru.ulstu.paper.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Size; import org.apache.commons.lang3.StringUtils; +import ru.ulstu.core.model.BaseEntity; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.file.model.FileDataDto; import ru.ulstu.user.model.UserDto; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -89,10 +90,9 @@ public class PaperDto { this.deadlines = paper.getDeadlines(); this.comment = paper.getComment(); this.url = paper.getUrl(); - this.latexText = paper.getLatexText(); this.locked = paper.getLocked(); this.files = convert(paper.getFiles(), FileDataDto::new); - this.authorIds = convert(paper.getAuthors(), user -> user.getId()); + this.authorIds = convert(paper.getAuthors(), BaseEntity::getId); this.authors = convert(paper.getAuthors(), UserDto::new); this.references = convert(paper.getReferences(), ReferenceDto::new); } @@ -212,7 +212,7 @@ public class PaperDto { public String getAuthorsString() { return StringUtils.abbreviate(authors .stream() - .map(author -> author.getLastName()) + .map(UserDto::getLastName) .collect(Collectors.joining(", ")), MAX_AUTHORS_LENGTH); } diff --git a/src/main/java/ru/ulstu/paper/model/Reference.java b/src/main/java/ru/ulstu/paper/model/Reference.java index 289cdc1..e690758 100644 --- a/src/main/java/ru/ulstu/paper/model/Reference.java +++ b/src/main/java/ru/ulstu/paper/model/Reference.java @@ -1,12 +1,11 @@ package ru.ulstu.paper.model; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; - @Entity public class Reference extends BaseEntity { diff --git a/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java b/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java index 5628c46..a4af8da 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java @@ -1,6 +1,5 @@ package ru.ulstu.paper.service; -import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; import ru.ulstu.core.util.DateUtils; import ru.ulstu.paper.model.Paper; @@ -46,22 +45,22 @@ public class PaperNotificationService { } private void sendMessageDeadline(Paper paper) { - Map variables = ImmutableMap.of("paper", paper); + Map variables = Map.of("paper", paper); sendForAllAuhtors(variables, paper, TEMPLATE_DEADLINE, TITLE_DEADLINE); } public void sendCreateNotification(Paper paper) { - Map variables = ImmutableMap.of("paper", paper); + Map variables = Map.of("paper", paper); sendForAllAuhtors(variables, paper, TEMPLATE_CREATE, TITLE_CREATE); } public void statusChangeNotification(Paper paper, Paper.PaperStatus oldStatus) { - Map variables = ImmutableMap.of("paper", paper, "oldStatus", oldStatus); + Map variables = Map.of("paper", paper, "oldStatus", oldStatus); sendForAllAuhtors(variables, paper, TEMPLATE_STATUS_CHANGED, TITLE_STATUS_CHANGED); } public void sendFailedNotification(Paper paper, Paper.PaperStatus oldStatus) { - Map variables = ImmutableMap.of("paper", paper, "oldStatus", oldStatus); + Map variables = Map.of("paper", paper, "oldStatus", oldStatus); sendForAllAuhtors(variables, paper, TEMPLATE_FAILED, TITLE_FAILED); } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 4f2be86..9e02113 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -81,9 +81,7 @@ public class PaperService { } public List findAllDto() { - List papers = convert(findAll(), PaperDto::new); - papers.forEach(paperDto -> paperDto.setTitle(StringUtils.abbreviate(paperDto.getTitle(), MAX_DISPLAY_SIZE))); - return papers; + return convert(findAll(), PaperDto::new); } public List findAllActive() { @@ -125,7 +123,6 @@ public class PaperService { private Paper copyFromDto(Paper paper, PaperDto paperDto) throws IOException { paper.setComment(paperDto.getComment()); paper.setUrl(paperDto.getUrl()); - paper.setLatexText(paperDto.getLatexText()); paper.setCreateDate(paper.getCreateDate() == null ? new Date() : paper.getCreateDate()); paper.setLocked(paperDto.getLocked()); paper.setStatus(paperDto.getStatus() == null ? DRAFT : paperDto.getStatus()); diff --git a/src/main/java/ru/ulstu/ping/model/Ping.java b/src/main/java/ru/ulstu/ping/model/Ping.java index 7118c22..5270720 100644 --- a/src/main/java/ru/ulstu/ping/model/Ping.java +++ b/src/main/java/ru/ulstu/ping/model/Ping.java @@ -1,8 +1,17 @@ package ru.ulstu.ping.model; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorType; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import org.hibernate.annotations.Any; -import org.hibernate.annotations.AnyMetaDef; -import org.hibernate.annotations.MetaValue; +import org.hibernate.annotations.AnyDiscriminator; +import org.hibernate.annotations.AnyDiscriminatorValue; +import org.hibernate.annotations.AnyKeyJavaClass; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.conference.model.Conference; import ru.ulstu.core.model.BaseEntity; @@ -12,14 +21,6 @@ import ru.ulstu.paper.model.Paper; import ru.ulstu.project.model.Project; import ru.ulstu.user.model.User; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; import java.util.Date; @Entity @@ -36,20 +37,15 @@ public class Ping extends BaseEntity { @Column(name = "activity_type", insertable = false, updatable = false) private String activityType; - @Any( - metaColumn = @Column(name = "activity_type"), - fetch = FetchType.LAZY - ) - @AnyMetaDef( - idType = "integer", metaType = "string", - metaValues = { - @MetaValue(targetEntity = Conference.class, value = "CONFERENCE"), - @MetaValue(targetEntity = Paper.class, value = "PAPER"), - @MetaValue(targetEntity = Project.class, value = "PROJECT"), - @MetaValue(targetEntity = Grant.class, value = "GRANT") - } - ) + @Any + @AnyDiscriminator(DiscriminatorType.STRING) + @AnyKeyJavaClass(Integer.class) @JoinColumn(name = "activity_id") + @Column(name = "activity_type") + @AnyDiscriminatorValue(entity = Conference.class, discriminator = "CONFERENCE") + @AnyDiscriminatorValue(entity = Paper.class, discriminator = "PAPER") + @AnyDiscriminatorValue(entity = Project.class, discriminator = "PROJECT") + @AnyDiscriminatorValue(entity = Grant.class, discriminator = "GRANT") private UserActivity activity; public Ping() { diff --git a/src/main/java/ru/ulstu/ping/service/PingScheduler.java b/src/main/java/ru/ulstu/ping/service/PingScheduler.java index ca8724d..a0fc32f 100644 --- a/src/main/java/ru/ulstu/ping/service/PingScheduler.java +++ b/src/main/java/ru/ulstu/ping/service/PingScheduler.java @@ -1,6 +1,5 @@ package ru.ulstu.ping.service; -import com.google.common.collect.ImmutableMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; @@ -15,6 +14,7 @@ import ru.ulstu.user.service.MailService; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Set; @Service @@ -51,7 +51,7 @@ public class PingScheduler { } for (PingInfo pingInfo : pingInfos) { - mailService.sendEmailFromTemplate(ImmutableMap.of("pings", pingInfo.getPings()), + mailService.sendEmailFromTemplate(Map.of("pings", pingInfo.getPings()), pingInfo.getUser(), "pingsInfoWeekEmail", PING_MAIL_SUBJECT); } } diff --git a/src/main/java/ru/ulstu/ping/service/PingService.java b/src/main/java/ru/ulstu/ping/service/PingService.java index 99ca26f..7e9ca90 100644 --- a/src/main/java/ru/ulstu/ping/service/PingService.java +++ b/src/main/java/ru/ulstu/ping/service/PingService.java @@ -28,7 +28,7 @@ public class PingService { @Transactional public Ping addPing(UserActivity activity) throws IOException { Ping newPing = new Ping(new Date(), userService.getCurrentUser()); - newPing.setActivity(activity); + //newPing.setActivity(activity); return pingRepository.save(newPing); } diff --git a/src/main/java/ru/ulstu/project/controller/ProjectController.java b/src/main/java/ru/ulstu/project/controller/ProjectController.java index 09438fd..71170c9 100644 --- a/src/main/java/ru/ulstu/project/controller/ProjectController.java +++ b/src/main/java/ru/ulstu/project/controller/ProjectController.java @@ -1,5 +1,7 @@ package ru.ulstu.project.controller; +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; @@ -16,9 +18,7 @@ import ru.ulstu.project.model.Project; import ru.ulstu.project.model.ProjectDto; import ru.ulstu.project.service.ProjectService; import ru.ulstu.user.model.User; -import springfox.documentation.annotations.ApiIgnore; -import javax.validation.Valid; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; @@ -27,7 +27,7 @@ import static org.springframework.util.StringUtils.isEmpty; @Controller() @RequestMapping(value = "/projects") -@ApiIgnore +@Hidden public class ProjectController { private final ProjectService projectService; diff --git a/src/main/java/ru/ulstu/project/model/Project.java b/src/main/java/ru/ulstu/project/model/Project.java index 0ddb982..d2d6086 100644 --- a/src/main/java/ru/ulstu/project/model/Project.java +++ b/src/main/java/ru/ulstu/project/model/Project.java @@ -1,5 +1,18 @@ package ru.ulstu.project.model; +import jakarta.persistence.CascadeType; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import ru.ulstu.core.model.BaseEntity; @@ -11,19 +24,6 @@ import ru.ulstu.grant.model.Grant; import ru.ulstu.timeline.model.Event; import ru.ulstu.user.model.User; -import javax.persistence.CascadeType; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; diff --git a/src/main/java/ru/ulstu/project/model/ProjectDto.java b/src/main/java/ru/ulstu/project/model/ProjectDto.java index d5a8345..f6884cc 100644 --- a/src/main/java/ru/ulstu/project/model/ProjectDto.java +++ b/src/main/java/ru/ulstu/project/model/ProjectDto.java @@ -2,6 +2,7 @@ package ru.ulstu.project.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotEmpty; import org.thymeleaf.util.StringUtils; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.file.model.FileDataDto; @@ -9,7 +10,6 @@ import ru.ulstu.grant.model.GrantDto; import ru.ulstu.user.model.User; import ru.ulstu.user.model.UserDto; -import javax.validation.constraints.NotEmpty; import java.util.ArrayList; import java.util.HashSet; import java.util.List; diff --git a/src/main/java/ru/ulstu/students/controller/TaskController.java b/src/main/java/ru/ulstu/students/controller/TaskController.java index 5d0f4e8..ce5bcad 100644 --- a/src/main/java/ru/ulstu/students/controller/TaskController.java +++ b/src/main/java/ru/ulstu/students/controller/TaskController.java @@ -1,5 +1,7 @@ package ru.ulstu.students.controller; +import io.swagger.v3.oas.annotations.Hidden; +import jakarta.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; @@ -15,9 +17,7 @@ import ru.ulstu.students.model.TaskDto; import ru.ulstu.students.model.TaskFilterDto; import ru.ulstu.students.service.TaskService; import ru.ulstu.tags.model.Tag; -import springfox.documentation.annotations.ApiIgnore; -import javax.validation.Valid; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; @@ -29,7 +29,7 @@ import static ru.ulstu.students.controller.Navigation.TASK_PAGE; @Controller() @RequestMapping(value = "/students") -@ApiIgnore +@Hidden public class TaskController { private final TaskService taskService; diff --git a/src/main/java/ru/ulstu/students/model/Scheduler.java b/src/main/java/ru/ulstu/students/model/Scheduler.java index 67005b1..33c9365 100644 --- a/src/main/java/ru/ulstu/students/model/Scheduler.java +++ b/src/main/java/ru/ulstu/students/model/Scheduler.java @@ -1,14 +1,14 @@ package ru.ulstu.students.model; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.OneToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; import java.util.Date; @Entity diff --git a/src/main/java/ru/ulstu/students/model/Task.java b/src/main/java/ru/ulstu/students/model/Task.java index 4da0aa2..ddc6480 100644 --- a/src/main/java/ru/ulstu/students/model/Task.java +++ b/src/main/java/ru/ulstu/students/model/Task.java @@ -1,5 +1,19 @@ package ru.ulstu.students.model; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OrderBy; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.NotBlank; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import ru.ulstu.core.model.BaseEntity; @@ -9,20 +23,6 @@ import ru.ulstu.tags.model.Tag; import ru.ulstu.timeline.model.Event; import ru.ulstu.user.model.User; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.OneToMany; -import javax.persistence.OrderBy; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.NotBlank; import java.util.ArrayList; import java.util.Collections; import java.util.Date; diff --git a/src/main/java/ru/ulstu/students/model/TaskDto.java b/src/main/java/ru/ulstu/students/model/TaskDto.java index 24ad204..120ac31 100644 --- a/src/main/java/ru/ulstu/students/model/TaskDto.java +++ b/src/main/java/ru/ulstu/students/model/TaskDto.java @@ -2,11 +2,11 @@ package ru.ulstu.students.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotEmpty; import org.apache.commons.lang3.StringUtils; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.tags.model.Tag; -import javax.validation.constraints.NotEmpty; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/students/repository/TaskRepository.java b/src/main/java/ru/ulstu/students/repository/TaskRepository.java index af277d1..0aedfb1 100644 --- a/src/main/java/ru/ulstu/students/repository/TaskRepository.java +++ b/src/main/java/ru/ulstu/students/repository/TaskRepository.java @@ -11,16 +11,16 @@ import java.util.List; public interface TaskRepository extends JpaRepository { - @Query("SELECT t FROM Task t WHERE (t.status = :status OR :status IS NULL) AND (:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY create_date DESC") + @Query("SELECT t FROM Task t WHERE (t.status = :status OR :status IS NULL) AND (:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY t.createDate DESC") List filterNew(@Param("status") Task.TaskStatus status, @Param("tag") Tag tag); - @Query("SELECT t FROM Task t WHERE (t.status = :status OR :status IS NULL) AND (:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY create_date ASC") + @Query("SELECT t FROM Task t WHERE (t.status = :status OR :status IS NULL) AND (:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY t.createDate ASC") List filterOld(@Param("status") Task.TaskStatus status, @Param("tag") Tag tag); - @Query("SELECT t FROM Task t WHERE(:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY create_date DESC") + @Query("SELECT t FROM Task t WHERE(:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY t.createDate DESC") List findByTag(@Param("tag") Tag tag); - @Query("SELECT t FROM Task t WHERE (t.createDate >= :date) ORDER BY create_date DESC") + @Query("SELECT t FROM Task t WHERE (t.createDate >= :date) ORDER BY t.createDate DESC") List findAllYear(@Param("date") Date date); diff --git a/src/main/java/ru/ulstu/students/service/TaskService.java b/src/main/java/ru/ulstu/students/service/TaskService.java index c3b4f3a..4dbee44 100644 --- a/src/main/java/ru/ulstu/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/students/service/TaskService.java @@ -55,7 +55,7 @@ public class TaskService { } public List findAll() { - return taskRepository.findAll(new Sort(Sort.Direction.DESC, "createDate")); + return taskRepository.findAll(Sort.by(Sort.Direction.DESC, "createDate")); } public List findAllDto() { diff --git a/src/main/java/ru/ulstu/tags/model/Tag.java b/src/main/java/ru/ulstu/tags/model/Tag.java index 023cfb4..82163e9 100644 --- a/src/main/java/ru/ulstu/tags/model/Tag.java +++ b/src/main/java/ru/ulstu/tags/model/Tag.java @@ -2,13 +2,13 @@ package ru.ulstu.tags.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Size; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Table; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.Size; import java.util.Objects; @Entity diff --git a/src/main/java/ru/ulstu/timeline/controller/EventController.java b/src/main/java/ru/ulstu/timeline/controller/EventController.java index 2a9245c..d0ba1b1 100644 --- a/src/main/java/ru/ulstu/timeline/controller/EventController.java +++ b/src/main/java/ru/ulstu/timeline/controller/EventController.java @@ -1,5 +1,6 @@ package ru.ulstu.timeline.controller; +import jakarta.validation.Valid; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -13,7 +14,6 @@ import ru.ulstu.core.model.response.Response; import ru.ulstu.timeline.model.EventDto; import ru.ulstu.timeline.service.EventService; -import javax.validation.Valid; import java.util.List; @RestController diff --git a/src/main/java/ru/ulstu/timeline/model/Event.java b/src/main/java/ru/ulstu/timeline/model/Event.java index bf69a70..81946c2 100644 --- a/src/main/java/ru/ulstu/timeline/model/Event.java +++ b/src/main/java/ru/ulstu/timeline/model/Event.java @@ -1,5 +1,19 @@ package ru.ulstu.timeline.model; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import ru.ulstu.conference.model.Conference; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.grant.model.Grant; @@ -8,20 +22,6 @@ import ru.ulstu.project.model.Project; import ru.ulstu.students.model.Task; import ru.ulstu.user.model.User; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/timeline/model/EventDto.java b/src/main/java/ru/ulstu/timeline/model/EventDto.java index 7c3a836..cf2850f 100644 --- a/src/main/java/ru/ulstu/timeline/model/EventDto.java +++ b/src/main/java/ru/ulstu/timeline/model/EventDto.java @@ -2,6 +2,8 @@ package ru.ulstu.timeline.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import ru.ulstu.conference.model.ConferenceDto; import ru.ulstu.grant.model.GrantDto; import ru.ulstu.paper.model.PaperDto; @@ -9,8 +11,6 @@ import ru.ulstu.project.model.ProjectDto; import ru.ulstu.students.model.TaskDto; import ru.ulstu.user.model.UserDto; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/timeline/model/Timeline.java b/src/main/java/ru/ulstu/timeline/model/Timeline.java index 06e04bc..17bad3a 100644 --- a/src/main/java/ru/ulstu/timeline/model/Timeline.java +++ b/src/main/java/ru/ulstu/timeline/model/Timeline.java @@ -1,11 +1,11 @@ package ru.ulstu.timeline.model; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ru/ulstu/timeline/service/EventScheduler.java b/src/main/java/ru/ulstu/timeline/service/EventScheduler.java index 7899aca..f44565c 100644 --- a/src/main/java/ru/ulstu/timeline/service/EventScheduler.java +++ b/src/main/java/ru/ulstu/timeline/service/EventScheduler.java @@ -1,6 +1,5 @@ package ru.ulstu.timeline.service; -import com.google.common.collect.ImmutableMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; @@ -31,7 +30,7 @@ public class EventScheduler { public void sendNotifications() { List events = eventService.findByCurrentDate(); events.forEach(event -> { - Map variables = ImmutableMap.of("description", event.getDescription()); + Map variables = Map.of("description", event.getDescription()); event.getRecipients() .forEach(recipient -> mailService.sendEmailFromTemplate(variables, recipient, "eventNotification", event.getTitle())); if (event.getPeriod() == null) { diff --git a/src/main/java/ru/ulstu/user/component/IpAddressResolver.java b/src/main/java/ru/ulstu/user/component/IpAddressResolver.java index ede78de..e2dd525 100644 --- a/src/main/java/ru/ulstu/user/component/IpAddressResolver.java +++ b/src/main/java/ru/ulstu/user/component/IpAddressResolver.java @@ -1,9 +1,8 @@ package ru.ulstu.user.component; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.util.StringUtils; -import javax.servlet.http.HttpServletRequest; - final class IpAddressResolver { private static final String CLIENT_IP_HEADER = "Client-IP"; private static final String FORWARDED_FOR_HEADER = "X-Forwarded-For"; diff --git a/src/main/java/ru/ulstu/user/component/UserSessionLoginHandler.java b/src/main/java/ru/ulstu/user/component/UserSessionLoginHandler.java index 75187dc..2c61dc8 100644 --- a/src/main/java/ru/ulstu/user/component/UserSessionLoginHandler.java +++ b/src/main/java/ru/ulstu/user/component/UserSessionLoginHandler.java @@ -1,5 +1,9 @@ package ru.ulstu.user.component; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; @@ -9,10 +13,6 @@ import org.springframework.stereotype.Component; import ru.ulstu.configuration.Constants; import ru.ulstu.user.service.UserSessionService; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import java.io.IOException; @Component diff --git a/src/main/java/ru/ulstu/user/component/UserSessionLogoutHandler.java b/src/main/java/ru/ulstu/user/component/UserSessionLogoutHandler.java index 606cbcd..625cf96 100644 --- a/src/main/java/ru/ulstu/user/component/UserSessionLogoutHandler.java +++ b/src/main/java/ru/ulstu/user/component/UserSessionLogoutHandler.java @@ -1,5 +1,9 @@ package ru.ulstu.user.component; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; @@ -9,10 +13,6 @@ import org.springframework.stereotype.Component; import ru.ulstu.configuration.Constants; import ru.ulstu.user.service.UserSessionService; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import java.io.IOException; @Component diff --git a/src/main/java/ru/ulstu/user/controller/UserController.java b/src/main/java/ru/ulstu/user/controller/UserController.java index 3e653fb..0d1a0af 100644 --- a/src/main/java/ru/ulstu/user/controller/UserController.java +++ b/src/main/java/ru/ulstu/user/controller/UserController.java @@ -1,5 +1,8 @@ package ru.ulstu.user.controller; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import jakarta.validation.Valid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.access.annotation.Secured; @@ -29,9 +32,6 @@ import ru.ulstu.user.model.UserSessionListDto; import ru.ulstu.user.service.UserService; import ru.ulstu.user.service.UserSessionService; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; -import javax.validation.Valid; import java.util.Map; import static ru.ulstu.user.controller.UserController.URL; diff --git a/src/main/java/ru/ulstu/user/controller/UserConverter.java b/src/main/java/ru/ulstu/user/controller/UserConverter.java deleted file mode 100644 index 61997f4..0000000 --- a/src/main/java/ru/ulstu/user/controller/UserConverter.java +++ /dev/null @@ -1,26 +0,0 @@ -package ru.ulstu.user.controller; - -import org.springframework.stereotype.Service; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; -import javax.faces.convert.Converter; -import javax.inject.Inject; - -@Service -public class UserConverter implements Converter { - @Inject - private UserService userService; - - @Override - public Object getAsObject(FacesContext context, UIComponent component, String value) { - return value == null ? null : userService.findById(Integer.valueOf(value)); - } - - @Override - public String getAsString(FacesContext context, UIComponent component, Object value) { - return ((User) value).getId().toString(); - } -} diff --git a/src/main/java/ru/ulstu/user/controller/UserDegreeConverter.java b/src/main/java/ru/ulstu/user/controller/UserDegreeConverter.java deleted file mode 100644 index db8ae77..0000000 --- a/src/main/java/ru/ulstu/user/controller/UserDegreeConverter.java +++ /dev/null @@ -1,21 +0,0 @@ -package ru.ulstu.user.controller; - -import ru.ulstu.user.model.User; - -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; -import javax.faces.convert.Converter; -import javax.faces.convert.FacesConverter; - -@FacesConverter(value = "userDegreeConverter") -public class UserDegreeConverter implements Converter { - @Override - public Object getAsObject(FacesContext context, UIComponent component, String value) { - return User.UserDegree.valueOf(value); - } - - @Override - public String getAsString(FacesContext context, UIComponent component, Object value) { - return ((User.UserDegree) value).name(); - } -} diff --git a/src/main/java/ru/ulstu/user/controller/UserMvcController.java b/src/main/java/ru/ulstu/user/controller/UserMvcController.java index 1207219..e0ee38e 100644 --- a/src/main/java/ru/ulstu/user/controller/UserMvcController.java +++ b/src/main/java/ru/ulstu/user/controller/UserMvcController.java @@ -1,6 +1,7 @@ package ru.ulstu.user.controller; -import com.google.common.collect.ImmutableMap; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; @@ -17,8 +18,6 @@ import ru.ulstu.user.model.UserListDto; import ru.ulstu.user.service.UserService; import ru.ulstu.user.service.UserSessionService; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import java.util.List; import java.util.Map; @@ -65,7 +64,7 @@ public class UserMvcController extends OdinController { @ModelAttribute("allActivities") public Map getAllActivites() { - return ImmutableMap.of("PAPER", "Статьи", + return Map.of("PAPER", "Статьи", "GRANT", "Гранты", "PROJECT", "Проекты", "CONFERENCE", "Конференции"); diff --git a/src/main/java/ru/ulstu/user/controller/UserView.java b/src/main/java/ru/ulstu/user/controller/UserView.java deleted file mode 100644 index 2a9bf31..0000000 --- a/src/main/java/ru/ulstu/user/controller/UserView.java +++ /dev/null @@ -1,46 +0,0 @@ -package ru.ulstu.user.controller; - -import ru.ulstu.core.navigation.Page; -import ru.ulstu.core.util.FacesUtil; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.io.Serializable; -import java.util.Arrays; -import java.util.List; - -@Named -@ViewScoped -public class UserView implements Serializable { - @Inject - private UserService userService; - - private User user; - - @PostConstruct - public void init() { - user = userService.findById(Integer.valueOf(FacesUtil.getRequestParams().get("id"))); - } - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } - - public List getDegrees() { - return Arrays.asList(User.UserDegree.values()); - } - - public String save() { - userService.updateUserInformation(user); - FacesUtil.showInfoMessage("Данные пользователя сохранены", user.getUserAbbreviate()); - return Page.USER_LIST + "?faces-redirect=true"; - } -} diff --git a/src/main/java/ru/ulstu/user/controller/UsersView.java b/src/main/java/ru/ulstu/user/controller/UsersView.java deleted file mode 100644 index 31320c9..0000000 --- a/src/main/java/ru/ulstu/user/controller/UsersView.java +++ /dev/null @@ -1,29 +0,0 @@ -package ru.ulstu.user.controller; - -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import javax.annotation.PostConstruct; -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.io.Serializable; -import java.util.List; - -@Named -@ViewScoped -public class UsersView implements Serializable { - @Inject - private UserService userService; - - private List users; - - @PostConstruct - public void init() { - users = userService.findAll(); - } - - public List getUsers() { - return users; - } -} diff --git a/src/main/java/ru/ulstu/user/model/User.java b/src/main/java/ru/ulstu/user/model/User.java index e4461d5..4ab52eb 100644 --- a/src/main/java/ru/ulstu/user/model/User.java +++ b/src/main/java/ru/ulstu/user/model/User.java @@ -1,24 +1,24 @@ package ru.ulstu.user.model; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; import org.hibernate.annotations.BatchSize; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.Email; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Pattern; -import javax.validation.constraints.Size; import java.util.Collection; import java.util.Date; import java.util.HashSet; @@ -28,7 +28,6 @@ import java.util.Set; @Table(name = "users") public class User extends BaseEntity { private final static String USER_ABBREVIATE_TEMPLATE = "%s %s %s"; - @NotNull @Pattern(regexp = Constants.LOGIN_REGEX) @Size(min = 1, max = 50) @@ -39,27 +38,22 @@ public class User extends BaseEntity { @Size(min = 60, max = 60) @Column(name = "password_hash", length = 60, nullable = false) private String password; - @NotNull @Size(max = 50) @Column(name = "first_name", length = 50, nullable = false) private String firstName; - @NotNull @Size(max = 50) @Column(name = "last_name", length = 50, nullable = false) private String lastName; - @Size(max = 50) @Column(name = "patronymic", length = 50) private String patronymic; - @NotNull @Email @Size(min = 5, max = 100) @Column(length = 100, nullable = false, unique = true) private String email; - @NotNull @Column(nullable = false) private boolean activated; @@ -96,6 +90,12 @@ public class User extends BaseEntity { @JoinColumn(name = "blocker_id") private User blocker; + private String orcId; + + private String scopusId; + + private String elibraryId; + public enum UserDegree { CANDIDATE("Кандидат технических наук"), DOCTOR("Доктор технических наук"); @@ -242,6 +242,30 @@ public class User extends BaseEntity { this.blocker = blocker; } + public String getOrcId() { + return orcId; + } + + public void setOrcId(String orcId) { + this.orcId = orcId; + } + + public String getScopusId() { + return scopusId; + } + + public void setScopusId(String scopusId) { + this.scopusId = scopusId; + } + + public String getElibraryId() { + return elibraryId; + } + + public void setElibraryId(String elibraryId) { + this.elibraryId = elibraryId; + } + public String getUserAbbreviate() { return String.format(USER_ABBREVIATE_TEMPLATE, lastName == null ? "" : lastName, diff --git a/src/main/java/ru/ulstu/user/model/UserDto.java b/src/main/java/ru/ulstu/user/model/UserDto.java index a2f33f6..076f677 100644 --- a/src/main/java/ru/ulstu/user/model/UserDto.java +++ b/src/main/java/ru/ulstu/user/model/UserDto.java @@ -1,6 +1,10 @@ package ru.ulstu.user.model; import com.fasterxml.jackson.annotation.JsonIgnore; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; import org.springframework.util.StringUtils; import ru.ulstu.configuration.Constants; import ru.ulstu.odin.model.OdinDto; @@ -10,10 +14,6 @@ import ru.ulstu.odin.model.annotation.OdinString; import ru.ulstu.odin.model.annotation.OdinVisible; import ru.ulstu.user.controller.UserController; -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Pattern; -import javax.validation.constraints.Size; import java.util.Collection; import java.util.Date; import java.util.LinkedHashSet; @@ -75,6 +75,12 @@ public class UserDto implements OdinDto { private User.UserDegree degree; + private String orcId; + + private String scopusId; + + private String elibraryId; + public UserDto() { activated = false; roles = new LinkedHashSet<>(); @@ -93,6 +99,9 @@ public class UserDto implements OdinDto { .collect(Collectors.toList())); this.birthDate = user.getBirthDate(); this.degree = user.getDegree(); + this.orcId = user.getOrcId(); + this.scopusId = user.getScopusId(); + this.elibraryId = user.getElibraryId(); } public Integer getId() { @@ -186,6 +195,30 @@ public class UserDto implements OdinDto { this.degree = degree; } + public String getOrcId() { + return orcId; + } + + public void setOrcId(String orcId) { + this.orcId = orcId; + } + + public String getScopusId() { + return scopusId; + } + + public void setScopusId(String scopusId) { + this.scopusId = scopusId; + } + + public String getElibraryId() { + return elibraryId; + } + + public void setElibraryId(String elibraryId) { + this.elibraryId = elibraryId; + } + @JsonIgnore public boolean isPasswordsValid() { if (StringUtils.isEmpty(password) || StringUtils.isEmpty(passwordConfirm)) { diff --git a/src/main/java/ru/ulstu/user/model/UserResetPasswordDto.java b/src/main/java/ru/ulstu/user/model/UserResetPasswordDto.java index 58e76ff..7d34433 100644 --- a/src/main/java/ru/ulstu/user/model/UserResetPasswordDto.java +++ b/src/main/java/ru/ulstu/user/model/UserResetPasswordDto.java @@ -1,9 +1,9 @@ package ru.ulstu.user.model; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Size; import ru.ulstu.configuration.Constants; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.Size; import java.util.Objects; public class UserResetPasswordDto { diff --git a/src/main/java/ru/ulstu/user/model/UserRole.java b/src/main/java/ru/ulstu/user/model/UserRole.java index dac996a..12faea4 100644 --- a/src/main/java/ru/ulstu/user/model/UserRole.java +++ b/src/main/java/ru/ulstu/user/model/UserRole.java @@ -1,11 +1,11 @@ package ru.ulstu.user.model; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; @Entity @Table(name = "user_roles") diff --git a/src/main/java/ru/ulstu/user/model/UserSession.java b/src/main/java/ru/ulstu/user/model/UserSession.java index 50fec65..f8d6949 100644 --- a/src/main/java/ru/ulstu/user/model/UserSession.java +++ b/src/main/java/ru/ulstu/user/model/UserSession.java @@ -1,15 +1,15 @@ package ru.ulstu.user.model; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.NotNull; import ru.ulstu.core.model.BaseEntity; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.NotNull; import java.util.Date; @Entity diff --git a/src/main/java/ru/ulstu/user/service/MailService.java b/src/main/java/ru/ulstu/user/service/MailService.java index 369b459..df114ab 100644 --- a/src/main/java/ru/ulstu/user/service/MailService.java +++ b/src/main/java/ru/ulstu/user/service/MailService.java @@ -1,5 +1,7 @@ package ru.ulstu.user.service; +import jakarta.mail.MessagingException; +import jakarta.mail.internet.MimeMessage; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,13 +12,11 @@ import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.thymeleaf.context.Context; -import org.thymeleaf.spring5.SpringTemplateEngine; +import org.thymeleaf.spring6.SpringTemplateEngine; import ru.ulstu.configuration.ApplicationProperties; import ru.ulstu.configuration.Constants; import ru.ulstu.user.model.User; -import javax.mail.MessagingException; -import javax.mail.internet.MimeMessage; import java.nio.charset.StandardCharsets; import java.util.Map; @@ -113,7 +113,7 @@ public class MailService { sendEmailFromTemplate(user, "activationEmail", Constants.MAIL_ACTIVATE); } - public void sendPasswordResetMail(User user) throws MessagingException, MailException { + public void sendPasswordResetMail(User user) throws MailException { sendEmailFromTemplate(user, "passwordResetEmail", Constants.MAIL_RESET); } diff --git a/src/main/java/ru/ulstu/user/service/UserService.java b/src/main/java/ru/ulstu/user/service/UserService.java index c032332..4a79149 100644 --- a/src/main/java/ru/ulstu/user/service/UserService.java +++ b/src/main/java/ru/ulstu/user/service/UserService.java @@ -1,6 +1,6 @@ package ru.ulstu.user.service; -import com.google.common.collect.ImmutableMap; +import jakarta.mail.MessagingException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Lazy; @@ -50,7 +50,6 @@ import ru.ulstu.utils.timetable.TimetableService; import ru.ulstu.utils.timetable.errors.TimetableClientException; import ru.ulstu.utils.timetable.model.Lesson; -import javax.mail.MessagingException; import java.text.ParseException; import java.util.ArrayList; import java.util.Collections; @@ -207,6 +206,9 @@ public class UserService implements UserDetailsService { user.setLogin(userDto.getLogin()); user.setFirstName(userDto.getFirstName()); user.setLastName(userDto.getLastName()); + user.setOrcId(userDto.getOrcId()); + user.setScopusId(userDto.getScopusId()); + user.setElibraryId(userDto.getElibraryId()); user.setEmail(userDto.getEmail()); if (userDto.isActivated() != user.getActivated()) { if (userDto.isActivated()) { @@ -246,6 +248,9 @@ public class UserService implements UserDetailsService { user.setLastName(updateUser.getLastName()); user.setEmail(updateUser.getEmail()); user.setLogin(updateUser.getLogin()); + user.setOrcId(updateUser.getOrcId()); + user.setScopusId(updateUser.getScopusId()); + user.setElibraryId(updateUser.getElibraryId()); user = updateUserInformation(user); log.debug("Updated Information for User: {}", user.getLogin()); return userMapper.userEntityToUserDto(user); @@ -278,7 +283,7 @@ public class UserService implements UserDetailsService { user = userRepository.save(user); try { mailService.sendPasswordResetMail(user); - } catch (MessagingException | MailException e) { + } catch (MailException e) { throw new UserSendingMailException(email); } log.debug("Created Reset Password Request for User: {}", user.getLogin()); @@ -376,7 +381,7 @@ public class UserService implements UserDetailsService { user.setActivated(true); userRepository.save(user); - Map variables = ImmutableMap.of("password", password, "email", email); + Map variables = Map.of("password", password, "email", email); try { mailService.sendInviteMail(variables, email); } catch (MessagingException | MailException e) { @@ -406,7 +411,7 @@ public class UserService implements UserDetailsService { userSessionService.isOnline(user)) ); } - return ImmutableMap.of("users", usersInfoNow, "error", err); + return Map.of("users", usersInfoNow, "error", err); } public Map getActivitiesPings(Integer userId, diff --git a/src/main/java/ru/ulstu/user/service/UserSessionService.java b/src/main/java/ru/ulstu/user/service/UserSessionService.java index 17a7f5b..d99aa40 100644 --- a/src/main/java/ru/ulstu/user/service/UserSessionService.java +++ b/src/main/java/ru/ulstu/user/service/UserSessionService.java @@ -33,7 +33,7 @@ public class UserSessionService { @Transactional(readOnly = true) public PageableItems getSessions(int offset, int count) { final Page page = userSessionRepository.findAll( - new OffsetablePageRequest(offset, count, new Sort(Sort.Direction.DESC, "loginTime"))); + new OffsetablePageRequest(offset, count, Sort.by(Sort.Direction.DESC, "loginTime"))); return new PageableItems<>(page.getTotalElements(), convert(page.getContent(), UserSessionListDto::new)); } diff --git a/src/main/resources/META-INF/resources/admin/user.xhtml b/src/main/resources/META-INF/resources/admin/user.xhtml deleted file mode 100644 index 0fcf312..0000000 --- a/src/main/resources/META-INF/resources/admin/user.xhtml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Редактирование пользователя - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/META-INF/resources/admin/users.xhtml b/src/main/resources/META-INF/resources/admin/users.xhtml deleted file mode 100644 index ba394a0..0000000 --- a/src/main/resources/META-INF/resources/admin/users.xhtml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - #{user.userAbbreviate} - - - - - - - - - - diff --git a/src/main/resources/META-INF/resources/basicTemplate.xhtml b/src/main/resources/META-INF/resources/basicTemplate.xhtml deleted file mode 100644 index 9c777cb..0000000 --- a/src/main/resources/META-INF/resources/basicTemplate.xhtml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - <ui:insert name="header">NG-Tracker</ui:insert> - - - - - - - - - -
-
-
- - - - - - - - - - - - - - - - - - - - -
- - Content -
-
-
-
-
- diff --git a/src/main/resources/META-INF/resources/conference/conference.xhtml b/src/main/resources/META-INF/resources/conference/conference.xhtml deleted file mode 100644 index 8ac4630..0000000 --- a/src/main/resources/META-INF/resources/conference/conference.xhtml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - Редактирование конференции - - - - -
-
-
- -
-
- - -
- -
- -
-
- - -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
- - - - - - - - -
-
- -
-
-
-
- -
- -
-
- -
-
- - - -
-
-
- -
-
- -
-
- - - -
-
-
-
- -
- -
-
- -
-
-

- Конференция создана -

-

- Конференция обновлена -

-
-
- -
-
-
-
-
-
- diff --git a/src/main/resources/META-INF/resources/conference/conferenceStatusFragment.xhtml b/src/main/resources/META-INF/resources/conference/conferenceStatusFragment.xhtml deleted file mode 100644 index cb23a05..0000000 --- a/src/main/resources/META-INF/resources/conference/conferenceStatusFragment.xhtml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/src/main/resources/META-INF/resources/conference/conferences.xhtml b/src/main/resources/META-INF/resources/conference/conferences.xhtml deleted file mode 100644 index 28d72d9..0000000 --- a/src/main/resources/META-INF/resources/conference/conferences.xhtml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - -
-
-
- - -
-
- - -
-
- - - -
- - - - -
- - - - - - - - - - - - - - - - - #{conference.title} - - - - -
-
-
-
- diff --git a/src/main/resources/META-INF/resources/conference/dashboard.xhtml b/src/main/resources/META-INF/resources/conference/dashboard.xhtml deleted file mode 100644 index b8b5a81..0000000 --- a/src/main/resources/META-INF/resources/conference/dashboard.xhtml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - -
-
-
- - -
-
- - -
-
- - - -
- - - - -
- - - - - - - - - - - - - - - - - #{conference.title} - - - - -
-
-
-
- diff --git a/src/main/resources/META-INF/resources/css/google/droid.css b/src/main/resources/META-INF/resources/css/google/droid.css deleted file mode 100644 index c321e4d..0000000 --- a/src/main/resources/META-INF/resources/css/google/droid.css +++ /dev/null @@ -1,35 +0,0 @@ -/* latin */ -@font-face { - font-family: 'Droid Serif'; - font-style: italic; - font-weight: 400; - src: local('Droid Serif Italic'), local('DroidSerif-Italic'), url(https://fonts.gstatic.com/s/droidserif/v8/tDbK2oqRg1oM3QBjjcaDkOr4nAfcHg.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* latin */ -@font-face { - font-family: 'Droid Serif'; - font-style: italic; - font-weight: 700; - src: local('Droid Serif Bold Italic'), local('DroidSerif-BoldItalic'), url(https://fonts.gstatic.com/s/droidserif/v8/tDbX2oqRg1oM3QBjjcaDkOr4lLz5CwOnSA.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* latin */ -@font-face { - font-family: 'Droid Serif'; - font-style: normal; - font-weight: 400; - src: local('Droid Serif Regular'), local('DroidSerif-Regular'), url(https://fonts.gstatic.com/s/droidserif/v8/tDbI2oqRg1oM3QBjjcaDkOr9rAU.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* latin */ -@font-face { - font-family: 'Droid Serif'; - font-style: normal; - font-weight: 700; - src: local('Droid Serif Bold'), local('DroidSerif-Bold'), url(https://fonts.gstatic.com/s/droidserif/v8/tDbV2oqRg1oM3QBjjcaDkOJGiRD7OwE.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} diff --git a/src/main/resources/META-INF/resources/css/google/kaushan.css b/src/main/resources/META-INF/resources/css/google/kaushan.css deleted file mode 100644 index ebc3fd5..0000000 --- a/src/main/resources/META-INF/resources/css/google/kaushan.css +++ /dev/null @@ -1,17 +0,0 @@ -/* latin-ext */ -@font-face { - font-family: 'Kaushan Script'; - font-style: normal; - font-weight: 400; - src: local('Kaushan Script'), local('KaushanScript-Regular'), url(https://fonts.gstatic.com/s/kaushanscript/v6/vm8vdRfvXFLG3OLnsO15WYS5DG72wNJHMw.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Kaushan Script'; - font-style: normal; - font-weight: 400; - src: local('Kaushan Script'), local('KaushanScript-Regular'), url(https://fonts.gstatic.com/s/kaushanscript/v6/vm8vdRfvXFLG3OLnsO15WYS5DG74wNI.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} diff --git a/src/main/resources/META-INF/resources/css/google/montserrat.css b/src/main/resources/META-INF/resources/css/google/montserrat.css deleted file mode 100644 index 26c55ad..0000000 --- a/src/main/resources/META-INF/resources/css/google/montserrat.css +++ /dev/null @@ -1,89 +0,0 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 400; - src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 400; - src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* vietnamese */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 400; - src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 400; - src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 400; - src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* cyrillic-ext */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 700; - src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_u50.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 700; - src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_u50.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* vietnamese */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 700; - src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_u50.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 700; - src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_u50.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 700; - src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_g.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} diff --git a/src/main/resources/META-INF/resources/css/google/roboto.css b/src/main/resources/META-INF/resources/css/google/roboto.css deleted file mode 100644 index 6f7e4e3..0000000 --- a/src/main/resources/META-INF/resources/css/google/roboto.css +++ /dev/null @@ -1,251 +0,0 @@ -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 100; - src: local('Roboto Slab Thin'), local('RobotoSlab-Thin'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngOUXZYTXPIvIBgJJSb6u-u1qqh5CCD.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 100; - src: local('Roboto Slab Thin'), local('RobotoSlab-Thin'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngOUXZYTXPIvIBgJJSb6u-u1qOh5CCD.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* greek-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 100; - src: local('Roboto Slab Thin'), local('RobotoSlab-Thin'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngOUXZYTXPIvIBgJJSb6u-u1quh5CCD.woff2) format('woff2'); - unicode-range: U+1F00-1FFF; -} - -/* greek */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 100; - src: local('Roboto Slab Thin'), local('RobotoSlab-Thin'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngOUXZYTXPIvIBgJJSb6u-u1qSh5CCD.woff2) format('woff2'); - unicode-range: U+0370-03FF; -} - -/* vietnamese */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 100; - src: local('Roboto Slab Thin'), local('RobotoSlab-Thin'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngOUXZYTXPIvIBgJJSb6u-u1qih5CCD.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 100; - src: local('Roboto Slab Thin'), local('RobotoSlab-Thin'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngOUXZYTXPIvIBgJJSb6u-u1qmh5CCD.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 100; - src: local('Roboto Slab Thin'), local('RobotoSlab-Thin'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngOUXZYTXPIvIBgJJSb6u-u1qeh5A.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 300; - src: local('Roboto Slab Light'), local('RobotoSlab-Light'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u9mxLCLwR26eg.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 300; - src: local('Roboto Slab Light'), local('RobotoSlab-Light'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u9mxLCCwR26eg.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* greek-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 300; - src: local('Roboto Slab Light'), local('RobotoSlab-Light'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u9mxLCKwR26eg.woff2) format('woff2'); - unicode-range: U+1F00-1FFF; -} - -/* greek */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 300; - src: local('Roboto Slab Light'), local('RobotoSlab-Light'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u9mxLCFwR26eg.woff2) format('woff2'); - unicode-range: U+0370-03FF; -} - -/* vietnamese */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 300; - src: local('Roboto Slab Light'), local('RobotoSlab-Light'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u9mxLCJwR26eg.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 300; - src: local('Roboto Slab Light'), local('RobotoSlab-Light'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u9mxLCIwR26eg.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 300; - src: local('Roboto Slab Light'), local('RobotoSlab-Light'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u9mxLCGwR0.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 400; - src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngMUXZYTXPIvIBgJJSb6ufA5qW54A.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 400; - src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngMUXZYTXPIvIBgJJSb6ufJ5qW54A.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* greek-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 400; - src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngMUXZYTXPIvIBgJJSb6ufB5qW54A.woff2) format('woff2'); - unicode-range: U+1F00-1FFF; -} - -/* greek */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 400; - src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngMUXZYTXPIvIBgJJSb6ufO5qW54A.woff2) format('woff2'); - unicode-range: U+0370-03FF; -} - -/* vietnamese */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 400; - src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngMUXZYTXPIvIBgJJSb6ufC5qW54A.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 400; - src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 400; - src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -/* cyrillic-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 700; - src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u92w7CLwR26eg.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} - -/* cyrillic */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 700; - src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u92w7CCwR26eg.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* greek-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 700; - src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u92w7CKwR26eg.woff2) format('woff2'); - unicode-range: U+1F00-1FFF; -} - -/* greek */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 700; - src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u92w7CFwR26eg.woff2) format('woff2'); - unicode-range: U+0370-03FF; -} - -/* vietnamese */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 700; - src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u92w7CJwR26eg.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; -} - -/* latin-ext */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 700; - src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u92w7CIwR26eg.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -/* latin */ -@font-face { - font-family: 'Roboto Slab'; - font-style: normal; - font-weight: 700; - src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v7/BngRUXZYTXPIvIBgJJSb6u92w7CGwR0.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} diff --git a/src/main/resources/META-INF/resources/css/style.css b/src/main/resources/META-INF/resources/css/style.css deleted file mode 100644 index d5e56f5..0000000 --- a/src/main/resources/META-INF/resources/css/style.css +++ /dev/null @@ -1,49 +0,0 @@ -.black { - background-color: #383838 !important; -} - -.ui-picklist-list-wrapper { - width: 50% !important; -} - -.ui-picklist-list { - width: 100% !important; -} - - -.text-draft { - color: rgba(0, 0, 0, 0.48) !important; -} - -.text-primary { - color: #228bba !important; -} - -.text-warning { - color: #940000 !important; -} - -.text-review { - color: #94028d !important; -} - -.text-success { - color: #007741 !important; -} - -.text-accepted { - color: #fec503 !important; -} - -.text-not-accepted { - color: #A38831 !important; -} - -.text-failed { - color: #A38831 !important; -} - -.navbar-brand { - color: #fed136 !important; - font-family: 'Kaushan Script', 'Helvetica Neue', Helvetica, Arial, cursive; -} diff --git a/src/main/resources/META-INF/resources/error/403.xhtml b/src/main/resources/META-INF/resources/error/403.xhtml deleted file mode 100644 index 8d25bc6..0000000 --- a/src/main/resources/META-INF/resources/error/403.xhtml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Доступ запрещен - - - - - -
-
-
-
-

Доступ запрещен

- - Вернуться на главную - -
-
-
-
-
- diff --git a/src/main/resources/META-INF/resources/error/404.xhtml b/src/main/resources/META-INF/resources/error/404.xhtml deleted file mode 100644 index 598c7db..0000000 --- a/src/main/resources/META-INF/resources/error/404.xhtml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - Страница не найдена - - - -
-
-
- - - Вернуться на главную - - -
-
-
- diff --git a/src/main/resources/META-INF/resources/error/500.xhtml b/src/main/resources/META-INF/resources/error/500.xhtml deleted file mode 100644 index 72ceb67..0000000 --- a/src/main/resources/META-INF/resources/error/500.xhtml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Ошибка сервера - - -
-
-
- - - Вернуться на главную - - - - - - - - - - -
-                                #{requestScope['javax.servlet.error.exception']}
-                            
-
-
-
- -
-
-
-
- diff --git a/src/main/resources/META-INF/resources/grant/dashboard.xhtml b/src/main/resources/META-INF/resources/grant/dashboard.xhtml deleted file mode 100644 index a394873..0000000 --- a/src/main/resources/META-INF/resources/grant/dashboard.xhtml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - -
-
-
- - -
-
- - -
-
- - - -
- - - - -
- - - - - - - - - - - - - - - - - #{grant.title} - - - - - - - - - - - - - - - -
-
-
-
- diff --git a/src/main/resources/META-INF/resources/grant/grant.xhtml b/src/main/resources/META-INF/resources/grant/grant.xhtml deleted file mode 100644 index 6941241..0000000 --- a/src/main/resources/META-INF/resources/grant/grant.xhtml +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - Редактирование гранта - - - - -
-
-
- -
-
- - -
-
- -
-
- -
-
- - - - - - - - - - -
- -
- -
-
- - - - -
-
- -
-
-
-
- -
- -
-
- -
-
- - - -
-
-
- -
-
- -
-
- - - -
-
-
-
- -
- -
-
- -
-
-

- Грант создан -

-

- Грант обновлен -

-
-
- -
-
-
-
-
-
- diff --git a/src/main/resources/META-INF/resources/grant/grantStatusFragment.xhtml b/src/main/resources/META-INF/resources/grant/grantStatusFragment.xhtml deleted file mode 100644 index 48313fb..0000000 --- a/src/main/resources/META-INF/resources/grant/grantStatusFragment.xhtml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/src/main/resources/META-INF/resources/grant/grants.xhtml b/src/main/resources/META-INF/resources/grant/grants.xhtml deleted file mode 100644 index 1e2ed60..0000000 --- a/src/main/resources/META-INF/resources/grant/grants.xhtml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - -
-
-
- - -
-
- - -
-
- - - -
- - - - -
- - - - - - - - - - - - - - - - - #{grant.title} - - - - - - - - - - - - - - - -
-
-
-
- diff --git a/src/main/resources/META-INF/resources/img/conference/back.png b/src/main/resources/META-INF/resources/img/conference/back.png deleted file mode 100644 index 7667350..0000000 Binary files a/src/main/resources/META-INF/resources/img/conference/back.png and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/conference/delete.png b/src/main/resources/META-INF/resources/img/conference/delete.png deleted file mode 100644 index 595bf63..0000000 Binary files a/src/main/resources/META-INF/resources/img/conference/delete.png and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/conference/edit.png b/src/main/resources/META-INF/resources/img/conference/edit.png deleted file mode 100644 index 832bef3..0000000 Binary files a/src/main/resources/META-INF/resources/img/conference/edit.png and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/conference/paper.png b/src/main/resources/META-INF/resources/img/conference/paper.png deleted file mode 100644 index 78a0dfc..0000000 Binary files a/src/main/resources/META-INF/resources/img/conference/paper.png and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/header-bg.jpg b/src/main/resources/META-INF/resources/img/header-bg.jpg deleted file mode 100644 index 6ac14cf..0000000 Binary files a/src/main/resources/META-INF/resources/img/header-bg.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/logo.png b/src/main/resources/META-INF/resources/img/logo.png deleted file mode 100644 index 7d3d33c..0000000 Binary files a/src/main/resources/META-INF/resources/img/logo.png and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/ajax-loader.gif b/src/main/resources/META-INF/resources/img/main/ajax-loader.gif deleted file mode 100644 index f2a1bc0..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/ajax-loader.gif and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/career.jpg b/src/main/resources/META-INF/resources/img/main/career.jpg deleted file mode 100644 index 71615c2..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/career.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/conf.jpg b/src/main/resources/META-INF/resources/img/main/conf.jpg deleted file mode 100644 index bf10948..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/conf.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/grants.jpg b/src/main/resources/META-INF/resources/img/main/grants.jpg deleted file mode 100644 index d7de0e0..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/grants.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/papers.jpg b/src/main/resources/META-INF/resources/img/main/papers.jpg deleted file mode 100644 index 055f864..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/papers.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/projects.jpg b/src/main/resources/META-INF/resources/img/main/projects.jpg deleted file mode 100644 index d3085b7..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/projects.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/students.jpg b/src/main/resources/META-INF/resources/img/main/students.jpg deleted file mode 100644 index 25ea94a..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/students.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/tasks.jpg b/src/main/resources/META-INF/resources/img/main/tasks.jpg deleted file mode 100644 index ca20f61..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/tasks.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/team.jpg b/src/main/resources/META-INF/resources/img/main/team.jpg deleted file mode 100644 index f30744d..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/team.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/main/templates.jpg b/src/main/resources/META-INF/resources/img/main/templates.jpg deleted file mode 100644 index 9cafc26..0000000 Binary files a/src/main/resources/META-INF/resources/img/main/templates.jpg and /dev/null differ diff --git a/src/main/resources/META-INF/resources/img/map-image.png b/src/main/resources/META-INF/resources/img/map-image.png deleted file mode 100644 index a047a27..0000000 Binary files a/src/main/resources/META-INF/resources/img/map-image.png and /dev/null differ diff --git a/src/main/resources/META-INF/resources/index.xhtml b/src/main/resources/META-INF/resources/index.xhtml deleted file mode 100644 index 1cc7d7e..0000000 --- a/src/main/resources/META-INF/resources/index.xhtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/META-INF/resources/login.xhtml b/src/main/resources/META-INF/resources/login.xhtml deleted file mode 100644 index e779e63..0000000 --- a/src/main/resources/META-INF/resources/login.xhtml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - Вход в систему - - -
-
-
-
- - - - - - - - - - - - - - - - - - - - -
-
-
-
- -
- -
- Войти с учетной записью Google - - Расписание УлГТУ -
-
-
-
-
-
-
- diff --git a/src/main/resources/META-INF/resources/paper/dashboard.xhtml b/src/main/resources/META-INF/resources/paper/dashboard.xhtml deleted file mode 100644 index 7cd52eb..0000000 --- a/src/main/resources/META-INF/resources/paper/dashboard.xhtml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - -
-
-
- - -
-
- - -
-
- - - -
- - - - -
- - - - - - - - - - - - - - - - - #{paper.title} - - - - - - - - - - - - - - - -
-
-
-
- diff --git a/src/main/resources/META-INF/resources/paper/paper.xhtml b/src/main/resources/META-INF/resources/paper/paper.xhtml deleted file mode 100644 index 82b0fdf..0000000 --- a/src/main/resources/META-INF/resources/paper/paper.xhtml +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - Редактирование статьи - - - - -
-
-
- -
-
- - -
-
- - - - - -
-
- -
-
- - - - - - - - - - -
-
- - #{paperView.getConferenceTitle(paperView.paper.conference)} - - -
-
- -
-
- - - -
-
- -
-
- - - - -
-
- -
-
-
-
- -
- -
-
- -
-
- - - -
-
-
- -
-
- -
-
- - - -
-
-
-
- -
- -
-
- -
-
-

- Статья создана - - - -

-

- Статья обновлена - - - -

-
-
- -
-
-
-
-
-
- diff --git a/src/main/resources/META-INF/resources/paper/paperStatusFragment.xhtml b/src/main/resources/META-INF/resources/paper/paperStatusFragment.xhtml deleted file mode 100644 index b99161f..0000000 --- a/src/main/resources/META-INF/resources/paper/paperStatusFragment.xhtml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/src/main/resources/META-INF/resources/paper/papers.xhtml b/src/main/resources/META-INF/resources/paper/papers.xhtml deleted file mode 100644 index 2a8787b..0000000 --- a/src/main/resources/META-INF/resources/paper/papers.xhtml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - -
-
-
- - -
-
- - -
-
- - - -
- - - - -
- - - - - - - - - - - - - - - - - #{paper.title} - - - - - - - - - - - - - - - -
-
-
-
- diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f1697ba..4346d0c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -15,11 +15,6 @@ server.ssl.key-password=password logging.level.ru.ulstu=DEBUG #HtmlUnit logging.level.com.gargoylesoftware.htmlunit=ERROR -#jsf -#joinfaces.primefaces.theme=casablanca -joinfaces.primefaces.theme=afterdark -joinfaces.primefaces.font-awesome=true -joinfaces.mojarra.enable-restore-view11-compatibility=true # Mail Settings spring.mail.host=smtp.yandex.ru spring.mail.port=465 @@ -34,6 +29,7 @@ spring.datasource.username=postgres spring.datasource.password=postgres spring.jpa.hibernate.ddl-auto=validate spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false +spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect # Liquibase Settings spring.liquibase.change-log=classpath:db/changelog-master.xml spring.liquibase.drop-first=false diff --git a/src/main/resources/db/changelog-20190607_000002-schema.xml b/src/main/resources/db/changelog-20190607_000002-schema.xml index 9531c87..64bc974 100644 --- a/src/main/resources/db/changelog-20190607_000002-schema.xml +++ b/src/main/resources/db/changelog-20190607_000002-schema.xml @@ -9,4 +9,15 @@ + + + + + + + + + + + diff --git a/src/main/resources/templates/default.html b/src/main/resources/templates/default.html index daf359a..b055513 100644 --- a/src/main/resources/templates/default.html +++ b/src/main/resources/templates/default.html @@ -78,8 +78,8 @@ -
-
+
+
-

Login with:

-

- Client -

diff --git a/src/main/resources/templates/papers/fragments/paperLineFragment.html b/src/main/resources/templates/papers/fragments/paperLineFragment.html index 8c843d8..88f2f7a 100644 --- a/src/main/resources/templates/papers/fragments/paperLineFragment.html +++ b/src/main/resources/templates/papers/fragments/paperLineFragment.html @@ -4,23 +4,33 @@ -
-
- - - - - - - - - - +
+
+
+ +
+
+
+ +
+ +
+
+
+
+ + + + +
- - \ No newline at end of file diff --git a/src/main/resources/templates/papers/paper.html b/src/main/resources/templates/papers/paper.html index b1f195a..788062d 100644 --- a/src/main/resources/templates/papers/paper.html +++ b/src/main/resources/templates/papers/paper.html @@ -18,7 +18,7 @@

Редактирование статьи

-
+

@@ -29,278 +29,114 @@ th:object="${paperDto}">
- - +
@@ -335,21 +171,19 @@
- -
-
-
- - - Отмена - -
- +
+
+
+
+ + + Отмена +
diff --git a/src/main/resources/templates/papers/papers.html b/src/main/resources/templates/papers/papers.html index f4eb06b..f470d23 100644 --- a/src/main/resources/templates/papers/papers.html +++ b/src/main/resources/templates/papers/papers.html @@ -12,43 +12,38 @@
-
+
-

Статьи

+

Статьи

-
-
-

+
+
+
-
- -
- -
-
-
-
Фильтр:
- - -
+
+
- + + +
+ +
diff --git a/src/main/resources/templates/users/profile.html b/src/main/resources/templates/users/profile.html index f59587d..001bd25 100644 --- a/src/main/resources/templates/users/profile.html +++ b/src/main/resources/templates/users/profile.html @@ -58,6 +58,33 @@ class="alert alert-danger">Incorrect email

+
+ + +

Incorrect orc id

+

+
+
+ + +

Incorrect Scopus id

+

+
+
+ + +

Incorrect Elibrary id

+

+