Skip to content

Commit 35912dd

Browse files
ge0ffreyrsynek
andauthored
Restructure into use cases and technology (repo unfrozen if merged) (TimefoldAI#129)
Co-authored-by: Radovan Synek <[email protected]>
1 parent 4e85450 commit 35912dd

File tree

278 files changed

+277
-240
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

278 files changed

+277
-240
lines changed

.github/workflows/gradle.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
runs-on: ubuntu-latest
2121
strategy:
2222
matrix: {
23-
quickstartDir: ['hello-world-school-timetabling', 'quarkus-school-timetabling', 'spring-boot-school-timetabling']
23+
quickstartDir: ['hello-world', 'use-cases/school-timetabling', 'technology/java-spring-boot']
2424
}
2525
steps:
2626
- uses: actions/checkout@v2

README.adoc

+44-16
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,35 @@
11
= OptaPlanner Quickstarts
22

3+
== Overview of all Quickstarts
4+
5+
[cols="1,1"]
6+
|===
7+
|*Use case quickstarts*
8+
|*Technology quickstarts*
9+
10+
a|* <<school-timetabling, School timetabling>>
11+
* <<facility-location, Facility location problem>>
12+
* <<maintenance-scheduling, Maintenance scheduling>>
13+
* <<call-center, Call center>>
14+
* <<vaccination-scheduling, Vaccination Scheduling>>
15+
16+
a|* link:use-cases/school-timetabling/README.adoc[Quarkus] (Java, Maven or Gradle, Quarkus, H2)
17+
* link:technology/java-spring-boot/README.adoc[Spring Boot] (Java, Maven or Gradle, Spring Boot, H2)
18+
* link:technology/java-activemq-quarkus/README.adoc[ActiveMQ] (Java, ActiveMQ, Maven, Quarkus)
19+
* link:technology/kotlin-quarkus/README.adoc[Kotlin] (Kotlin, Maven, Quarkus, H2)
20+
21+
2+a|* <<optaweb-vehicle-routing, OptaWeb Vehicle Routing>>
22+
* <<optaweb-employee-rostering, OptaWeb Employee Rostering>>
23+
* <<optaplanner-examples, OptaPlanner examples (desktop)>>
24+
|===
25+
326
== Get started
427

528
Run the https://www.optaplanner.org/[OptaPlanner] quickstarts now:
629

730
. https://adoptopenjdk.net[Install JDK 11 or later] with `JAVA_HOME` configured appropriately.
831

9-
. Clone this repository to build and run the quickstarts:
32+
. Clone this repository to build and run the quickstarts showcase:
1033
+
1134
[source, shell]
1235
----
@@ -17,25 +40,21 @@ $ ./runQuickstartsFromSource.sh
1740

1841
== Use cases
1942

20-
* <<school-timetabling, School timetabling>>
21-
* <<facility-location, Facility location problem>>
22-
* <<maintenance-scheduling, Maintenance scheduling>>
23-
* <<vaccination-scheduling, Vaccination Scheduling>>
24-
* <<optaweb-vehicle-routing, OptaWeb Vehicle Routing>>
25-
* <<optaweb-employee-rostering, OptaWeb Employee Rostering>>
26-
* <<optaplanner-examples, OptaPlanner examples (desktop)>>
27-
2843
[[school-timetabling]]
2944
=== School timetabling
3045

3146
Assign lessons to timeslots and rooms to produce a better schedule for teachers and students.
3247

3348
image::build/quickstarts-showcase/src/main/resources/META-INF/resources/screenshot/quarkus-school-timetabling-screenshot.png[]
3449

35-
* link:quarkus-school-timetabling/README.adoc[Run quarkus-school-timetabling] (Java, Maven or Gradle, Quarkus, H2)
36-
* link:spring-boot-school-timetabling/README.adoc[Run spring-boot-school-timetabling] (Java, Maven or Gradle, Spring Boot, H2)
37-
* link:kotlin-quarkus-school-timetabling/README.adoc[Run kotlin-quarkus-school-timetabling] (Kotlin, Maven, Quarkus, H2)
38-
* link:activemq-quarkus-school-timetabling/README.adoc[Run activemq-quarkus-school-timetabling] (ActiveMQ, Maven, Quarkus)
50+
* link:use-cases/school-timetabling/README.adoc[Run quarkus-school-timetabling] (Java, Maven or Gradle, Quarkus, H2)
51+
* link:technology/java-spring-boot/README.adoc[Run spring-boot-school-timetabling] (Java, Maven or Gradle, Spring Boot, H2)
52+
* link:technology/java-activemq-quarkus/README.adoc[Run activemq-quarkus-school-timetabling] (Java, ActiveMQ, Maven, Quarkus)
53+
* link:technology/kotlin-quarkus/README.adoc[Run kotlin-quarkus-school-timetabling] (Kotlin, Maven, Quarkus, H2)
54+
55+
Without a UI:
56+
57+
* link:hello-world/README.adoc[Run hello-world-school-timetabling] (Java, Maven or Gradle)
3958

4059
[[facility-location]]
4160
=== Facility location problem
@@ -44,7 +63,7 @@ Pick the best geographical locations for new stores, distribution centers, covid
4463

4564
image::build/quickstarts-showcase/src/main/resources/META-INF/resources/screenshot/quarkus-facility-location-screenshot.png[]
4665

47-
* link:quarkus-facility-location/README.adoc[Run quarkus-facility-location] (Java, Maven, Quarkus)
66+
* link:use-cases/facility-location/README.adoc[Run quarkus-facility-location] (Java, Maven, Quarkus)
4867

4968
[[maintenance-scheduling]]
5069
=== Maintenance scheduling
@@ -54,7 +73,16 @@ to reduce both premature and overdue maintenance.
5473

5574
image::build/quickstarts-showcase/src/main/resources/META-INF/resources/screenshot/quarkus-maintenance-scheduling-screenshot.png[]
5675

57-
* link:quarkus-maintenance-scheduling/README.adoc[Run quarkus-maintenance-scheduling] (Java, Maven, Quarkus)
76+
* link:use-cases/maintenance-scheduling/README.adoc[Run quarkus-maintenance-scheduling] (Java, Maven, Quarkus)
77+
78+
[[call-center]]
79+
=== Call center
80+
81+
Schedule incoming calls to employees matching skills and availability.
82+
83+
image::build/quickstarts-showcase/src/main/resources/META-INF/resources/screenshot/quarkus-call-center-screenshot.png[]
84+
85+
* link:use-cases/call-center/README.adoc[Run quarkus-call-center] (Java, Maven, Quarkus)
5886

5987
[[vaccination-scheduling]]
6088
=== Vaccination scheduling
@@ -64,7 +92,7 @@ to end a pandemic sooner.
6492

6593
image::build/quickstarts-showcase/src/main/resources/META-INF/resources/screenshot/quarkus-vaccination-scheduling-screenshot.png[]
6694

67-
* link:quarkus-vaccination-scheduling/README.adoc[Run quarkus-vaccination-scheduling] (Java, Maven, Quarkus)
95+
* link:use-cases/vaccination-scheduling/README.adoc[Run quarkus-vaccination-scheduling] (Java, Maven, Quarkus)
6896

6997
[[optaweb-vehicle-routing]]
7098
=== OptaWeb Vehicle Routing
File renamed without changes.

mvnw build/mvnw

File renamed without changes.

mvnw.cmd build/mvnw.cmd

File renamed without changes.

build/quickstarts-distribution/src/main/assembly/assembly-optaplanner-quickstarts.xml

+10-32
Original file line numberDiff line numberDiff line change
@@ -49,58 +49,36 @@
4949
</includes>
5050
</fileSet>
5151
<fileSet>
52-
<directory>../../quarkus-school-timetabling/target</directory>
53-
<outputDirectory>binaries/quarkus-school-timetabling</outputDirectory>
52+
<directory>../../use-cases/school-timetabling/target</directory>
53+
<outputDirectory>binaries/use-cases/school-timetabling</outputDirectory>
5454
<includes>
5555
<include>quarkus-app/**</include>
5656
</includes>
5757
</fileSet>
5858
<fileSet>
59-
<directory>../../quarkus-facility-location/target</directory>
60-
<outputDirectory>binaries/quarkus-facility-location</outputDirectory>
59+
<directory>../../use-cases/facility-location/target</directory>
60+
<outputDirectory>binaries/use-cases/facility-location</outputDirectory>
6161
<includes>
6262
<include>quarkus-app/**</include>
6363
</includes>
6464
</fileSet>
6565
<fileSet>
66-
<directory>../../quarkus-maintenance-scheduling/target</directory>
67-
<outputDirectory>binaries/quarkus-maintenance-scheduling</outputDirectory>
66+
<directory>../../use-cases/maintenance-scheduling/target</directory>
67+
<outputDirectory>binaries/use-cases/maintenance-scheduling</outputDirectory>
6868
<includes>
6969
<include>quarkus-app/**</include>
7070
</includes>
7171
</fileSet>
7272
<fileSet>
73-
<directory>../../quarkus-vaccination-scheduling/target</directory>
74-
<outputDirectory>binaries/quarkus-vaccination-scheduling</outputDirectory>
73+
<directory>../../use-cases/vaccination-scheduling/target</directory>
74+
<outputDirectory>binaries/use-cases/vaccination-scheduling</outputDirectory>
7575
<includes>
7676
<include>quarkus-app/**</include>
7777
</includes>
7878
</fileSet>
7979
<fileSet>
80-
<directory>../../quarkus-call-center/target</directory>
81-
<outputDirectory>binaries/quarkus-call-center</outputDirectory>
82-
<includes>
83-
<include>quarkus-app/**</include>
84-
</includes>
85-
</fileSet>
86-
<fileSet>
87-
<directory>../../activemq-quarkus-school-timetabling</directory>
88-
<outputDirectory>binaries/activemq-quarkus-school-timetabling</outputDirectory>
89-
<includes>
90-
<include>broker-*.xml</include>
91-
<include>docker-compose.yml</include>
92-
</includes>
93-
</fileSet>
94-
<fileSet>
95-
<directory>../../activemq-quarkus-school-timetabling/activemq-quarkus-school-timetabling-client/target</directory>
96-
<outputDirectory>binaries/activemq-quarkus-school-timetabling/activemq-quarkus-school-timetabling-client</outputDirectory>
97-
<includes>
98-
<include>quarkus-app/**</include>
99-
</includes>
100-
</fileSet>
101-
<fileSet>
102-
<directory>../../activemq-quarkus-school-timetabling/activemq-quarkus-school-timetabling-solver/target</directory>
103-
<outputDirectory>binaries/activemq-quarkus-school-timetabling/activemq-quarkus-school-timetabling-solver</outputDirectory>
80+
<directory>../../use-cases/call-center/target</directory>
81+
<outputDirectory>binaries/use-cases/call-center</outputDirectory>
10482
<includes>
10583
<include>quarkus-app/**</include>
10684
</includes>

build/quickstarts-distribution/src/main/assembly/sources.xml

+27-22
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<fileSets>
77
<fileSet>
88
<useDefaultExcludes>false</useDefaultExcludes>
9-
<directory>../../hello-world-school-timetabling</directory>
10-
<outputDirectory>sources/hello-world-school-timetabling</outputDirectory>
9+
<directory>../../hello-world</directory>
10+
<outputDirectory>sources/hello-world</outputDirectory>
1111
<excludes>
1212
<exclude>target/**</exclude>
1313
<exclude>build/**</exclude>
@@ -17,8 +17,8 @@
1717
</fileSet>
1818
<fileSet>
1919
<useDefaultExcludes>false</useDefaultExcludes>
20-
<directory>../../quarkus-school-timetabling</directory>
21-
<outputDirectory>sources/quarkus-school-timetabling</outputDirectory>
20+
<directory>../../use-cases/school-timetabling</directory>
21+
<outputDirectory>sources/use-cases/school-timetabling</outputDirectory>
2222
<excludes>
2323
<exclude>target/**</exclude>
2424
<exclude>build/**</exclude>
@@ -28,44 +28,49 @@
2828
</fileSet>
2929
<fileSet>
3030
<useDefaultExcludes>false</useDefaultExcludes>
31-
<directory>../../quarkus-maintenance-scheduling</directory>
32-
<outputDirectory>sources/quarkus-maintenance-scheduling</outputDirectory>
31+
<directory>../../use-cases/facility-location</directory>
32+
<outputDirectory>sources/use-cases/facility-location</outputDirectory>
3333
<excludes>
3434
<exclude>target/**</exclude>
3535
<exclude>.gitignore</exclude>
3636
</excludes>
3737
</fileSet>
3838
<fileSet>
3939
<useDefaultExcludes>false</useDefaultExcludes>
40-
<directory>../../quarkus-facility-location</directory>
41-
<outputDirectory>sources/quarkus-facility-location</outputDirectory>
40+
<directory>../../use-cases/maintenance-scheduling</directory>
41+
<outputDirectory>sources/use-cases/maintenance-scheduling</outputDirectory>
4242
<excludes>
4343
<exclude>target/**</exclude>
4444
<exclude>.gitignore</exclude>
4545
</excludes>
4646
</fileSet>
4747
<fileSet>
4848
<useDefaultExcludes>false</useDefaultExcludes>
49-
<directory>../../quarkus-vaccination-scheduling</directory>
50-
<outputDirectory>sources/quarkus-vaccination-scheduling</outputDirectory>
49+
<directory>../../use-cases/call-center</directory>
50+
<outputDirectory>sources/use-cases/call-center</outputDirectory>
5151
<excludes>
5252
<exclude>target/**</exclude>
5353
<exclude>.gitignore</exclude>
5454
</excludes>
5555
</fileSet>
5656
<fileSet>
5757
<useDefaultExcludes>false</useDefaultExcludes>
58-
<directory>../../quarkus-call-center</directory>
59-
<outputDirectory>sources/quarkus-call-center</outputDirectory>
58+
<directory>../../use-cases/vaccination-scheduling</directory>
59+
<outputDirectory>sources/use-cases/vaccination-scheduling</outputDirectory>
6060
<excludes>
6161
<exclude>target/**</exclude>
6262
<exclude>.gitignore</exclude>
6363
</excludes>
6464
</fileSet>
6565
<fileSet>
6666
<useDefaultExcludes>false</useDefaultExcludes>
67-
<directory>../../spring-boot-school-timetabling</directory>
68-
<outputDirectory>sources/spring-boot-school-timetabling</outputDirectory>
67+
<directory>../../technology/java-quarkus</directory>
68+
<outputDirectory>sources/technology/java-quarkus</outputDirectory>
69+
</fileSet>
70+
<fileSet>
71+
<useDefaultExcludes>false</useDefaultExcludes>
72+
<directory>../../technology/java-spring-boot</directory>
73+
<outputDirectory>sources/technology/java-spring-boot</outputDirectory>
6974
<excludes>
7075
<exclude>target/**</exclude>
7176
<exclude>build/**</exclude>
@@ -75,20 +80,20 @@
7580
</fileSet>
7681
<fileSet>
7782
<useDefaultExcludes>false</useDefaultExcludes>
78-
<directory>../../kotlin-quarkus-school-timetabling</directory>
79-
<outputDirectory>sources/kotlin-quarkus-school-timetabling</outputDirectory>
83+
<directory>../../technology/java-activemq-quarkus</directory>
84+
<outputDirectory>sources/technology/java-activemq-quarkus</outputDirectory>
8085
<excludes>
81-
<exclude>target/**</exclude>
82-
<exclude>.gitignore</exclude>
86+
<exclude>**/target/**</exclude>
87+
<exclude>**/.gitignore</exclude>
8388
</excludes>
8489
</fileSet>
8590
<fileSet>
8691
<useDefaultExcludes>false</useDefaultExcludes>
87-
<directory>../../activemq-quarkus-school-timetabling</directory>
88-
<outputDirectory>sources/activemq-quarkus-school-timetabling</outputDirectory>
92+
<directory>../../technology/kotlin-quarkus</directory>
93+
<outputDirectory>sources/technology/kotlin-quarkus</outputDirectory>
8994
<excludes>
90-
<exclude>**/target/**</exclude>
91-
<exclude>**/.gitignore</exclude>
95+
<exclude>target/**</exclude>
96+
<exclude>.gitignore</exclude>
9297
</excludes>
9398
</fileSet>
9499
</fileSets>

build/quickstarts-showcase/src/main/java/org/optaplanner/quickstarts/all/rest/QuickstartLauncherResource.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,11 @@ public class QuickstartLauncherResource {
6868

6969
public void setup(@Observes StartupEvent startupEvent) {
7070
quickstartMetaList = Arrays.asList(
71-
new QuickstartMeta("quarkus-school-timetabling"),
72-
new QuickstartMeta("quarkus-facility-location"),
73-
new QuickstartMeta("quarkus-maintenance-scheduling"),
74-
new QuickstartMeta("quarkus-vaccination-scheduling"),
75-
new QuickstartMeta("quarkus-call-center"));
71+
new QuickstartMeta("school-timetabling"),
72+
new QuickstartMeta("facility-location"),
73+
new QuickstartMeta("maintenance-scheduling"),
74+
new QuickstartMeta("vaccination-scheduling"),
75+
new QuickstartMeta("call-center"));
7676
File workingDirectory;
7777
try {
7878
workingDirectory = new File(".").getCanonicalFile();
@@ -133,7 +133,7 @@ public void launchQuickstart(@PathParam("quickstartId") String quickstartId) {
133133
processBuilder = new ProcessBuilder("java", portArg, corsArg, "-jar",
134134
getQuickstartRunnerJar(quickstartId).getAbsolutePath());
135135
}
136-
processBuilder.directory(new File(baseDirectory, quickstartId));
136+
processBuilder.directory(new File(new File(baseDirectory, "use-cases"), quickstartId));
137137
processBuilder.inheritIO();
138138
Process process;
139139
try {
@@ -149,7 +149,8 @@ public void launchQuickstart(@PathParam("quickstartId") String quickstartId) {
149149
}
150150

151151
private File getQuickstartRunnerJar(String quickstartId) {
152-
File quickstartRunnerJar = FileSystems.getDefault().getPath(baseDirectory.getAbsolutePath(), quickstartId,
152+
File quickstartRunnerJar = FileSystems.getDefault().getPath(baseDirectory.getAbsolutePath(),
153+
"use-cases", quickstartId,
153154
"quarkus-app", "quarkus-run.jar").toFile();
154155
if (!quickstartRunnerJar.exists()) {
155156
throw new IllegalStateException(
@@ -167,7 +168,7 @@ private String findMvnCommand(File baseDirectory) {
167168
if (!maybeMavenHome.isPresent()) {
168169
LOGGER.warn("Cannot find Maven home. Falling back to Maven Wrapper."
169170
+ " Maybe define environment variable M3_HOME instead.");
170-
String scriptFileName = System.getProperty("os.name").startsWith("Windows") ? "mvnw.cmd" : "mvnw";
171+
String scriptFileName = System.getProperty("os.name").startsWith("Windows") ? "build/mvnw.cmd" : "build/mvnw";
171172
return new File(baseDirectory, scriptFileName).getAbsolutePath();
172173
}
173174
String mavenHome = maybeMavenHome.get().replaceFirst("^~", System.getProperty("user.home"));

build/quickstarts-showcase/src/main/resources/META-INF/resources/app.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -143,20 +143,20 @@ $(document).ready(function () {
143143
});
144144
};
145145
});
146-
$("#quarkus-school-timetabling-launch").click(function () {
147-
launchQuickstart("quarkus-school-timetabling");
146+
$("#school-timetabling-launch").click(function () {
147+
launchQuickstart("school-timetabling");
148148
});
149-
$("#quarkus-facility-location-launch").click(function () {
150-
launchQuickstart("quarkus-facility-location");
149+
$("#facility-location-launch").click(function () {
150+
launchQuickstart("facility-location");
151151
});
152-
$("#quarkus-maintenance-scheduling-launch").click(function () {
153-
launchQuickstart("quarkus-maintenance-scheduling");
152+
$("#maintenance-scheduling-launch").click(function () {
153+
launchQuickstart("maintenance-scheduling");
154154
});
155-
$("#quarkus-vaccination-scheduling-launch").click(function () {
156-
launchQuickstart("quarkus-vaccination-scheduling");
155+
$("#call-center-launch").click(function () {
156+
launchQuickstart("call-center");
157157
});
158-
$("#quarkus-call-center-launch").click(function () {
159-
launchQuickstart("quarkus-call-center");
158+
$("#vaccination-scheduling-launch").click(function () {
159+
launchQuickstart("vaccination-scheduling");
160160
});
161161
$("#exit").click(function () {
162162
exit();

0 commit comments

Comments
 (0)