diff --git a/build.gradle.kts b/build.gradle.kts index b4a6c14..19555b2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "team.themoment.datagsm.sdk" -version = "1.1.1" +version = "1.2.0" java { toolchain { diff --git a/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApi.java b/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApi.java index 2fbf056..c038d8b 100644 --- a/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApi.java +++ b/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApi.java @@ -35,7 +35,7 @@ class StudentRequest { private Sex sex; private StudentRole role; private Integer dormitoryRoom; - private Boolean isGraduate; + private EnrollmentFilter enrollmentFilter; private Integer page; private Integer size; private StudentSortBy sortBy; @@ -92,8 +92,8 @@ public StudentRequest dormitoryRoom(Integer dormitoryRoom) { return this; } - public StudentRequest isGraduate(Boolean isGraduate) { - this.isGraduate = isGraduate; + public StudentRequest enrollmentFilter(EnrollmentFilter enrollmentFilter) { + this.enrollmentFilter = enrollmentFilter; return this; } @@ -153,8 +153,8 @@ public Integer getDormitoryRoom() { return dormitoryRoom; } - public Boolean getIsGraduated() { - return isGraduate; + public EnrollmentFilter getEnrollmentFilter() { + return enrollmentFilter; } public Integer getPage() { diff --git a/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApiImpl.java b/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApiImpl.java index 007bec6..ad7f5b6 100644 --- a/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApiImpl.java +++ b/src/main/java/team/themoment/datagsm/sdk/openapi/client/StudentApiImpl.java @@ -73,8 +73,8 @@ private Map buildStudentQueryParams(StudentRequest request) { if (request.getDormitoryRoom() != null) { params.put("dormitoryRoom", request.getDormitoryRoom().toString()); } - if (request.getIsGraduated() != null) { - params.put("isGraduated", request.getIsGraduated().toString()); + if (request.getEnrollmentFilter() != null) { + request.getEnrollmentFilter().applyToParams(params); } if (request.getPage() != null) { params.put("page", request.getPage().toString()); diff --git a/src/main/java/team/themoment/datagsm/sdk/openapi/model/EnrollmentFilter.java b/src/main/java/team/themoment/datagsm/sdk/openapi/model/EnrollmentFilter.java new file mode 100644 index 0000000..9492123 --- /dev/null +++ b/src/main/java/team/themoment/datagsm/sdk/openapi/model/EnrollmentFilter.java @@ -0,0 +1,45 @@ +package team.themoment.datagsm.sdk.openapi.model; + +import java.util.Map; + +public abstract class EnrollmentFilter { + EnrollmentFilter() {} + + public static OnlyEnrolled onlyEnrolled() { return new OnlyEnrolled(); } + public static Detailed detailed() { return new Detailed(); } + + public abstract void applyToParams(Map params); + + public static final class OnlyEnrolled extends EnrollmentFilter { + private OnlyEnrolled() {} + + @Override + public void applyToParams(Map params) { + params.put("onlyEnrolled", "true"); + } + } + + public static final class Detailed extends EnrollmentFilter { + private Boolean includeGraduates = false; + private Boolean includeWithdrawn = false; + + private Detailed() {} + + public Detailed includeGraduates(boolean include) { + this.includeGraduates = include; + return this; + } + + public Detailed includeWithdrawn(boolean include) { + this.includeWithdrawn = include; + return this; + } + + @Override + public void applyToParams(Map params) { + params.put("onlyEnrolled", "false"); + if (includeGraduates != null) params.put("includeGraduates", includeGraduates.toString()); + if (includeWithdrawn != null) params.put("includeWithdrawn", includeWithdrawn.toString()); + } + } +}