trying to optimize a bit and improve looks

This commit is contained in:
Thastertyn 2023-05-02 15:04:52 +02:00
parent 94ab336ddb
commit b4c1e53c83
12 changed files with 136 additions and 87 deletions

View File

@ -1,10 +1,13 @@
package xyz.thastertyn.Scrape;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.Types.Options;
public abstract class JecnaScrape {
public abstract void download() throws SocketTimeoutException, UnknownHostException, IOException;
public abstract Options[] getOptions();
public abstract void download(Choice choice) throws IOException;
public abstract void download() throws IOException;
}

View File

@ -1,5 +1,28 @@
package xyz.thastertyn.Scrape;
public class Jidelna {
import java.io.IOException;
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.Types.Options;
public class Jidelna extends JecnaScrape {
@Override
public Options[] getOptions() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getOptions'");
}
@Override
public void download(Choice choice) throws IOException {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'download'");
}
@Override
public void download() throws IOException {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'download'");
}
}

View File

@ -1,7 +1,6 @@
package xyz.thastertyn.Scrape;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import org.jsoup.nodes.Document;
@ -9,12 +8,15 @@ import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import xyz.thastertyn.Tuples.Pair;
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.Types.Options;
public class OmluvnyList {
public class OmluvnyList extends JecnaScrape {
private ArrayList<Pair<String, String>> data = new ArrayList<>();
public void downloadOmluvnyList() throws UnknownHostException, IOException
@Override
public void download() throws IOException
{
Document omluvnyListDokumentHTML = Downloader.download("https://www.spsejecna.cz/absence/student").get();
@ -39,4 +41,16 @@ public class OmluvnyList {
{
return (!data.isEmpty()) ? data.toString() : null;
}
@Override
public Options[] getOptions() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getOptions'");
}
@Override
public void download(Choice choice) throws IOException {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'download'");
}
}

View File

@ -9,10 +9,13 @@ import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.Types.Options;
/**
* Jeden radek v rozvrhu
*/
public class Rozvrh {
public class Rozvrh extends JecnaScrape {
private String[][] rozvrh = new String[5][10];
@ -23,7 +26,8 @@ public class Rozvrh {
* @throws UnknownHostException kdyz neni pripojeni k internetu
* @throws IOException ostatni exceptiony nejsou dulezite, tak jsou zahrnuty v jednom
*/
public void downloadRozvrh() throws UnknownHostException, IOException
@Override
public void download() throws IOException
{
Document rozvrhDokumentHTML = Downloader.download("https://www.spsejecna.cz/timetable/class").get();
@ -71,4 +75,16 @@ public class Rozvrh {
return s;
}
@Override
public Options[] getOptions() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getOptions'");
}
@Override
public void download(Choice choice) throws IOException {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'download'");
}
}

View File

@ -8,11 +8,14 @@ import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Sdeleni {
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.Types.Options;
public class Sdeleni extends JecnaScrape {
ArrayList<String> sdeleniList = new ArrayList<>();
public void downloadSdeleni() throws UnknownHostException, IOException
public void download() throws UnknownHostException, IOException
{
Document sdeleniDoc = Downloader.download("https://www.spsejecna.cz/user-student/record-list").get();
@ -43,4 +46,16 @@ public class Sdeleni {
{
return sdeleniList;
}
@Override
public Options[] getOptions() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getOptions'");
}
@Override
public void download(Choice choice) throws IOException {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'download'");
}
}

View File

@ -16,7 +16,7 @@ import xyz.thastertyn.Types.Options;
import xyz.thastertyn.Types.Predmet;
import xyz.thastertyn.Types.Znamka;
public class Znamky {
public class Znamky extends JecnaScrape {
private boolean wasDownloaded;
@ -27,12 +27,13 @@ public class Znamky {
private Options schoolYearOptions = new Options("Skolni R.");
private Options schoolHalfYearOptions = new Options("Pololeti");
public void downloadZnamky() throws UnknownHostException, IOException
public void download() throws UnknownHostException, IOException
{
download("https://www.spsejecna.cz/score/student");
}
public void downloadZnamky(Choice choice) throws SocketTimeoutException, UnknownHostException, IOException
@Override
public void download(Choice choice) throws IOException
{
download(String.format(
"https://www.spsejecna.cz/score/student?schoolYearId=%s&schoolYearHalfId=%s",

View File

@ -6,8 +6,10 @@ import com.googlecode.lanterna.gui2.Label;
import com.googlecode.lanterna.gui2.Panel;
import com.googlecode.lanterna.gui2.WindowBasedTextGUI;
import xyz.thastertyn.Scrape.JecnaScrape;
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.UserInterface.UpdateListener;
import xyz.thastertyn.UserInterface.Dialogs.OptionsDialog;
/**
@ -22,8 +24,19 @@ public abstract class JecnaContent {
protected abstract void setGUI();
protected abstract void download(Choice choice) throws IOException;
public abstract void showOptions(final WindowBasedTextGUI textGUI) throws IOException;
public abstract void downloadDefault() throws IOException;
protected JecnaScrape scraper;
public void showOptions(WindowBasedTextGUI textGUI) throws IOException {
OptionsDialog d = new OptionsDialog(scraper.getOptions());
Choice c = d.showDialog(textGUI);
if(c != null)
{
download(c);
}
}
public Panel getPanel()
{

View File

@ -1,7 +1,6 @@
package xyz.thastertyn.UserInterface.Content;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import com.googlecode.lanterna.gui2.Label;
@ -26,26 +25,26 @@ public class OmluvnyList extends JecnaContent{
}
@Override
public void downloadDefault()
public void downloadDefault() throws IOException
{
download(null);
}
@Override
protected void download(Choice choice)
protected void download(Choice choice) throws IOException
{
try{
omluvnyList.downloadOmluvnyList();
omluvnyList = new xyz.thastertyn.Scrape.OmluvnyList();
if(choice != null)
{
omluvnyList.download(choice);
setGUI();
listener.updatePanel();
}else{
omluvnyList.download();
setGUI();
hasStarted = true;
}catch(UnknownHostException e)
{
// omluvnyPanel.addComponent(new Label("A connection error occurred"));
}catch(IOException e)
{
// omluvnyPanel.addComponent(new Label("An error occurred"));
}
super.hasStarted = true;
}
@Override

View File

@ -41,7 +41,7 @@ public class Rozvrh extends JecnaContent {
protected void download(Choice choice)
{
try{
rozvrh.downloadRozvrh();
rozvrh.download();
setGUI();
hasStarted = true;

View File

@ -8,7 +8,6 @@ import java.util.ArrayList;
import com.googlecode.lanterna.gui2.GridLayout;
import com.googlecode.lanterna.gui2.Label;
import com.googlecode.lanterna.gui2.Panel;
import com.googlecode.lanterna.gui2.WindowBasedTextGUI;
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.UserInterface.UpdateListener;
@ -20,33 +19,35 @@ public class Sdeleni extends JecnaContent {
private xyz.thastertyn.Scrape.Sdeleni sdeleni = new xyz.thastertyn.Scrape.Sdeleni();
private boolean hasStarted = false;
public Sdeleni(UpdateListener listener)
{
super.mainPanel = this.mainPanel;
super.borderLabel = this.borderLabel;
super.scraper = this.sdeleni;
this.listener = listener;
}
@Override
public void downloadDefault()
public void downloadDefault() throws IOException
{
download(null);
}
@Override
protected void download(Choice choice)
protected void download(Choice choice) throws IOException
{
try{
sdeleni.downloadSdeleni();
hasStarted = true;
}catch(UnknownHostException e)
sdeleni = new xyz.thastertyn.Scrape.Sdeleni();
if(choice != null)
{
}catch(IOException e)
{
sdeleni.download(choice);
setGUI();
listener.updatePanel();
}else{
sdeleni.download();
setGUI();
}
super.hasStarted = true;
}
@Override
@ -58,30 +59,6 @@ public class Sdeleni extends JecnaContent {
ArrayList<String> sdeleniList = sdeleni.getSdeleni();
for(String s : sdeleniList)
{
sdeleniPanel.addComponent(new Label(s));
}
}
@Override
public Label getLabel() {
return borderLabel;
}
@Override
public Panel getPanel() {
return sdeleniPanel;
}
@Override
public boolean hasStarted() {
return hasStarted;
}
@Override
public void showOptions(WindowBasedTextGUI textGUI) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getOptions'");
sdeleniList.forEach(s -> sdeleniPanel.addComponent(new Label(s)));
}
}

View File

@ -13,13 +13,11 @@ import com.googlecode.lanterna.gui2.Label;
import com.googlecode.lanterna.gui2.LayoutData;
import com.googlecode.lanterna.gui2.LinearLayout;
import com.googlecode.lanterna.gui2.Panel;
import com.googlecode.lanterna.gui2.WindowBasedTextGUI;
import xyz.thastertyn.Types.Choice;
import xyz.thastertyn.Types.Predmet;
import xyz.thastertyn.Types.Znamka;
import xyz.thastertyn.UserInterface.UpdateListener;
import xyz.thastertyn.UserInterface.Dialogs.OptionsDialog;
public class Znamky extends JecnaContent {
@ -53,6 +51,7 @@ public class Znamky extends JecnaContent {
{
super.mainPanel = this.mainPanel;
super.borderLabel = this.borderLabel;
super.scraper = this.znamky;
this.listener = listener;
}
@ -68,11 +67,11 @@ public class Znamky extends JecnaContent {
znamky = new xyz.thastertyn.Scrape.Znamky();
if(choice != null)
{
znamky.downloadZnamky(choice);
znamky.download(choice);
setGUI();
listener.updatePanel();
}else{
znamky.downloadZnamky();
znamky.download();
setGUI();
}
@ -148,16 +147,4 @@ public class Znamky extends JecnaContent {
vysledneZnamky.addComponent(vysl);
}
}
@Override
public void showOptions(WindowBasedTextGUI textGUI) throws IOException {
OptionsDialog d = new OptionsDialog(znamky.getOptions());
Choice c = d.showDialog(textGUI);
if(c != null)
{
download(c);
}
}
}

View File

@ -3,7 +3,7 @@ package xyz.thastertyn.UserInterface.Dialogs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import com.googlecode.lanterna.gui2.Button;
import com.googlecode.lanterna.gui2.ComboBox;
@ -94,7 +94,8 @@ public class OptionsDialog extends DialogWindow {
// User pressed Ok
new Choice(boxs.stream()
.map(box -> box.getSelectedItem().getValue())
.toList())
.collect(Collectors.toList()))
// Why did .toList() stop working?
:
// User pressed Cancel
null;