Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package org.acme.bedallocation.rest;

import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import ai.timefold.solver.core.api.score.HardSoftScore;
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
import ai.timefold.solver.core.api.solver.SolutionManager;
import ai.timefold.solver.core.api.solver.SolverManager;
Expand Down Expand Up @@ -32,14 +40,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

@Tag(name = "Bed Scheduling",
description = "Bed Scheduling service assigning beds for patient stays.")
@Path("schedules")
Expand All @@ -48,7 +48,7 @@ public class BedSchedulingResource {
private static final Logger LOGGER = LoggerFactory.getLogger(BedSchedulingResource.class);
private static final int MAX_JOBS_CACHE_SIZE = 2;

private final SolverManager<BedPlan, String> solverManager;
private final SolverManager<BedPlan> solverManager;
private final SolutionManager<BedPlan, HardSoftScore> solutionManager;
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();

Expand All @@ -59,7 +59,7 @@ public BedSchedulingResource() {
}

@Inject
public BedSchedulingResource(SolverManager<BedPlan, String> solverManager,
public BedSchedulingResource(SolverManager<BedPlan> solverManager,
SolutionManager<BedPlan, HardSoftScore> solutionManager) {
this.solverManager = solverManager;
this.solutionManager = solutionManager;
Expand Down Expand Up @@ -92,7 +92,7 @@ public String solve(BedPlan problem) {
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
.withExceptionHandler((id, exception) -> {
jobIdToJob.put(id, Job.ofException(exception));
jobIdToJob.put((String) id, Job.ofException(exception));
Comment thread
triceo marked this conversation as resolved.
LOGGER.error("Failed solving jobId ({}).", id, exception);
})
.run();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package org.acme.conferencescheduling.rest;

import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import ai.timefold.solver.core.api.score.HardSoftScore;
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
import ai.timefold.solver.core.api.solver.SolutionManager;
import ai.timefold.solver.core.api.solver.SolverManager;
Expand Down Expand Up @@ -32,14 +40,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

@Tag(name = "Conference Scheduling",
description = "Conference Scheduling service assigning rooms and timeslots for conference talks.")
@Path("schedules")
Expand All @@ -48,7 +48,7 @@ public class ConferenceSchedulingResource {
private static final Logger LOGGER = LoggerFactory.getLogger(ConferenceSchedulingResource.class);
private static final int MAX_JOBS_CACHE_SIZE = 2;

private final SolverManager<ConferenceSchedule, String> solverManager;
private final SolverManager<ConferenceSchedule> solverManager;
private final SolutionManager<ConferenceSchedule, HardSoftScore> solutionManager;
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();

Expand All @@ -59,7 +59,7 @@ public ConferenceSchedulingResource() {
}

@Inject
public ConferenceSchedulingResource(SolverManager<ConferenceSchedule, String> solverManager,
public ConferenceSchedulingResource(SolverManager<ConferenceSchedule> solverManager,
SolutionManager<ConferenceSchedule, HardSoftScore> solutionManager) {
this.solverManager = solverManager;
this.solutionManager = solutionManager;
Expand Down Expand Up @@ -92,7 +92,7 @@ public String solve(ConferenceSchedule problem) {
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
.withExceptionHandler((id, exception) -> {
jobIdToJob.put(id, Job.ofException(exception));
jobIdToJob.put((String) id, Job.ofException(exception));
Comment thread
triceo marked this conversation as resolved.
LOGGER.error("Failed solving jobId ({}).", id, exception);
})
.run();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ public class EmployeeScheduleResource {

private static final Logger LOGGER = LoggerFactory.getLogger(EmployeeScheduleResource.class);

SolverManager<EmployeeSchedule, String> solverManager;
SolverManager<EmployeeSchedule> solverManager;
SolutionManager<EmployeeSchedule, HardSoftBigDecimalScore> solutionManager;

// TODO: Without any "time to live", the map may eventually grow out of memory.
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();

@Inject
public EmployeeScheduleResource(SolverManager<EmployeeSchedule, String> solverManager,
public EmployeeScheduleResource(SolverManager<EmployeeSchedule> solverManager,
SolutionManager<EmployeeSchedule, HardSoftBigDecimalScore> solutionManager) {
this.solverManager = solverManager;
this.solutionManager = solutionManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ public class SolverResource {
private final AtomicReference<Throwable> solverError = new AtomicReference<>();

private final FacilityLocationProblemRepository repository;
private final SolverManager<FacilityLocationProblem, String> solverManager;
private final SolverManager<FacilityLocationProblem> solverManager;
private final SolutionManager<FacilityLocationProblem, HardSoftScore> solutionManager;

public SolverResource(FacilityLocationProblemRepository repository,
SolverManager<FacilityLocationProblem, String> solverManager,
SolverManager<FacilityLocationProblem> solverManager,
SolutionManager<FacilityLocationProblem, HardSoftScore> solutionManager) {
this.repository = repository;
this.solverManager = solverManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
class SolverManagerTest {

@Inject
SolverManager<FacilityLocationProblem, Long> solverManager;
SolverManager<FacilityLocationProblem> solverManager;

@Test
void solve() throws ExecutionException, InterruptedException {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package org.acme.flighcrewscheduling.rest;

import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import ai.timefold.solver.core.api.score.HardSoftScore;
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
import ai.timefold.solver.core.api.solver.SolutionManager;
import ai.timefold.solver.core.api.solver.SolverManager;
Expand Down Expand Up @@ -32,14 +40,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

@Tag(name = "Flight Crew Scheduling",
description = "Flight Crew Scheduling service assigning crew for flights.")
@Path("schedules")
Expand All @@ -48,7 +48,7 @@ public class FlightCrewSchedulingResource {
private static final Logger LOGGER = LoggerFactory.getLogger(FlightCrewSchedulingResource.class);
private static final int MAX_JOBS_CACHE_SIZE = 2;

private final SolverManager<FlightCrewSchedule, String> solverManager;
private final SolverManager<FlightCrewSchedule> solverManager;
private final SolutionManager<FlightCrewSchedule, HardSoftScore> solutionManager;
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();

Expand All @@ -59,7 +59,7 @@ public FlightCrewSchedulingResource() {
}

@Inject
public FlightCrewSchedulingResource(SolverManager<FlightCrewSchedule, String> solverManager,
public FlightCrewSchedulingResource(SolverManager<FlightCrewSchedule> solverManager,
SolutionManager<FlightCrewSchedule, HardSoftScore> solutionManager) {
this.solverManager = solverManager;
this.solutionManager = solutionManager;
Expand Down Expand Up @@ -92,7 +92,7 @@ public String solve(FlightCrewSchedule problem) {
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
.withExceptionHandler((id, exception) -> {
jobIdToJob.put(id, Job.ofException(exception));
jobIdToJob.put((String) id, Job.ofException(exception));
Comment thread
triceo marked this conversation as resolved.
LOGGER.error("Failed solving jobId ({}).", id, exception);
})
.run();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ public class PackagingScheduleResource {

private PackagingScheduleRepository repository;

private SolverManager<PackagingSchedule, String> solverManager;
private SolverManager<PackagingSchedule> solverManager;

private SolutionManager<PackagingSchedule, HardMediumSoftScore> solutionManager;

@Inject
public PackagingScheduleResource(PackagingScheduleRepository repository,
SolverManager<PackagingSchedule, String> solverManager,
SolverManager<PackagingSchedule> solverManager,
SolutionManager<PackagingSchedule, HardMediumSoftScore> solutionManager) {
this.repository = repository;
this.solverManager = solverManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ public class MaintenanceScheduleResource {

public static final String SINGLETON_SCHEDULE_ID = "1";

SolverManager<MaintenanceSchedule, String> solverManager;
SolverManager<MaintenanceSchedule> solverManager;
SolutionManager<MaintenanceSchedule, HardSoftScore> solutionManager;

// TODO: Without any "time to live", the map may eventually grow out of memory.
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();

@Inject
public MaintenanceScheduleResource(SolverManager<MaintenanceSchedule, String> solverManager,
public MaintenanceScheduleResource(SolverManager<MaintenanceSchedule> solverManager,
SolutionManager<MaintenanceSchedule, HardSoftScore> solutionManager) {
this.solverManager = solverManager;
this.solutionManager = solutionManager;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package org.acme.meetingschedule.rest;

import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import ai.timefold.solver.core.api.score.HardSoftScore;
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
import ai.timefold.solver.core.api.solver.SolutionManager;
import ai.timefold.solver.core.api.solver.SolverManager;
Expand Down Expand Up @@ -32,14 +40,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

@Tag(name = "Meeting Scheduling",
description = "Meetings Scheduling service assigning timeslots and rooms for meetings.")
@Path("schedules")
Expand All @@ -48,7 +48,7 @@ public class MeetingSchedulingResource {
private static final Logger LOGGER = LoggerFactory.getLogger(MeetingSchedulingResource.class);
private static final int MAX_JOBS_CACHE_SIZE = 2;

private final SolverManager<MeetingSchedule, String> solverManager;
private final SolverManager<MeetingSchedule> solverManager;
private final SolutionManager<MeetingSchedule, HardSoftScore> solutionManager;
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();

Expand All @@ -59,7 +59,7 @@ public MeetingSchedulingResource() {
}

@Inject
public MeetingSchedulingResource(SolverManager<MeetingSchedule, String> solverManager,
public MeetingSchedulingResource(SolverManager<MeetingSchedule> solverManager,
SolutionManager<MeetingSchedule, HardSoftScore> solutionManager) {
this.solverManager = solverManager;
this.solutionManager = solutionManager;
Expand Down Expand Up @@ -92,7 +92,7 @@ public String solve(MeetingSchedule problem) {
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
.withExceptionHandler((id, exception) -> {
jobIdToJob.put(id, Job.ofException(exception));
jobIdToJob.put((String) id, Job.ofException(exception));
Comment thread
triceo marked this conversation as resolved.
LOGGER.error("Failed solving jobId ({}).", id, exception);
})
.run();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ public class OrderPickingSolverResource {
private static final String PROBLEM_ID = "1";
private final AtomicBoolean solverWasNeverStarted = new AtomicBoolean(true);

private SolverManager<OrderPickingSolution, String> solverManager;
private SolverManager<OrderPickingSolution> solverManager;
private SolutionManager<OrderPickingSolution, HardSoftScore> solutionManager;
private OrderPickingRepository orderPickingRepository;

@Inject
public OrderPickingSolverResource(SolverManager<OrderPickingSolution, String> solverManager,
public OrderPickingSolverResource(SolverManager<OrderPickingSolution> solverManager,
SolutionManager<OrderPickingSolution, HardSoftScore> solutionManager,
OrderPickingRepository orderPickingRepository) {
this.solverManager = solverManager;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package org.acme.projectjobschedule.rest;

import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import ai.timefold.solver.core.api.score.HardSoftScore;
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
import ai.timefold.solver.core.api.solver.SolutionManager;
import ai.timefold.solver.core.api.solver.SolverManager;
Expand Down Expand Up @@ -32,14 +40,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

@Tag(name = "Project Job Scheduling",
description = "Project Job Scheduling service assigning jobs for execution.")
@Path("schedules")
Expand All @@ -48,7 +48,7 @@ public class ProjectJobSchedulingResource {
private static final Logger LOGGER = LoggerFactory.getLogger(ProjectJobSchedulingResource.class);
private static final int MAX_JOBS_CACHE_SIZE = 2;

private final SolverManager<ProjectJobSchedule, String> solverManager;
private final SolverManager<ProjectJobSchedule> solverManager;
private final SolutionManager<ProjectJobSchedule, HardSoftScore> solutionManager;
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();

Expand All @@ -59,7 +59,7 @@ public ProjectJobSchedulingResource() {
}

@Inject
public ProjectJobSchedulingResource(SolverManager<ProjectJobSchedule, String> solverManager,
public ProjectJobSchedulingResource(SolverManager<ProjectJobSchedule> solverManager,
SolutionManager<ProjectJobSchedule, HardSoftScore> solutionManager) {
this.solverManager = solverManager;
this.solutionManager = solutionManager;
Expand Down Expand Up @@ -94,7 +94,7 @@ public String solve(ProjectJobSchedule problem) {
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
.withExceptionHandler((id, exception) -> {
jobIdToJob.put(id, Job.ofException(exception));
jobIdToJob.put((String) id, Job.ofException(exception));
Comment thread
triceo marked this conversation as resolved.
LOGGER.error("Failed solving jobId ({}).", id, exception);
})
.run();
Expand Down
Loading
Loading