Skip to content

Commit 9b2be5d

Browse files
committed
refactor: remove SolverManager's ProblemId generic
1 parent fcfa8cd commit 9b2be5d

18 files changed

Lines changed: 119 additions & 119 deletions

File tree

java/bed-allocation/src/main/java/org/acme/bedallocation/rest/BedSchedulingResource.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package org.acme.bedallocation.rest;
22

3-
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
3+
import java.time.LocalDateTime;
4+
import java.util.Collection;
5+
import java.util.List;
6+
import java.util.Map.Entry;
7+
import java.util.UUID;
8+
import java.util.concurrent.ConcurrentHashMap;
9+
import java.util.concurrent.ConcurrentMap;
10+
411
import ai.timefold.solver.core.api.score.HardSoftScore;
12+
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
513
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
614
import ai.timefold.solver.core.api.solver.SolutionManager;
715
import ai.timefold.solver.core.api.solver.SolverManager;
@@ -32,14 +40,6 @@
3240
import org.slf4j.Logger;
3341
import org.slf4j.LoggerFactory;
3442

35-
import java.time.LocalDateTime;
36-
import java.util.Collection;
37-
import java.util.List;
38-
import java.util.Map.Entry;
39-
import java.util.UUID;
40-
import java.util.concurrent.ConcurrentHashMap;
41-
import java.util.concurrent.ConcurrentMap;
42-
4343
@Tag(name = "Bed Scheduling",
4444
description = "Bed Scheduling service assigning beds for patient stays.")
4545
@Path("schedules")
@@ -48,7 +48,7 @@ public class BedSchedulingResource {
4848
private static final Logger LOGGER = LoggerFactory.getLogger(BedSchedulingResource.class);
4949
private static final int MAX_JOBS_CACHE_SIZE = 2;
5050

51-
private final SolverManager<BedPlan, String> solverManager;
51+
private final SolverManager<BedPlan> solverManager;
5252
private final SolutionManager<BedPlan, HardSoftScore> solutionManager;
5353
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();
5454

@@ -59,7 +59,7 @@ public BedSchedulingResource() {
5959
}
6060

6161
@Inject
62-
public BedSchedulingResource(SolverManager<BedPlan, String> solverManager,
62+
public BedSchedulingResource(SolverManager<BedPlan> solverManager,
6363
SolutionManager<BedPlan, HardSoftScore> solutionManager) {
6464
this.solverManager = solverManager;
6565
this.solutionManager = solutionManager;
@@ -92,7 +92,7 @@ public String solve(BedPlan problem) {
9292
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
9393
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
9494
.withExceptionHandler((id, exception) -> {
95-
jobIdToJob.put(id, Job.ofException(exception));
95+
jobIdToJob.put((String) id, Job.ofException(exception));
9696
LOGGER.error("Failed solving jobId ({}).", id, exception);
9797
})
9898
.run();

java/conference-scheduling/src/main/java/org/acme/conferencescheduling/rest/ConferenceSchedulingResource.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package org.acme.conferencescheduling.rest;
22

3-
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
3+
import java.time.LocalDateTime;
4+
import java.util.Collection;
5+
import java.util.List;
6+
import java.util.Map.Entry;
7+
import java.util.UUID;
8+
import java.util.concurrent.ConcurrentHashMap;
9+
import java.util.concurrent.ConcurrentMap;
10+
411
import ai.timefold.solver.core.api.score.HardSoftScore;
12+
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
513
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
614
import ai.timefold.solver.core.api.solver.SolutionManager;
715
import ai.timefold.solver.core.api.solver.SolverManager;
@@ -32,14 +40,6 @@
3240
import org.slf4j.Logger;
3341
import org.slf4j.LoggerFactory;
3442

35-
import java.time.LocalDateTime;
36-
import java.util.Collection;
37-
import java.util.List;
38-
import java.util.Map.Entry;
39-
import java.util.UUID;
40-
import java.util.concurrent.ConcurrentHashMap;
41-
import java.util.concurrent.ConcurrentMap;
42-
4343
@Tag(name = "Conference Scheduling",
4444
description = "Conference Scheduling service assigning rooms and timeslots for conference talks.")
4545
@Path("schedules")
@@ -48,7 +48,7 @@ public class ConferenceSchedulingResource {
4848
private static final Logger LOGGER = LoggerFactory.getLogger(ConferenceSchedulingResource.class);
4949
private static final int MAX_JOBS_CACHE_SIZE = 2;
5050

51-
private final SolverManager<ConferenceSchedule, String> solverManager;
51+
private final SolverManager<ConferenceSchedule> solverManager;
5252
private final SolutionManager<ConferenceSchedule, HardSoftScore> solutionManager;
5353
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();
5454

@@ -59,7 +59,7 @@ public ConferenceSchedulingResource() {
5959
}
6060

6161
@Inject
62-
public ConferenceSchedulingResource(SolverManager<ConferenceSchedule, String> solverManager,
62+
public ConferenceSchedulingResource(SolverManager<ConferenceSchedule> solverManager,
6363
SolutionManager<ConferenceSchedule, HardSoftScore> solutionManager) {
6464
this.solverManager = solverManager;
6565
this.solutionManager = solutionManager;
@@ -92,7 +92,7 @@ public String solve(ConferenceSchedule problem) {
9292
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
9393
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
9494
.withExceptionHandler((id, exception) -> {
95-
jobIdToJob.put(id, Job.ofException(exception));
95+
jobIdToJob.put((String) id, Job.ofException(exception));
9696
LOGGER.error("Failed solving jobId ({}).", id, exception);
9797
})
9898
.run();

java/employee-scheduling/src/main/java/org/acme/employeescheduling/rest/EmployeeScheduleResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ public class EmployeeScheduleResource {
4343

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

46-
SolverManager<EmployeeSchedule, String> solverManager;
46+
SolverManager<EmployeeSchedule> solverManager;
4747
SolutionManager<EmployeeSchedule, HardSoftBigDecimalScore> solutionManager;
4848

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

5252
@Inject
53-
public EmployeeScheduleResource(SolverManager<EmployeeSchedule, String> solverManager,
53+
public EmployeeScheduleResource(SolverManager<EmployeeSchedule> solverManager,
5454
SolutionManager<EmployeeSchedule, HardSoftBigDecimalScore> solutionManager) {
5555
this.solverManager = solverManager;
5656
this.solutionManager = solutionManager;

java/facility-location/src/main/java/org/acme/facilitylocation/rest/SolverResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ public class SolverResource {
2727
private final AtomicReference<Throwable> solverError = new AtomicReference<>();
2828

2929
private final FacilityLocationProblemRepository repository;
30-
private final SolverManager<FacilityLocationProblem, String> solverManager;
30+
private final SolverManager<FacilityLocationProblem> solverManager;
3131
private final SolutionManager<FacilityLocationProblem, HardSoftScore> solutionManager;
3232

3333
public SolverResource(FacilityLocationProblemRepository repository,
34-
SolverManager<FacilityLocationProblem, String> solverManager,
34+
SolverManager<FacilityLocationProblem> solverManager,
3535
SolutionManager<FacilityLocationProblem, HardSoftScore> solutionManager) {
3636
this.repository = repository;
3737
this.solverManager = solverManager;

java/facility-location/src/test/java/org/acme/facilitylocation/solver/SolverManagerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
class SolverManagerTest {
2020

2121
@Inject
22-
SolverManager<FacilityLocationProblem, Long> solverManager;
22+
SolverManager<FacilityLocationProblem> solverManager;
2323

2424
@Test
2525
void solve() throws ExecutionException, InterruptedException {

java/flight-crew-scheduling/src/main/java/org/acme/flighcrewscheduling/rest/FlightCrewSchedulingResource.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package org.acme.flighcrewscheduling.rest;
22

3-
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
3+
import java.time.LocalDateTime;
4+
import java.util.Collection;
5+
import java.util.List;
6+
import java.util.Map.Entry;
7+
import java.util.UUID;
8+
import java.util.concurrent.ConcurrentHashMap;
9+
import java.util.concurrent.ConcurrentMap;
10+
411
import ai.timefold.solver.core.api.score.HardSoftScore;
12+
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
513
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
614
import ai.timefold.solver.core.api.solver.SolutionManager;
715
import ai.timefold.solver.core.api.solver.SolverManager;
@@ -32,14 +40,6 @@
3240
import org.slf4j.Logger;
3341
import org.slf4j.LoggerFactory;
3442

35-
import java.time.LocalDateTime;
36-
import java.util.Collection;
37-
import java.util.List;
38-
import java.util.Map.Entry;
39-
import java.util.UUID;
40-
import java.util.concurrent.ConcurrentHashMap;
41-
import java.util.concurrent.ConcurrentMap;
42-
4343
@Tag(name = "Flight Crew Scheduling",
4444
description = "Flight Crew Scheduling service assigning crew for flights.")
4545
@Path("schedules")
@@ -48,7 +48,7 @@ public class FlightCrewSchedulingResource {
4848
private static final Logger LOGGER = LoggerFactory.getLogger(FlightCrewSchedulingResource.class);
4949
private static final int MAX_JOBS_CACHE_SIZE = 2;
5050

51-
private final SolverManager<FlightCrewSchedule, String> solverManager;
51+
private final SolverManager<FlightCrewSchedule> solverManager;
5252
private final SolutionManager<FlightCrewSchedule, HardSoftScore> solutionManager;
5353
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();
5454

@@ -59,7 +59,7 @@ public FlightCrewSchedulingResource() {
5959
}
6060

6161
@Inject
62-
public FlightCrewSchedulingResource(SolverManager<FlightCrewSchedule, String> solverManager,
62+
public FlightCrewSchedulingResource(SolverManager<FlightCrewSchedule> solverManager,
6363
SolutionManager<FlightCrewSchedule, HardSoftScore> solutionManager) {
6464
this.solverManager = solverManager;
6565
this.solutionManager = solutionManager;
@@ -92,7 +92,7 @@ public String solve(FlightCrewSchedule problem) {
9292
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
9393
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
9494
.withExceptionHandler((id, exception) -> {
95-
jobIdToJob.put(id, Job.ofException(exception));
95+
jobIdToJob.put((String) id, Job.ofException(exception));
9696
LOGGER.error("Failed solving jobId ({}).", id, exception);
9797
})
9898
.run();

java/food-packaging/src/main/java/org/acme/foodpackaging/rest/PackagingScheduleResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ public class PackagingScheduleResource {
2525

2626
private PackagingScheduleRepository repository;
2727

28-
private SolverManager<PackagingSchedule, String> solverManager;
28+
private SolverManager<PackagingSchedule> solverManager;
2929

3030
private SolutionManager<PackagingSchedule, HardMediumSoftScore> solutionManager;
3131

3232
@Inject
3333
public PackagingScheduleResource(PackagingScheduleRepository repository,
34-
SolverManager<PackagingSchedule, String> solverManager,
34+
SolverManager<PackagingSchedule> solverManager,
3535
SolutionManager<PackagingSchedule, HardMediumSoftScore> solutionManager) {
3636
this.repository = repository;
3737
this.solverManager = solverManager;

java/maintenance-scheduling/src/main/java/org/acme/maintenancescheduling/rest/MaintenanceScheduleResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ public class MaintenanceScheduleResource {
4343

4444
public static final String SINGLETON_SCHEDULE_ID = "1";
4545

46-
SolverManager<MaintenanceSchedule, String> solverManager;
46+
SolverManager<MaintenanceSchedule> solverManager;
4747
SolutionManager<MaintenanceSchedule, HardSoftScore> solutionManager;
4848

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

5252
@Inject
53-
public MaintenanceScheduleResource(SolverManager<MaintenanceSchedule, String> solverManager,
53+
public MaintenanceScheduleResource(SolverManager<MaintenanceSchedule> solverManager,
5454
SolutionManager<MaintenanceSchedule, HardSoftScore> solutionManager) {
5555
this.solverManager = solverManager;
5656
this.solutionManager = solutionManager;

java/meeting-scheduling/src/main/java/org/acme/meetingschedule/rest/MeetingSchedulingResource.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package org.acme.meetingschedule.rest;
22

3-
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
3+
import java.time.LocalDateTime;
4+
import java.util.Collection;
5+
import java.util.List;
6+
import java.util.Map.Entry;
7+
import java.util.UUID;
8+
import java.util.concurrent.ConcurrentHashMap;
9+
import java.util.concurrent.ConcurrentMap;
10+
411
import ai.timefold.solver.core.api.score.HardSoftScore;
12+
import ai.timefold.solver.core.api.score.analysis.ScoreAnalysis;
513
import ai.timefold.solver.core.api.solver.ScoreAnalysisFetchPolicy;
614
import ai.timefold.solver.core.api.solver.SolutionManager;
715
import ai.timefold.solver.core.api.solver.SolverManager;
@@ -32,14 +40,6 @@
3240
import org.slf4j.Logger;
3341
import org.slf4j.LoggerFactory;
3442

35-
import java.time.LocalDateTime;
36-
import java.util.Collection;
37-
import java.util.List;
38-
import java.util.Map.Entry;
39-
import java.util.UUID;
40-
import java.util.concurrent.ConcurrentHashMap;
41-
import java.util.concurrent.ConcurrentMap;
42-
4343
@Tag(name = "Meeting Scheduling",
4444
description = "Meetings Scheduling service assigning timeslots and rooms for meetings.")
4545
@Path("schedules")
@@ -48,7 +48,7 @@ public class MeetingSchedulingResource {
4848
private static final Logger LOGGER = LoggerFactory.getLogger(MeetingSchedulingResource.class);
4949
private static final int MAX_JOBS_CACHE_SIZE = 2;
5050

51-
private final SolverManager<MeetingSchedule, String> solverManager;
51+
private final SolverManager<MeetingSchedule> solverManager;
5252
private final SolutionManager<MeetingSchedule, HardSoftScore> solutionManager;
5353
private final ConcurrentMap<String, Job> jobIdToJob = new ConcurrentHashMap<>();
5454

@@ -59,7 +59,7 @@ public MeetingSchedulingResource() {
5959
}
6060

6161
@Inject
62-
public MeetingSchedulingResource(SolverManager<MeetingSchedule, String> solverManager,
62+
public MeetingSchedulingResource(SolverManager<MeetingSchedule> solverManager,
6363
SolutionManager<MeetingSchedule, HardSoftScore> solutionManager) {
6464
this.solverManager = solverManager;
6565
this.solutionManager = solutionManager;
@@ -92,7 +92,7 @@ public String solve(MeetingSchedule problem) {
9292
.withProblemFinder(id -> jobIdToJob.get(jobId).schedule)
9393
.withBestSolutionEventConsumer(event -> jobIdToJob.put(jobId, Job.ofSchedule(event.solution())))
9494
.withExceptionHandler((id, exception) -> {
95-
jobIdToJob.put(id, Job.ofException(exception));
95+
jobIdToJob.put((String) id, Job.ofException(exception));
9696
LOGGER.error("Failed solving jobId ({}).", id, exception);
9797
})
9898
.run();

java/order-picking/src/main/java/org/acme/orderpicking/rest/OrderPickingSolverResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ public class OrderPickingSolverResource {
2828
private static final String PROBLEM_ID = "1";
2929
private final AtomicBoolean solverWasNeverStarted = new AtomicBoolean(true);
3030

31-
private SolverManager<OrderPickingSolution, String> solverManager;
31+
private SolverManager<OrderPickingSolution> solverManager;
3232
private SolutionManager<OrderPickingSolution, HardSoftScore> solutionManager;
3333
private OrderPickingRepository orderPickingRepository;
3434

3535
@Inject
36-
public OrderPickingSolverResource(SolverManager<OrderPickingSolution, String> solverManager,
36+
public OrderPickingSolverResource(SolverManager<OrderPickingSolution> solverManager,
3737
SolutionManager<OrderPickingSolution, HardSoftScore> solutionManager,
3838
OrderPickingRepository orderPickingRepository) {
3939
this.solverManager = solverManager;

0 commit comments

Comments
 (0)