2353 Replace var with explicit type

This commit is contained in:
Andreas Svanberg 2021-09-22 20:03:39 +02:00
parent 156cf96036
commit 888b58202a
44 changed files with 192 additions and 171 deletions
core/src
daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/workers
view/src

@ -62,13 +62,13 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
}
private void importAuthorLevel(final User user, final Map<Integer, se.su.dsv.scipro.io.dto.Program> programCache) {
final var semesterPrograms = client
final Stream<Pair<Integer, Integer>> semesterPrograms = client
.getProgramAdmissionsForStudent(user.getIdentifier())
.stream()
.map(pa -> new Pair<>(pa.getAdmissionSemester(), pa.getProgram().getId()));
final List<CourseRegistration> courseRegistrations = client
.getCourseRegistrationsForStudent(user.getIdentifier());
final var registrationSemesters = courseRegistrations
final Stream<Pair<Integer, Integer>> registrationSemesters = courseRegistrations
.stream()
.filter(cr -> cr.getProgramId() != null)
.map(cr -> new Pair<>(cr.getSemester(), cr.getProgramId()));
@ -83,7 +83,7 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
.or(() -> getOverrideBasedOnCourse(courseRegistrations))
.orElse(DegreeType.BACHELOR);
final var oldLevel = user.getDegreeType();
final DegreeType oldLevel = user.getDegreeType();
user.setDegreeType(latestLevel);
if (oldLevel != user.getDegreeType()) {
userService.save(user);
@ -231,7 +231,7 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
}
private void addCreditsToProject(Set<StudentProjectParticipant> authors, Project project) {
final var oldCredits = project.getCredits();
final int oldCredits = project.getCredits();
for (StudentProjectParticipant contributor : authors) {
Course course = contributor.getCourse();
project.setCredits(course.getCredits());

@ -72,7 +72,7 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
final Date earliestCreationDate = daysService.workDaysAfter(new Date(),
finalSeminarSettingsService.getInstance().getDaysAheadToCreate());
var move = tryMove(finalSeminar, to, earliestCreationDate, nonWorkDayPeriodService::isNonWorkDay);
Either<SchedulingError, FinalSeminar> move = tryMove(finalSeminar, to, earliestCreationDate, nonWorkDayPeriodService::isNonWorkDay);
move.foreach(seminar -> {
FinalSeminar moved = save(seminar);
eventBus.post(new FinalSeminarMovedEvent(moved, to));

@ -62,19 +62,19 @@ public class FirstMeetingReminderWorker extends AbstractWorker {
@Override
public void doWork() {
final var ideas = ideaService.findAll(filter);
final var ideasToday = ideaService.findAll(todayFilter);
final List<Idea> ideas = ideaService.findAll(filter);
final List<Idea> ideasToday = ideaService.findAll(todayFilter);
final var today = LocalDate.now(clock);
final LocalDate today = LocalDate.now(clock);
final var needReminding = ideas.stream()
final Map<User, List<Idea>> needReminding = ideas.stream()
.filter(idea -> needReminding(idea, today))
.collect(Collectors.groupingBy(idea -> idea.getMatch().getSupervisor()));
final var needRemindingNow = ideasToday.stream()
final Map<User, List<Idea>> needRemindingNow = ideasToday.stream()
.filter(idea -> needRemindingToday(idea, today))
.collect(Collectors.groupingBy(idea -> idea.getMatch().getSupervisor()));
final var baseURL = generalSystemSettingsService.getGeneralSystemSettingsInstance().getSciproURL();
final String baseURL = generalSystemSettingsService.getGeneralSystemSettingsInstance().getSciproURL();
beginTransaction();
needReminding.entrySet()
@ -89,14 +89,14 @@ public class FirstMeetingReminderWorker extends AbstractWorker {
}
boolean needRemindingToday(final Idea idea, final LocalDate today) {
final var courseStartDate = idea.getApplicationPeriod().getCourseStartDate();
final var datesToRemind = Set.of(courseStartDate);
final LocalDate courseStartDate = idea.getApplicationPeriod().getCourseStartDate();
final Set<LocalDate> datesToRemind = Set.of(courseStartDate);
return containsSameDay(datesToRemind, today);
}
private boolean needReminding(final Idea idea, final LocalDate today) {
final var courseStartDate = idea.getApplicationPeriod().getCourseStartDate();
final var datesToRemind = calculateReminderDaysBasedOnWorkDays(courseStartDate);
final LocalDate courseStartDate = idea.getApplicationPeriod().getCourseStartDate();
final Set<LocalDate> datesToRemind = calculateReminderDaysBasedOnWorkDays(courseStartDate);
return containsSameDay(datesToRemind, today);
}
@ -115,10 +115,10 @@ public class FirstMeetingReminderWorker extends AbstractWorker {
}
MailEvent generateReminder(String baseUrl, User supervisor, List<Idea> ideas) {
var reminder = new MailEvent();
MailEvent reminder = new MailEvent();
reminder.getRecipients().add(supervisor);
reminder.setSubject("A friendly reminder to book First meeting(s)");
var lines = ideas.stream().map(idea ->
String lines = ideas.stream().map(idea ->
"-Course start: " + idea.getCourseStartDate() + '\n' +
"-Deadline: " + deadline(idea) + '\n' +
"-Authors: " + idea.getAuthorNames() + '\n' +
@ -149,12 +149,12 @@ public class FirstMeetingReminderWorker extends AbstractWorker {
}
private MailEvent generateReminderToday(User supervisor, List<Idea> ideas) {
var reminder = new MailEvent();
MailEvent reminder = new MailEvent();
reminder.getRecipients().add(supervisor);
var gru = Optional.ofNullable(supervisor.getUnit()).flatMap(unit -> Optional.ofNullable(unit.getMatchResponsible())).map(EmailRecipient::new);
Optional<EmailRecipient> gru = Optional.ofNullable(supervisor.getUnit()).flatMap(unit -> Optional.ofNullable(unit.getMatchResponsible())).map(EmailRecipient::new);
gru.ifPresent(gruEmail -> reminder.addRecipients(Set.of(gruEmail)));
reminder.setSubject("A friendly reminder to book First meeting without further delay");
var lines = ideas.stream().map(idea ->
String lines = ideas.stream().map(idea ->
"-Course start: " + idea.getCourseStartDate() + '\n' +
"-Authors: " + idea.getAuthorNames() + '\n' +
"-Supervisor: " + supervisor.getFullName() + '\n' +

@ -7,6 +7,7 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.ProjectModule;
import javax.inject.Inject;
import java.time.Instant;
import java.time.ZoneId;
import java.util.Date;
@ -37,7 +38,7 @@ public class AddActivityPlanOnProjectStart {
.filter(appt -> project.hasModule(ProjectModule.ACTIVITY_PLAN))
.ifPresent(template ->
{
final var courseStartDate = applicationPeriod
final Instant courseStartDate = applicationPeriod
.getCourseStartDate()
.atTime(applicationPeriod.getCourseStartTime())
.atZone(ZoneId.systemDefault())

@ -153,7 +153,7 @@ public class ApplicationPeriod extends DomainObject {
}
public boolean isOpen() {
final var now = LocalDate.now();
final LocalDate now = LocalDate.now();
return !(now.isBefore(startDate) || now.isAfter(endDate));
}

@ -92,7 +92,7 @@ class ApplicationPeriodServiceImpl extends AbstractServiceImpl<ApplicationPeriod
@Override
@Transactional
public ApplicationPeriod getCurrentPeriod(ProjectType pc) {
final var currentDate = LocalDate.now(clock);
final LocalDate currentDate = LocalDate.now(clock);
return findOne(startedBefore(currentDate).and(endedAfter(currentDate)).and(haveProjectType(pc)));
}
@ -114,13 +114,13 @@ class ApplicationPeriodServiceImpl extends AbstractServiceImpl<ApplicationPeriod
@Override
public boolean courseStartHasPassed(ApplicationPeriod ap) {
final var now = LocalDate.now(clock);
final LocalDate now = LocalDate.now(clock);
return !now.isBefore(ap.getCourseStartDate());
}
@Override
public boolean endDateIsReached(ApplicationPeriod ap) {
final var now = LocalDate.now(clock);
final LocalDate now = LocalDate.now(clock);
return now.isAfter(ap.getEndDate());
}

@ -11,6 +11,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Pageable;
import se.su.dsv.scipro.data.dataobjects.Member;
import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettings;
import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
import se.su.dsv.scipro.match.Idea.Status;
import se.su.dsv.scipro.match.Idea.Type;
@ -171,7 +172,7 @@ class IdeaServiceImpl extends AbstractServiceImpl<Idea, Long> implements IdeaSer
// TODO: Merge this validation with the #acceptIdea method so that validation is always done
@Override
public Pair<Boolean, String> validateStudentAcceptance(Idea idea, User creator, User coAuthor, final ApplicationPeriod ap) {
final var generalSystemSettingsInstance = generalSystemSettingsService.getGeneralSystemSettingsInstance();
final GeneralSystemSettings generalSystemSettingsInstance = generalSystemSettingsService.getGeneralSystemSettingsInstance();
if (idea.getMatchStatus() != Status.UNMATCHED) {
return new Pair<>(Boolean.FALSE, NO_LONGER_AVAILABLE_ERROR);
}
@ -265,9 +266,9 @@ class IdeaServiceImpl extends AbstractServiceImpl<Idea, Long> implements IdeaSer
@Transactional
public void delete(final Idea entity) {
super.delete(entity);
final var source = new NotificationSource();
final NotificationSource source = new NotificationSource();
source.setMessage(entity.getTitle());
final var members = entity.getIdeaParticipations()
final Set<Member> members = entity.getIdeaParticipations()
.stream()
.map(ip -> new Member(ip.getUser(), Member.Type.AUTHOR))
.collect(Collectors.toSet());
@ -286,10 +287,10 @@ class IdeaServiceImpl extends AbstractServiceImpl<Idea, Long> implements IdeaSer
added.add(partner);
}
}
final var currentParticipants = idea.getIdeaParticipations().iterator();
final Iterator<IdeaParticipation> currentParticipants = idea.getIdeaParticipations().iterator();
while (currentParticipants.hasNext()) {
IdeaParticipation participant = currentParticipants.next();
final var user = participant.getUser();
final User user = participant.getUser();
if (!partners.contains(user) && !Objects.equals(user, creator)) {
currentParticipants.remove();
removed.add(user);
@ -303,7 +304,7 @@ class IdeaServiceImpl extends AbstractServiceImpl<Idea, Long> implements IdeaSer
}
for (User user : removed) {
NotificationSource source = new NotificationSource();
final var recipients = new HashSet<Member>();
final HashSet<Member> recipients = new HashSet<>();
recipients.add(new Member(user, Member.Type.CO_AUTHOR));
notificationController.notifyIdeaWithCustomRecipients(theIdea, IdeaEvent.Event.REMOVED_AS_PARTNER, source, recipients);
source.setMessage(user.getFullName());

@ -55,7 +55,7 @@ public class DaysServiceImpl implements DaysService {
return date;
}
else {
final var dayBefore = date.minusDays(1);
final java.time.LocalDate dayBefore = date.minusDays(1);
if (isWorkDay(dayBefore)) {
return workDaysAhead(dayBefore, days);
}
@ -74,7 +74,7 @@ public class DaysServiceImpl implements DaysService {
}
private boolean isWeekend(final java.time.LocalDate date) {
final var dayOfWeek = date.getDayOfWeek();
final DayOfWeek dayOfWeek = date.getDayOfWeek();
return dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY;
}

@ -121,7 +121,7 @@ public class NotificationControllerImpl implements NotificationController {
data.setAdditionalSource(source.getAdditionalMessage());
// Have to make sure the custom set participants are actually set to receive
final var filteredRecipients = recipients.stream()
final Set<Member> filteredRecipients = recipients.stream()
.filter(m -> receiverConfiguration.isReceiving(Notification.Type.IDEA, event, m.getType()))
.collect(Collectors.toSet());
@ -227,7 +227,7 @@ public class NotificationControllerImpl implements NotificationController {
@Override
public void notifyCustom(CustomEvent.Event event, NotificationSource source, Set<Member> recipients) {
final var data = new CustomEvent();
final CustomEvent data = new CustomEvent();
data.setEvent(event);
data.setSource(source.getMessage());
data.setAdditionalSource(source.getAdditionalMessage());

@ -69,11 +69,11 @@ public class PeerPortalImpl implements PeerPortal, PerformReviewService {
review.setPeerRequest(peerRequest);
review.setProject(project);
review.setReviewer(student);
final var numDaysToSubmitPeerReview = peerRequest.getProject()
final int numDaysToSubmitPeerReview = peerRequest.getProject()
.getProjectType()
.getProjectTypeSettings()
.getNumDaysToSubmitPeerReview();
final var deadline = daysService.workDaysAfter(new Date(), numDaysToSubmitPeerReview);
final Date deadline = daysService.workDaysAfter(new Date(), numDaysToSubmitPeerReview);
review.setDeadline(deadline);
review = peerReviewRepository.save(review);

@ -104,7 +104,7 @@ public final class SciProUtilities {
return null;
}
else {
final var calendar = Calendar.getInstance();
final Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(localDate.getYear(), localDate.getMonthValue() - 1, localDate.getDayOfMonth());
return calendar;

@ -47,10 +47,10 @@ class SurveyServiceImpl implements SurveyService {
@Override
public boolean shouldFillOutSurvey(final Project project, final User user) {
final var questions = questionRepository.findAll();
final var hasFinalThesis = finalThesisService.hasFinalThesis(project);
final var survey = surveyRepository.getSurvey(project, user);
final var submittedSurvey = survey.isPresent() && survey.get().isSubmitted();
final List<Question> questions = questionRepository.findAll();
final boolean hasFinalThesis = finalThesisService.hasFinalThesis(project);
final Optional<Survey> survey = surveyRepository.getSurvey(project, user);
final boolean submittedSurvey = survey.isPresent() && survey.get().isSubmitted();
final boolean surveyAvailable = generalSystemSettingsService.getGeneralSystemSettingsInstance().isFinalSurveyAvailable();
return surveyAvailable && hasFinalThesis && !submittedSurvey && !questions.isEmpty();
}

@ -122,7 +122,7 @@ public class IdeaExportWorker extends AbstractWorker {
}
private Date getCourseStartDate(final Idea idea) {
final var courseStartDateTime = idea.getApplicationPeriod()
final Instant courseStartDateTime = idea.getApplicationPeriod()
.getCourseStartDateTime()
.atZone(ZoneId.systemDefault())
.toInstant();

@ -20,10 +20,10 @@ public class ExtendedFinalSeminarServiceImplTest {
@Before
public void setUp() {
var master = new ProjectType(DegreeType.MASTER, "Master", "Master");
var exemptedProject = Project.builder().title("Title").projectType(master).build();
ProjectType master = new ProjectType(DegreeType.MASTER, "Master", "Master");
Project exemptedProject = Project.builder().title("Title").projectType(master).build();
exemptedProject.setFinalSeminarRuleExempted(true);
var notExemptedProject = Project.builder().title("Title").projectType(master).build();
Project notExemptedProject = Project.builder().title("Title").projectType(master).build();
exempted = new FinalSeminar(exemptedProject);
notExempted = new FinalSeminar(notExemptedProject);
@ -31,28 +31,28 @@ public class ExtendedFinalSeminarServiceImplTest {
@Test
public void exempted_final_seminar_will_always_move() {
var move = FinalSeminarServiceImpl.tryMove(exempted, future, past, this::allDaysAreHoliday);
Either<SchedulingError, FinalSeminar> move = FinalSeminarServiceImpl.tryMove(exempted, future, past, this::allDaysAreHoliday);
assertTrue(move.isRight());
}
@Test
public void trying_to_move_to_a_non_work_day_is_not_allowed() {
var move = FinalSeminarServiceImpl.tryMove(notExempted, future, past, this::allDaysAreHoliday);
Either<SchedulingError, FinalSeminar> move = FinalSeminarServiceImpl.tryMove(notExempted, future, past, this::allDaysAreHoliday);
assertThat(move, is(Either.left(new NonWorkDay(future))));
}
@Test
public void trying_to_move_before_earliest_date_is_not_allowed() {
var move = FinalSeminarServiceImpl.tryMove(notExempted, past, future, this::allDaysAreWorkDays);
Either<SchedulingError, FinalSeminar> move = FinalSeminarServiceImpl.tryMove(notExempted, past, future, this::allDaysAreWorkDays);
assertThat(move, is(Either.left(new NotEnoughWorkDays(past, future))));
}
@Test
public void move_to_non_work_day_after_earliest_date_is_allowed() {
var move = FinalSeminarServiceImpl.tryMove(notExempted, future, past, this::allDaysAreWorkDays);
Either<SchedulingError, FinalSeminar> move = FinalSeminarServiceImpl.tryMove(notExempted, future, past, this::allDaysAreWorkDays);
assertTrue(move.isRight());
}

@ -13,6 +13,7 @@ import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
import se.su.dsv.scipro.mail.MailEvent;
import se.su.dsv.scipro.mail.MailEventService;
import se.su.dsv.scipro.match.ApplicationPeriod;
import se.su.dsv.scipro.match.Idea;
@ -48,48 +49,48 @@ public class FirstMeetingReminderWorkerTest{
}
@Test public void should_remind_if_is_same_date() {
var today = LocalDate.now();
var idea = newIdea(today);
LocalDate today = LocalDate.now();
Idea idea = newIdea(today);
assertTrue(worker.needRemindingToday(idea, today));
}
@Test public void should_not_remind_if_is_different_date() {
var date = LocalDate.of(2020, Month.JANUARY, 12);
var idea = newIdea(date);
LocalDate date = LocalDate.of(2020, Month.JANUARY, 12);
Idea idea = newIdea(date);
assertFalse(worker.needRemindingToday(idea, LocalDate.of(2020, Month.JANUARY, 13)));
}
@Test public void reminder_should_include_title_of_every_idea() {
var idea = newIdea(LocalDate.now());
Idea idea = newIdea(LocalDate.now());
var reminder = worker.generateReminder("test-baseURL", idea.getMatch().getSupervisor(), List.of(idea));
MailEvent reminder = worker.generateReminder("test-baseURL", idea.getMatch().getSupervisor(), List.of(idea));
assertThat(reminder.getMessageBody(), containsString(idea.getTitle()));
}
@Test public void generated_reminder_should_be_sent_to_the_supervisor() {
var idea = newIdea(LocalDate.now());
var supervisor = idea.getMatch().getSupervisor();
Idea idea = newIdea(LocalDate.now());
User supervisor = idea.getMatch().getSupervisor();
var reminder = worker.generateReminder("test-baseURL", supervisor, List.of(idea));
MailEvent reminder = worker.generateReminder("test-baseURL", supervisor, List.of(idea));
assertThat(reminder.getRecipients(), hasItem(supervisor));
}
private User newUser() {
var user = User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build();
User user = User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build();
user.setId(234L);
return user;
}
private ApplicationPeriod newApplicationPeriod(LocalDate startDate) {
var period = new ApplicationPeriod();
ApplicationPeriod period = new ApplicationPeriod();
period.setCourseStartDate(startDate);
return period;
}
private Idea newIdea(LocalDate startDate) {
var idea = new Idea();
Idea idea = new Idea();
idea.setTitle("I hate writing all this stupid manual test data");
idea.setId(234L);
idea.setMatch(newMatch(idea));
@ -98,7 +99,7 @@ public class FirstMeetingReminderWorkerTest{
}
private Match newMatch(Idea idea) {
var supervisorMatch = new Match();
Match supervisorMatch = new Match();
supervisorMatch.setSupervisor(newUser());
supervisorMatch.setIdea(idea);
return supervisorMatch;

@ -4,7 +4,9 @@ import org.junit.Test;
import scala.Option;
import scala.Tuple2;
import scala.collection.JavaConverters;
import scala.collection.immutable.Iterable;
import se.su.dsv.scipro.file.FileDescription;
import se.su.dsv.scipro.mail.MailEvent;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.*;
@ -18,57 +20,57 @@ public class ReviewerDecisionReminderWorkerTest {
@Test
public void should_remind_if_is_same_date() {
var today = new Date();
var roughDraftApproval = newRoughDraftApproval();
var needReminding = ReviewerDecisionReminderWorker.needReminding(x -> today, x -> set(today)).apply(today).apply(set(roughDraftApproval));
Date today = new Date();
RoughDraftApproval roughDraftApproval = newRoughDraftApproval();
Iterable<Tuple2<ReviewerApproval, Date>> needReminding = ReviewerDecisionReminderWorker.needReminding(x -> today, x -> set(today)).apply(today).apply(set(roughDraftApproval));
assertThat(JavaConverters.asJavaCollection(needReminding), hasItem(Tuple2.apply(roughDraftApproval, today)));
}
@Test
public void should_not_remind_if_is_different_date() {
var date = new Date(987452359L);
var roughDraftApproval = newRoughDraftApproval();
Date date = new Date(987452359L);
RoughDraftApproval roughDraftApproval = newRoughDraftApproval();
var needReminding = ReviewerDecisionReminderWorker.needReminding(x -> new Date(0), x -> set(date)).apply(new Date(0)).apply(set(roughDraftApproval));
Iterable<Tuple2<ReviewerApproval, Date>> needReminding = ReviewerDecisionReminderWorker.needReminding(x -> new Date(0), x -> set(date)).apply(new Date(0)).apply(set(roughDraftApproval));
assertThat(JavaConverters.asJavaCollection(needReminding), not(hasItem(Tuple2.apply(roughDraftApproval, new Date(0)))));
}
@Test
public void reminder_should_include_title_of_every_idea() {
var roughDraftApproval = newRoughDraftApproval();
RoughDraftApproval roughDraftApproval = newRoughDraftApproval();
var reminder = ReviewerDecisionReminderWorker.generateRoughDraftReminder(Option.apply(roughDraftApproval.getProject().getReviewer()), set(Tuple2.apply(roughDraftApproval, new Date(0))));
MailEvent reminder = ReviewerDecisionReminderWorker.generateRoughDraftReminder(Option.apply(roughDraftApproval.getProject().getReviewer()), set(Tuple2.apply(roughDraftApproval, new Date(0))));
assertThat(reminder.getMessageBody(), containsString(roughDraftApproval.getProject().getTitle()));
}
@Test
public void generated_reminder_should_be_sent_to_the_reviewer() {
var roughDraftApproval = newRoughDraftApproval();
var reviewer = roughDraftApproval.getProject().getReviewer();
RoughDraftApproval roughDraftApproval = newRoughDraftApproval();
User reviewer = roughDraftApproval.getProject().getReviewer();
var reminder = ReviewerDecisionReminderWorker.generateRoughDraftReminder(Option.apply(reviewer), set(Tuple2.apply(roughDraftApproval, new Date())));
MailEvent reminder = ReviewerDecisionReminderWorker.generateRoughDraftReminder(Option.apply(reviewer), set(Tuple2.apply(roughDraftApproval, new Date())));
assertThat(reminder.getRecipients(), hasItem(reviewer));
}
private Unit newUnit() {
var unit = new Unit();
Unit unit = new Unit();
unit.setMatchResponsible("test@test,test");
return unit;
}
private User newUser() {
var user = User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build();
User user = User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build();
user.setId(234L);
user.setUnit(newUnit());
return user;
}
private Project newProject() {
var projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
var project = Project.builder().title("This is a title").projectType(projectType).build();
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
Project project = Project.builder().title("This is a title").projectType(projectType).build();
project.addReviewer(newUser());
project.setHeadSupervisor(newUser());
project.setId(555L);

@ -1,5 +1,7 @@
package se.su.dsv.scipro.integration.daisy.workers;
import io.opentracing.Scope;
import io.opentracing.Span;
import io.opentracing.Tracer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -73,11 +75,11 @@ public class UserImportWorker extends AbstractWorker {
private void importUserDetails(final Map<Integer, Program> programCache) {
for (final User user : userService.findAll()) {
if (user.getIdentifier() != null) {
final var span = tracer.buildSpan("Importing user")
final Span span = tracer.buildSpan("Importing user")
.withTag("scipro.user.id", user.getId())
.withTag("daisy.user.id", user.getIdentifier())
.start();
try (var ignored = tracer.activateSpan(span)) {
try (Scope ignored = tracer.activateSpan(span)) {
Optional<Person> idPerson = daisyAPI.findPersonById(user.getIdentifier());
if (idPerson.isPresent()) {
Person person = idPerson.get();

@ -100,7 +100,7 @@ public class SciProApplication extends LifecycleManagedWebApplication {
@Override
protected IConverterLocator newConverterLocator() {
final var converterLocator = new ConverterLocator();
final ConverterLocator converterLocator = new ConverterLocator();
converterLocator.set(LocalDate.class, new LocalDateConverter() {
@Override
protected DateTimeFormatter getDateTimeFormatter() {

@ -91,7 +91,7 @@ public class AdminSurveyPage extends AbstractAdminProjectPage {
@Override
protected void onConfigure() {
super.onConfigure();
final var type = item.getModel().getObject().getType();
final Question.Type type = item.getModel().getObject().getType();
setVisible(type == Question.Type.MULTIPLE_CHOICE || type == Question.Type.SINGLE_CHOICE);
}
@ -142,7 +142,7 @@ public class AdminSurveyPage extends AbstractAdminProjectPage {
@Override
protected void onConfigure() {
super.onConfigure();
final var selectedType = questionModel.getObject().getType();
final Question.Type selectedType = questionModel.getObject().getType();
setVisible(selectedType == Question.Type.MULTIPLE_CHOICE || selectedType == Question.Type.SINGLE_CHOICE);
}
};

@ -64,12 +64,12 @@ public class AdminEditApplicationPeriodPage extends AbstractAdminMatchPage imple
item.add(new Label("name", item.getModel().map(ProjectType::getName)));
}
});
final var startDate = addDateField(START_DATE, LambdaModel.of(getModel(), ApplicationPeriod::getStartDate, ApplicationPeriod::setStartDate));
final var endDate = addDateField(END_DATE, LambdaModel.of(getModel(), ApplicationPeriod::getEndDate, ApplicationPeriod::setEndDate));
final var courseStartDate = addDateField(COURSE_START_DATE, LambdaModel.of(getModel(), ApplicationPeriod::getCourseStartDate, ApplicationPeriod::setCourseStartDate));
final var courseEndDate = addDateField("courseEndDate", LambdaModel.of(getModel(), ApplicationPeriod::getCourseEndDate, ApplicationPeriod::setCourseEndDate));
final FormComponent<LocalDate> startDate = addDateField(START_DATE, LambdaModel.of(getModel(), ApplicationPeriod::getStartDate, ApplicationPeriod::setStartDate));
final FormComponent<LocalDate> endDate = addDateField(END_DATE, LambdaModel.of(getModel(), ApplicationPeriod::getEndDate, ApplicationPeriod::setEndDate));
final FormComponent<LocalDate> courseStartDate = addDateField(COURSE_START_DATE, LambdaModel.of(getModel(), ApplicationPeriod::getCourseStartDate, ApplicationPeriod::setCourseStartDate));
final FormComponent<LocalDate> courseEndDate = addDateField("courseEndDate", LambdaModel.of(getModel(), ApplicationPeriod::getCourseEndDate, ApplicationPeriod::setCourseEndDate));
courseEndDate.setRequired(false);
final var courseStartTime = new RequiredTextField<>("courseStartTime", LambdaModel.of(getModel(), ApplicationPeriod::getCourseStartTime, ApplicationPeriod::setCourseStartTime), LocalTime.class);
final RequiredTextField<LocalTime> courseStartTime = new RequiredTextField<>("courseStartTime", LambdaModel.of(getModel(), ApplicationPeriod::getCourseStartTime, ApplicationPeriod::setCourseStartTime), LocalTime.class);
courseStartTime.add(new BootstrapTimePicker());
add(courseStartTime);
add(new FencedFeedbackPanel("courseStartTimeFeedback", courseStartTime));

@ -11,6 +11,8 @@ import se.su.dsv.scipro.checklist.ChecklistAnswer;
import se.su.dsv.scipro.checklist.ChecklistQuestion;
import se.su.dsv.scipro.profile.UserLabel;
import java.util.List;
public class ChecklistAnswerCommentPanel extends Panel {
static final String TABLE = "table";
@ -21,7 +23,7 @@ public class ChecklistAnswerCommentPanel extends Panel {
public ChecklistAnswerCommentPanel(String id, IModel<ChecklistQuestion> question) {
super(id, question);
final var answers = LambdaModel.of(question, ChecklistQuestion::getAnswers, ChecklistQuestion::setAnswers);
final IModel<List<ChecklistAnswer>> answers = LambdaModel.of(question, ChecklistQuestion::getAnswers, ChecklistQuestion::setAnswers);
WebMarkupContainer table = new WebMarkupContainer(TABLE) {
@Override
protected void onConfigure() {

@ -9,6 +9,8 @@ import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.resource.JQueryPluginResourceReference;
import org.joda.time.*;
import java.util.Date;
public class BootstrapTimeField extends DateTextField {
public BootstrapTimeField(String id) {
super(id, "HH:mm");
@ -56,13 +58,13 @@ public class BootstrapTimeField extends DateTextField {
@Override
public void updateModel() {
var currentDate = getModelObject();
Date currentDate = getModelObject();
if (currentDate == null) {
super.updateModel();
} else {
var date = new LocalDate(currentDate);
var time = new LocalTime(getConvertedInput());
var dateTime = date.toLocalDateTime(time);
LocalDate date = new LocalDate(currentDate);
LocalTime time = new LocalTime(getConvertedInput());
LocalDateTime dateTime = date.toLocalDateTime(time);
setModelObject(dateTime.toDate());
}
}

@ -28,6 +28,7 @@ import se.su.dsv.scipro.project.ProjectService;
import se.su.dsv.scipro.security.auth.roles.Roles;
import se.su.dsv.scipro.session.SciProSession;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.util.Either;
import se.su.dsv.scipro.util.JavascriptEventConfirmation;
import java.util.HashSet;
@ -79,12 +80,12 @@ public class SeminarCRUDPanel extends GenericPanel<FinalSeminar> {
super(id, seminar);
add(new FencedFeedbackPanel("feedback", SeminarCRUDPanel.this));
var maxParticipants = new RequiredTextField<>(MAX_PARTICIPANTS,
RequiredTextField<Integer> maxParticipants = new RequiredTextField<>(MAX_PARTICIPANTS,
LambdaModel.of(seminar, FinalSeminar::getMaxParticipants, FinalSeminar::setMaxParticipants),
Integer.class);
add(maxParticipants.add(RangeValidator.minimum(getModelObject().getMinActiveParticipants())));
var maxOpponents = new RequiredTextField<>(MAX_OPPONENTS,
RequiredTextField<Integer> maxOpponents = new RequiredTextField<>(MAX_OPPONENTS,
LambdaModel.of(seminar, FinalSeminar::getMaxOpponents, FinalSeminar::setMaxOpponents),
Integer.class);
add(maxOpponents.add(RangeValidator.minimum(getModelObject().getMinOpponents())));
@ -139,7 +140,7 @@ public class SeminarCRUDPanel extends GenericPanel<FinalSeminar> {
}
});
var languages = java.util.Arrays.asList(Language.values());
List<Language> languages = java.util.Arrays.asList(Language.values());
if (getModelObject().getPresentationLanguage() == null) {
getModelObject().setPresentationLanguage(getModelObject().getProject().getLanguage());
@ -164,7 +165,7 @@ public class SeminarCRUDPanel extends GenericPanel<FinalSeminar> {
add(new ConfirmationLink<>(DELETE, seminar, new StringResourceModel("confirm", this)) {
@Override
public void onClick() {
var project = getModelObject().getProject();
Project project = getModelObject().getProject();
seminarService.delete(getModelObject());
setModelObject(new FinalSeminar(project));
success(getString("deleted"));
@ -274,7 +275,7 @@ public class SeminarCRUDPanel extends GenericPanel<FinalSeminar> {
private Optional<Project> getPotentialParticipantProject(User participant, ProjectType projectType) {
var projects = projectService.getActiveProjects(participant, projectType);
List<Project> projects = projectService.getActiveProjects(participant, projectType);
if (projects.size() == 1) {
return Optional.of(projects.get(0));
} else {
@ -284,13 +285,13 @@ public class SeminarCRUDPanel extends GenericPanel<FinalSeminar> {
private void addOpponentsTo(FinalSeminar finalSeminar) {
for (User potentialOpponent : opponents.getModelObject()) {
var maybeProject = getPotentialParticipantProject(potentialOpponent, finalSeminar.getProjectType());
Optional<Project> maybeProject = getPotentialParticipantProject(potentialOpponent, finalSeminar.getProjectType());
if (maybeProject.isEmpty()) {
error(getString("opponent.no.project", Model.of(potentialOpponent)));
} else {
final Project project = maybeProject.get();
var result = seminarService.oppose(potentialOpponent, finalSeminar, project);
Either<OpposeError, FinalSeminarOpposition> result = seminarService.oppose(potentialOpponent, finalSeminar, project);
result.fold(
error -> {
switch (error) {

@ -183,9 +183,9 @@ public class SeminarThesisPanel extends GenericPanel<FinalSeminar> {
@Override
protected void onConfigure() {
super.onConfigure();
final var hasThesis = seminarService.hasThesis(getModelObject());
final var seminarHasHappened = getModelObject().getStartDate() != null && getModelObject().getStartDate().before(new Date());
final var isAuthor = getModelObject().getProject().isParticipant(SciProSession.get().getUser());
final boolean hasThesis = seminarService.hasThesis(getModelObject());
final boolean seminarHasHappened = getModelObject().getStartDate() != null && getModelObject().getStartDate().before(new Date());
final boolean isAuthor = getModelObject().getProject().isParticipant(SciProSession.get().getUser());
setVisible(hasThesis && !seminarHasHappened && isAuthor);
}

@ -26,6 +26,7 @@ import se.su.dsv.scipro.notifications.dataobject.NotificationSource;
import se.su.dsv.scipro.session.SciProSession;
import javax.inject.Inject;
import java.time.Instant;
import java.time.ZoneId;
import java.util.Date;
@ -89,7 +90,7 @@ public class FirstMeetingPanel extends GenericPanel<Idea> {
private Date getCourseStartDate() {
ApplicationPeriod period = getModelObject().getApplicationPeriod();
if (period != null) {
final var courseStartDateTime = period.getCourseStartDateTime()
final Instant courseStartDateTime = period.getCourseStartDateTime()
.atZone(ZoneId.systemDefault())
.toInstant();
return Date.from(courseStartDateTime);

@ -90,7 +90,7 @@ public class SupervisorGradingPage extends AbstractSupervisorProjectDetailsPage
@Override
protected void populateItem(final ListItem<User> item) {
item.add(new UserLabel("authorName", item.getModel()));
final var examinations = SupervisorGradingPage.this.getExaminations(item.getModel());
final IModel<List<Examination>> examinations = SupervisorGradingPage.this.getExaminations(item.getModel());
final IModel<List<Examination>> nonGradedExaminations = getSpecificExaminations(examinations, false);
item.add(new NonGradedPanel(

@ -22,7 +22,7 @@ public class IdeaDownloadPanel extends GenericPanel<Idea> {
}
private String getIdeaString() {
final var idea = getModelObject();
final Idea idea = getModelObject();
StringBuilder sb = new StringBuilder("<<IDEA SPECIFICATION>>");
String separator = System.getProperty("line.separator");
sb.append(separator).append(separator);

@ -8,7 +8,7 @@ public class IdeaTholanderInfoPanel extends Panel {
public IdeaTholanderInfoPanel(String id, IModel<Idea> model) {
super(id, model);
final var tholanderModel = model.map(Idea::getTholanderBox);
final IModel<TholanderBox> tholanderModel = model.map(Idea::getTholanderBox);
add(new Label("background", replaceEmpty(tholanderModel.map(TholanderBox::getBackground))));
add(new Label("literature", replaceEmpty(tholanderModel.map(TholanderBox::getLiterature))));
add(new Label("problem", replaceEmpty(tholanderModel.map(TholanderBox::getProblem))));

@ -123,7 +123,7 @@ public class ProjectAllSupervisorIdeasPanel extends GenericPanel<ApplicationPeri
}
private void addFiltering() {
var projectTypes = getModel()
IModel<List<ProjectType>> projectTypes = getModel()
.map(ApplicationPeriod::getProjectTypes)
.map(projectTypes1 -> projectTypes1.stream()
.filter(this::isCorrectDegreeType)

@ -24,11 +24,11 @@ public class ProjectIdeaDetailsPage extends AbstractIdeaProjectPage implements M
throw new RestartResponseException(getApplication().getHomePage());
}
final var idea = ideaService.findOne(ideaId);
final Idea idea = ideaService.findOne(ideaId);
if (idea == null) {
throw new RestartResponseException(getApplication().getHomePage());
}
final var isAuthor = idea
final boolean isAuthor = idea
.getIdeaParticipations()
.stream()
.anyMatch(ideaParticipation -> ideaParticipation.getUser().equals(getUser()));
@ -36,7 +36,7 @@ public class ProjectIdeaDetailsPage extends AbstractIdeaProjectPage implements M
throw new RestartResponseException(getApplication().getHomePage());
}
final var ideaModel = new DetachableServiceModel<>(ideaService, idea);
final DetachableServiceModel<Idea> ideaModel = new DetachableServiceModel<>(ideaService, idea);
add(new Label("title", ideaModel.map(Idea::getTitle)));
add(new CompleteIdeaDialogPanel("complete_supervisor_idea", ideaModel) {
@Override

@ -105,7 +105,7 @@ public class ProjectIdeaSubmissionPanel extends GenericPanel<Idea> {
super(id, model);
this.isNewIdea = isNewIdea;
this.creator = SciProSession.get().getUser();
final var generalSystemSettings = LoadableDetachableModel.of(generalSystemSettingsService::getGeneralSystemSettingsInstance);
final LoadableDetachableModel<GeneralSystemSettings> generalSystemSettings = LoadableDetachableModel.of(generalSystemSettingsService::getGeneralSystemSettingsInstance);
supportMail = generalSystemSettings.map(GeneralSystemSettings::getActiveProjectIdeaSupportMail);
addProjectTypeSelection();
addLanguageSelection();
@ -142,7 +142,7 @@ public class ProjectIdeaSubmissionPanel extends GenericPanel<Idea> {
}
private void addProjectTypeSelection() {
var projectTypes = getModel()
IModel<List<ProjectType>> projectTypes = getModel()
.map(Idea::getApplicationPeriod)
.map(ApplicationPeriod::getProjectTypes)
.map(projectTypes1 -> projectTypes1.stream()
@ -161,9 +161,9 @@ public class ProjectIdeaSubmissionPanel extends GenericPanel<Idea> {
@Override
protected void onConfigure() {
super.onConfigure();
final var selectedProjectType = getModelObject().getProjectType();
final ProjectType selectedProjectType = getModelObject().getProjectType();
if (selectedProjectType != null) {
final var hasActiveProject = !projectService
final boolean hasActiveProject = !projectService
.getActiveProjects(SciProSession.get().getUser(), selectedProjectType)
.isEmpty();
setVisible(hasActiveProject);
@ -204,9 +204,9 @@ public class ProjectIdeaSubmissionPanel extends GenericPanel<Idea> {
@Override
protected void onConfigure() {
super.onConfigure();
final var selectedProjectType = getModelObject().getProjectType();
final ProjectType selectedProjectType = getModelObject().getProjectType();
if (selectedProjectType != null) {
final var partnerHasActiveProject = coAuthorChoice.getModelObject()
final boolean partnerHasActiveProject = coAuthorChoice.getModelObject()
.stream()
.map(partner -> projectService.getActiveProjects(partner, selectedProjectType))
.flatMap(Collection::stream)
@ -243,7 +243,7 @@ public class ProjectIdeaSubmissionPanel extends GenericPanel<Idea> {
}
};
add(program);
final var currentProgram = getModelObject().getIdeaParticipations()
final Program currentProgram = getModelObject().getIdeaParticipations()
.stream()
.filter(ip -> ip.getUser().equals(student))
.findAny()
@ -274,7 +274,7 @@ public class ProjectIdeaSubmissionPanel extends GenericPanel<Idea> {
}
private void addTholanderFields() {
final var tholanderModel = getModel().map(Idea::getTholanderBox);
final IModel<TholanderBox> tholanderModel = getModel().map(Idea::getTholanderBox);
CounterTextArea what = new CounterTextArea("background", LambdaModel.of(tholanderModel, TholanderBox::getBackground, TholanderBox::setBackground), TholanderBox.MAX_CHARS);
what.setRequired(true);
add(what);

@ -6,6 +6,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValueConversionException;
import se.su.dsv.scipro.activityplan.ProjectActivityPlanPage;
import se.su.dsv.scipro.activityplan.SupervisorActivityPlanPage;
import se.su.dsv.scipro.finalseminar.FinalSeminar;
import se.su.dsv.scipro.finalseminar.ProjectFinalSeminarDetailsPage;
import se.su.dsv.scipro.finalseminar.ProjectFinalSeminarPage;
import se.su.dsv.scipro.finalseminar.SupervisorFinalSeminarPage;
@ -14,6 +15,7 @@ import se.su.dsv.scipro.forum.pages.SupervisorForumBasePage;
import se.su.dsv.scipro.grading.SupervisorGradingReportPage;
import se.su.dsv.scipro.group.AuthorGroupPage;
import se.su.dsv.scipro.group.Group;
import se.su.dsv.scipro.match.Idea;
import se.su.dsv.scipro.match.ProjectIdeaStartPage;
import se.su.dsv.scipro.match.SupervisorIdeaStartPage;
import se.su.dsv.scipro.milestones.pages.ProjectMileStonePage;
@ -54,7 +56,7 @@ public class NotificationLandingPage extends WebPage {
Optional<NotificationEvent> optionalNotificationEvent;
try {
final var id = pp.get("id").toLong();
final long id = pp.get("id").toLong();
optionalNotificationEvent = notificationEventService.findOne(id);
} catch (StringValueConversionException ignored) {
throw new RestartResponseException(getApplication().getHomePage());
@ -64,7 +66,7 @@ public class NotificationLandingPage extends WebPage {
throw new RestartResponseException(getApplication().getHomePage());
}
final var notificationEvent = optionalNotificationEvent.get();
final NotificationEvent notificationEvent = optionalNotificationEvent.get();
notificationService.setRead(SciProSession.get().getUser(), notificationEvent, true);
// Default to home page if event doesn't override
setResponsePage(getApplication().getHomePage());
@ -103,10 +105,10 @@ public class NotificationLandingPage extends WebPage {
}
private void redirectToProjectNotificationPage(final ProjectEvent projectEvent) {
final var currentUser = SciProSession.get().getUser();
final var project = projectEvent.getProject();
final User currentUser = SciProSession.get().getUser();
final Project project = projectEvent.getProject();
final var pp = new PageParameters();
final PageParameters pp = new PageParameters();
pp.set(PageParameterKeys.MAP.get(Project.class), project.getId());
final BiConsumer<Class<? extends WebPage>, Class<? extends WebPage>> defaultSplit =
@ -151,7 +153,7 @@ public class NotificationLandingPage extends WebPage {
case FINAL_SEMINAR_APPROVAL_REQUESTED:
case FINAL_SEMINAR_APPROVAL_APPROVED:
case FINAL_SEMINAR_APPROVAL_REJECTED:
final var finalSeminarApprovalPP = new PageParameters(pp);
final PageParameters finalSeminarApprovalPP = new PageParameters(pp);
finalSeminarApprovalPP.set("anchor", "finalSeminarApproval");
if (project.isSupervisor(currentUser)) {
setResponsePage(SupervisorInteractWithReviewerPage.class, finalSeminarApprovalPP);
@ -187,8 +189,8 @@ public class NotificationLandingPage extends WebPage {
}
private void redirectToIdeaNotificationPage(final IdeaEvent ideaEvent) {
final var currentUser = SciProSession.get().getUser();
final var idea = ideaEvent.getIdea();
final User currentUser = SciProSession.get().getUser();
final Idea idea = ideaEvent.getIdea();
if (idea.getIdeaParticipations().stream().anyMatch(ip -> ip.getUser().equals(currentUser))) {
setResponsePage(ProjectIdeaStartPage.class);
@ -199,10 +201,10 @@ public class NotificationLandingPage extends WebPage {
}
private void redirectToSeminarNotificationPage(final SeminarEvent seminarEvent) {
final var currentUser = SciProSession.get().getUser();
final var seminar = seminarEvent.getSeminar();
final User currentUser = SciProSession.get().getUser();
final FinalSeminar seminar = seminarEvent.getSeminar();
final var pp = new PageParameters();
final PageParameters pp = new PageParameters();
pp.set(PageParameterKeys.MAP.get(Project.class), seminar.getProject().getId());
if (seminar.getProject().isParticipant(currentUser)) {
@ -217,15 +219,15 @@ public class NotificationLandingPage extends WebPage {
}
private void redirectToPeerReviewNotificationPage(final PeerEvent peerEvent) {
final var currentUser = SciProSession.get().getUser();
final var peerReview = peerEvent.getReview();
final var requesterProject = peerReview.getPeerRequest().getProject();
final User currentUser = SciProSession.get().getUser();
final PeerReview peerReview = peerEvent.getReview();
final Project requesterProject = peerReview.getPeerRequest().getProject();
final var requesterPP = new PageParameters();
final PageParameters requesterPP = new PageParameters();
requesterPP.set(PageParameterKeys.MAP.get(Project.class), requesterProject.getId());
requesterPP.set(PageParameterKeys.MAP.get(PeerReview.class), peerReview.getId());
final var reviewerPP = new PageParameters(requesterPP);
final PageParameters reviewerPP = new PageParameters(requesterPP);
reviewerPP.set(PageParameterKeys.MAP.get(Project.class), peerReview.getProject().getId());
switch (peerEvent.getEvent()) {
@ -247,21 +249,21 @@ public class NotificationLandingPage extends WebPage {
}
private void redirectToPeerRequestNotificationPage(final PeerRequestEvent peerRequestEvent) {
final var currentUser = SciProSession.get().getUser();
final var peerRequest = peerRequestEvent.getRequest();
final User currentUser = SciProSession.get().getUser();
final PeerRequest peerRequest = peerRequestEvent.getRequest();
switch (peerRequestEvent.getEvent()) {
case REQUEST_DELETED:
if (peerRequest.getRequester().equals(currentUser)) {
final var pp = new PageParameters();
final PageParameters pp = new PageParameters();
pp.set(PageParameterKeys.MAP.get(Project.class), peerRequestEvent.getProject().getId());
setResponsePage(PeerPortalPage.class, pp);
}
break;
case REQUEST_EXPIRED:
final var peerReview = peerRequest.getPeerReviews().stream().filter(pr -> pr.getReviewer().equals(currentUser)).findAny();
final Optional<PeerReview> peerReview = peerRequest.getPeerReviews().stream().filter(pr -> pr.getReviewer().equals(currentUser)).findAny();
if (peerReview.isPresent()) {
final var pp = new PageParameters();
final PageParameters pp = new PageParameters();
pp.set(PageParameterKeys.MAP.get(Project.class), peerReview.get().getProject().getId());
setResponsePage(PeerPortalPage.class, pp);
}
@ -270,16 +272,16 @@ public class NotificationLandingPage extends WebPage {
}
private void redirectToMilestoneNotificationPage(final MileStoneEvent mileStoneEvent) {
final var pp = new PageParameters();
final PageParameters pp = new PageParameters();
pp.set(PageParameterKeys.MAP.get(Project.class), mileStoneEvent.getProject().getId());
roleSplit(SciProSession.get().getUser(), mileStoneEvent.getProject(), ProjectMileStonePage.class, SupervisorMileStonePage.class, pp);
}
private void redirectToGroupNotificationPage(final GroupEvent groupEvent) {
final var currentUser = SciProSession.get().getUser();
final var group = groupEvent.getGroup();
final User currentUser = SciProSession.get().getUser();
final Group group = groupEvent.getGroup();
final var pp = new PageParameters();
final PageParameters pp = new PageParameters();
pp.set(PageParameterKeys.MAP.get(Group.class), group.getId());
if (group.getProjects().stream().anyMatch(project -> hasSupervisingRole(project, currentUser))) {
@ -291,10 +293,10 @@ public class NotificationLandingPage extends WebPage {
}
private void redirectToForumNotificationPage(final ProjectForumEvent projectForumEvent) {
final var currentUser = SciProSession.get().getUser();
final var project = projectForumEvent.getProject();
final User currentUser = SciProSession.get().getUser();
final Project project = projectForumEvent.getProject();
final var pp = new PageParameters();
final PageParameters pp = new PageParameters();
pp.set(PageParameterKeys.MAP.get(Project.class), project.getId());
switch (projectForumEvent.getEvent()) {

@ -72,7 +72,7 @@ public class PeerRequestSelectionPanel extends GenericPanel<Project> {
private void addInfoBox() {
add(new Label(CURRENTLY_AWAITING, new StringResourceModel("currentlyAwaiting").setParameters(
peerRequestService.countAvailableRequests(getUser(), RequestStatus.WAITING, getModelObject().getProjectType()))));
final var projectTypeSettingsModel = getModel().map(Project::getProjectType).map(ProjectType::getProjectTypeSettings);
final IModel<ProjectTypeSettings> projectTypeSettingsModel = getModel().map(Project::getProjectType).map(ProjectType::getProjectTypeSettings);
add(new Label(DAYS_TO_SUBMIT, new StringResourceModel("daysToSubmit", projectTypeSettingsModel)));
add(new Label(RECENTLY_REVIEWED, new StringResourceModel("recentlyReviewed", projectTypeSettingsModel)));
}

@ -41,7 +41,7 @@ public class DisplayUserProfilePanel extends GenericPanel<User> {
add(new ExternalLink(MAIL, "mailto:" + model.getObject().getEmailAddress(), model.getObject().getEmailAddress()));
final var profileModel = getProfile();
final IModel<UserProfile> profileModel = getProfile();
add(new Label(SKYPE, new NullReplacementModel(LambdaModel.of(profileModel, UserProfile::getSkypeId, UserProfile::setSkypeId), "Not entered")));
add(new Label(PHONE, new NullReplacementModel(LambdaModel.of(profileModel, UserProfile::getPhoneNumber, UserProfile::setPhoneNumber), "Not entered")));

@ -96,7 +96,7 @@ public class ProjectDetailsPage extends AbstractProjectDetailsPage implements Me
@Override
protected void onConfigure() {
super.onConfigure();
final var shouldFillOutSurvey = surveyService.shouldFillOutSurvey(getActiveProject(), SciProSession.get().getUser());
final boolean shouldFillOutSurvey = surveyService.shouldFillOutSurvey(getActiveProject(), SciProSession.get().getUser());
setVisibilityAllowed(shouldFillOutSurvey);
}
});

@ -20,6 +20,7 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.ProjectStatus;
import se.su.dsv.scipro.project.pages.*;
import se.su.dsv.scipro.report.GradingReportService;
import se.su.dsv.scipro.report.SupervisorGradingReport;
import se.su.dsv.scipro.session.SciProSession;
import javax.inject.Inject;
@ -62,7 +63,7 @@ public class ProjectSubTabMenuPanel extends AbstractMenuPanel {
@Override
protected List<MenuItem> getItemList() {
final var project = active.getObject();
final Project project = active.getObject();
List<MenuItem> itemList = new ArrayList<>();
itemList.add(new MenuItem(OVERVIEW, ProjectDetailsPage.class, projectParams));
if (milestoneActivityTemplateService.countActivities(project.getProjectType(), project.getDateCreated()) != 0) {
@ -79,7 +80,7 @@ public class ProjectSubTabMenuPanel extends AbstractMenuPanel {
itemList.add(new MenuItem(OPPOSITION_ACTIVE_PARTICIPATION, ProjectOppositionPage.class, MenuHighlightAuthorOpposition.class, projectParams));
itemList.add(new MenuItem(ADMIN, ProjectAdminPage.class, projectParams));
if (gradingReportService.getTemplate(project) != null) {
final var supervisorGradingReport = gradingReportService.getSupervisorGradingReport(project, SciProSession.get().getUser());
final SupervisorGradingReport supervisorGradingReport = gradingReportService.getSupervisorGradingReport(project, SciProSession.get().getUser());
if (supervisorGradingReport.isSubmitted() && project.getProjectStatus() == ProjectStatus.COMPLETED) {
itemList.add(new MenuItem(GRADING_REPORT, ProjectGradingReportPage.class, projectParams));
}

@ -58,7 +58,7 @@ public class SupervisorEditProjectPanel extends GenericPanel<Project> {
private void initComponents() {
add(new RequiredTextField<>(TITLE, LambdaModel.of(getModel(), Project::getTitle, Project::setTitle)));
final var expectedEndDate = new TextField<>(
final TextField<LocalDate> expectedEndDate = new TextField<>(
"expected_end_date",
LambdaModel.of(getModel(), Project::getExpectedEndDate, Project::setExpectedEndDate),
LocalDate.class);

@ -18,6 +18,7 @@ import se.su.dsv.scipro.file.*;
import se.su.dsv.scipro.files.WicketFileUpload;
import se.su.dsv.scipro.forum.panels.threaded.SubmitForumReplyPanel;
import se.su.dsv.scipro.grading.*;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.panels.ProjectHeaderPanel;
import se.su.dsv.scipro.report.GradingReportService;
import se.su.dsv.scipro.report.ReviewerGradingReport;
@ -45,7 +46,7 @@ public class ReviewerApprovalDecisionPage extends ReviewerPage {
public ReviewerApprovalDecisionPage(PageParameters pp) {
super(pp);
final var id = pp.get(PAGE_PARAMETER_ID).toLong();
final long id = pp.get(PAGE_PARAMETER_ID).toLong();
approval = LoadableDetachableModel.of(() -> myReviewService.findApproval(id));
if (!approval.getObject().getProject().isReviewer(getUser())) {
throw new RestartResponseException(getApplication().getHomePage());
@ -53,7 +54,7 @@ public class ReviewerApprovalDecisionPage extends ReviewerPage {
setDefaultModel(approval);
final var project = approval.map(ReviewerApproval::getProject);
final IModel<Project> project = approval.map(ReviewerApproval::getProject);
add(new ProjectHeaderPanel("projectHeader", project));
add(new InfoPanel("info", new ResourceModel("info")));
add(new SubmitForumReplyPanel<>("communication", project, new ReviewerInteractionForumThread(reviewerInteractionService, fileDescriptionService)));
@ -71,10 +72,10 @@ public class ReviewerApprovalDecisionPage extends ReviewerPage {
public DecisionForm(String id, IModel<ReviewerApproval> reviewerApproval) {
super(id, reviewerApproval);
add(new FencedFeedbackPanel("feedbackPanel", this));
var feedback = new TextArea<>("feedback", Model.of(""));
TextArea<String> feedback = new TextArea<>("feedback", Model.of(""));
feedback.setRequired(true);
add(feedback);
var attachment = new FileUploadField("attachment");
FileUploadField attachment = new FileUploadField("attachment");
add(attachment);
gradingReport = LoadableDetachableModel.of(() -> gradingReportService.getReviewerGradingReport(reviewerApproval.getObject().getProject()));
@ -168,9 +169,9 @@ public class ReviewerApprovalDecisionPage extends ReviewerPage {
private Optional<FileDescription> getAttachedGradingReport() {
if (attachGradingReport.getObject()) {
var gradingReportPdf = new ProjectCriteriaGradingReportPdf(gradingReport.getObject());
var upload = new GradingReportPdfResourceFileUpload(gradingReportPdf, gradingReport.getObject().getProject().getReviewer());
var gradingReportFile = fileDescriptionService.storeFile(upload);
ProjectCriteriaGradingReportPdf gradingReportPdf = new ProjectCriteriaGradingReportPdf(gradingReport.getObject());
GradingReportPdfResourceFileUpload upload = new GradingReportPdfResourceFileUpload(gradingReportPdf, gradingReport.getObject().getProject().getReviewer());
FileDescription gradingReportFile = fileDescriptionService.storeFile(upload);
return Optional.ofNullable(gradingReportFile);
} else {
return Optional.empty();
@ -192,7 +193,7 @@ public class ReviewerApprovalDecisionPage extends ReviewerPage {
}
public static PageParameters pageParametersFor(ReviewerApproval approval) {
var parameters = new PageParameters();
PageParameters parameters = new PageParameters();
parameters.set(PAGE_PARAMETER_ID, approval.getId());
return parameters;
}

@ -29,9 +29,11 @@ import se.su.dsv.scipro.repository.panels.ViewAttachmentPanel;
import se.su.dsv.scipro.reviewer.timeline.TimelinePanel;
import se.su.dsv.scipro.reviewing.ReviewerInteractionService;
import se.su.dsv.scipro.session.SciProSession;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.util.PageParameterKeys;
import javax.inject.Inject;
import java.util.List;
public class ReviewerGradingPage extends ReviewerPage {
@Inject
@ -66,7 +68,7 @@ public class ReviewerGradingPage extends ReviewerPage {
add(new InfoPanel("info", new ResourceModel("info")));
add(new SubmitForumReplyPanel<>("communication", projectModel, new ReviewerInteractionForumThread(reviewerInteractionService, fileDescriptionService)));
add(new TimelinePanel("timeline", projectModel));
var externalGradingURL = generalSystemSettingsService.getGeneralSystemSettingsInstance().getExternalGradingURL();
String externalGradingURL = generalSystemSettingsService.getGeneralSystemSettingsInstance().getExternalGradingURL();
add(new ExternalLink("moreInformation", externalGradingURL) {
@Override
protected void onConfigure() {
@ -84,14 +86,14 @@ public class ReviewerGradingPage extends ReviewerPage {
}
private void addSupervisorReports(IModel<Project> projectModel) {
var supervisorReportsModel = LoadableDetachableModel.of(() ->
LoadableDetachableModel<List<SupervisorGradingReport>> supervisorReportsModel = LoadableDetachableModel.of(() ->
gradingReportService.getSupervisorGradingReports(projectModel.getObject()));
add(new ListView<>("supervisorReportTabs", supervisorReportsModel) {
@Override
protected void populateItem(ListItem<SupervisorGradingReport> item) {
var author = item.getModel().map(SupervisorGradingReport::getUser);
var tabTitle = new StringResourceModel("supervisor.grading.report", author);
IModel<User> author = item.getModel().map(SupervisorGradingReport::getUser);
StringResourceModel tabTitle = new StringResourceModel("supervisor.grading.report", author);
item.add(new ExternalLink("tab", Model.of("#author" + item.getIndex()), tabTitle));
}
});

@ -27,11 +27,11 @@ public class SupervisorApplicationPeriodStatisticsPanel extends GenericPanel<Use
public SupervisorApplicationPeriodStatisticsPanel(String id, IModel<User> supervisorModel) {
super(id, supervisorModel);
var targets = LoadableDetachableModel.of(() ->
LoadableDetachableModel<List<PeriodTypeTarget>> targets = LoadableDetachableModel.of(() ->
upcomingPeriods().stream()
.flatMap(period -> period.getProjectTypes().stream()
.map(projectType -> {
final var target = targetService.findOne(period, supervisorModel.getObject(), projectType);
final Target target = targetService.findOne(period, supervisorModel.getObject(), projectType);
return new PeriodTypeTarget(period, projectType, target);
}))
.filter(ptt -> ptt.getTarget().getTarget() > 0)

@ -11,6 +11,7 @@ import se.su.dsv.scipro.components.BootstrapDateTimeComponent;
import se.su.dsv.scipro.data.enums.DateStyle;
import se.su.dsv.scipro.date.DateService;
import se.su.dsv.scipro.firstmeeting.FirstMeetingService;
import se.su.dsv.scipro.firstmeeting.ProjectFirstMeeting;
import se.su.dsv.scipro.notifications.NotificationController;
import se.su.dsv.scipro.notifications.dataobject.NotificationSource;
import se.su.dsv.scipro.notifications.dataobject.ProjectEvent;
@ -51,7 +52,7 @@ public class SupervisorFirstMeetingPage extends AbstractSupervisorProjectDetails
@Override
protected void onSubmit() {
success("First meeting scheduled");
final var firstMeeting = firstMeetingService.schedule(projectModel.getObject(), date.getObject(), room.getObject(), description.getObject());
final ProjectFirstMeeting firstMeeting = firstMeetingService.schedule(projectModel.getObject(), date.getObject(), room.getObject(), description.getObject());
NotificationSource source = new NotificationSource();
String date = dateService.format(firstMeeting.getDate(), DateStyle.DATETIME);
String room = firstMeeting.getRoom();

@ -113,7 +113,7 @@ public class AdminEditApplicationPeriodPageTest extends SciProTest {
private void fillInForm(String title, int startDate, int endDate, int courseStartDate, FormTester formTester) {
formTester.setValue(TITLE, title);
final var now = LocalDate.now();
final LocalDate now = LocalDate.now();
formTester.setValue(START_DATE, now.plusDays(startDate).toString());
formTester.setValue(END_DATE, now.plusDays(endDate).toString());
formTester.setValue(COURSE_START_DATE, now.plusDays(courseStartDate).toString());

@ -319,7 +319,7 @@ public class SeminarThesisPanelTest extends SciProTest {
}
private void startPanel() {
final var seminar = new FinalSeminar();
final FinalSeminar seminar = new FinalSeminar();
seminar.setStartDate(new Date());
startPanel(seminar);
}

@ -22,6 +22,7 @@ import se.su.dsv.scipro.test.UserBuilder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import static java.lang.String.format;
@ -38,7 +39,7 @@ public class FirstMeetingPanelTest extends SciProTest {
LocalDate courseStartDate = LocalDate.now();
idea = createCompletedIdea(courseStartDate);
final var firstMetingDate = idea.getApplicationPeriod()
final ZonedDateTime firstMetingDate = idea.getApplicationPeriod()
.getCourseStartDateTime()
.atZone(ZoneId.systemDefault());
firstMeeting = new FirstMeeting(Date.from(firstMetingDate.toInstant()), idea);