Custom Exceptions

This commit is contained in:
Georg Reisinger 2021-05-31 21:30:07 +02:00
parent 699f36c95c
commit 7e9efc138c
9 changed files with 167 additions and 92 deletions

View File

@ -17,18 +17,22 @@ public class DirectionMap {
* @param start Startpunkt * @param start Startpunkt
* @param ende Endpunkt * @param ende Endpunkt
* @param tourname Name der Aktuellen Tour * @param tourname Name der Aktuellen Tour
* @throws IOException Fehler beim Image der Map * @throws DirectionMapException Fehler beim Image der Map
*/ */
public DirectionMap (String start, String ende, String tourname) throws IOException { public DirectionMap (String start, String ende, String tourname) throws DirectionMapException {
getDirections(start, ende); try {
Image map = getMap(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "size")); getDirections(start, ende);
Image mappdf = getMap(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "sizePdf")); Image map = getMap(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "size"));
String file = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + ".jpg"; Image mappdf = getMap(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "sizePdf"));
String filepdf = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + "_pdf.jpg"; String file = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + ".jpg";
FileHelper.saveImage(map, "jpg", new File(file)); String filepdf = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + "_pdf.jpg";
FileHelper.saveImage(mappdf, "jpg", new File(filepdf)); FileHelper.saveImage(map, "jpg", new File(file));
if(ConfigHelper.getIniInt(ConfigHelper.getStandartConfig(), "settings", "openmap") == 1) { FileHelper.saveImage(mappdf, "jpg", new File(filepdf));
FileHelper.openDefault(file); if(ConfigHelper.getIniInt(ConfigHelper.getStandartConfig(), "settings", "openmap") == 1) {
FileHelper.openDefault(file);
}
}catch (IOException e){
throw new DirectionMapException(e.getMessage());
} }
} }
@ -51,23 +55,31 @@ public class DirectionMap {
/** /**
* Downloadet die Map von Mapquest * Downloadet die Map von Mapquest
* @return Image von der Map * @return Image von der Map
* @throws IOException Fehler beim Get der Map * @throws DirectionMapException Fehler beim Get der Map
*/ */
private Image getMap(String size) throws IOException { private Image getMap(String size) throws DirectionMapException {
return HttpHelper.httpGetImage("https://www.mapquestapi.com/staticmap/v5/map?session="+this.sessionId+"&size="+size+"&key="+ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key")); try {
return HttpHelper.httpGetImage("https://www.mapquestapi.com/staticmap/v5/map?session="+this.sessionId+"&size="+size+"&key="+ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key"));
}catch (IOException e){
throw new DirectionMapException(e.getMessage());
}
} }
/** /**
* Besorgt die Infos der Tour von Mapquest Directions * Besorgt die Infos der Tour von Mapquest Directions
* @param start Start der Tour * @param start Start der Tour
* @param ende Ende der Tour * @param ende Ende der Tour
* @throws IOException Fehler beim besorgen der infos über die Tour * @throws DirectionMapException Fehler beim besorgen der infos über die Tour
*/ */
private void getDirections(String start, String ende) throws IOException { private void getDirections(String start, String ende) throws DirectionMapException {
String json = HttpHelper.httpGetJsonString("https://www.mapquestapi.com/directions/v2/route?key="+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key")+"&from="+start+"&to="+ende+"&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false"); try {
this.strecke = JsonHelper.getDoubleFromJson(json, "distance"); String json = HttpHelper.httpGetJsonString("https://www.mapquestapi.com/directions/v2/route?key="+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key")+"&from="+start+"&to="+ende+"&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false");
this.dauer = formatetTimeToMinutes(JsonHelper.getStingFromJson(json, "formattedTime")); this.strecke = JsonHelper.getDoubleFromJson(json, "distance");
this.sessionId = JsonHelper.getStingFromJson(json, "sessionId"); this.dauer = formatetTimeToMinutes(JsonHelper.getStingFromJson(json, "formattedTime"));
this.sessionId = JsonHelper.getStingFromJson(json, "sessionId");
}catch (IOException e){
throw new DirectionMapException(e.getMessage());
}
} }
/** /**

View File

@ -0,0 +1,12 @@
package tourplaner.business;
/**
* Wird bei einem Fehler in der DirectionMap geworfen
*/
public class DirectionMapException extends Exception{
public DirectionMapException(String message){
super("DirectionMap Error: -> "+message);
}
}

View File

@ -1,6 +1,7 @@
package tourplaner.business; package tourplaner.business;
import tourplaner.data.DbConnect; import tourplaner.data.DbConnect;
import tourplaner.data.DbErrorException;
import tourplaner.object.Log; import tourplaner.object.Log;
import tourplaner.object.Tour; import tourplaner.object.Tour;
import tourplaner.ui.ProgressBar; import tourplaner.ui.ProgressBar;
@ -56,7 +57,7 @@ public class Exporter {
allTours.forEach(t -> { allTours.forEach(t -> {
try { try {
TourPlaner.delTour(t.getName()); TourPlaner.delTour(t.getName());
} catch (SQLException throwables) { } catch (DbErrorException throwables) {
LogHelper.error(throwables); LogHelper.error(throwables);
} }
progressBar.addProgress(size); progressBar.addProgress(size);
@ -76,7 +77,7 @@ public class Exporter {
} }
progressBar.addProgress(finalSize); progressBar.addProgress(finalSize);
} }
} catch (IOException | SQLException e) { } catch (DbErrorException | DirectionMapException | FileNotFoundException e) {
LogHelper.error(e); LogHelper.error(e);
progressBar.setProgress(progressMax); progressBar.setProgress(progressMax);
} }

View File

@ -2,6 +2,7 @@ package tourplaner.business;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import tourplaner.data.DbConnect; import tourplaner.data.DbConnect;
import tourplaner.data.DbErrorException;
import tourplaner.object.Log; import tourplaner.object.Log;
import tourplaner.object.Tour; import tourplaner.object.Tour;
import tourplaner.ui.ProgressBar; import tourplaner.ui.ProgressBar;
@ -41,7 +42,7 @@ public class TourPlaner{
* @return false bei error * @return false bei error
* @throws IOException Fehler beim editieren der Tour * @throws IOException Fehler beim editieren der Tour
*/ */
public static void editTour(String oldname, Tour tour) throws IOException, SQLException { public static void editTour(String oldname, Tour tour) throws DbErrorException, DirectionMapException {
ProgressBar progressBar = new ProgressBar("Edit..."); ProgressBar progressBar = new ProgressBar("Edit...");
int step = progressBar.getProgressSize(3, 100); int step = progressBar.getProgressSize(3, 100);
FileHelper.delFile(new File(getImagePath(oldname))); FileHelper.delFile(new File(getImagePath(oldname)));
@ -59,7 +60,7 @@ public class TourPlaner{
* Löscht eine Tour * Löscht eine Tour
* @param tourname Tourname * @param tourname Tourname
*/ */
public static void delTour(String tourname) throws SQLException { public static void delTour(String tourname) throws DbErrorException {
FileHelper.delFile(new File(getImagePath(tourname))); FileHelper.delFile(new File(getImagePath(tourname)));
FileHelper.delFile(new File(getImagePdfPath(tourname))); FileHelper.delFile(new File(getImagePdfPath(tourname)));
new DbConnect().delTour(tourname); new DbConnect().delTour(tourname);
@ -71,7 +72,7 @@ public class TourPlaner{
* @param progressMax Maximale anzeige der Progress bar * @param progressMax Maximale anzeige der Progress bar
* @throws IOException Fehler beim hinzufügen der Tour * @throws IOException Fehler beim hinzufügen der Tour
*/ */
public static void addTourMax(Tour newTour, ProgressBar progressBar, int progressMax) throws IOException, SQLException { public static void addTourMax(Tour newTour, ProgressBar progressBar, int progressMax) throws DbErrorException, DirectionMapException {
int step = progressBar.getProgressSize(2, progressMax); int step = progressBar.getProgressSize(2, progressMax);
DirectionMap directionMap = new DirectionMap(newTour.getStart(), newTour.getZiel(), newTour.getName()); DirectionMap directionMap = new DirectionMap(newTour.getStart(), newTour.getZiel(), newTour.getName());
progressBar.addProgress(step); progressBar.addProgress(step);
@ -87,7 +88,7 @@ public class TourPlaner{
* @param progressBar Aktuelle Progressbar * @param progressBar Aktuelle Progressbar
* @throws IOException Fehler beim hinzufügen der Tour * @throws IOException Fehler beim hinzufügen der Tour
*/ */
public static void addTour(Tour newTour, ProgressBar progressBar) throws IOException, SQLException { public static void addTour(Tour newTour, ProgressBar progressBar) throws DbErrorException, DirectionMapException {
addTourMax(newTour, progressBar, 100); addTourMax(newTour, progressBar, 100);
} }
@ -141,7 +142,7 @@ public class TourPlaner{
* @param tourname Name der Tour * @param tourname Name der Tour
* @param log Neues Log * @param log Neues Log
*/ */
public static void addLog(String tourname, Log log) throws SQLException { public static void addLog(String tourname, Log log) throws DbErrorException {
if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0); if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
new DbConnect().addLog(tourname, log); new DbConnect().addLog(tourname, log);
} }
@ -151,7 +152,7 @@ public class TourPlaner{
* @param tourname Name der Tour * @param tourname Name der Tour
* @param id Id des Logs * @param id Id des Logs
*/ */
public static void delLog(String tourname, String id) throws SQLException { public static void delLog(String tourname, String id) throws DbErrorException {
new DbConnect().delLog(tourname, id); new DbConnect().delLog(tourname, id);
} }
@ -160,7 +161,7 @@ public class TourPlaner{
* @param tourname Name der Tour * @param tourname Name der Tour
* @param log Neues Log * @param log Neues Log
*/ */
public static void editLog(String tourname, Log log) throws SQLException { public static void editLog(String tourname, Log log) throws DbErrorException {
if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0); if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
new DbConnect().editLog(tourname, log); new DbConnect().editLog(tourname, log);
} }

View File

@ -41,39 +41,56 @@ public class DbConnect {
* @param oldname Alter Tour name * @param oldname Alter Tour name
* @param tour Neues Tour Object * @param tour Neues Tour Object
*/ */
public void editTour(String oldname, Tour tour) throws SQLException { public void editTour(String oldname, Tour tour) throws DbErrorException {
String tourname = tour.getName(); String tourname = tour.getName();
ArrayList<Log> logs = getLogs(oldname); ArrayList<Log> logs = getLogs(oldname);
delLogs(oldname); try {
PostgresHelper.executeUpdateEditTour("UPDATE public.tour SET tourname = ?, dauer = 1, mapjson = ?, start = ?, ziel = ?, strecke = ? WHERE tourname =?;", tour.getName(), tour.getMapJson(), tour.getStart(), tour.getZiel(), tour.getStrecke(), oldname); delLogs(oldname);
logs.forEach(log -> { PostgresHelper.executeUpdateEditTour("UPDATE public.tour SET tourname = ?, dauer = 1, mapjson = ?, start = ?, ziel = ?, strecke = ? WHERE tourname =?;", tour.getName(), tour.getMapJson(), tour.getStart(), tour.getZiel(), tour.getStrecke(), oldname);
try { logs.forEach(log -> {
addLog(tourname, log); try {
} catch (SQLException throwables) { addLog(tourname, log);
LogHelper.error(throwables); } catch (DbErrorException throwables) {
} LogHelper.error(throwables);
}); }
});
}catch (Exception e){
throw new DbErrorException(e.getMessage());
}
} }
private void delLogs(String tourname) throws SQLException {
PostgresHelper.executeUpdateString("DELETE FROM public.log WHERE tourname = ?", tourname); private void delLogs(String tourname) throws DbErrorException {
try {
PostgresHelper.executeUpdateString("DELETE FROM public.log WHERE tourname = ?", tourname);
}catch (SQLException e){
throw new DbErrorException(e.getMessage());
}
} }
/** /**
* Fügt eine Tour hinzu * Fügt eine Tour hinzu
* @param tour Neue Tour * @param tour Neue Tour
* @return false bei error * @return false bei error
*/ */
public void addTour(Tour tour) throws SQLException { public void addTour(Tour tour) throws DbErrorException {
PostgresHelper.executeUpdateAddTour("INSERT INTO public.tour (tourname, dauer, mapjson, start, ziel, strecke) VALUES (?, ?, ?, ?, ?, ?)", tour.getName(), tour.getDauer(), tour.getMapJson(), tour.getStart(), tour.getZiel(), tour.getStrecke()); try{
PostgresHelper.executeUpdateAddTour("INSERT INTO public.tour (tourname, dauer, mapjson, start, ziel, strecke) VALUES (?, ?, ?, ?, ?, ?)", tour.getName(), tour.getDauer(), tour.getMapJson(), tour.getStart(), tour.getZiel(), tour.getStrecke());
}catch (SQLException e){
throw new DbErrorException(e.getMessage());
}
} }
/** /**
* Löscht eine Tour anhand des Tournamens * Löscht eine Tour anhand des Tournamens
* @param tourname Tourname der zu löschen ist * @param tourname Tourname der zu löschen ist
*/ */
public void delTour(String tourname) throws SQLException { public void delTour(String tourname) throws DbErrorException {
delLogs(tourname); try {
PostgresHelper.executeUpdateString("DELETE FROM public.tour WHERE tourname = ?",tourname); delLogs(tourname);
PostgresHelper.executeUpdateString("DELETE FROM public.tour WHERE tourname = ?", tourname);
}catch (SQLException e){
throw new DbErrorException(e.getMessage());
}
} }
public ArrayList<Log> getLogs(String tourname){ public ArrayList<Log> getLogs(String tourname){
@ -120,32 +137,48 @@ public class DbConnect {
* @param log Der Logeintrag * @param log Der Logeintrag
* @return false bei error * @return false bei error
*/ */
public void addLog(String tourname, Log log) throws SQLException { public void addLog(String tourname, Log log) throws DbErrorException {
if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0); if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
PostgresHelper.executeUpdateAddLog("INSERT INTO public.log (tourname, id, bemerkung, datum, strecke, avg, hightmeter, pause, gegangen, dauer, rating) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)", tourname, log.getId(),log.getBemerkung(),log.getDatum(),log.getStrecke(),log.getAvgspeed(),log.getHightmeter(),log.getPause(),log.getGegangen(),log.getDauer(),log.getRating()); try{
} PostgresHelper.executeUpdateAddLog("INSERT INTO public.log (tourname, id, bemerkung, datum, strecke, avg, hightmeter, pause, gegangen, dauer, rating) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)", tourname, log.getId(),log.getBemerkung(),log.getDatum(),log.getStrecke(),log.getAvgspeed(),log.getHightmeter(),log.getPause(),log.getGegangen(),log.getDauer(),log.getRating());
}catch (SQLException e){
public void editLog(String tourname, Log log) throws SQLException { throw new DbErrorException(e.getMessage());
PostgresHelper.executeUpdateEditLog("UPDATE public.log SET bemerkung = ?, datum = ?, strecke = ?, avg = ?, hightmeter = ?, pause = ?, gegangen = ?, dauer = ?, rating = ? WHERE tourname = ? and id = ?", log.getBemerkung(),log.getDatum(),log.getStrecke(),log.getAvgspeed(),log.getHightmeter(),log.getPause(),log.getGegangen(),log.getDauer(),log.getRating(),tourname ,log.getId()); }
} }
public void delLog(String tourname, String id) throws SQLException { public void editLog(String tourname, Log log) throws DbErrorException {
PostgresHelper.executeUpdateDelLog("DELETE FROM public.log WHERE tourname = ? and id = ?", tourname, id); try{
} PostgresHelper.executeUpdateEditLog("UPDATE public.log SET bemerkung = ?, datum = ?, strecke = ?, avg = ?, hightmeter = ?, pause = ?, gegangen = ?, dauer = ?, rating = ? WHERE tourname = ? and id = ?", log.getBemerkung(),log.getDatum(),log.getStrecke(),log.getAvgspeed(),log.getHightmeter(),log.getPause(),log.getGegangen(),log.getDauer(),log.getRating(),tourname ,log.getId());
}catch (SQLException e){
private int getTourSize() throws SQLException { throw new DbErrorException(e.getMessage());
Connection con = PostgresHelper.con(); }
Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); }
ResultSet rs = s.executeQuery("SELECT COUNT(*) FROM tour;");
int size; public void delLog(String tourname, String id) throws DbErrorException {
if (rs != null) try{
{ PostgresHelper.executeUpdateDelLog("DELETE FROM public.log WHERE tourname = ? and id = ?", tourname, id);
rs.last(); // moves cursor to the last row }catch (SQLException e){
size = rs.getInt("count"); // get row id throw new DbErrorException(e.getMessage());
con.close(); }
return size; }
private int getTourSize() throws DbErrorException {
Connection con = PostgresHelper.con();
try{
Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = s.executeQuery("SELECT COUNT(*) FROM tour;");
int size;
if (rs != null)
{
rs.last(); // moves cursor to the last row
size = rs.getInt("count"); // get row id
con.close();
return size;
}
con.close();
}catch (SQLException e){
throw new DbErrorException(e.getMessage());
} }
con.close();
return -1; return -1;
} }

View File

@ -0,0 +1,11 @@
package tourplaner.data;
/**
* Wird bei einem DB Error geworfen, damit der DAL auch austauschbar ist
*/
public class DbErrorException extends Exception{
public DbErrorException(String message){
super("DB Error: " + message);
}
}

View File

@ -39,6 +39,7 @@ public class PostgresHelper {
c.close(); c.close();
} }
/** /**
* @param sql SQL aus dem das prepared statement gebildet wird * @param sql SQL aus dem das prepared statement gebildet wird
*/ */

View File

@ -12,7 +12,9 @@ import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import tourplaner.Main; import tourplaner.Main;
import tourplaner.business.ConfigHelper; import tourplaner.business.ConfigHelper;
import tourplaner.business.DirectionMapException;
import tourplaner.business.LogHelper; import tourplaner.business.LogHelper;
import tourplaner.data.DbErrorException;
import tourplaner.object.Log; import tourplaner.object.Log;
import tourplaner.viewmodels.ViewModel; import tourplaner.viewmodels.ViewModel;
@ -58,7 +60,7 @@ public class TourplanerController implements Initializable {
try { try {
this.viewModel.copyLog(); this.viewModel.copyLog();
syncLogs(); syncLogs();
} catch (SQLException throwables) { } catch (DbErrorException throwables) {
LogHelper.error(throwables); LogHelper.error(throwables);
} }
} }
@ -85,7 +87,7 @@ public class TourplanerController implements Initializable {
private void editTourBtn(){ private void editTourBtn(){
try { try {
this.viewModel.editTour(); this.viewModel.editTour();
} catch (IOException | SQLException e) { } catch (DirectionMapException | DbErrorException e) {
LogHelper.error(e); LogHelper.error(e);
} }
String name = this.viewModel.getSelectedTour().getName(); String name = this.viewModel.getSelectedTour().getName();
@ -100,7 +102,7 @@ public class TourplanerController implements Initializable {
try { try {
this.viewModel.editLog(); this.viewModel.editLog();
syncLogs(); syncLogs();
} catch (SQLException throwables) { } catch (DbErrorException throwables) {
LogHelper.error(throwables); LogHelper.error(throwables);
} }
} }
@ -273,7 +275,7 @@ public class TourplanerController implements Initializable {
try { try {
this.viewModel.delLog(); this.viewModel.delLog();
syncLogs(); syncLogs();
} catch (SQLException throwables) { } catch (DbErrorException throwables) {
LogHelper.error(throwables); LogHelper.error(throwables);
} }
} }

View File

@ -4,6 +4,7 @@ import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import tourplaner.business.*; import tourplaner.business.*;
import tourplaner.data.DbErrorException;
import tourplaner.ui.AlertHelper; import tourplaner.ui.AlertHelper;
import tourplaner.object.Log; import tourplaner.object.Log;
import tourplaner.object.Tour; import tourplaner.object.Tour;
@ -13,7 +14,6 @@ import java.awt.*;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.sql.SQLException;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -41,7 +41,7 @@ public class ViewModel {
* prüft ob eine tour ausgewählt ist * prüft ob eine tour ausgewählt ist
* @throws IOException Fehler beim editieren der Tour * @throws IOException Fehler beim editieren der Tour
*/ */
public void editTour() throws IOException, SQLException { public void editTour() throws DbErrorException, DirectionMapException {
if (this.selectedTour == null){ if (this.selectedTour == null){
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"), AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("keinetourselected"), ConfigHelper.getLangIniString("keinetourselected"),
@ -167,7 +167,7 @@ public class ViewModel {
progressBar.addProgress(10); progressBar.addProgress(10);
try { try {
TourPlaner.addTour(newTour, progressBar); TourPlaner.addTour(newTour, progressBar);
} catch (IOException | SQLException e) { } catch (Exception e) {
LogHelper.error(e); LogHelper.error(e);
return false; return false;
} }
@ -196,7 +196,7 @@ public class ViewModel {
* Bearbeitet einen gewählten Log eintrag * Bearbeitet einen gewählten Log eintrag
*/ */
@SuppressWarnings("UnusedAssignment") @SuppressWarnings("UnusedAssignment")
public void editLog() throws SQLException { public void editLog() throws DbErrorException {
if(this.selectedTour != null) { if(this.selectedTour != null) {
if(this.selectedLog != null) { if(this.selectedLog != null) {
AtomicReference<Tour> tourAkt = new AtomicReference<>(); AtomicReference<Tour> tourAkt = new AtomicReference<>();
@ -381,7 +381,7 @@ public class ViewModel {
this.logData.add(newLog); this.logData.add(newLog);
try { try {
TourPlaner.addLog(this.selectedTour.getName(), newLog); TourPlaner.addLog(this.selectedTour.getName(), newLog);
} catch (SQLException throwables) { } catch (DbErrorException throwables) {
LogHelper.error(throwables); LogHelper.error(throwables);
} }
s.addLog(newLog); s.addLog(newLog);
@ -404,7 +404,7 @@ public class ViewModel {
/** /**
* Entfernt ein Log anhand des selectierten Logs * Entfernt ein Log anhand des selectierten Logs
*/ */
public void delLog() throws SQLException { public void delLog() throws DbErrorException {
if(this.selectedLog != null) { if(this.selectedLog != null) {
TourPlaner.delLog(this.selectedTour.getName(), this.selectedLog.getId()); TourPlaner.delLog(this.selectedTour.getName(), this.selectedLog.getId());
this.selectedLog = null; this.selectedLog = null;
@ -508,7 +508,7 @@ public class ViewModel {
TourPlaner.delTour(tourname); TourPlaner.delTour(tourname);
setSelectedTour(null); setSelectedTour(null);
progressBar.setProgress(100); progressBar.setProgress(100);
} catch (NullPointerException | SQLException e) { } catch (NullPointerException | DbErrorException e) {
LogHelper.error(e); LogHelper.error(e);
} }
}else { }else {
@ -524,18 +524,20 @@ public class ViewModel {
*/ */
public void suche(String sucheInput, ProgressBar progressBar, int maxProgress){ public void suche(String sucheInput, ProgressBar progressBar, int maxProgress){
if(sucheInput.isEmpty()){ if(sucheInput.isEmpty()){
progressBar.setProgress(maxProgress);
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"), AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("suchfeldleer"), ConfigHelper.getLangIniString("suchfeldleer"),
ConfigHelper.getLangIniString("suchtextzuerst")); ConfigHelper.getLangIniString("suchtextzuerst"));
}else {
ArrayList<Tour> result = TourPlaner.sucheTour(sucheInput, progressBar, maxProgress / 2);
int steps = progressBar.getProgressSize(result.size(), maxProgress);
tourNamen.clear();
for (Tour tour : result) {
tourNamen.add(tour.getName());
progressBar.addProgress(steps);
}
this.sucheAktiv = true;
} }
ArrayList<Tour> result = TourPlaner.sucheTour(sucheInput, progressBar, maxProgress/2);
int steps = progressBar.getProgressSize(result.size(), maxProgress);
tourNamen.clear();
for (Tour tour:result) {
tourNamen.add(tour.getName());
progressBar.addProgress(steps);
}
this.sucheAktiv = true;
progressBar.setProgress(maxProgress); progressBar.setProgress(maxProgress);
} }
@ -650,7 +652,7 @@ public class ViewModel {
/** /**
* Kopiert einen Log eintrag und erstellt dafür eine neue Id für das kopierte log * Kopiert einen Log eintrag und erstellt dafür eine neue Id für das kopierte log
*/ */
public void copyLog() throws SQLException { public void copyLog() throws DbErrorException {
Log selectedLog = getSelectedLog(); Log selectedLog = getSelectedLog();
Tour selectedTour = getSelectedTour(); Tour selectedTour = getSelectedTour();
if(selectedTour == null){ if(selectedTour == null){
@ -690,7 +692,7 @@ public class ViewModel {
logs.forEach(l -> { logs.forEach(l -> {
try { try {
TourPlaner.addLog(newName, l); TourPlaner.addLog(newName, l);
} catch (SQLException throwables) { } catch (DbErrorException throwables) {
LogHelper.error(throwables); LogHelper.error(throwables);
} }
progressBar.addProgress(steps); progressBar.addProgress(steps);
@ -702,7 +704,7 @@ public class ViewModel {
// getLogData(); // getLogData();
selectTour(newName); selectTour(newName);
progressBar.setProgress(maxLevel); progressBar.setProgress(maxLevel);
} catch (IOException | SQLException e) { } catch (DbErrorException |DirectionMapException e) {
LogHelper.error(e); LogHelper.error(e);
progressBar.setProgress(maxLevel); progressBar.setProgress(maxLevel);
} }