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>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>

View File

@ -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() {

View File

@ -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<String> set = new HashSet<>(Arrays.asList(split));
String pr = String.join("/", set);

View File

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

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() {
return isDefault;
}
public String getText() {
return text;
}
public String getValue() {
return value;
}

View File

@ -4,52 +4,49 @@ import java.util.ArrayList;
public class Predmet {
private ArrayList<Znamka> znamky = new ArrayList<>();
private String jmenoPredmetu = "";
private ArrayList<Znamka> 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<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.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);
}
}

View File

@ -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()