Changed to java 17, modified marks a bit

This commit is contained in:
Thastertyn 2023-05-22 15:17:48 +02:00
parent 8e74a0b96e
commit 009bd97d4f
9 changed files with 138 additions and 83 deletions

View File

@ -14,8 +14,8 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
</properties> </properties>
<dependencies> <dependencies>

View File

@ -7,29 +7,33 @@ import xyz.thastertyn.Types.Options;
public class Jidelna extends JecnaScrape { 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=") // Document obedy = Jsoup.connect("https://objednavky.jidelnasokolska.cz/faces/secured/month.jsp?terminal=false&keyboard=&printer=")
.header("Connection", "keep-alive") // .header("Connection", "keep-alive")
.cookie("XSRF-TOKEN", XSRF_TOKEN) // .cookie("XSRF-TOKEN", XSRF_TOKEN)
.cookie("JSESSIONID", jidelnaJSESSIONID) // .cookie("JSESSIONID", jidelnaJSESSIONID)
.get(); // .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 @Override
public Options[] getOptions() { public Options[] getOptions() {

View File

@ -67,7 +67,7 @@ public class Rozvrh extends JecnaScrape {
{ {
String predmet = radkyRozvrhuHTML[i+1].get(j+1).select("span.subject").text(); 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(" "); String[] split = predmet.split(" ");
HashSet<String> set = new HashSet<>(Arrays.asList(split)); HashSet<String> set = new HashSet<>(Arrays.asList(split));
String pr = String.join("/", set); String pr = String.join("/", set);

View File

@ -9,6 +9,7 @@ import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import org.jsoup.select.Elements;
import xyz.thastertyn.Types.Choice; import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.Types.FinalMark;
import xyz.thastertyn.Types.Option; import xyz.thastertyn.Types.Option;
import xyz.thastertyn.Types.Options; import xyz.thastertyn.Types.Options;
import xyz.thastertyn.Types.Predmet; import xyz.thastertyn.Types.Predmet;
@ -16,8 +17,6 @@ import xyz.thastertyn.Types.Znamka;
public class Znamky extends JecnaScrape { public class Znamky extends JecnaScrape {
private boolean wasDownloaded;
// schoolYear, schoolYearId // schoolYear, schoolYearId
private ArrayList<Predmet> predmety; private ArrayList<Predmet> predmety;
@ -74,7 +73,7 @@ public class Znamky extends JecnaScrape {
predmety.add(new Predmet(jmenoPredmetu)); predmety.add(new Predmet(jmenoPredmetu));
}else{ }else{
String vyslednaZnamka = radkyPredmetuHTML[i].get(2).select("a.scoreFinal").text(); 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")) 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).addZnamka(new Znamka(znamka, jeMala, textZnamky));
} }
predmety.get(subjectIndex).calculateFinalMark();
subjectIndex++; subjectIndex++;
} }
@ -115,8 +116,6 @@ public class Znamky extends JecnaScrape {
boolean isDefault = e.hasAttr("selected"); boolean isDefault = e.hasAttr("selected");
schoolHalfYearOptions.addOption(new Option(e.text(), e.attr("value"), isDefault)); schoolHalfYearOptions.addOption(new Option(e.text(), e.attr("value"), isDefault));
} }
wasDownloaded = true;
} }
public ArrayList<Predmet> getPredmety() public ArrayList<Predmet> getPredmety()
@ -128,12 +127,4 @@ public class Znamky extends JecnaScrape {
{ {
return new Options[] {schoolYearOptions, schoolHalfYearOptions}; return new Options[] {schoolYearOptions, schoolHalfYearOptions};
} }
@Override
public String toString()
{
return (wasDownloaded) ?
"All up and ready for use" :
"Nothing downloaded yet";
}
} }

View File

@ -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;
};
}
}
}

View File

@ -13,9 +13,6 @@ public class Option {
public boolean isDefault() { public boolean isDefault() {
return isDefault; return isDefault;
} }
public String getText() {
return text;
}
public String getValue() { public String getValue() {
return value; return value;
} }

View File

@ -4,52 +4,49 @@ import java.util.ArrayList;
public class Predmet { public class Predmet {
private ArrayList<Znamka> znamky = new ArrayList<>(); private ArrayList<Znamka> marks = new ArrayList<>();
private String jmenoPredmetu = ""; private String subjectName = "";
private boolean isFinal = false; 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.subjectName = subjectName;
this.vyslednaZnamka = vyslednaZnamka; this.finalMark = finalMark;
isFinal = true; 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) int total = marks
{ .stream()
return vyslednaZnamka; .mapToInt((z) -> z.getZnamka() * z.getVaha())
} .sum();
if(znamky.isEmpty())
{
return 0;
}
int celkem = znamky int weight = marks
.stream()
.mapToInt((z) -> z.getZnamka() * z.getVaha())
.sum();
int vahy = znamky
.stream() .stream()
.mapToInt((z) -> z.getVaha()) .mapToInt((z) -> z.getVaha())
.sum(); .sum();
return (double) celkem / vahy; double finalMark = ((double) total / weight);
this.finalMark = new FinalMark(finalMark);
}
public FinalMark getFinalMark()
{
return finalMark;
} }
public boolean isFinal() public boolean isFinal()
@ -57,13 +54,14 @@ public class Predmet {
return isFinal; return isFinal;
} }
public String getJmenoPredmetu() public String getSubjectName()
{ {
return jmenoPredmetu; return subjectName;
} }
public ArrayList<Znamka> getZnamky() public ArrayList<Znamka> getMarks()
{ {
return znamky; return marks;
} }
} }

