diff --git a/README.md b/README.md
index 38c0b7f..49058ae 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
Java eAsistent API
@@ -8,7 +8,7 @@
-[![JitPack][jitpack-shield]][jitpack-url]
+[![OTTF][ottf-shield]][ottf-url]
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
@@ -17,44 +17,55 @@
-## Dokumentacija
+## Documentation
Vse metode so dokumentirane in opisane v odseku [Wiki][wiki-url].
-## Namestitev
+## Installation
+Zamenjajte VERSION z zadnjo različico iz [releases][releases-url].
+
### Maven
-1. Dodajte repozitorij v pom.xml datoteko
+1. [Avtenticiraje se z GitHub Packages](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry#authenticating-to-github-packages)
+
+2. Dodajte repozitorij
```xml
-
-
- jitpack.io
- https://jitpack.io
-
-
+
+ github
+ https://maven.pkg.github.com/chocoearly44/jea
+
+ true
+
+
```
-2. Dodajte knjižnjico
+3. Dodajte knjižnjico
```xml
- com.github.chocoearly44
- JEA
- Tag
+ tk.thesuperlab
+ jea
+ VERSION
```
### Gradle
-1. Dodajte repozitorij v gradle datoteko
+1. [Avtenticiraje se z GitHub Packages](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry#authenticating-to-github-packages)
+
+2. Dodajte repozitorij
```groovy
-allprojects {
- repositories {
- maven { url 'https://jitpack.io' }
+repositories {
+ maven {
+ url = uri("https://maven.pkg.github.com/chocoearly44/jea")
+ credentials {
+ username = System.getenv("USERNAME")
+ password = System.getenv("TOKEN")
}
+ }
}
```
-2. Dodajte knjižnjico
+3. Dodajte knjižnjico
```groovy
dependencies {
- implementation 'com.github.chocoearly44:JEA:Tag'
+ implementation 'tk.thesuperlab:jea:VERSION'
}
```
@@ -62,24 +73,24 @@ dependencies {
Knjižnjica bazira na projektu eAsistent wrapper za Python, ki ga je naredil [LevecGG](https://github.com/LevecGG).
## Poročanje o napakah
-Če med uporabo knjižnice naletite na kakršne koli napake, jih prijavite v odseku [Issues][issues-url].
+Če med uporabo JEA naletite na kakršne koli napake, jih prijavite v odseku [Issues][issues-url].
## Podpora
-Dodatno podporo lahko prejmete v odseku [Discussions][discussions-url] tukaj na GitHubu.
+Dodatno podporo lahko prejmete v odseku [Discussions][discussions-url].
+[ottf-shield]: https://img.shields.io/badge/OTTF-v1.0-blueviolet?style=for-the-badge
[contributors-shield]: https://img.shields.io/github/contributors/chocoearly44/JEA.svg?style=for-the-badge
[forks-shield]: https://img.shields.io/github/forks/chocoearly44/JEA.svg?style=for-the-badge
[stars-shield]: https://img.shields.io/github/stars/chocoearly44/JEA.svg?style=for-the-badge
[issues-shield]: https://img.shields.io/github/issues/chocoearly44/JEA.svg?style=for-the-badge
[license-shield]: https://img.shields.io/github/license/chocoearly44/JEA.svg?style=for-the-badge
-[jitpack-shield]: https://img.shields.io/jitpack/v/github/chocoearly44/JEA?style=for-the-badge
+[ottf-url]: https://github.com/OpenTimetable/OpenTimetable-v1
[contributors-url]: https://github.com/chocoearly44/JEA/graphs/contributors
[forks-url]: https://github.com/chocoearly44/JEA/network/members
[stars-url]: https://github.com/chocoearly44/JEA/stargazers
[issues-url]: https://github.com/chocoearly44/JEA/issues
[license-url]: https://github.com/chocoearly44/JEA/blob/master/LICENSE
-[jitpack-url]: https://jitpack.io/#chocoearly44/JEA
[wiki-url]: https://github.com/chocoearly44/JEA/wiki
[releases-url]: https://github.com/chocoearly44/JEA/releases
-[discussions-url]: https://github.com/chocoearly44/JEA/discussions
+[discussions-url]: https://github.com/chocoearly44/JEA/discussions
\ No newline at end of file
diff --git a/assets/icon.png b/assets/icon.png
deleted file mode 100644
index a4f3ce6..0000000
Binary files a/assets/icon.png and /dev/null differ
diff --git a/assets/icon.svg b/assets/icon.svg
new file mode 100644
index 0000000..5ab6331
--- /dev/null
+++ b/assets/icon.svg
@@ -0,0 +1,31 @@
+
diff --git a/jitpack.yml b/jitpack.yml
deleted file mode 100644
index 4c8fca1..0000000
--- a/jitpack.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-jdk:
- - openjdk8
diff --git a/pom.xml b/pom.xml
index 6234ed9..b1be571 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,48 +1,77 @@
-
4.0.0
tk.thesuperlab
jea
- 2.1
+ 2.2
+ JEA
8
8
+
+
+ github
+ GitHub chocoearly44 Apache Maven Packages
+ https://maven.pkg.github.com/chocoearly44/jea
+
+
+
- jitpack.io
- https://jitpack.io
+ github
+ https://maven.pkg.github.com/opentimetable/ottf4j
+
+ true
+
+
- com.github.OpenTimeTable
- JavaOTTF
+ org.opentimetable
+ ottf4j
1.0
+
+ com.squareup.okhttp3
+ okhttp
+ 4.10.0
+
+
+
com.fasterxml.jackson.core
jackson-databind
- 2.13.1
+ 2.13.3
- com.squareup.okhttp3
- okhttp
- 4.9.3
+ org.projectlombok
+ lombok
+ 1.18.24
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ 5.8.2
+ test
- org.jsoup
- jsoup
- 1.14.3
+ io.hosuaby
+ inject-resources-junit-jupiter
+ 0.3.2
+ test
\ No newline at end of file
diff --git a/src/main/java/tk/thesuperlab/jea/JEA.java b/src/main/java/tk/thesuperlab/jea/JEA.java
index 02a1d5f..8b47310 100644
--- a/src/main/java/tk/thesuperlab/jea/JEA.java
+++ b/src/main/java/tk/thesuperlab/jea/JEA.java
@@ -3,22 +3,22 @@
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import okhttp3.*;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.select.Elements;
-import org.opentimetable.javaottf.entities.Timetable;
+import org.opentimetable.ottf4j.entities.Timetable;
import tk.thesuperlab.jea.entities.Evaluation;
import tk.thesuperlab.jea.entities.Subject;
-import tk.thesuperlab.jea.entities.filters.WeekFilter;
import tk.thesuperlab.jea.exceptions.IncorrectCredentialsException;
-import tk.thesuperlab.jea.parseentities.AjaxPrijava;
+import tk.thesuperlab.jea.filters.WeekFilter;
+import tk.thesuperlab.jea.parseentities.login.Auth;
+import tk.thesuperlab.jea.parseentities.login.Credentials;
import tk.thesuperlab.jea.utils.RestUtils;
+import java.io.IOException;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -30,12 +30,6 @@
* @since 2.0
*/
public class JEA {
- private final String uporabniskoIme;
- private final String geslo;
-
- private String bearerToken;
- private String childId;
-
private static final ObjectMapper om;
private static final Format formatter = new SimpleDateFormat("yyyy-MM-dd");
@@ -44,29 +38,29 @@ public class JEA {
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
+ private final String uporabniskoIme;
+ private final String geslo;
+ private String bearerToken;
+ private String childId;
+
/**
* @param uporabniskoIme Vaše uporabniško ime za prijavo v eAsistent
* @param geslo Vaše geslo za prijavo v eAsistent.
- * @throws IncorrectCredentialsException
- * @author chocoearly44
+ * @throws IncorrectCredentialsException Podatki za prijavo so napačni
+ * @throws IOException Napaka pri povezavi
* @since 2.0
*/
- public JEA(String uporabniskoIme, String geslo) throws IncorrectCredentialsException {
+ public JEA(String uporabniskoIme, String geslo) throws IncorrectCredentialsException, IOException {
this.uporabniskoIme = uporabniskoIme;
this.geslo = geslo;
- try {
- getAccessToken();
- } catch(IncorrectCredentialsException e) {
- throw new IncorrectCredentialsException();
- }
+ getAccessToken();
}
/**
* Metoda vam vrne seznam prihodnjih ocenjevanj
*
* @return Seznam ocenjevanj
- * @author chocoearly44
* @since 2.0
*/
public List getFutureEvaluations() {
@@ -77,7 +71,6 @@ public List getFutureEvaluations() {
* Metoda vam vrne seznam preteklih ocenjevanj
*
* @return Seznam ocenjevanj
- * @author chocoearly44
* @since 2.0
*/
public List getPastEvaluations() {
@@ -90,19 +83,29 @@ public List getPastEvaluations() {
* @param ponedeljek Datum ponedeljka v tednu
* @param nedelja Datum nedelje v tednu
* @return OTTF objekt urnika
- * @author chocoearly44
* @since 2.0
*/
public Timetable getTimetable(Date ponedeljek, Date nedelja) {
return RestUtils.getTimetable(bearerToken, childId, formatter.format(ponedeljek), formatter.format(nedelja));
}
+ /**
+ * Metoda vam vrne OTTF objekt tedenskega urnika
+ *
+ * @param ponedeljek Niz ponedeljka v tednu (yyyy-MM-dd)
+ * @param nedelja Niz nedelje v tednu (yyyy-MM-dd)
+ * @return OTTF objekt urnika
+ * @since 2.0
+ */
+ public Timetable getTimetable(String ponedeljek, String nedelja) {
+ return RestUtils.getTimetable(bearerToken, childId, ponedeljek, nedelja);
+ }
+
/**
* Metoda vam vrne OTTF objekt tedenskega urnika glede na tedenski filter
*
* @param tedenskiFilter Tedenski filter
* @return OTTF objekt urnika
- * @author chocoearly44
* @since 2.1
*/
public Timetable getTimetable(WeekFilter tedenskiFilter) {
@@ -148,7 +151,6 @@ public Timetable getTimetable(WeekFilter tedenskiFilter) {
* Metoda vam vrne seznam vseh predmetov
*
* @return seznam vseh predmetov
- * @author chocoearly44
* @since 2.1
*/
public List getAllGrades() {
@@ -161,43 +163,33 @@ private Date getDate(LocalDate localDate) {
);
}
- private void getAccessToken() throws IncorrectCredentialsException {
+ private void getAccessToken() throws IncorrectCredentialsException, IOException {
OkHttpClient client = new OkHttpClient();
- RequestBody body = new FormBody.Builder()
- .add("uporabnik", uporabniskoIme)
- .add("geslo", geslo)
- .build();
+ List types = new ArrayList<>();
+ types.add("child");
+
+ RequestBody body = RequestBody.create(
+ om.writeValueAsString(new Credentials(uporabniskoIme, geslo, types)),
+ MediaType.parse("application/json")
+ );
Request request = new Request.Builder()
- .url("https://www.easistent.com/p/ajax_prijava")
+ .url("https://www.easistent.com/m/login")
.post(body)
+ .addHeader("x-app-name", "family")
+ .addHeader("x-client-version", "13")
+ .addHeader("x-client-platform", "web")
.build();
- try(Response response = client.newCall(request).execute()) {
- AjaxPrijava ajaxPrijava = om.readValue(response.body().string(), AjaxPrijava.class);
-
- if(ajaxPrijava.getStatus().equals("ok")) {
- Request getWebsite = new Request.Builder().url("https://www.easistent.com").addHeader("Cookie", response.headers().get("Set-Cookie")).build();
-
- try(Response easistentWebsite = client.newCall(getWebsite).execute()) {
- String eaWebsite = easistentWebsite.body().string();
- Document website = Jsoup.parse(eaWebsite, "utf-8");
-
- Elements metaElements = website.select("meta");
- for(int i = 0; i < metaElements.size(); i++) {
- if(metaElements.get(i).attr("name").equals("access-token")) {
- bearerToken = metaElements.get(i).attr("content");
- } else if(metaElements.get(i).attr("name").equals("x-child-id")) {
- childId = metaElements.get(i).attr("content");
- }
- }
- }
- } else {
- throw new IncorrectCredentialsException();
- }
- } catch(Exception e) {
- e.printStackTrace();
+ Response response = client.newCall(request).execute();
+
+ if(response.code() == 401) {
+ throw new IncorrectCredentialsException();
}
+
+ Auth auth = om.readValue(response.body().string(), Auth.class);
+ bearerToken = auth.getAccessToken().getBearerToken();
+ childId = String.valueOf(auth.getUser().getId());
}
}
diff --git a/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java b/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java
index 44201c1..33faaa9 100644
--- a/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java
+++ b/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java
@@ -1,10 +1,14 @@
package tk.thesuperlab.jea.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+@Getter
+@Setter
public class Evaluation {
@JsonProperty("id")
- private int id;
+ private Long id;
@JsonProperty("course")
private String course;
@JsonProperty("subject")
@@ -20,60 +24,4 @@ public class Evaluation {
public Evaluation() {
}
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getCourse() {
- return course;
- }
-
- public void setCourse(String course) {
- this.course = course;
- }
-
- public String getSubject() {
- return subject;
- }
-
- public void setSubject(String subject) {
- this.subject = subject;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public String getPeriod() {
- return period;
- }
-
- public void setPeriod(String period) {
- this.period = period;
- }
-
- public String getGrade() {
- return grade;
- }
-
- public void setGrade(String grade) {
- this.grade = grade;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/entities/FinalGrade.java b/src/main/java/tk/thesuperlab/jea/entities/FinalGrade.java
new file mode 100644
index 0000000..dbcba62
--- /dev/null
+++ b/src/main/java/tk/thesuperlab/jea/entities/FinalGrade.java
@@ -0,0 +1,15 @@
+package tk.thesuperlab.jea.entities;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class FinalGrade {
+ @JsonProperty("value")
+ private String value;
+
+ public FinalGrade() {
+ }
+}
diff --git a/src/main/java/tk/thesuperlab/jea/entities/Grade.java b/src/main/java/tk/thesuperlab/jea/entities/Grade.java
index 282ee6c..8c318e4 100644
--- a/src/main/java/tk/thesuperlab/jea/entities/Grade.java
+++ b/src/main/java/tk/thesuperlab/jea/entities/Grade.java
@@ -1,10 +1,14 @@
package tk.thesuperlab.jea.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+@Getter
+@Setter
public class Grade {
@JsonProperty("id")
- private int id;
+ private Long id;
@JsonProperty("type_name")
private String typeName;
@JsonProperty("comment")
@@ -14,36 +18,4 @@ public class Grade {
public Grade() {
}
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getTypeName() {
- return typeName;
- }
-
- public void setTypeName(String typeName) {
- this.typeName = typeName;
- }
-
- public String getComment() {
- return comment;
- }
-
- public void setComment(String comment) {
- this.comment = comment;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java b/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java
index df6f16e..dd03f0b 100644
--- a/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java
+++ b/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java
@@ -1,7 +1,12 @@
package tk.thesuperlab.jea.entities;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
public enum GradeRank {
- poor,
- average,
- good
+ @JsonProperty("poor")
+ POOR,
+ @JsonProperty("average")
+ AVERAGE,
+ @JsonProperty("good")
+ GOOD
}
diff --git a/src/main/java/tk/thesuperlab/jea/entities/Semester.java b/src/main/java/tk/thesuperlab/jea/entities/Semester.java
index 317304e..2c6098a 100644
--- a/src/main/java/tk/thesuperlab/jea/entities/Semester.java
+++ b/src/main/java/tk/thesuperlab/jea/entities/Semester.java
@@ -1,12 +1,16 @@
package tk.thesuperlab.jea.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.ArrayList;
+@Getter
+@Setter
public class Semester {
@JsonProperty("id")
- private int id;
+ private Long id;
@JsonProperty("final_grade")
private String finalGrade;
@JsonProperty("grades")
@@ -14,28 +18,4 @@ public class Semester {
public Semester() {
}
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getFinalGrade() {
- return finalGrade;
- }
-
- public void setFinalGrade(String finalGrade) {
- this.finalGrade = finalGrade;
- }
-
- public ArrayList getGrades() {
- return grades;
- }
-
- public void setGrades(ArrayList grades) {
- this.grades = grades;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/entities/Subject.java b/src/main/java/tk/thesuperlab/jea/entities/Subject.java
index eb18c8d..203896f 100644
--- a/src/main/java/tk/thesuperlab/jea/entities/Subject.java
+++ b/src/main/java/tk/thesuperlab/jea/entities/Subject.java
@@ -1,9 +1,13 @@
package tk.thesuperlab.jea.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.ArrayList;
+@Getter
+@Setter
public class Subject {
@JsonProperty("name")
private String name;
@@ -12,9 +16,9 @@ public class Subject {
@JsonProperty("id")
private String id;
@JsonProperty("is_excused")
- private boolean isExcused;
+ private Boolean isExcused;
@JsonProperty("final_grade")
- private String finalGrade;
+ private FinalGrade finalGrade;
@JsonProperty("average_grade")
private String averageGrade;
@JsonProperty("grade_rank")
@@ -24,68 +28,4 @@ public class Subject {
public Subject() {
}
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getAbbreviation() {
- return abbreviation;
- }
-
- public void setAbbreviation(String abbreviation) {
- this.abbreviation = abbreviation;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public boolean isExcused() {
- return isExcused;
- }
-
- public void setExcused(boolean excused) {
- isExcused = excused;
- }
-
- public String getFinalGrade() {
- return finalGrade;
- }
-
- public void setFinalGrade(String finalGrade) {
- this.finalGrade = finalGrade;
- }
-
- public String getAverageGrade() {
- return averageGrade;
- }
-
- public void setAverageGrade(String averageGrade) {
- this.averageGrade = averageGrade;
- }
-
- public GradeRank getGradeRank() {
- return gradeRank;
- }
-
- public void setGradeRank(GradeRank gradeRank) {
- this.gradeRank = gradeRank;
- }
-
- public ArrayList getSemesters() {
- return semesters;
- }
-
- public void setSemesters(ArrayList semesters) {
- this.semesters = semesters;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/entities/filters/WeekFilter.java b/src/main/java/tk/thesuperlab/jea/filters/WeekFilter.java
similarity index 73%
rename from src/main/java/tk/thesuperlab/jea/entities/filters/WeekFilter.java
rename to src/main/java/tk/thesuperlab/jea/filters/WeekFilter.java
index a87b549..4abac7a 100644
--- a/src/main/java/tk/thesuperlab/jea/entities/filters/WeekFilter.java
+++ b/src/main/java/tk/thesuperlab/jea/filters/WeekFilter.java
@@ -1,4 +1,4 @@
-package tk.thesuperlab.jea.entities.filters;
+package tk.thesuperlab.jea.filters;
/**
* Tedenski filter za urnik
@@ -13,7 +13,7 @@ public enum WeekFilter {
LAST_WEEK,
/**
- * Pridobi urnik za trenutni (tekoči) teden
+ * Pridobi urnik za tekoči teden
*/
CURRENT_WEEK,
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/AjaxPrijava.java b/src/main/java/tk/thesuperlab/jea/parseentities/AjaxPrijava.java
deleted file mode 100644
index 6c4fb4d..0000000
--- a/src/main/java/tk/thesuperlab/jea/parseentities/AjaxPrijava.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package tk.thesuperlab.jea.parseentities;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class AjaxPrijava {
- @JsonProperty("status")
- private String status;
-
- public AjaxPrijava() {
- }
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
- }
-}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java b/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java
index 54107d3..52525c0 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java
@@ -1,22 +1,18 @@
package tk.thesuperlab.jea.parseentities;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import tk.thesuperlab.jea.entities.Evaluation;
import java.util.ArrayList;
+@Getter
+@Setter
public class EvaluationList {
@JsonProperty("items")
ArrayList evaluations;
public EvaluationList() {
}
-
- public ArrayList getEvaluations() {
- return evaluations;
- }
-
- public void setEvaluations(ArrayList evaluations) {
- this.evaluations = evaluations;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java b/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java
index bbcd99e..80e5817 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java
@@ -1,22 +1,18 @@
package tk.thesuperlab.jea.parseentities;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import tk.thesuperlab.jea.entities.Subject;
import java.util.ArrayList;
+@Getter
+@Setter
public class SubjectList {
@JsonProperty("items")
private ArrayList subjects;
public SubjectList() {
}
-
- public ArrayList getSubjects() {
- return subjects;
- }
-
- public void setSubjects(ArrayList subjects) {
- this.subjects = subjects;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/AccessToken.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/AccessToken.java
new file mode 100644
index 0000000..8a0e76a
--- /dev/null
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/AccessToken.java
@@ -0,0 +1,15 @@
+package tk.thesuperlab.jea.parseentities.login;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class AccessToken {
+ @JsonProperty("token")
+ private String bearerToken;
+
+ public AccessToken() {
+ }
+}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/Auth.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/Auth.java
new file mode 100644
index 0000000..aa9016b
--- /dev/null
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/Auth.java
@@ -0,0 +1,17 @@
+package tk.thesuperlab.jea.parseentities.login;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class Auth {
+ @JsonProperty("access_token")
+ private AccessToken accessToken;
+ @JsonProperty("user")
+ private User user;
+
+ public Auth() {
+ }
+}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/Credentials.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/Credentials.java
new file mode 100644
index 0000000..1217334
--- /dev/null
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/Credentials.java
@@ -0,0 +1,27 @@
+package tk.thesuperlab.jea.parseentities.login;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class Credentials {
+ @JsonProperty("username")
+ private String username;
+ @JsonProperty("password")
+ private String password;
+ @JsonProperty("supported_user_types")
+ private List supportedUserTypes;
+
+ public Credentials(String username, String password, List supportedUserTypes) {
+ this.username = username;
+ this.password = password;
+ this.supportedUserTypes = supportedUserTypes;
+ }
+
+ public Credentials() {
+ }
+}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/User.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/User.java
new file mode 100644
index 0000000..a104e5c
--- /dev/null
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/User.java
@@ -0,0 +1,15 @@
+package tk.thesuperlab.jea.parseentities.login;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class User {
+ @JsonProperty("id")
+ private Long id;
+
+ public User() {
+ }
+}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java
index e596607..15813e4 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java
@@ -1,7 +1,11 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+@Getter
+@Setter
public class EaDay {
@JsonProperty("name")
private String name;
@@ -10,20 +14,4 @@ public class EaDay {
public EaDay() {
}
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
}
\ No newline at end of file
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java
index dbc7968..3c45da3 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java
@@ -1,41 +1,21 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.List;
+@Getter
+@Setter
public class EaDayEvent {
@JsonProperty("date")
private String date;
@JsonProperty("name")
private String name;
@JsonProperty("teachers")
- private List teachers;
+ private List teachers;
public EaDayEvent() {
}
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public List getTeachers() {
- return teachers;
- }
-
- public void setTeachers(List teachers) {
- this.teachers = teachers;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java
index bb91092..691bce8 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java
@@ -1,9 +1,13 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.List;
+@Getter
+@Setter
public class EaEvent {
@JsonProperty("date")
private String date;
@@ -11,41 +15,11 @@ public class EaEvent {
private String name;
@JsonProperty("time")
private EaTime time;
+ @JsonProperty("location")
+ private EaNameElement location;
@JsonProperty("teachers")
- private List teachers;
+ private List teachers;
public EaEvent() {
}
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public EaTime getTime() {
- return time;
- }
-
- public void setTime(EaTime time) {
- this.time = time;
- }
-
- public List getTeachers() {
- return teachers;
- }
-
- public void setTeachers(List teachers) {
- this.teachers = teachers;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTeacher.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaNameElement.java
similarity index 50%
rename from src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTeacher.java
rename to src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaNameElement.java
index f6990ea..27ab148 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTeacher.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaNameElement.java
@@ -1,19 +1,15 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
-public class EaTeacher {
+@Getter
+@Setter
+public class EaNameElement {
@JsonProperty("name")
private String name;
- public EaTeacher() {
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
+ public EaNameElement() {
}
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java
index c3ffd72..d61db44 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java
@@ -1,10 +1,14 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+@Getter
+@Setter
public class EaPeriod {
@JsonProperty("id")
- private int id;
+ private Long id;
@JsonProperty("name")
private String name;
@JsonProperty("time")
@@ -14,36 +18,4 @@ public class EaPeriod {
public EaPeriod() {
}
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public EaTime getTime() {
- return time;
- }
-
- public void setTime(EaTime time) {
- this.time = time;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java
index fd7cc29..688d7a6 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java
@@ -1,61 +1,25 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.List;
+@Getter
+@Setter
public class EaSchoolEvent {
@JsonProperty("time")
private EaSchoolEventTime time;
@JsonProperty("subject")
- private EaSchoolEventSubject subject;
+ private EaNameElement subject;
@JsonProperty("hour_special_type")
private String specialType;
@JsonProperty("classroom")
- private EaSchoolEventClassroom classroom;
+ private EaNameElement classroom;
@JsonProperty("teachers")
- private List teachers;
+ private List teachers;
public EaSchoolEvent() {
}
-
- public EaSchoolEventTime getTime() {
- return time;
- }
-
- public void setTime(EaSchoolEventTime time) {
- this.time = time;
- }
-
- public EaSchoolEventSubject getSubject() {
- return subject;
- }
-
- public void setSubject(EaSchoolEventSubject subject) {
- this.subject = subject;
- }
-
- public String getSpecialType() {
- return specialType;
- }
-
- public void setSpecialType(String specialType) {
- this.specialType = specialType;
- }
-
- public EaSchoolEventClassroom getClassroom() {
- return classroom;
- }
-
- public void setClassroom(EaSchoolEventClassroom classroom) {
- this.classroom = classroom;
- }
-
- public List getTeachers() {
- return teachers;
- }
-
- public void setTeachers(List teachers) {
- this.teachers = teachers;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventClassroom.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventClassroom.java
deleted file mode 100644
index 12633b0..0000000
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventClassroom.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package tk.thesuperlab.jea.parseentities.timetable;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class EaSchoolEventClassroom {
- @JsonProperty("name")
- private String name;
-
- public EaSchoolEventClassroom() {
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventSubject.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventSubject.java
deleted file mode 100644
index edd5fed..0000000
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventSubject.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package tk.thesuperlab.jea.parseentities.timetable;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class EaSchoolEventSubject {
- @JsonProperty("name")
- private String name;
-
- public EaSchoolEventSubject() {
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java
index c51b038..542ed05 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java
@@ -1,29 +1,17 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+@Getter
+@Setter
public class EaSchoolEventTime {
@JsonProperty("from_id")
- private int periodId;
+ private Long periodId;
@JsonProperty("date")
private String date;
public EaSchoolEventTime() {
}
-
- public int getPeriodId() {
- return periodId;
- }
-
- public void setPeriodId(int periodId) {
- this.periodId = periodId;
- }
-
- public String getDate() {
- return date;
- }
-
- public void setDate(String date) {
- this.date = date;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java
index abdb6b7..adcc764 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java
@@ -1,7 +1,11 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+@Getter
+@Setter
public class EaTime {
@JsonProperty("from")
private String from;
@@ -10,20 +14,4 @@ public class EaTime {
public EaTime() {
}
-
- public String getFrom() {
- return from;
- }
-
- public void setFrom(String from) {
- this.from = from;
- }
-
- public String getTo() {
- return to;
- }
-
- public void setTo(String to) {
- this.to = to;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java
index c48d777..43e97c1 100644
--- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java
+++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java
@@ -1,9 +1,13 @@
package tk.thesuperlab.jea.parseentities.timetable;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.List;
+@Getter
+@Setter
public class EaTimetable {
@JsonProperty("time_table")
private List periods;
@@ -18,44 +22,4 @@ public class EaTimetable {
public EaTimetable() {
}
-
- public List getPeriods() {
- return periods;
- }
-
- public void setPeriods(List periods) {
- this.periods = periods;
- }
-
- public List getDays() {
- return days;
- }
-
- public void setDays(List days) {
- this.days = days;
- }
-
- public List getSchoolEvents() {
- return schoolEvents;
- }
-
- public void setSchoolEvents(List schoolEvents) {
- this.schoolEvents = schoolEvents;
- }
-
- public List getEvents() {
- return events;
- }
-
- public void setEvents(List events) {
- this.events = events;
- }
-
- public List getDayEvents() {
- return dayEvents;
- }
-
- public void setDayEvents(List dayEvents) {
- this.dayEvents = dayEvents;
- }
}
diff --git a/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java b/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java
index 94da96a..1dca870 100644
--- a/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java
+++ b/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java
@@ -3,14 +3,15 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
-import org.opentimetable.javaottf.entities.*;
-import org.opentimetable.javaottf.enums.WeekDay;
-import tk.thesuperlab.jea.parseentities.timetable.*;
+import org.opentimetable.ottf4j.entities.*;
+import tk.thesuperlab.jea.parseentities.timetable.EaNameElement;
+import tk.thesuperlab.jea.parseentities.timetable.EaTimetable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.TreeMap;
+import java.util.stream.Collectors;
public class OttfUtils {
private static final ObjectMapper om;
@@ -24,155 +25,126 @@ public static Timetable convertTimetable(String rawSchedule) throws JsonProcessi
Timetable toReturn = new Timetable();
EaTimetable eaTimetable = om.readValue(rawSchedule, EaTimetable.class);
+ // Set metadata
+ toReturn.setMetadata(
+ new Metadata(
+ "1.0",
+ "CEST",
+ "Java eAsistent API",
+ System.currentTimeMillis() / 1000
+ )
+ );
+
// Set cues
Cues cues = new Cues();
- TreeMap periods = new TreeMap();
- HashMap periodIds = new HashMap();
- ArrayList recesses = new ArrayList();
-
- for(EaPeriod eaPeriod : eaTimetable.getPeriods()) {
- Span span = new Span();
- span.setFrom(eaPeriod.getTime().getFrom());
- span.setTo(eaPeriod.getTime().getTo());
-
- if(eaPeriod.getType().equals("default")) {
- periods.put(eaPeriod.getName(), span);
- periodIds.put(eaPeriod.getId(), span);
- } else if(eaPeriod.getType().equals("break")) {
- recesses.add(span);
- }
- }
-
- cues.setPeriods(periods);
- cues.setRecesses(recesses);
-
- // Set days
- HashMap days = new HashMap();
-
- for(EaDay eaDay : eaTimetable.getDays()) {
- Day day = new Day();
- WeekDay weekDay = null;
-
- day.setDate(eaDay.getDate());
- day.setPreclasses(new TreeMap>());
- day.setClasses(new TreeMap>());
- day.setEvents(new ArrayList());
- day.setDayevents(new ArrayList());
-
- switch(eaDay.getName()) {
- case "Ponedeljek":
- weekDay = WeekDay.MON;
- break;
- case "Torek":
- weekDay = WeekDay.TUE;
- break;
- case "Sreda":
- weekDay = WeekDay.WED;
- break;
- case "Četrtek":
- weekDay = WeekDay.THU;
- break;
- case "Petek":
- weekDay = WeekDay.FRI;
- break;
- }
-
- days.put(weekDay, day);
- }
-
- // Set Classes
- HashMap tempDays = new HashMap();
-
- for(Day dayScan : days.values()) {
- tempDays.put(dayScan.getDate(), dayScan);
- }
-
- for(EaSchoolEvent periodEvent : eaTimetable.getSchoolEvents()) {
- Day dayToModify = tempDays.get(periodEvent.getTime().getDate());
-
- ClassEvent classToAdd = new ClassEvent();
-
- if(periodEvent.getSpecialType() != null && !periodEvent.getSpecialType().isEmpty()) {
- classToAdd.setSubstitution(periodEvent.getSpecialType().equals("substitution"));
- classToAdd.setExamination(periodEvent.getSpecialType().equals("exam"));
- classToAdd.setCanceled(periodEvent.getSpecialType().equals("cancelled"));
- }
-
- classToAdd.setName(periodEvent.getSubject().getName());
- classToAdd.setAbbreviation(periodEvent.getSubject().getName());
- classToAdd.setLocation(periodEvent.getClassroom().getName());
- classToAdd.setHosts(new ArrayList());
-
- for(EaTeacher eaTeacher : periodEvent.getTeachers()) {
- classToAdd.getHosts().add(eaTeacher.getName());
- }
-
- Span classSpan = periodIds.get(periodEvent.getTime().getPeriodId());
- String spanName = "";
-
- for(String name : periods.keySet()) {
- if(periods.get(name) == classSpan) {
- spanName = name;
- break;
- }
- }
-
- dayToModify.getClasses().computeIfAbsent(spanName, k -> new ArrayList());
-
- ArrayList classesToModify = (ArrayList) dayToModify.getClasses().get(spanName);
- classesToModify.add(classToAdd);
-
- dayToModify.getClasses().put(spanName, classesToModify);
- }
-
- // Set events
- ArrayList events = new ArrayList();
-
- for(EaEvent eaEvent : eaTimetable.getEvents()) {
- Event eventToAdd = new Event();
- eventToAdd.setFrom(eaEvent.getTime().getFrom());
- eventToAdd.setTo(eaEvent.getTime().getTo());
- eventToAdd.setTitle(eaEvent.getName());
-
- ArrayList eventTeachers = new ArrayList();
- for(EaTeacher teacher : eaEvent.getTeachers()) {
- eventTeachers.add(teacher.getName());
- }
-
- eventToAdd.setHosts(eventTeachers);
-
- Day dayToModify = tempDays.get(eaEvent.getDate());
- if(dayToModify.getEvents() != null) {
- dayToModify.setEvents(new ArrayList());
- }
-
- dayToModify.getEvents().add(eventToAdd);
- }
-
- // Set day events
- ArrayList dayEvents = new ArrayList();
-
- for(EaDayEvent eaDayEvent : eaTimetable.getDayEvents()) {
- DayEvent dayEventToAdd = new DayEvent();
- dayEventToAdd.setTitle(eaDayEvent.getName());
-
- ArrayList eventTeachers = new ArrayList();
- for(EaTeacher teacher : eaDayEvent.getTeachers()) {
- eventTeachers.add(teacher.getName());
- }
-
- dayEventToAdd.setHosts(eventTeachers);
-
- Day dayToModify = tempDays.get(eaDayEvent.getDate());
- if(dayToModify.getDayevents() != null) {
- dayToModify.setDayevents(new ArrayList());
- }
- dayToModify.getDayevents().add(dayEventToAdd);
- }
+ // Set recesses
+ List recesses = eaTimetable.getPeriods().stream()
+ .filter(eaPeriod -> eaPeriod.getType().equals("break"))
+ .map(eaPeriod -> new Span(
+ eaPeriod.getTime().getFrom(),
+ eaPeriod.getTime().getTo()
+ ))
+ .collect(Collectors.toList());
+ cues.setRecesses(recesses);
- toReturn.setVersion("1.0");
+ // Set periods
+ TreeMap orderedPeriods = new TreeMap<>();
+ HashMap periodMap = new HashMap<>();
+
+ eaTimetable.getPeriods().stream()
+ .filter(eaPeriod -> eaPeriod.getType().equals("default"))
+ .forEachOrdered(eaPeriod -> {
+ periodMap.put(eaPeriod.getId(), eaPeriod.getName());
+ orderedPeriods.put(
+ eaPeriod.getName(),
+ new Span(
+ eaPeriod.getTime().getFrom(),
+ eaPeriod.getTime().getTo()
+ )
+ );
+ });
+ cues.setPeriods(orderedPeriods);
toReturn.setCues(cues);
+
+ // Set days
+ TreeMap days = new TreeMap<>();
+
+ // School hour
+ eaTimetable.getSchoolEvents()
+ .forEach(eaSchoolEvent -> {
+ Long eaPeriodId = eaSchoolEvent.getTime().getPeriodId();
+ String periodSequence = periodMap.get(eaPeriodId);
+
+ String date = eaSchoolEvent.getTime().getDate();
+ String specialType = eaSchoolEvent.getSpecialType();
+
+ // Days
+ Day day = days.getOrDefault(date, new Day(new TreeMap<>(), new ArrayList<>(), new ArrayList<>()));
+
+ // Classes
+ List currentPeriod = day.getClasses().getOrDefault(periodSequence, new ArrayList<>());
+
+ currentPeriod.add(
+ new ClassEvent(
+ specialType != null && specialType.equals("substitution"),
+ specialType != null && specialType.equals("exam"),
+ specialType != null && specialType.equals("cancelled"),
+ eaSchoolEvent.getSubject().getName(),
+ eaSchoolEvent.getSubject().getName(),
+ eaSchoolEvent.getClassroom().getName(),
+ eaSchoolEvent.getTeachers().stream()
+ .map(EaNameElement::getName)
+ .collect(Collectors.toList())
+ )
+ );
+ day.getClasses().put(periodSequence, currentPeriod);
+ days.put(date, day);
+ });
+
+ // Events
+ eaTimetable.getEvents()
+ .forEach(eaEvent -> {
+ Day eventDay = days.get(eaEvent.getDate());
+
+ if(eventDay == null) {
+ eventDay = new Day(new TreeMap<>(), new ArrayList<>(), new ArrayList<>());
+ days.put(eaEvent.getDate(), eventDay);
+ }
+
+ eventDay.getEvents().add(
+ new Event(
+ eaEvent.getTime().getFrom(),
+ eaEvent.getTime().getTo(),
+ eaEvent.getName(),
+ eaEvent.getLocation().getName(),
+ eaEvent.getTeachers().stream()
+ .map(EaNameElement::getName)
+ .collect(Collectors.toList())
+ )
+ );
+ });
+
+ // Day events
+ eaTimetable.getDayEvents()
+ .forEach(eaDayEvent -> {
+ Day eventDay = days.get(eaDayEvent.getDate());
+
+ if(eventDay == null) {
+ eventDay = new Day(new TreeMap<>(), new ArrayList<>(), new ArrayList<>());
+ days.put(eaDayEvent.getDate(), eventDay);
+ }
+
+ eventDay.getDayevents().add(
+ new DayEvent(
+ eaDayEvent.getName(),
+ "",
+ eaDayEvent.getTeachers().stream()
+ .map(EaNameElement::getName)
+ .collect(Collectors.toList())
+ )
+ );
+ });
toReturn.setDays(days);
return toReturn;
diff --git a/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java b/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java
index f212730..0d71f28 100644
--- a/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java
+++ b/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java
@@ -5,7 +5,7 @@
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
-import org.opentimetable.javaottf.entities.Timetable;
+import org.opentimetable.ottf4j.entities.Timetable;
import tk.thesuperlab.jea.entities.Evaluation;
import tk.thesuperlab.jea.entities.Subject;
import tk.thesuperlab.jea.parseentities.EvaluationList;
diff --git a/src/test/java/tk/thesuperlab/jea/JEATest.java b/src/test/java/tk/thesuperlab/jea/JEATest.java
new file mode 100644
index 0000000..396f593
--- /dev/null
+++ b/src/test/java/tk/thesuperlab/jea/JEATest.java
@@ -0,0 +1,39 @@
+package tk.thesuperlab.jea;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import tk.thesuperlab.jea.exceptions.IncorrectCredentialsException;
+import tk.thesuperlab.jea.filters.WeekFilter;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+class JEATest {
+ static JEA jea;
+
+ @BeforeAll
+ static void setup() throws IncorrectCredentialsException, IOException {
+ jea = new JEA(System.getenv("USERNAME"), System.getenv("PASSWORD"));
+ }
+
+ @Test
+ void getFutureEvaluations() {
+ assertNotNull(jea.getFutureEvaluations());
+ }
+
+ @Test
+ void getPastEvaluations() {
+ assertNotNull(jea.getPastEvaluations());
+ }
+
+ @Test
+ void getTimetable() {
+ assertNotNull(jea.getTimetable(WeekFilter.CURRENT_WEEK));
+ }
+
+ @Test
+ void getAllGrades() {
+ assertNotNull(jea.getAllGrades());
+ }
+}
\ No newline at end of file