diff --git a/pom.xml b/pom.xml
index 01a0c0e..2e66d96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,8 +14,8 @@
UTF-8
- 11
- 11
+ 17
+ 17
diff --git a/src/main/java/xyz/thastertyn/Scrape/Jidelna.java b/src/main/java/xyz/thastertyn/Scrape/Jidelna.java
index 9a9afbb..505d8d0 100644
--- a/src/main/java/xyz/thastertyn/Scrape/Jidelna.java
+++ b/src/main/java/xyz/thastertyn/Scrape/Jidelna.java
@@ -7,29 +7,33 @@ import xyz.thastertyn.Types.Options;
public class Jidelna extends JecnaScrape {
- try {
+ //public void foo()
+ //{
+ // try {
- Document obedy = Jsoup.connect("https://objednavky.jidelnasokolska.cz/faces/secured/month.jsp?terminal=false&keyboard=&printer=")
- .header("Connection", "keep-alive")
- .cookie("XSRF-TOKEN", XSRF_TOKEN)
- .cookie("JSESSIONID", jidelnaJSESSIONID)
- .get();
+ // Document obedy = Jsoup.connect("https://objednavky.jidelnasokolska.cz/faces/secured/month.jsp?terminal=false&keyboard=&printer=")
+ // .header("Connection", "keep-alive")
+ // .cookie("XSRF-TOKEN", XSRF_TOKEN)
+ // .cookie("JSESSIONID", jidelnaJSESSIONID)
+ // .get();
- System.out.println(obedy.toString());
+ // System.out.println(obedy.toString());
- //#endregion
+ // //#endregion
+
+ // } catch (IOException e) {
+ // // TO DO Auto-generated catch block
+ // e.printStackTrace();
+ // } catch (SecurityException e)
+ // {
+ // e.printStackTrace();
+ // }
+ //}
- } catch (IOException e) {
- // TO DO Auto-generated catch block
- e.printStackTrace();
- } catch (SecurityException e)
- {
- e.printStackTrace();
- }
@Override
public Options[] getOptions() {
diff --git a/src/main/java/xyz/thastertyn/Scrape/Rozvrh.java b/src/main/java/xyz/thastertyn/Scrape/Rozvrh.java
index 1ff1437..9478de8 100644
--- a/src/main/java/xyz/thastertyn/Scrape/Rozvrh.java
+++ b/src/main/java/xyz/thastertyn/Scrape/Rozvrh.java
@@ -67,7 +67,7 @@ public class Rozvrh extends JecnaScrape {
{
String predmet = radkyRozvrhuHTML[i+1].get(j+1).select("span.subject").text();
- // Predmety jako CEL jsou trikrat, staci ale jen jednou
+ // Subjects like CEL are thrice, even though everyone has them, make it single
String[] split = predmet.split(" ");
HashSet set = new HashSet<>(Arrays.asList(split));
String pr = String.join("/", set);
diff --git a/src/main/java/xyz/thastertyn/Scrape/Znamky.java b/src/main/java/xyz/thastertyn/Scrape/Znamky.java
index fc47c0b..bf153b0 100644
--- a/src/main/java/xyz/thastertyn/Scrape/Znamky.java
+++ b/src/main/java/xyz/thastertyn/Scrape/Znamky.java
@@ -9,6 +9,7 @@ import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import xyz.thastertyn.Types.Choice;
+import xyz.thastertyn.Types.FinalMark;
import xyz.thastertyn.Types.Option;
import xyz.thastertyn.Types.Options;
import xyz.thastertyn.Types.Predmet;
@@ -16,8 +17,6 @@ import xyz.thastertyn.Types.Znamka;
public class Znamky extends JecnaScrape {
- private boolean wasDownloaded;
-
// schoolYear, schoolYearId
private ArrayList predmety;
@@ -74,7 +73,7 @@ public class Znamky extends JecnaScrape {
predmety.add(new Predmet(jmenoPredmetu));
}else{
String vyslednaZnamka = radkyPredmetuHTML[i].get(2).select("a.scoreFinal").text();
- predmety.add(new Predmet(jmenoPredmetu, Integer.parseInt(vyslednaZnamka)));
+ predmety.add(new Predmet(jmenoPredmetu, FinalMark.fromValue(vyslednaZnamka)));
}
for(Element znamkaElement : radkyPredmetuHTML[i].get(1).select("a.score"))
@@ -95,6 +94,8 @@ public class Znamky extends JecnaScrape {
predmety.get(subjectIndex).addZnamka(new Znamka(znamka, jeMala, textZnamky));
}
+ predmety.get(subjectIndex).calculateFinalMark();
+
subjectIndex++;
}
@@ -115,8 +116,6 @@ public class Znamky extends JecnaScrape {
boolean isDefault = e.hasAttr("selected");
schoolHalfYearOptions.addOption(new Option(e.text(), e.attr("value"), isDefault));
}
-
- wasDownloaded = true;
}
public ArrayList getPredmety()
@@ -128,12 +127,4 @@ public class Znamky extends JecnaScrape {
{
return new Options[] {schoolYearOptions, schoolHalfYearOptions};
}
-
- @Override
- public String toString()
- {
- return (wasDownloaded) ?
- "All up and ready for use" :
- "Nothing downloaded yet";
- }
}
\ No newline at end of file
diff --git a/src/main/java/xyz/thastertyn/Types/FinalMark.java b/src/main/java/xyz/thastertyn/Types/FinalMark.java
new file mode 100644
index 0000000..2c0d2a2
--- /dev/null
+++ b/src/main/java/xyz/thastertyn/Types/FinalMark.java
@@ -0,0 +1,70 @@
+package xyz.thastertyn.Types;
+
+public class FinalMark{
+ public static final FinalMark VYBORNY = new FinalMark(1, "1");
+ public static final FinalMark CHVALITEBNY = new FinalMark(2, "2");
+ public static final FinalMark DOBRY = new FinalMark(3, "3");
+ public static final FinalMark DOSTATECNY = new FinalMark(4, "4");
+ public static final FinalMark NEDOSTATECNY = new FinalMark(5, "5");
+
+ public static final FinalMark NEHODNOCEN = new FinalMark(-1, "N");
+ public static final FinalMark NAPOMENUT_ZA_NEKLASIFIKACI = new FinalMark(-2, "N?");
+
+ public static final FinalMark UVOLNEN = new FinalMark(-3, "U");
+
+ public static final FinalMark NAPOMENUT_ZA_ZAOSTAVANI = new FinalMark(-4, "5?");
+
+ public static final FinalMark UNKNOWN = new FinalMark(-5, "?");
+ // #94701b
+ private double value;
+ private String stringValue;
+
+ private FinalMark(double value, String stringValue)
+ {
+ this.stringValue = stringValue;
+ this.value = value;
+ }
+
+ public FinalMark(double value)
+ {
+ this.value = value;
+ this.stringValue = String.format("%.2f", value);
+ }
+
+ public double getValue()
+ {
+ return value;
+ }
+
+ @Override
+ public String toString()
+ {
+ return stringValue;
+ }
+
+ public static FinalMark fromValue(String value)
+ {
+ if(!value.matches("[0-9]"))
+ {
+ return switch (value) {
+ case "N" -> NEHODNOCEN;
+ case "N?" -> NAPOMENUT_ZA_NEKLASIFIKACI;
+ case "5?" -> NAPOMENUT_ZA_ZAOSTAVANI;
+ case "U" -> UVOLNEN;
+ default -> UNKNOWN;
+ };
+ }else{
+ int numericValue = Integer.parseInt(value);
+
+ return switch (numericValue) {
+ case 1 -> VYBORNY;
+ case 2 -> CHVALITEBNY;
+ case 3 -> DOBRY;
+ case 4 -> DOSTATECNY;
+ case 5 -> NEDOSTATECNY;
+ default -> UNKNOWN;
+ };
+ }
+ }
+}
+
diff --git a/src/main/java/xyz/thastertyn/Types/Option.java b/src/main/java/xyz/thastertyn/Types/Option.java
index f87561d..90360b6 100644
--- a/src/main/java/xyz/thastertyn/Types/Option.java
+++ b/src/main/java/xyz/thastertyn/Types/Option.java
@@ -13,9 +13,6 @@ public class Option {
public boolean isDefault() {
return isDefault;
}
- public String getText() {
- return text;
- }
public String getValue() {
return value;
}
diff --git a/src/main/java/xyz/thastertyn/Types/Predmet.java b/src/main/java/xyz/thastertyn/Types/Predmet.java
index ae5f365..00b78fb 100644
--- a/src/main/java/xyz/thastertyn/Types/Predmet.java
+++ b/src/main/java/xyz/thastertyn/Types/Predmet.java
@@ -4,52 +4,49 @@ import java.util.ArrayList;
public class Predmet {
- private ArrayList znamky = new ArrayList<>();
- private String jmenoPredmetu = "";
+ private ArrayList marks = new ArrayList<>();
+ private String subjectName = "";
private boolean isFinal = false;
- private int vyslednaZnamka = 0;
+ private FinalMark finalMark = FinalMark.UNKNOWN;
- public Predmet(String jmenoPredmetu)
+ public Predmet(String subjectName)
{
- this.jmenoPredmetu = jmenoPredmetu;
+ this.subjectName = subjectName;
}
- public Predmet(String jmenoPredmetu, int vyslednaZnamka)
+ public Predmet(String subjectName, FinalMark finalMark)
{
- this.jmenoPredmetu = jmenoPredmetu;
- this.vyslednaZnamka = vyslednaZnamka;
+ this.subjectName = subjectName;
+ this.finalMark = finalMark;
isFinal = true;
}
- public void addZnamka(Znamka novaZnamka)
+ public void addZnamka(Znamka newMark)
{
- znamky.add(novaZnamka);
+ marks.add(newMark);
}
- public double getVyslednaZnamka()
+ public void calculateFinalMark()
{
- if(vyslednaZnamka != 0)
- {
- return vyslednaZnamka;
- }
-
- if(znamky.isEmpty())
- {
- return 0;
- }
+ int total = marks
+ .stream()
+ .mapToInt((z) -> z.getZnamka() * z.getVaha())
+ .sum();
- int celkem = znamky
- .stream()
- .mapToInt((z) -> z.getZnamka() * z.getVaha())
- .sum();
-
- int vahy = znamky
+ int weight = marks
.stream()
.mapToInt((z) -> z.getVaha())
.sum();
- return (double) celkem / vahy;
+ double finalMark = ((double) total / weight);
+
+ this.finalMark = new FinalMark(finalMark);
+ }
+
+ public FinalMark getFinalMark()
+ {
+ return finalMark;
}
public boolean isFinal()
@@ -57,13 +54,14 @@ public class Predmet {
return isFinal;
}
- public String getJmenoPredmetu()
+ public String getSubjectName()
{
- return jmenoPredmetu;
+ return subjectName;
}
- public ArrayList getZnamky()
+ public ArrayList getMarks()
{
- return znamky;
+ return marks;
}
}
+
diff --git a/src/main/java/xyz/thastertyn/UserInterface/Content/Znamky.java b/src/main/java/xyz/thastertyn/UserInterface/Content/Znamky.java
index f82f44b..bb13cb5 100644
--- a/src/main/java/xyz/thastertyn/UserInterface/Content/Znamky.java
+++ b/src/main/java/xyz/thastertyn/UserInterface/Content/Znamky.java
@@ -13,6 +13,7 @@ import com.googlecode.lanterna.gui2.LayoutData;
import com.googlecode.lanterna.gui2.LinearLayout;
import com.googlecode.lanterna.gui2.Panel;
+import xyz.thastertyn.Types.FinalMark;
import xyz.thastertyn.Types.Predmet;
import xyz.thastertyn.Types.Znamka;
import xyz.thastertyn.UserInterface.Listeners.UpdateListener;
@@ -64,6 +65,7 @@ public class Znamky extends JecnaContent {
colors.put(4, new SimpleTheme(ANSI.BLACK, DOSTATECNY));
colors.put(5, new SimpleTheme(ANSI.BLACK, NEDOSTATECNY));
colors.put(-1, new SimpleTheme(ANSI.WHITE, NEHODNOCEN));
+ colors.put(-2, new SimpleTheme(ANSI.WHITE, NEHODNOCEN));
// Sloupec pro jmena predmetu
Panel jmemaPredmetu = new Panel()
@@ -89,33 +91,26 @@ public class Znamky extends JecnaContent {
.setLayoutManager(new LinearLayout(Direction.HORIZONTAL))
.addTo(znamky);
- if(predmet.getZnamky().isEmpty())
+ if(predmet.getMarks().isEmpty())
{
jednotliveZnamky.addComponent(new Label(""));
}
- for(Znamka znamka : predmet.getZnamky())
+ for(Znamka znamka : predmet.getMarks())
{
Label znamkaLabel = new Label(znamka.getText());
znamkaLabel.setTheme(colors.get(znamka.getZnamka()));
jednotliveZnamky.addComponent(znamkaLabel);
}
- double prumer = predmet.getVyslednaZnamka();
- String prumerAsString;
+ FinalMark finalMark = predmet.getFinalMark();
- if(predmet.isFinal())
- {
- prumerAsString = ((int) prumer) + "";
- }else{
- prumerAsString = String.format("%.2f", prumer);
- }
- Label vysl = new Label(prumerAsString);
+ Label vysl = new Label(finalMark.toString());
- vysl.setTheme(colors.get((int) Math.round(prumer)));
+ vysl.setTheme(colors.get((int) Math.round(finalMark.getValue())));
- jmemaPredmetu.addComponent(new Label(predmet.getJmenoPredmetu()));
+ jmemaPredmetu.addComponent(new Label(predmet.getSubjectName()));
vysledneZnamky.addComponent(vysl);
}
}
diff --git a/src/main/java/xyz/thastertyn/UserInterface/Dialogs/EscapeDialog.java b/src/main/java/xyz/thastertyn/UserInterface/Dialogs/EscapeDialog.java
index a211193..49f8e38 100644
--- a/src/main/java/xyz/thastertyn/UserInterface/Dialogs/EscapeDialog.java
+++ b/src/main/java/xyz/thastertyn/UserInterface/Dialogs/EscapeDialog.java
@@ -18,13 +18,13 @@ import xyz.thastertyn.UserInterface.Listeners.ContentResetListener;
public class EscapeDialog extends DialogWindow {
private WindowBasedTextGUI textGUI;
- private ContentResetListener listener;
+ private ContentResetListener resetListener;
- public EscapeDialog(WindowBasedTextGUI textGUI, ContentResetListener listener)
+ public EscapeDialog(WindowBasedTextGUI textGUI, ContentResetListener resetListener)
{
super("Escape Menu");
this.textGUI = textGUI;
- this.listener = listener;
+ this.resetListener = resetListener;
Panel mainPanel = new Panel()
.setLayoutManager(new GridLayout(1)
@@ -55,7 +55,7 @@ public class EscapeDialog extends DialogWindow {
LocalCredentials.getInstance().deleteCredentials();
LoginController controller = new LoginController(textGUI);
controller.loginUsingGui();
- listener.reset();
+ resetListener.reset();
}
public void onLogout()
@@ -63,7 +63,7 @@ public class EscapeDialog extends DialogWindow {
close();
LoginController controller = new LoginController(textGUI);
controller.loginUsingGui();
- listener.reset();
+ resetListener.reset();
}
public void onExit()