Remove dependency on joda-time

This commit is contained in:
Andreas Svanberg 2022-09-21 15:12:18 +02:00
parent 92d12bd5b2
commit 264fcb754a
45 changed files with 354 additions and 308 deletions
core/src
daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/workers
pom.xml
view/src

@ -1,15 +1,15 @@
package se.su.dsv.scipro.peer;
import com.google.common.eventbus.EventBus;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.su.dsv.scipro.system.ProjectTypeSettings;
import se.su.dsv.scipro.workerthreads.AbstractWorker;
import javax.inject.Inject;
import java.util.Date;
import java.util.List;
import java.time.Duration;
import java.time.Instant;
import java.util.*;
public class ExpiredRequestWorker extends AbstractWorker {
@ -26,11 +26,11 @@ public class ExpiredRequestWorker extends AbstractWorker {
try {
List<PeerRequest> requests = peerRequestService.findByStatus(RequestStatus.WAITING);
final DateTime now = new DateTime();
final Instant now = Instant.now();
for (PeerRequest request : requests) {
ProjectTypeSettings settings = request.getProject().getProjectType().getProjectTypeSettings();
Date expirationDate = now.minusDays(settings.getNumDaysBeforePeerGetsCancelled()).toDate();
Date expirationDate = Date.from(now.minus(Duration.ofDays(settings.getNumDaysBeforePeerGetsCancelled())));
if (request.getDateCreated().compareTo(expirationDate) < 0) {
LOGGER.info("Peer Request: " + request + " has now been waiting for " + settings.getNumDaysBeforePeerGetsCancelled() + " days and has been removed.");

@ -1,14 +1,11 @@
package se.su.dsv.scipro.peer;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.su.dsv.scipro.system.ProjectTypeSettings;
import se.su.dsv.scipro.workerthreads.AbstractWorker;
import javax.inject.Inject;
import java.util.Date;
import java.util.List;
import java.util.*;
public class ExpiredReviewResetWorker extends AbstractWorker {

@ -2,18 +2,24 @@ package se.su.dsv.scipro.peer;
import com.google.common.eventbus.EventBus;
import com.google.inject.persist.Transactional;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.su.dsv.scipro.file.*;
import se.su.dsv.scipro.file.FileDescription;
import se.su.dsv.scipro.file.FileReference;
import se.su.dsv.scipro.file.FileService;
import se.su.dsv.scipro.file.FileSource;
import se.su.dsv.scipro.file.FileUpload;
import se.su.dsv.scipro.file.ProjectFileService;
import se.su.dsv.scipro.misc.DaysService;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.ProjectTypeSettings;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.util.Date;
import java.util.Optional;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.*;
import java.util.function.Consumer;
import static com.querydsl.core.types.dsl.Expressions.allOf;
@ -28,6 +34,7 @@ public class PeerPortalImpl implements PeerPortal, PerformReviewService {
private final EventBus eventBus;
private final ProjectFileService projectFileService;
private final DaysService daysService;
private final Clock clock;
@Inject
public PeerPortalImpl(FileService fileDescriptionService,
@ -35,7 +42,8 @@ public class PeerPortalImpl implements PeerPortal, PerformReviewService {
PeerRequestRepository peerRequestRepository,
EventBus eventBus,
final ProjectFileService projectFileService,
final DaysService daysService)
final DaysService daysService,
Clock clock)
{
this.fileDescriptionService = fileDescriptionService;
this.peerReviewRepository = peerReviewRepository;
@ -43,6 +51,7 @@ public class PeerPortalImpl implements PeerPortal, PerformReviewService {
this.eventBus = eventBus;
this.projectFileService = projectFileService;
this.daysService = daysService;
this.clock = clock;
}
@Override
@ -99,9 +108,8 @@ public class PeerPortalImpl implements PeerPortal, PerformReviewService {
ProjectTypeSettings settings = requestingProject.getProjectType().getProjectTypeSettings();
int daysBetweenReviewsOnSameProject = settings.getNumDaysBetweenPeerReviewsOnSameProject();
DateTime earliestPermissibleDateSinceReview = new DateTime();
earliestPermissibleDateSinceReview = earliestPermissibleDateSinceReview
.minusDays(daysBetweenReviewsOnSameProject);
Instant earliestPermissibleDateSinceReview = clock.instant()
.minus(Duration.ofDays(daysBetweenReviewsOnSameProject));
QPeerReview qReview = QPeerReview.peerReview;
Iterable<PeerReview> performedReviews = peerReviewRepository.findAll(
@ -111,8 +119,7 @@ public class PeerPortalImpl implements PeerPortal, PerformReviewService {
for (PeerReview pr : performedReviews) {
boolean sameProject = pr.getPeerRequest().getProject().equals(requestingProject);
if (sameProject) {
boolean reviewPerformedBeforeLimit = pr.getLastModified().compareTo(
earliestPermissibleDateSinceReview.toDate()) > 0;
boolean reviewPerformedBeforeLimit = pr.getLastModified().after(Date.from(earliestPermissibleDateSinceReview));
if (reviewPerformedBeforeLimit) {
return true;
}

@ -5,27 +5,35 @@ import com.google.inject.persist.Transactional;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.dsl.BooleanExpression;
import org.joda.time.DateTime;
import org.springframework.data.domain.Pageable;
import se.su.dsv.scipro.data.dataobjects.Member;
import se.su.dsv.scipro.reusable.SciProUtilities;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.system.AbstractServiceImpl;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.QUser;
import se.su.dsv.scipro.system.Unit;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.*;
public class ProjectServiceImpl extends AbstractServiceImpl<Project, Long> implements ProjectService {
public static final int MIN_TITLE_LENGTH = 3;
private final ProjectRepo projectRepo;
private final Clock clock;
private final EventBus eventBus;
@Inject
public ProjectServiceImpl(ProjectRepo projectRepo, EventBus eventBus, Provider<EntityManager> em) {
public ProjectServiceImpl(ProjectRepo projectRepo, Clock clock, EventBus eventBus, Provider<EntityManager> em) {
super(em, Project.class, QProject.project);
this.projectRepo = projectRepo;
this.clock = clock;
this.eventBus = eventBus;
}
@ -173,7 +181,7 @@ public class ProjectServiceImpl extends AbstractServiceImpl<Project, Long> imple
return count(toPredicate(filter));
}
protected static Predicate toPredicate(Filter filter) {
protected Predicate toPredicate(Filter filter) {
BooleanBuilder predicate = new BooleanBuilder();
if (filter.getProjectTypes() != null) {
predicate.and(levelFilter(filter.getProjectTypes()));
@ -291,9 +299,11 @@ public class ProjectServiceImpl extends AbstractServiceImpl<Project, Long> imple
return QProject.project.title.containsIgnoreCase(searchTerm);
}
private static BooleanExpression hasBeenRedForTime(Integer redStateTime) {
private BooleanExpression hasBeenRedForTime(Integer redStateTime) {
if (redStateTime != null) {
return QProject.project.stateOfMindDate.before(new DateTime().minusDays(redStateTime).toDate()).and(QProject.project.stateOfMind.eq(StateOfMind.NEEDHELP));
final Instant now = clock.instant()
.minus(Duration.ofDays(redStateTime));
return QProject.project.stateOfMindDate.before(Date.from(now)).and(QProject.project.stateOfMind.eq(StateOfMind.NEEDHELP));
}
return null;
}

@ -3,7 +3,6 @@ package se.su.dsv.scipro.projectpartner;
import com.google.inject.persist.Transactional;
import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.jpa.JPAExpressions;
import org.joda.time.DateTime;
import org.springframework.data.domain.Pageable;
import se.su.dsv.scipro.match.ApplicationPeriod;
import se.su.dsv.scipro.match.QIdea;
@ -14,8 +13,9 @@ import se.su.dsv.scipro.system.ProjectType;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import java.util.Date;
import java.util.List;
import java.time.Duration;
import java.time.Instant;
import java.util.*;
public class ProjectPartnerServiceImpl extends AbstractServiceImpl<ProjectPartner,Long> implements ProjectPartnerService {
@ -29,7 +29,8 @@ public class ProjectPartnerServiceImpl extends AbstractServiceImpl<ProjectPartne
if (days == 0) {
return findAll(QProjectPartner.projectPartner.projectType.eq(projectType), pageable);
}
Date date = new DateTime().minusDays(days).toDate();
// TODO pull up as parameter to remove dependency on clock (Instant.now)
Date date = Date.from(Instant.now().minus(Duration.ofDays(days)));
return findAll(Expressions.allOf(
QProjectPartner.projectPartner.dateCreated.after(date),
QProjectPartner.projectPartner.projectType.eq(projectType),
@ -43,7 +44,8 @@ public class ProjectPartnerServiceImpl extends AbstractServiceImpl<ProjectPartne
if (days == 0) {
return count(QProjectPartner.projectPartner.projectType.eq(projectType));
}
Date date = new DateTime().minusDays(days).toDate();
// TODO pull up as parameter to remove dependency on clock (Instant.now)
Date date = Date.from(Instant.now().minus(Duration.ofDays(days)));
return count(Expressions.allOf(
QProjectPartner.projectPartner.dateCreated.after(date),
QProjectPartner.projectPartner.projectType.eq(projectType),

@ -1,6 +1,5 @@
package se.su.dsv.scipro.reviewing;
import org.joda.time.Instant;
import se.su.dsv.scipro.file.FileReference;
import javax.persistence.Basic;
@ -15,6 +14,7 @@ import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.time.Instant;
import java.util.*;
@Entity
@ -66,7 +66,7 @@ public class Decision {
Decision(ReviewerApproval reviewerApproval, final FileReference thesis, final Instant requested, final String comment, final Date deadline) {
this.reviewerApproval = reviewerApproval;
this.thesis = thesis;
this.requested = requested.toDate();
this.requested = Date.from(requested);
this.deadline = deadline;
this.comment = comment;
}
@ -139,7 +139,7 @@ public class Decision {
if (this.status != Status.UNDECIDED) {
throw new IllegalStateException();
}
this.decisionDate = decisionDate.toDate();
this.decisionDate = Date.from(decisionDate);
this.status = status;
this.reason = reason;
this.attachment = attachment.orElse(null);

@ -1,11 +1,14 @@
package se.su.dsv.scipro.workerthreads;
import org.joda.time.DateTime;
import se.su.dsv.scipro.finalseminar.FinalSeminar;
import se.su.dsv.scipro.finalseminar.FinalSeminarService;
import javax.inject.Inject;
import java.util.Date;
import java.time.Instant;
import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.util.*;
public class ThesisUploadDeadlineWorker extends AbstractWorker {
@ -21,15 +24,17 @@ public class ThesisUploadDeadlineWorker extends AbstractWorker {
/**
* Feature should not look at seminars held before this date
*/
DateTime validFrom = new DateTime();
validFrom = validFrom.withDate(2013, 8, 8);
Date validFrom = Date.from(Instant.now()
.atZone(ZoneId.systemDefault())
.with(LocalDate.of(2013, Month.AUGUST, 8))
.toInstant());
try {
FinalSeminarService.Filter params = new FinalSeminarService.Filter();
if (now.after(validFrom.toDate())) {
if (now.after(validFrom)) {
params.setFromDate(now);
} else {
params.setFromDate(validFrom.toDate());
params.setFromDate(validFrom);
}
params.setExempted(Boolean.FALSE);
params.setLazyDeleted(Boolean.FALSE);

@ -1,7 +1,6 @@
package se.su.dsv.scipro.activityplan;
import com.google.common.eventbus.EventBus;
import org.joda.time.MutableDateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
@ -20,11 +19,10 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ -68,9 +66,7 @@ public class ActivityPlanFacadeImplIntegrationTest extends IntegrationTest {
}
private Date getRelativeDate(int daysFromNow) {
MutableDateTime dateTime = new MutableDateTime();
dateTime.addDays(daysFromNow);
return dateTime.toDate();
return Date.from(Instant.now().plus(Duration.ofDays(daysFromNow)));
}
@Test

@ -1,7 +1,6 @@
package se.su.dsv.scipro.finalseminar;
import com.google.common.collect.Lists;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.data.domain.PageRequest;
@ -11,17 +10,25 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.report.GradingReportTemplate;
import se.su.dsv.scipro.report.OppositionReport;
import se.su.dsv.scipro.security.auth.roles.Roles;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.Language;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.Unit;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.CoreMatchers.anything;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static se.su.dsv.scipro.test.Matchers.isLeft;
import static se.su.dsv.scipro.test.Matchers.isRight;
@ -197,7 +204,8 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
addOpposition(unfinished, null);
addOpposition(unfinishedTooEarly, null);
List<FinalSeminar> seminars = finalSeminarService.findUnfinishedSeminars(null,new DateTime().plusDays(-5).toDate() , new PageRequest(0, 5) );
final Date before = Date.from(ZonedDateTime.now().minusDays(5).toInstant());
List<FinalSeminar> seminars = finalSeminarService.findUnfinishedSeminars(null, before, new PageRequest(0, 5) );
assertEquals(1, seminars.size());
assertThat(seminars, hasItem(unfinished));
}
@ -211,7 +219,8 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
addActiveParticipant(unfinished, null);
addActiveParticipant(unfinishedTooEarly, null);
List<FinalSeminar> seminars = finalSeminarService.findUnfinishedSeminars(null, new DateTime().plusDays(-5).toDate(), new PageRequest(0, 5));
final Date before = Date.from(ZonedDateTime.now().minusDays(5).toInstant());
List<FinalSeminar> seminars = finalSeminarService.findUnfinishedSeminars(null, before, new PageRequest(0, 5));
assertEquals(1, seminars.size());
assertThat(seminars, hasItem(unfinished));
}
@ -225,7 +234,8 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
addRespondent(unfinished, null);
addRespondent(unfinishedTooEarly, null);
List<FinalSeminar> seminars = finalSeminarService.findUnfinishedSeminars(null, new DateTime().plusDays(-5).toDate(), new PageRequest(0, 5));
final Date before = Date.from(ZonedDateTime.now().minusDays(5).toInstant());
List<FinalSeminar> seminars = finalSeminarService.findUnfinishedSeminars(null, before, new PageRequest(0, 5));
assertEquals(1, seminars.size());
assertThat(seminars, hasItem(unfinished));
}
@ -239,7 +249,8 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
addRespondent(unfinished, null);
addRespondent(unfinishedTooEarly, null);
assertEquals(1, finalSeminarService.countUnfinishedSeminars(null, new DateTime().plusDays(-5).toDate()));
final Date before = Date.from(ZonedDateTime.now().minusDays(5).toInstant());
assertEquals(1, finalSeminarService.countUnfinishedSeminars(null, before));
}
@Test
@ -269,7 +280,8 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
private FinalSeminar createFutureFinalSeminarSomeDaysAgo(final int daysAgo) {
FinalSeminar finalSeminar = initFinalSeminar(createProject(), 5);
finalSeminar.setDateCreated(new DateTime().minusDays(daysAgo).toDate());
final Date dateCreated = Date.from(ZonedDateTime.now().minusDays(daysAgo).toInstant());
finalSeminar.setDateCreated(dateCreated);
return save(finalSeminar);
}
@ -324,7 +336,8 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
private FinalSeminar initFinalSeminar(Project project, int relativeDays) {
FinalSeminar finalSeminar = new FinalSeminar();
finalSeminar.setProject(project);
finalSeminar.setStartDate(new DateTime().plusDays(relativeDays).toDate());
final Date startDate = Date.from(ZonedDateTime.now().plusDays(relativeDays).toInstant());
finalSeminar.setStartDate(startDate);
finalSeminar.setRoom("room");
finalSeminar.setPresentationLanguage(english);
project.setLanguage(english);

@ -1,7 +1,6 @@
package se.su.dsv.scipro.finalseminar;
import com.google.common.eventbus.EventBus;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -28,6 +27,7 @@ import se.su.dsv.scipro.test.InstanceProvider;
import javax.persistence.EntityManager;
import java.lang.reflect.Field;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.CoreMatchers.is;
@ -89,8 +89,9 @@ public class FinalSeminarServiceImplTest {
@Test
public void hasDeadlinePassed() {
finalSeminar.setStartDate(new DateTime().minusDays(2).toDate());
Date date = new DateTime().minusDays(1).toDate();
final Date startDate = Date.from(ZonedDateTime.now().minusDays(2).toInstant());
finalSeminar.setStartDate(startDate);
Date date = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
FinalSeminarSettings finalSeminarSettings = new FinalSeminarSettings();
finalSeminarSettings.setDaysAheadToUploadThesis(5);

@ -1,6 +1,5 @@
package se.su.dsv.scipro.milestones.service.impl;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.data.domain.Sort;
@ -9,6 +8,7 @@ import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.CoreMatchers.hasItem;
@ -27,7 +27,8 @@ public class MilestonePhaseTemplateServiceImplTest extends IntegrationTest {
public void setUp() throws Exception {
first = service.save(new MilestonePhaseTemplate("Title", "Description"));
second = service.save(new MilestonePhaseTemplate("Title", "Description"));
second.setDateCreated(new DateTime().plusDays(1).toDate());
final Date dateCreated = Date.from(ZonedDateTime.now().plusDays(1).toInstant());
second.setDateCreated(dateCreated);
}
@Test

@ -1,18 +1,19 @@
package se.su.dsv.scipro.misc;
import org.joda.time.DateTime;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import se.su.dsv.scipro.nonworkperiod.NonWorkDayPeriodService;
import java.time.LocalDate;
import java.util.Date;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.*;
@ExtendWith(MockitoExtension.class)
public class DaysServiceImplTest {
@ -21,8 +22,8 @@ public class DaysServiceImplTest {
NonWorkDayPeriodService nonWorkDays;
@InjectMocks
DaysServiceImpl service;
private DateTime now;
private DateTime then;
private ZonedDateTime now;
private ZonedDateTime then;
@Test
public void testAfterWeekends() {
@ -146,18 +147,18 @@ public class DaysServiceImplTest {
}
private void then(int year, int month, int day) {
then = new DateTime(year, month, day, 13, 14, 15, 0);
then = ZonedDateTime.of(year, month, day, 13, 14, 15, 0, ZoneId.systemDefault());
}
private Date then() {
return then.toDate();
return Date.from(then.toInstant());
}
private void now(int year, int month, int day) {
now = new DateTime(year, month, day, 13, 14, 15, 0);
now = ZonedDateTime.of(year, month, day, 13, 14, 15, 0, ZoneId.systemDefault());
}
private Date now() {
return now.toDate();
return Date.from(now.toInstant());
}
}

@ -3,6 +3,7 @@ package se.su.dsv.scipro.peer;
import com.google.common.eventbus.EventBus;
import com.querydsl.core.types.Predicate;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.*;
@ -24,6 +25,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.Dates;
import se.su.dsv.scipro.test.ObjectMother;
import java.time.Clock;
import java.time.LocalDate;
import java.util.Collections;
import java.util.Optional;
@ -54,9 +56,14 @@ public class PeerPortalImplTest {
private ProjectFileService projectFileService;
@Mock
private DaysService daysService;
@InjectMocks
private PeerPortalImpl peerPortalController;
@BeforeEach
public void setUp() {
peerPortalController = new PeerPortalImpl(fileDescriptionService, peerReviewRepository, peerRequestRepository, eventBus, projectFileService, daysService, Clock.systemDefaultZone());
}
private void mockSavingPeerRequest() {
when(peerRequestRepository.save(ArgumentMatchers.isA(PeerRequest.class))).thenAnswer(new org.mockito.stubbing.Answer<PeerRequest>() {
@Override

@ -1,6 +1,5 @@
package se.su.dsv.scipro.project;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.data.domain.PageRequest;
@ -12,14 +11,14 @@ import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class ProjectServiceImplIntegrationTest extends IntegrationTest {
@ -111,8 +110,10 @@ public class ProjectServiceImplIntegrationTest extends IntegrationTest {
params.setSupervisor(employee);
params.setFilterSupervisor(true);
params.setTitleContains("Some");
params.setCreatedAfter(new DateTime().minusDays(1).toDate());
params.setCreatedBefore(new DateTime().plusDays(1).toDate());
final Date createdAfter = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
params.setCreatedAfter(createdAfter);
final Date createdBefore = Date.from(ZonedDateTime.now().plusDays(1).toInstant());
params.setCreatedBefore(createdBefore);
long expected = 1L;

@ -1,6 +1,5 @@
package se.su.dsv.scipro.projectpartner;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.data.domain.PageRequest;
@ -11,11 +10,13 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class ProjectPartnerServiceImplTest extends IntegrationTest {
public static final PageRequest ALL = new PageRequest(0, Long.MAX_VALUE);
@ -70,7 +71,8 @@ public class ProjectPartnerServiceImplTest extends IntegrationTest {
private ProjectPartner newProjectPartner(int daysOld) {
ProjectPartner projectPartner = new ProjectPartner(user);
projectPartner.setInfotext("Hi I need a thesis writing partner");
projectPartner.setDateCreated(new DateTime().minusDays(daysOld).toDate());
final Date dateCreated = Date.from(ZonedDateTime.now().minusDays(daysOld).toInstant());
projectPartner.setDateCreated(dateCreated);
projectPartner.setProjectType(projectType);
projectPartner.setApplicationPeriod(applicationPeriod);
return save(projectPartner);

@ -1,6 +1,5 @@
package se.su.dsv.scipro.report;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -22,6 +21,7 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.ObjectMother;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.ZonedDateTime;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ -116,7 +116,8 @@ public class OppositionReportServiceImplTest {
private FinalSeminar createFinalSeminar() {
FinalSeminar finalSeminar = new FinalSeminar();
finalSeminar.setProject(ObjectMother.SOME_PROJECT);
finalSeminar.setStartDate(new DateTime().minusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
finalSeminar.setRoom("room");
return finalSeminar;
}

@ -1,6 +1,5 @@
package se.su.dsv.scipro.integration.daisy.workers;
import org.joda.time.LocalDateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.su.dsv.scipro.daisyExternal.http.DaisyAPI;
@ -10,7 +9,15 @@ import se.su.dsv.scipro.finalseminar.FinalSeminarService;
import se.su.dsv.scipro.finalthesis.FinalThesis;
import se.su.dsv.scipro.finalthesis.FinalThesisService;
import se.su.dsv.scipro.io.ExternalExporter;
import se.su.dsv.scipro.io.dto.*;
import se.su.dsv.scipro.io.dto.Person;
import se.su.dsv.scipro.io.dto.ProjectParticipant;
import se.su.dsv.scipro.io.dto.ResearchAreaWithID;
import se.su.dsv.scipro.io.dto.ResearchAreas;
import se.su.dsv.scipro.io.dto.Role;
import se.su.dsv.scipro.io.dto.StudentProjectParticipant;
import se.su.dsv.scipro.io.dto.Thesis;
import se.su.dsv.scipro.io.dto.ThesisToBeUpdated;
import se.su.dsv.scipro.io.dto.UnitWithID;
import se.su.dsv.scipro.io.exceptions.ExternalExportException;
import se.su.dsv.scipro.io.facade.ExporterFacade;
import se.su.dsv.scipro.project.Project;
@ -24,10 +31,9 @@ import se.su.dsv.scipro.workerthreads.AbstractWorker;
import javax.inject.Inject;
import javax.inject.Named;
import java.util.Calendar;
import java.util.Date;
import java.util.Optional;
import java.util.Set;
import java.time.Instant;
import java.time.Period;
import java.util.*;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;
@ -87,7 +93,7 @@ public class ProjectExporter extends AbstractWorker {
}
private static Date oneWeekAgo() {
return new LocalDateTime().minusWeeks(1).toDate();
return Date.from(Instant.now().minus(Period.ofWeeks(1)));
}
private void exportProject(Project project) throws ExternalExportException {

@ -167,11 +167,6 @@
</dependency>
<!-- Additional dependencies -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
@ -243,10 +238,6 @@
</dependency>
<!-- Additional dependencies -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>

@ -13,23 +13,38 @@ import org.apache.wicket.feedback.FencedFeedbackPanel;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.EnclosureContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
import org.apache.wicket.markup.html.form.RadioChoice;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.ComponentFeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.validation.validator.StringValidator;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.su.dsv.scipro.components.*;
import se.su.dsv.scipro.components.AjaxCheckBoxMultipleChoice;
import se.su.dsv.scipro.components.BootstrapRadioChoice;
import se.su.dsv.scipro.components.CSPPalette;
import se.su.dsv.scipro.components.IdeaMailChoice;
import se.su.dsv.scipro.components.ModalWindowPlus;
import se.su.dsv.scipro.components.ProjectMailChoiceNew;
import se.su.dsv.scipro.data.enums.MailChoice;
import se.su.dsv.scipro.data.facade.MailFacade;
import se.su.dsv.scipro.date.DatePickerPanel;
import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettings;
import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
import se.su.dsv.scipro.mail.*;
import se.su.dsv.scipro.mail.EmailRecipient;
import se.su.dsv.scipro.mail.MailEvent;
import se.su.dsv.scipro.mail.MailEventService;
import se.su.dsv.scipro.mail.Recipient;
import se.su.dsv.scipro.mail.RecipientVisitor;
import se.su.dsv.scipro.mail.UserRecipient;
import se.su.dsv.scipro.reusable.SciProUtilities;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
@ -38,6 +53,8 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.util.CopyTextPanel;
import javax.inject.Inject;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.*;
public class AdminMailPanel extends Panel {
@ -136,9 +153,8 @@ public class AdminMailPanel extends Panel {
labelContainer.add(ideaPickerLabel);
filterContainer.add(labelContainer);
DateTime start = new DateTime();
start = start.minusMonths(MONTHS);
dpp = new DatePickerPanel("datePanel", start.toDate(), null) {
final Instant start = ZonedDateTime.now().minusMonths(1).toInstant();
dpp = new DatePickerPanel("datePanel", Date.from(start), null) {
@Override
public void updateStartDate(AjaxRequestTarget target) {
updateUserSet(target);

@ -2,23 +2,12 @@ package se.su.dsv.scipro.components;
import org.apache.wicket.extensions.markup.html.form.DateTextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.Response;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import org.joda.time.LocalTime;
import java.util.Date;
import java.util.*;
public class BootstrapDateField extends DateTextField {
private static final String DATE_PATTERN = "yyyy-MM-dd";
private java.time.LocalDate endDate;
private java.time.LocalDate startDate;
public BootstrapDateField(final String id) {
super(id, DATE_PATTERN);
}
public BootstrapDateField(final String id, final IModel<Date> model) {
super(id, model, DATE_PATTERN);
}
@ -27,28 +16,6 @@ public class BootstrapDateField extends DateTextField {
protected void onInitialize() {
super.onInitialize();
setOutputMarkupId(true);
add(new BootstrapDatePicker(startDate, endDate));
}
@Override
public void updateModel() {
Date currentDate = getModelObject();
if (currentDate == null || getConvertedInput() == null) {
super.updateModel();
}
else {
LocalDate date = new LocalDate(getConvertedInput());
LocalTime time = new LocalTime(currentDate);
LocalDateTime dateTime = date.toLocalDateTime(time);
setModelObject(dateTime.toDate());
}
}
public void setEndDate(final java.time.LocalDate endDate) {
this.endDate = endDate;
}
public void setStartDate(final java.time.LocalDate startDate) {
this.startDate = startDate;
add(new BootstrapDatePicker());
}
}

@ -3,17 +3,21 @@ package se.su.dsv.scipro.components;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.FormComponentPanel;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.joda.time.LocalDate;
import org.joda.time.LocalTime;
import java.util.Date;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.*;
public class BootstrapDateTimeComponent extends FormComponentPanel<Date> {
private FormComponent<Date> dateField;
private FormComponent<Date> timeField;
private FormComponent<LocalDate> dateField;
private FormComponent<LocalTime> timeField;
public BootstrapDateTimeComponent(final String id) {
super(id);
@ -26,14 +30,15 @@ public class BootstrapDateTimeComponent extends FormComponentPanel<Date> {
@Override
protected void onInitialize() {
super.onInitialize();
dateField = new BootstrapDateField("date") {
dateField = new TextField<>("date", new Model<>(), LocalDate.class) {
@Override
protected void onConfigure() {
super.onConfigure();
setRequired(BootstrapDateTimeComponent.this.isRequired());
}
};
dateField.setModel(getModel());
dateField.setModelObject(toLocalDate(getModelObject()));
dateField.add(new BootstrapDatePicker());
add(dateField);
add(new Label("dateHelp", dateHelpText()) {
@ -44,26 +49,44 @@ public class BootstrapDateTimeComponent extends FormComponentPanel<Date> {
}
});
timeField = new BootstrapTimeField("time") {
timeField = new TextField<>("time", new Model<>(), LocalTime.class) {
@Override
protected void onConfigure() {
super.onConfigure();
setRequired(BootstrapDateTimeComponent.this.isRequired());
}
};
timeField.setModel(getModel());
timeField.setModelObject(toLocalTime(getModelObject()));
timeField.add(new BootstrapTimePicker());
add(timeField);
}
private LocalDate toLocalDate(Date date) {
if (date == null) return null;
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
private LocalTime toLocalTime(Date date) {
if (date == null) return null;
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
}
protected IModel<String> dateHelpText() {
return new Model<>();
}
@Override
public void convertInput() {
LocalDate date = new LocalDate(dateField.getConvertedInput());
LocalTime time = new LocalTime(timeField.getConvertedInput());
Date datetime = date.toLocalDateTime(time).toDate();
setConvertedInput(datetime);
LocalDate date = dateField.getConvertedInput();
LocalTime time = timeField.getConvertedInput();
if (date == null || time == null) {
setConvertedInput(null);
}
else {
Instant instant = LocalDateTime.of(date, time)
.atZone(ZoneId.systemDefault())
.toInstant();
setConvertedInput(Date.from(instant));
}
}
}

@ -1,29 +0,0 @@
package se.su.dsv.scipro.components;
import org.apache.wicket.extensions.markup.html.form.DateTextField;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import org.joda.time.LocalTime;
import java.util.*;
public class BootstrapTimeField extends DateTextField {
public BootstrapTimeField(String id) {
super(id, "HH:mm");
setOutputMarkupId(true);
add(new BootstrapTimePicker());
}
@Override
public void updateModel() {
Date currentDate = getModelObject();
if (currentDate == null) {
super.updateModel();
} else {
LocalDate date = new LocalDate(currentDate);
LocalTime time = new LocalTime(getConvertedInput());
LocalDateTime dateTime = date.toLocalDateTime(time);
setModelObject(dateTime.toDate());
}
}
}

@ -1,9 +1,12 @@
package se.su.dsv.scipro.date;
import org.apache.wicket.util.io.IClusterable;
import org.joda.time.DateTime;
import java.util.Date;
import java.time.Instant;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.*;
public final class DatePickerModel implements IClusterable {
@ -26,8 +29,10 @@ public final class DatePickerModel implements IClusterable {
public void setStartDate(Date startDate) {
if (startDate != null) {
DateTime tmp = new DateTime(startDate);
this.startDate = tmp.withTimeAtStartOfDay().toDate();
Instant tmp = ZonedDateTime.ofInstant(startDate.toInstant(), ZoneId.systemDefault())
.with(LocalTime.MIDNIGHT)
.toInstant();
this.startDate = Date.from(tmp);
} else {
this.startDate = null;
}
@ -39,11 +44,10 @@ public final class DatePickerModel implements IClusterable {
public void setEndDate(Date endDate) {
if (endDate != null) {
DateTime tmp = new DateTime(endDate);
tmp = tmp.withTimeAtStartOfDay();
tmp = tmp.minusSeconds(1);
tmp = tmp.plusDays(1);
this.endDate = tmp.toDate();
final Instant tmp = ZonedDateTime.ofInstant(endDate.toInstant(), ZoneId.systemDefault())
.with(LocalTime.MAX)
.toInstant();
this.endDate = Date.from(tmp);
} else {
this.endDate = null;
}

@ -11,13 +11,25 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import se.su.dsv.scipro.components.*;
import se.su.dsv.scipro.components.AjaxCheckBoxMultipleChoice;
import se.su.dsv.scipro.components.AjaxDropDownChoice;
import se.su.dsv.scipro.components.AjaxRadioChoice;
import se.su.dsv.scipro.components.AuthorAutoComplete;
import se.su.dsv.scipro.components.EmployeeAutoComplete;
import se.su.dsv.scipro.components.ProgramAutoComplete;
import se.su.dsv.scipro.date.DeactivatableDatePickerPanel;
import se.su.dsv.scipro.springdata.services.UnitService;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.system.Program;
import se.su.dsv.scipro.system.ProjectModule;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.ProjectTypeService;
import se.su.dsv.scipro.system.ResearchArea;
import se.su.dsv.scipro.system.ResearchAreaService;
import se.su.dsv.scipro.system.Unit;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.time.ZonedDateTime;
import java.util.*;
import static java.util.Arrays.asList;
@ -184,7 +196,7 @@ public abstract class AjaxIdeaFilterPanel extends GenericPanel<IdeaService.Filte
}
private void dateFilter() {
Date startDate = new DateTime().minusYears(1).toDate();
Date startDate = Date.from(ZonedDateTime.now().minusYears(1).toInstant());
add(new DeactivatableDatePickerPanel("dateContainer", Model.of(startDate), new Model<>()) {
@Override
protected void datesChanged(final AjaxRequestTarget target) {

@ -13,21 +13,27 @@ import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.*;
import org.joda.time.DateTime;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import se.su.dsv.scipro.components.AjaxCheckBoxMultipleChoice;
import se.su.dsv.scipro.components.AuthorAutoComplete;
import se.su.dsv.scipro.date.DeactivatableDatePickerPanel;
import se.su.dsv.scipro.peer.PeerReview.ReviewStatus;
import se.su.dsv.scipro.session.SciProSession;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.Language;
import se.su.dsv.scipro.system.ProjectModule;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.ProjectTypeService;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import java.util.EnumSet;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
public class PeerReviewStatisticsPanel extends Panel {
@ -61,7 +67,7 @@ public class PeerReviewStatisticsPanel extends Panel {
private void prepareDefaultFilter() {
filter.setProjectTypes(projectTypeService.findByDegreeTypes(EnumSet.of(DegreeType.BACHELOR, DegreeType.MASTER, DegreeType.MAGISTER)));
filter.setCreatedBefore(new Date());
filter.setCreatedAfter(DateTime.now().minusMonths(6).toDate());
filter.setCreatedAfter(Date.from(ZonedDateTime.now().minusMonths(6).toInstant()));
}
private void addAuthorFilter() {

@ -13,10 +13,15 @@ import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.*;
import org.joda.time.LocalDate;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.springframework.data.domain.PageRequest;
import se.su.dsv.scipro.components.*;
import se.su.dsv.scipro.components.AjaxCheckBoxMultipleChoice;
import se.su.dsv.scipro.components.EnumLambdaColumn;
import se.su.dsv.scipro.components.ExportableDataPanel;
import se.su.dsv.scipro.components.TemporalColumn;
import se.su.dsv.scipro.components.datatables.UserColumn;
import se.su.dsv.scipro.data.DetachableServiceModel;
import se.su.dsv.scipro.dataproviders.PageAdapter;
@ -33,6 +38,7 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.ProjectTypeService;
import javax.inject.Inject;
import java.time.ZonedDateTime;
import java.util.*;
import static java.util.Arrays.asList;
@ -140,7 +146,7 @@ public class AdminFinalSeminarStatisticsPage extends AbstractAdminStatisticsPage
filter = new ProjectFinalSeminarStatisticsService.Filter();
filter.setFinalSeminarCreatedBefore(new Date());
filter.setFinalSeminarCreatedAfter(new LocalDate().minusMonths(6).toDate());
filter.setFinalSeminarCreatedAfter(Date.from(ZonedDateTime.now().minusMonths(6).toInstant()));
AjaxCheckBoxMultipleChoice<ProjectType> projectType = new AjaxCheckBoxMultipleChoice<>("projectTypeFilter",
projectTypeService.findByDegreeTypes(Arrays.asList(DegreeType.BACHELOR, DegreeType.MASTER, DegreeType.MAGISTER)),

@ -15,8 +15,6 @@ import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import se.su.dsv.scipro.components.DateLabel;
import se.su.dsv.scipro.date.DatePickerPanel;
import se.su.dsv.scipro.misc.DaysService;
@ -30,8 +28,8 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.util.Pair;
import javax.inject.Inject;
import java.util.Date;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
public class AdminReviewerDeadlinesPage extends AbstractAdminStatisticsPage {
private DatePickerPanel datePicker;
@ -87,8 +85,8 @@ public class AdminReviewerDeadlinesPage extends AbstractAdminStatisticsPage {
}
private void addDatePickerForm() {
Date startDate = new DateTime().minusMonths(1).toDate();
Date endDate = new DateTime().minusDays(1).toDate();
Date startDate = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
Date endDate = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
datePicker = new DatePickerPanel("filter", startDate, endDate);
add(new Form<Integer>("form") {
{
@ -123,7 +121,7 @@ public class AdminReviewerDeadlinesPage extends AbstractAdminStatisticsPage {
}
private int getLateLabel(IModel<Date> deadline, Date decisionDate) {
Date endDate = (decisionDate == null) ? LocalDate.now().toDate() : LocalDate.fromDateFields(decisionDate).toDate();
Date endDate = Objects.requireNonNullElseGet(decisionDate, Date::new);
return daysService.workDaysBetween(deadline.getObject(), endDate) + 1;
}

@ -10,7 +10,6 @@ import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.danekja.java.util.function.serializable.SerializableFunction;
import org.joda.time.DateTime;
import se.su.dsv.scipro.components.DateColumn;
import se.su.dsv.scipro.components.ExportableDataPanel;
import se.su.dsv.scipro.components.ListAdapterModel;
@ -26,16 +25,14 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
import static java.util.Arrays.asList;
public class AdminUnfinishedFinalSeminarsPage extends AbstractAdminStatisticsPage {
private static Date SIX_MONTHS_AGO = new DateTime().plusMonths(-6).toDate();
private static Date SEVEN_DAYS_AGO = new DateTime().plusDays(-7).toDate();
private static Date SIX_MONTHS_AGO = Date.from(ZonedDateTime.now().minusMonths(6).toInstant());
private static Date SEVEN_DAYS_AGO = Date.from(ZonedDateTime.now().minusDays(7).toInstant());
@Inject
private FinalSeminarService finalSeminarService;

@ -9,14 +9,13 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.LambdaColumn;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import se.su.dsv.scipro.components.AjaxCheckBoxMultipleChoice;
import se.su.dsv.scipro.components.ExportableDataPanel;
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
import se.su.dsv.scipro.dataproviders.GenericDataProvider;
import se.su.dsv.scipro.date.DatePickerPanel;
import se.su.dsv.scipro.match.Idea;
@ -31,6 +30,7 @@ import se.su.dsv.scipro.system.ProjectTypeService;
import se.su.dsv.scipro.system.Unit;
import javax.inject.Inject;
import java.time.ZonedDateTime;
import java.util.*;
public class AdminUnitStatisticsPanel extends Panel {
@ -106,7 +106,7 @@ public class AdminUnitStatisticsPanel extends Panel {
}
private void addDateFilter() {
Date countFrom = new DateTime().minusMonths(MONTHS).toDate();
Date countFrom = Date.from(ZonedDateTime.now().minusMonths(MONTHS).toInstant());
initParams(countFrom);
add(new DatePickerPanel("dateFilter", countFrom) {
@Override

@ -11,8 +11,10 @@ import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.*;
import org.joda.time.DateTime;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import se.su.dsv.scipro.components.AjaxCheckBoxMultipleChoice;
import se.su.dsv.scipro.components.BootstrapDateField;
import se.su.dsv.scipro.date.DeactivatableDatePickerPanel;
@ -28,10 +30,8 @@ import se.su.dsv.scipro.system.ProjectTypeService;
import javax.inject.Inject;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import java.util.EnumSet;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
public class MilestoneStatisticsPanel extends Panel {
@ -88,7 +88,7 @@ public class MilestoneStatisticsPanel extends Panel {
filter.setProjectStatuses(EnumSet.of(ProjectStatus.ACTIVE));
filter.setMileStoneCompletedBefore(new Date());
filter.setProjectStartedBefore(new Date());
filter.setProjectStartedAfter(DateTime.now().minusMonths(6).toDate());
filter.setProjectStartedAfter(Date.from(ZonedDateTime.now().minusMonths(6).toInstant()));
}
private void addProjectTypeFilter() {

@ -3,7 +3,6 @@ package se.su.dsv.scipro.finalseminar;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ResourceLink;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.SciProTest;
@ -19,8 +18,8 @@ import se.su.dsv.scipro.test.ObjectMother;
import se.su.dsv.scipro.test.SeminarBuilder;
import se.su.dsv.scipro.test.UserBuilder;
import java.util.ArrayList;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
public class DownloadPdfReportPanelTest extends SciProTest {
@ -35,7 +34,8 @@ public class DownloadPdfReportPanelTest extends SciProTest {
uploader = new UserBuilder().create();
setLoggedInAs(uploader);
seminar = new SeminarBuilder().create();
seminar.setStartDate(new DateTime().plusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().plusDays(1).toInstant());
seminar.setStartDate(startDate);
List<FinalSeminarOpposition> oppositions = new ArrayList<>();
FinalSeminarOpposition e = new FinalSeminarOpposition();
e.setUser(ObjectMother.SOME_USER);

@ -2,7 +2,6 @@ package se.su.dsv.scipro.finalseminar;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.FormTester;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers;
@ -17,7 +16,9 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.util.Either;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.time.ZonedDateTime;
import java.util.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
@ -49,7 +50,7 @@ public class MoveFinalSeminarPanelTest extends SciProTest {
project.setHeadSupervisor(supervisor);
seminar = new FinalSeminar();
seminar.setProject(project);
seminar.setStartDate(calculateDateByInterval(365).toDate());
seminar.setStartDate(calculateDateByInterval(365));
seminar.setRoom("6405");
seminar.setPresentationLanguage(Language.ENGLISH);
project.setLanguage(Language.ENGLISH);
@ -59,7 +60,8 @@ public class MoveFinalSeminarPanelTest extends SciProTest {
public void changing_date_should_send_notification() {
DomainObjects.injectId(seminar, 3232L);
FormTester formTester = tester.newFormTester(path(panel, MOVE_FORM));
formTester.setValue(DATE, calculateDateByInterval(100).toString(DateStyle.DATETIME.getFormat()));
final SimpleDateFormat dateFormat = new SimpleDateFormat(DateStyle.DATETIME.getFormat());
formTester.setValue(DATE, dateFormat.format(calculateDateByInterval(100)));
formTester.submit();
tester.assertNoErrorMessage();
verifyNotificationSent(SeminarEvent.Event.DATE_CHANGED);
@ -69,9 +71,7 @@ public class MoveFinalSeminarPanelTest extends SciProTest {
verify(notificationController).notifySeminar(ArgumentMatchers.eq(seminar), ArgumentMatchers.eq(event), any(NotificationSource.class));
}
private DateTime calculateDateByInterval(int numberOfDays) {
DateTime startDate = new DateTime();
startDate.plusDays(numberOfDays);
return startDate;
private Date calculateDateByInterval(int numberOfDays) {
return Date.from(ZonedDateTime.now().plusDays(numberOfDays).toInstant());
}
}

@ -4,7 +4,6 @@ import org.apache.wicket.markup.html.border.Border;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.tester.FormTester;
import org.joda.time.DateTime;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -30,9 +29,8 @@ import se.su.dsv.scipro.test.UserBuilder;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.time.ZonedDateTime;
import java.util.*;
import static org.mockito.ArgumentMatchers.eq;
import static se.su.dsv.scipro.finalseminar.OppositionReportPage.FILL_OUT_REPORT;
@ -173,7 +171,8 @@ public class OppositionReportPageTest extends SciProTest {
FinalSeminar finalSeminar = new FinalSeminar();
finalSeminar.setProject(project);
finalSeminar.setDocument(createFileDescription());
finalSeminar.setStartDate(new DateTime().plusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().plusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
return finalSeminar;
}

@ -6,7 +6,6 @@ import org.apache.wicket.feedback.FencedFeedbackPanel;
import org.apache.wicket.model.Model;
import org.hamcrest.MatcherAssert;
import org.hamcrest.core.StringContains;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
@ -23,7 +22,8 @@ import se.su.dsv.scipro.test.UserBuilder;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.Matchers.hasItem;
import static se.su.dsv.scipro.finalseminar.SeminarActiveParticipantsPanel.*;
@ -43,7 +43,8 @@ public class SeminarActiveParticipantsPanelTest extends SciProTest {
finalSeminarActiveParticipation.setUser(new UserBuilder().create());
participants = Lists.newArrayList(finalSeminarActiveParticipation);
finalSeminar = new FinalSeminar();
finalSeminar.setStartDate(new DateTime().minusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
User supervisorUser = new UserBuilder().create();
finalSeminar.setProject(Project.builder()
.title("title")
@ -105,7 +106,8 @@ public class SeminarActiveParticipantsPanelTest extends SciProTest {
@Test
public void radios_invisible_if_seminar_is_in_the_future() {
finalSeminar.setStartDate(new DateTime().plusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().plusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
startPanel();
tester.assertInvisible(path(panel, PARTICIPANTS, 0, RADIOS));
}

@ -4,7 +4,6 @@ import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.FormTester;
import org.joda.time.MutableDateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
@ -24,14 +23,16 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.DomainObjects;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.mockito.Mockito.*;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static se.su.dsv.scipro.finalseminar.SeminarCRUDPanel.*;
public class SeminarCRUDPanelTest extends SciProTest {
@ -253,8 +254,7 @@ public class SeminarCRUDPanelTest extends SciProTest {
}
private Date oneYearFromNow() {
MutableDateTime startDate = new MutableDateTime();
startDate.addDays(365);
return SciProUtilities.setTimeOfDayTo0000(startDate.toDate());
final Date date = Date.from(ZonedDateTime.now().plusYears(1).toInstant());
return SciProUtilities.setTimeOfDayTo0000(date);
}
}

@ -3,7 +3,6 @@ package se.su.dsv.scipro.finalseminar;
import com.google.common.collect.Lists;
import org.apache.wicket.feedback.FencedFeedbackPanel;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
@ -18,7 +17,8 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
import static se.su.dsv.scipro.finalseminar.SeminarOppositionPanel.*;
@ -44,7 +44,8 @@ public class SeminarOppositionPanelTest extends SciProTest {
finalSeminar = new FinalSeminar();
opposition.setFinalSeminar(finalSeminar);
finalSeminar.setStartDate(new DateTime().minusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
finalSeminar.setOppositions(opponents);
supervisorUser = new UserBuilder().create();

@ -3,7 +3,6 @@ package se.su.dsv.scipro.finalseminar;
import com.google.common.collect.Lists;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
@ -20,9 +19,8 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.util.Collections;
import java.util.List;
import java.util.TreeSet;
import java.time.ZonedDateTime;
import java.util.*;
public class SeminarOppositionReportPanelTest extends SciProTest {
@ -48,7 +46,8 @@ public class SeminarOppositionReportPanelTest extends SciProTest {
finalSeminar = new FinalSeminar();
opposition.setFinalSeminar(finalSeminar);
finalSeminar.setStartDate(new DateTime().minusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
finalSeminar.setOppositions(opponents);
User supervisorUser = new UserBuilder().create();

@ -1,7 +1,6 @@
package se.su.dsv.scipro.finalseminar;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
@ -18,10 +17,8 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.time.ZonedDateTime;
import java.util.*;
import static org.mockito.ArgumentMatchers.any;
@ -55,7 +52,8 @@ public class SeminarPanelTest extends SciProTest {
addCoSupervisorToProject();
SOME_FINAL_SEMINAR = mockSeminar(new DateTime().minusDays(1).toDate(), null);
final Date startDate = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
SOME_FINAL_SEMINAR = mockSeminar(startDate, null);
SOME_FINAL_SEMINAR.setDocument(addThesis());
Mockito.when(finalSeminarSettingsService.getInstance()).thenReturn(finalSeminarSettings);
Mockito.when(finalSeminarSettings.getDaysAheadToCreate()).thenReturn(1);

@ -2,7 +2,6 @@ package se.su.dsv.scipro.finalseminar;
import org.apache.wicket.feedback.FencedFeedbackPanel;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers;
@ -16,10 +15,13 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.util.Collections;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
import static se.su.dsv.scipro.finalseminar.SeminarRespondentsPanel.*;
import static se.su.dsv.scipro.finalseminar.SeminarRespondentsPanel.FEEDBACK;
import static se.su.dsv.scipro.finalseminar.SeminarRespondentsPanel.RADIOS;
import static se.su.dsv.scipro.finalseminar.SeminarRespondentsPanel.RESPONDENTS;
import static se.su.dsv.scipro.finalseminar.SeminarRespondentsPanel.USER;
public class SeminarRespondentsPanelTest extends SciProTest {
@ -30,7 +32,8 @@ public class SeminarRespondentsPanelTest extends SciProTest {
@BeforeEach
public void setUp() throws Exception {
finalSeminar = new FinalSeminar();
finalSeminar.setStartDate(new DateTime().minusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().minusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
User supervisorUser = new UserBuilder().create();
finalSeminar.setProject(Project.builder()
.title("title")
@ -90,7 +93,8 @@ public class SeminarRespondentsPanelTest extends SciProTest {
@Test
public void radios_invisible_if_seminar_is_in_the_future() {
finalSeminar.setStartDate(new DateTime().plusDays(1).toDate());
final Date startDate = Date.from(ZonedDateTime.now().plusDays(1).toInstant());
finalSeminar.setStartDate(startDate);
startPanel();
tester.assertInvisible(path(panel, RESPONDENTS, 0, RADIOS));
}

@ -3,7 +3,7 @@ package se.su.dsv.scipro.finalseminar;
import org.apache.wicket.Component;
import org.apache.wicket.feedback.FencedFeedbackPanel;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.jfree.data.time.Month;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -22,6 +22,8 @@ import se.su.dsv.scipro.test.ObjectMother;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import static org.mockito.ArgumentMatchers.isA;
@ -66,7 +68,7 @@ public class SeminarThesisPanelTest extends SciProTest {
@Test
public void DeadlineInformationContainsDeadlineDate() {
// given
DateTime seminarDate = new DateTime(2012, 4, 21, 10, 10, 0, 0);
ZonedDateTime seminarDate = ZonedDateTime.of(2012, Month.APRIL, 21, 10, 10, 0, 0, ZoneId.systemDefault());
int daysAhead = 10;
FinalSeminarSettings settings = new FinalSeminarSettings();
@ -74,10 +76,11 @@ public class SeminarThesisPanelTest extends SciProTest {
FinalSeminar seminar = new FinalSeminar();
seminar.setDocument(null);
seminar.setStartDate(seminarDate.toDate());
seminar.setStartDate(Date.from(seminarDate.toInstant()));
// when
when(finalSeminarService.thesisUploadDeadline(isA(FinalSeminar.class))).thenReturn(seminarDate.minusDays(daysAhead).toDate());
Date deadline = Date.from(seminarDate.minusDays(daysAhead).toInstant());
when(finalSeminarService.thesisUploadDeadline(isA(FinalSeminar.class))).thenReturn(deadline);
startPanel(seminar);
@ -89,7 +92,7 @@ public class SeminarThesisPanelTest extends SciProTest {
Assertions.assertTrue(modelObject instanceof Date, "Date components model is not a date");
Date date = (Date) modelObject;
Assertions.assertEquals(seminarDate.minusDays(daysAhead).toDate(), date, "Does not display correct date");
Assertions.assertEquals(deadline, date, "Does not display correct date");
}
@Test

@ -2,7 +2,6 @@ package se.su.dsv.scipro.firstmeeting;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.FormTester;
import org.joda.time.DateTime;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -23,7 +22,7 @@ import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.*;
import static java.lang.String.format;
import static se.su.dsv.scipro.firstmeeting.FirstMeetingPanel.*;
@ -117,7 +116,7 @@ public class FirstMeetingPanelTest extends SciProTest {
@Test
public void not_able_to_submit_a_date_before_today() {
startPanel();
Date notAllowedDate = new DateTime().minusDays(3).toDate();
Date notAllowedDate = Date.from(ZonedDateTime.now().minusDays(3).toInstant());
submitForm(notAllowedDate);
tester.assertErrorMessages(panel.getString("DateValidator.minimum"));
@ -137,7 +136,7 @@ public class FirstMeetingPanelTest extends SciProTest {
}
private Date createDateThreeDaysFromNow() {
return new DateTime().plusDays(3).toDate();
return Date.from(ZonedDateTime.now().plusDays(3).toInstant());
}
private void submitForm(Date meetingDate) {

@ -2,7 +2,6 @@ package se.su.dsv.scipro.milestones.panels;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.SciProTest;

@ -1,7 +1,6 @@
package se.su.dsv.scipro.peer;
import com.google.common.eventbus.EventBus;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -15,11 +14,13 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.ProjectTypeSettings;
import se.su.dsv.scipro.test.DomainObjects;
import java.util.Arrays;
import java.util.Date;
import java.time.ZonedDateTime;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@ExtendWith(MockitoExtension.class)
public class ExpiredRequestWorkerTest {
@ -73,7 +74,8 @@ public class ExpiredRequestWorkerTest {
project.setProjectType(pClass);
expiredRequest.setProject(project);
expiredRequest.setDateCreated(new DateTime().minusDays(expirationDays + 1).toDate());
final Date dateCreated = Date.from(ZonedDateTime.now().minusDays(expirationDays + 1).toInstant());
expiredRequest.setDateCreated(dateCreated);
currentRequest.setProject(project);
currentRequest.setDateCreated(new Date());

@ -3,7 +3,6 @@ package se.su.dsv.scipro.peer;
import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.SciProTest;
@ -15,6 +14,7 @@ import se.su.dsv.scipro.util.PageParameterKeys;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.ZonedDateTime;
import java.util.*;
import static org.hamcrest.MatcherAssert.assertThat;
@ -37,7 +37,7 @@ public class MyPeerPanelTest extends SciProTest {
@BeforeEach
public void setUp() throws Exception {
requestDate = new Date();
reviewDate = new DateTime().plusDays(3).toDate();
reviewDate = Date.from(ZonedDateTime.now().plusDays(3).toInstant());
mockExistingPeers(getRequests(RequestStatus.WAITING), getReviews());
startPanel();
}

@ -3,7 +3,6 @@ package se.su.dsv.scipro.peer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.SciProTest;
@ -13,10 +12,8 @@ import se.su.dsv.scipro.test.ObjectMother;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.time.ZonedDateTime;
import java.util.*;
import static org.mockito.Mockito.when;
import static se.su.dsv.scipro.peer.PeerSummaryPanel.*;
@ -33,8 +30,10 @@ public class PeerSummaryPanelTest extends SciProTest {
public void setUp() throws Exception {
User author = User.builder().firstName("author").lastName("author").emailAddress("author@author.com").build();
author.setId(4L);
reviewReceived = createReview(1L, new DateTime().plusDays(1).toDate(), User.builder().firstName("reviewer").lastName("1").emailAddress("reviewer@example.com").build());
reviewPerformed = createReview(2L, new DateTime().plusDays(3).toDate(), User.builder().firstName("reviewer").lastName("2").emailAddress("reviewer@example.com").build());
Date reviewReceivedDate = Date.from(ZonedDateTime.now().plusDays(1).toInstant());
reviewReceived = createReview(1L, reviewReceivedDate, User.builder().firstName("reviewer").lastName("1").emailAddress("reviewer@example.com").build());
Date reviewPerformedDate = Date.from(ZonedDateTime.now().plusDays(3).toInstant());
reviewPerformed = createReview(2L, reviewPerformedDate, User.builder().firstName("reviewer").lastName("2").emailAddress("reviewer@example.com").build());
project = Project.builder().title("title").projectType(ObjectMother.BACHELOR).startDate(LocalDate.now()).build();
project.addProjectParticipant(author);
setLoggedInAs(author);