View File

@ -13,6 +13,7 @@ import com.googlecode.lanterna.gui2.LayoutData;
import com.googlecode.lanterna.gui2.LinearLayout; import com.googlecode.lanterna.gui2.LinearLayout;
import com.googlecode.lanterna.gui2.Panel; import com.googlecode.lanterna.gui2.Panel;
import xyz.thastertyn.Types.FinalMark;
import xyz.thastertyn.Types.Predmet; import xyz.thastertyn.Types.Predmet;
import xyz.thastertyn.Types.Znamka; import xyz.thastertyn.Types.Znamka;
import xyz.thastertyn.UserInterface.Listeners.UpdateListener; 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(4, new SimpleTheme(ANSI.BLACK, DOSTATECNY));
colors.put(5, new SimpleTheme(ANSI.BLACK, NEDOSTATECNY)); colors.put(5, new SimpleTheme(ANSI.BLACK, NEDOSTATECNY));
colors.put(-1, new SimpleTheme(ANSI.WHITE, NEHODNOCEN)); colors.put(-1, new SimpleTheme(ANSI.WHITE, NEHODNOCEN));
colors.put(-2, new SimpleTheme(ANSI.WHITE, NEHODNOCEN));
// Sloupec pro jmena predmetu // Sloupec pro jmena predmetu
Panel jmemaPredmetu = new Panel() Panel jmemaPredmetu = new Panel()
@ -89,33 +91,26 @@ public class Znamky extends JecnaContent {
.setLayoutManager(new LinearLayout(Direction.HORIZONTAL)) .setLayoutManager(new LinearLayout(Direction.HORIZONTAL))
.addTo(znamky); .addTo(znamky);
if(predmet.getZnamky().isEmpty()) if(predmet.getMarks().isEmpty())
{ {
jednotliveZnamky.addComponent(new Label("")); jednotliveZnamky.addComponent(new Label(""));
} }
for(Znamka znamka : predmet.getZnamky()) for(Znamka znamka : predmet.getMarks())
{ {
Label znamkaLabel = new Label(znamka.getText()); Label znamkaLabel = new Label(znamka.getText());
znamkaLabel.setTheme(colors.get(znamka.getZnamka())); znamkaLabel.setTheme(colors.get(znamka.getZnamka()));
jednotliveZnamky.addComponent(znamkaLabel); jednotliveZnamky.addComponent(znamkaLabel);
} }
double prumer = predmet.getVyslednaZnamka(); FinalMark finalMark = predmet.getFinalMark();
String prumerAsString;
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); vysledneZnamky.addComponent(vysl);
} }
} }

View File

@ -18,13 +18,13 @@ import xyz.thastertyn.UserInterface.Listeners.ContentResetListener;
public class EscapeDialog extends DialogWindow { public class EscapeDialog extends DialogWindow {
private WindowBasedTextGUI textGUI; private WindowBasedTextGUI textGUI;
private ContentResetListener listener; private ContentResetListener resetListener;
public EscapeDialog(WindowBasedTextGUI textGUI, ContentResetListener listener) public EscapeDialog(WindowBasedTextGUI textGUI, ContentResetListener resetListener)
{ {
super("Escape Menu"); super("Escape Menu");
this.textGUI = textGUI; this.textGUI = textGUI;
this.listener = listener; this.resetListener = resetListener;
Panel mainPanel = new Panel() Panel mainPanel = new Panel()
.setLayoutManager(new GridLayout(1) .setLayoutManager(new GridLayout(1)
@ -55,7 +55,7 @@ public class EscapeDialog extends DialogWindow {
LocalCredentials.getInstance().deleteCredentials(); LocalCredentials.getInstance().deleteCredentials();
LoginController controller = new LoginController(textGUI); LoginController controller = new LoginController(textGUI);
controller.loginUsingGui(); controller.loginUsingGui();
listener.reset(); resetListener.reset();
} }
public void onLogout() public void onLogout()
@ -63,7 +63,7 @@ public class EscapeDialog extends DialogWindow {
close(); close();
LoginController controller = new LoginController(textGUI); LoginController controller = new LoginController(textGUI);
controller.loginUsingGui(); controller.loginUsingGui();
listener.reset(); resetListener.reset();
} }
public void onExit() public void onExit()