DB -> Log get, add, edit, del
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,5 @@
 | 
			
		||||
out/
 | 
			
		||||
conf.ini
 | 
			
		||||
log/log4j/log.out/
 | 
			
		||||
log/
 | 
			
		||||
reports/
 | 
			
		||||
.idea/dataSources*
 | 
			
		||||
@@ -11,5 +11,6 @@
 | 
			
		||||
    <orderEntry type="library" name="org.ini4j:ini4j:0.5.4" level="project" />
 | 
			
		||||
    <orderEntry type="library" name="log4j:log4j:1.2.17" level="project" />
 | 
			
		||||
    <orderEntry type="library" name="org.apache.pdfbox:pdfbox:1.8.9" level="project" />
 | 
			
		||||
    <orderEntry type="library" name="org.postgresql:postgresql:42.2.19" level="project" />
 | 
			
		||||
  </component>
 | 
			
		||||
</module>
 | 
			
		||||
@@ -1,10 +1,13 @@
 | 
			
		||||
package tourplaner.business;
 | 
			
		||||
 | 
			
		||||
import org.apache.log4j.Logger;
 | 
			
		||||
import org.apache.pdfbox.exceptions.COSVisitorException;
 | 
			
		||||
import tourplaner.data.DbConnect;
 | 
			
		||||
import tourplaner.data.PostgresHelper;
 | 
			
		||||
import tourplaner.object.Log;
 | 
			
		||||
import tourplaner.object.Tour;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -25,9 +28,7 @@ public class TourPlaner{
 | 
			
		||||
     * @return Alle touren als ArrayList
 | 
			
		||||
     */
 | 
			
		||||
    public static ArrayList<Tour> getAllTours(){
 | 
			
		||||
        DbConnect dbConnect = new DbConnect();
 | 
			
		||||
        ArrayList<Tour> touren = dbConnect.getAllTouren();
 | 
			
		||||
        return touren;
 | 
			
		||||
        return new DbConnect().getAllTouren();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -37,13 +38,11 @@ public class TourPlaner{
 | 
			
		||||
     * @return false bei error
 | 
			
		||||
     */
 | 
			
		||||
    public static boolean editTour(String oldname, Tour tour){
 | 
			
		||||
        DbConnect dbConnect = new DbConnect();
 | 
			
		||||
        return dbConnect.editTour(oldname, tour);
 | 
			
		||||
        return new DbConnect().editTour(oldname, tour);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static boolean delTour(String tourname){
 | 
			
		||||
        DbConnect dbConnect = new DbConnect();
 | 
			
		||||
        return dbConnect.delTour(tourname);
 | 
			
		||||
        return new DbConnect().delTour(tourname);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -52,11 +51,38 @@ public class TourPlaner{
 | 
			
		||||
     * @return false bei error
 | 
			
		||||
     */
 | 
			
		||||
    public static boolean addTour(Tour newTour){
 | 
			
		||||
        DbConnect dbConnect = new DbConnect();
 | 
			
		||||
        return dbConnect.addTour(newTour);
 | 
			
		||||
        return new DbConnect().addTour(newTour);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public static ArrayList<Log> getLogs(String tourname){
 | 
			
		||||
        return new DbConnect().getLogs(tourname);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void doReport(String tourname){
 | 
			
		||||
        try {
 | 
			
		||||
            Reporter.createTourReport(tourname);
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            LogHelper.error(e.getMessage(), e.getClass().getName());
 | 
			
		||||
        } catch (COSVisitorException e) {
 | 
			
		||||
            LogHelper.error(e.getMessage(), e.getClass().getName());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static boolean addLog(String tourname, Log log){
 | 
			
		||||
        if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
 | 
			
		||||
        return new DbConnect().addLog(tourname, log);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static boolean delLog(String tourname, String id){
 | 
			
		||||
        return new DbConnect().delLog(tourname, id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static boolean editLog(String tourname, Log log){
 | 
			
		||||
        if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
 | 
			
		||||
        return new DbConnect().editLog(tourname, log);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public static String getMapJson(String start, String ziel){
 | 
			
		||||
        // TODO: 14.04.2021 Map Quest
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,14 @@
 | 
			
		||||
package tourplaner.data;
 | 
			
		||||
 | 
			
		||||
import javafx.geometry.Pos;
 | 
			
		||||
import tourplaner.object.Log;
 | 
			
		||||
import tourplaner.object.Tour;
 | 
			
		||||
 | 
			
		||||
import java.sql.Connection;
 | 
			
		||||
import java.sql.Date;
 | 
			
		||||
import java.sql.ResultSet;
 | 
			
		||||
import java.sql.Statement;
 | 
			
		||||
import java.time.LocalDate;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -45,9 +49,20 @@ public class DbConnect {
 | 
			
		||||
     * @return false bei error
 | 
			
		||||
     */
 | 
			
		||||
    public boolean editTour(String oldname, Tour tour) {
 | 
			
		||||
        return PostgresHelper.executeUpdate("UPDATE public.tour SET tourname = '"+tour.getName()+"', dauer = 1, mapjson = '"+tour.getMapJson()+"', start = '"+tour.getStart()+"', ziel = '"+tour.getZiel()+"', strecke = "+tour.getStrecke()+" WHERE tourname ='" + oldname + "';");
 | 
			
		||||
        String tourname = tour.getName();
 | 
			
		||||
        ArrayList<Boolean> result = new ArrayList<>();
 | 
			
		||||
        ArrayList<Log> logs = getLogs(oldname);
 | 
			
		||||
        result.add(delLogs(oldname));
 | 
			
		||||
        result.add(PostgresHelper.executeUpdate("UPDATE public.tour SET tourname = '"+tour.getName()+"', dauer = 1, mapjson = '"+tour.getMapJson()+"', start = '"+tour.getStart()+"', ziel = '"+tour.getZiel()+"', strecke = "+tour.getStrecke()+" WHERE tourname ='" + oldname + "';"));
 | 
			
		||||
        logs.forEach(log -> {
 | 
			
		||||
            result.add(addLog(tourname, log));
 | 
			
		||||
        });
 | 
			
		||||
        return !result.contains(false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean delLogs(String tourname){
 | 
			
		||||
        return PostgresHelper.executeUpdate("DELETE FROM public.log WHERE tourname = '"+tourname+"'");
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Fügt eine Tour hinzu
 | 
			
		||||
     * @param tour Neue Tour
 | 
			
		||||
@@ -63,7 +78,70 @@ public class DbConnect {
 | 
			
		||||
     * @return false bei error
 | 
			
		||||
     */
 | 
			
		||||
    public boolean delTour(String tourname){
 | 
			
		||||
        return  PostgresHelper.executeUpdate("DELETE FROM public.tour WHERE tourname = '"+tourname+"'");
 | 
			
		||||
        ArrayList<Boolean> result = new ArrayList<>();
 | 
			
		||||
        result.add(delLogs(tourname));
 | 
			
		||||
        result.add(PostgresHelper.executeUpdate("DELETE FROM public.tour WHERE tourname = '"+tourname+"'"));
 | 
			
		||||
        return !result.contains(false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ArrayList<Log> getLogs(String tourname){
 | 
			
		||||
 | 
			
		||||
        this.c = PostgresHelper.con();
 | 
			
		||||
        String id, bemerkung ;
 | 
			
		||||
        double dauer, strecke, pause, gegangen, avg, hightmeter;
 | 
			
		||||
        Date datum;
 | 
			
		||||
 | 
			
		||||
        ArrayList<Log> logs = new ArrayList<>();
 | 
			
		||||
        try {
 | 
			
		||||
            stmt = this.c.createStatement();
 | 
			
		||||
            ResultSet rs = stmt.executeQuery("SELECT * FROM public.log where tourname = '"+ tourname +"'");
 | 
			
		||||
            while (rs.next()) {
 | 
			
		||||
                id = rs.getString("id");
 | 
			
		||||
                bemerkung = rs.getString("bemerkung");
 | 
			
		||||
                datum = rs.getDate("datum");
 | 
			
		||||
                dauer = rs.getDouble("dauer");
 | 
			
		||||
//                avg = rs.getDouble("avg");
 | 
			
		||||
                hightmeter = rs.getDouble("hightmeter");
 | 
			
		||||
                pause = rs.getDouble("pause");
 | 
			
		||||
//                gegangen = rs.getDouble("gegangen");
 | 
			
		||||
                strecke = rs.getDouble("strecke");
 | 
			
		||||
                if (!tourname.isEmpty()) {
 | 
			
		||||
                    logs.add(new Log(id, dauer, datum.toLocalDate(), strecke, bemerkung,hightmeter, pause));
 | 
			
		||||
                }else {
 | 
			
		||||
                    return null;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            rs.close();
 | 
			
		||||
            stmt.close();
 | 
			
		||||
            this.c.close();
 | 
			
		||||
            return logs;
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Füght einen Logeintrag ein
 | 
			
		||||
     * @param tourname Zu welcher Tour der Logeintrag gehört
 | 
			
		||||
     * @param log Der Logeintrag
 | 
			
		||||
     * @return false bei error
 | 
			
		||||
     */
 | 
			
		||||
    public boolean addLog(String tourname, Log log){
 | 
			
		||||
        if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
 | 
			
		||||
        return PostgresHelper.executeUpdate("INSERT INTO public.log (tourname, id, bemerkung, datum, strecke, avg, hightmeter, pause, gegangen, dauer) VALUES ('"+tourname+"', '"+log.getId()+"', '"+log.getBemerkung()+"', '"+log.getDatum()+"', "
 | 
			
		||||
                +log.getStrecke()+", "+log.getAvgspeed()+", "+log.getHightmeter()+", "+log.getPause()+", "+log.getGegangen()+", "+log.getDauer()+")");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean editLog(String tourname, Log log){
 | 
			
		||||
        return PostgresHelper.executeUpdate("UPDATE public.log SET bemerkung = '"+log.getBemerkung()+"', datum = '"+log.getDatum()+"', strecke = "+log.getStrecke()+", avg = "+log.getAvgspeed()+", hightmeter = "+
 | 
			
		||||
                log.getHightmeter()+", pause = "+log.getPause()+", gegangen = "+log.getGegangen()+", dauer = "+log.getDauer()+" WHERE tourname = '"+tourname+"' and id = '"+log.getId()+"'");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean delLog(String tourname, String id){
 | 
			
		||||
        System.out.println("DELETE FROM public.log WHERE tourname = '"+tourname+"' and id = '"+id+"'");
 | 
			
		||||
        return PostgresHelper.executeUpdate("DELETE FROM public.log WHERE tourname = '"+tourname+"' and id = '"+id+"'");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@ import javafx.scene.control.cell.PropertyValueFactory;
 | 
			
		||||
import javafx.scene.input.MouseEvent;
 | 
			
		||||
import tourplaner.business.ConfigHelper;
 | 
			
		||||
import tourplaner.business.LogHelper;
 | 
			
		||||
import tourplaner.business.TourPlaner;
 | 
			
		||||
import tourplaner.object.Log;
 | 
			
		||||
import tourplaner.object.Tour;
 | 
			
		||||
import tourplaner.viewmodels.ViewModel;
 | 
			
		||||
@@ -49,13 +50,13 @@ public class TourplanerController implements Initializable {
 | 
			
		||||
    @FXML
 | 
			
		||||
    private void editTourBtn(){
 | 
			
		||||
        this.viewModel.editTour();
 | 
			
		||||
        beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
 | 
			
		||||
        beschreibungTableView.getItems().add(this.viewModel.getTour(this.viewModel.getSelectedTour().getName()));
 | 
			
		||||
        syncTour(this.viewModel.getSelectedTour().getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private void editLogBtn(){
 | 
			
		||||
        this.viewModel.editLog();
 | 
			
		||||
        syncLogs();
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Öffnet github im standart browser
 | 
			
		||||
@@ -84,6 +85,19 @@ public class TourplanerController implements Initializable {
 | 
			
		||||
        this.viewModel.doxygenDocBrowser();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void syncTour(String selectedItem){
 | 
			
		||||
        beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
 | 
			
		||||
        beschreibungTableView.getItems().add(this.viewModel.getTour(selectedItem));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void syncTourNamen(){
 | 
			
		||||
        TourListView.setItems(this.viewModel.getTourNamen());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void syncLogs(){
 | 
			
		||||
        logTableView.getItems().removeIf(s -> true);
 | 
			
		||||
        logTableView.setItems(this.viewModel.getLogData());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -95,8 +109,7 @@ public class TourplanerController implements Initializable {
 | 
			
		||||
        String selectedItem = TourListView.getSelectionModel().getSelectedItem();
 | 
			
		||||
        this.viewModel.selectTour(selectedItem);
 | 
			
		||||
        titleTextView.setText(selectedItem);
 | 
			
		||||
        beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
 | 
			
		||||
        beschreibungTableView.getItems().add(this.viewModel.getTour(selectedItem));
 | 
			
		||||
        syncTour(selectedItem);
 | 
			
		||||
        startCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("start"));
 | 
			
		||||
        zielCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("ziel"));
 | 
			
		||||
        dauerCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("dauer"));
 | 
			
		||||
@@ -105,6 +118,7 @@ public class TourplanerController implements Initializable {
 | 
			
		||||
 | 
			
		||||
        //Log anzeigen
 | 
			
		||||
        logTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinelogsvorhanden")));
 | 
			
		||||
        logTableView.getItems().removeIf(s -> true);
 | 
			
		||||
        logTableView.setItems(this.viewModel.getLogData());
 | 
			
		||||
        logDauerCol.setCellValueFactory(new PropertyValueFactory<Log, String>("dauer"));
 | 
			
		||||
        logStreckeCol.setCellValueFactory(new PropertyValueFactory<Log, String>("strecke"));
 | 
			
		||||
@@ -163,12 +177,13 @@ public class TourplanerController implements Initializable {
 | 
			
		||||
    @FXML
 | 
			
		||||
    private void addLog(){
 | 
			
		||||
        this.viewModel.addLog();
 | 
			
		||||
        syncLogs();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private void delLog(){
 | 
			
		||||
        this.viewModel.delLog();
 | 
			
		||||
 | 
			
		||||
        syncLogs();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -190,7 +205,7 @@ public class TourplanerController implements Initializable {
 | 
			
		||||
        //Tour list -> links
 | 
			
		||||
        TourListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
 | 
			
		||||
        TourListView.setOrientation(Orientation.VERTICAL);
 | 
			
		||||
        TourListView.setItems(this.viewModel.getTourNamen());
 | 
			
		||||
        syncTourNamen();
 | 
			
		||||
        //Tabs zu Tour -> rechts oben
 | 
			
		||||
        beschreibungTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinetourselected")));
 | 
			
		||||
        titleTextView.setText( ConfigHelper.getLangIniString("keinetourselected"));
 | 
			
		||||
 
 | 
			
		||||
@@ -212,10 +212,11 @@ public class ViewModel {
 | 
			
		||||
                                Log newLog = new Log(this.selectedLog.getId(), dauer, datum, strecke, this.neueBemerkung, hightmeter, pause);
 | 
			
		||||
                                this.logData.removeIf(ld -> ld.getId().equals(this.selectedLog.getId()));
 | 
			
		||||
                                this.logData.add(newLog);
 | 
			
		||||
                                tourAkt.get().delLog(this.selectedLog.getId());
 | 
			
		||||
                                tourAkt.get().addLog(newLog);
 | 
			
		||||
//                                tourAkt.get().delLog(this.selectedLog.getId());
 | 
			
		||||
//                                tourAkt.get().addLog(newLog);
 | 
			
		||||
                                this.tourData.removeIf(td -> td.getName().equals(this.selectedTour.getName()));
 | 
			
		||||
                                this.tourData.add(tourAkt.get());
 | 
			
		||||
                                TourPlaner.editLog(this.selectedTour.getName(), newLog);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
@@ -327,6 +328,7 @@ public class ViewModel {
 | 
			
		||||
                                        if (date != null) {
 | 
			
		||||
                                            Log newLog = new Log(newId.get(), dauer, date, strecke, this.neueBemerkung, hightmeter, pause);
 | 
			
		||||
                                            this.logData.add(newLog);
 | 
			
		||||
                                            TourPlaner.addLog(this.selectedTour.getName(), newLog);
 | 
			
		||||
                                            s.addLog(newLog);
 | 
			
		||||
                                        }
 | 
			
		||||
                                    }
 | 
			
		||||
@@ -348,25 +350,8 @@ public class ViewModel {
 | 
			
		||||
     */
 | 
			
		||||
    public void delLog(){
 | 
			
		||||
        if(this.selectedLog != null) {
 | 
			
		||||
            this.logData.removeIf(s -> s.getId().equals(this.selectedLog.getId()));
 | 
			
		||||
            AtomicReference<Tour> tourToEdit = new AtomicReference<>();
 | 
			
		||||
            this.tourData.forEach(s -> {
 | 
			
		||||
                if (s.getLogs() != null) {
 | 
			
		||||
                    s.getLogs().forEach(ss -> {
 | 
			
		||||
                        if (ss.getId().equals(this.selectedLog.getId())) {
 | 
			
		||||
                            tourToEdit.set(s);
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            if (tourToEdit.get() != null){
 | 
			
		||||
                Tour toEdit = tourToEdit.get();
 | 
			
		||||
                toEdit.delLog(this.selectedLog.getId());
 | 
			
		||||
                this.tourData.removeIf(s -> s.getName().equals(toEdit.getName()));
 | 
			
		||||
                this.tourData.add(toEdit);
 | 
			
		||||
                TourPlaner.delLog(this.selectedTour.getName(), this.selectedLog.getId());
 | 
			
		||||
                this.selectedLog = null;
 | 
			
		||||
            }
 | 
			
		||||
        }else{
 | 
			
		||||
            AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
 | 
			
		||||
                    ConfigHelper.getLangIniString("keinetourselected"),
 | 
			
		||||
@@ -406,6 +391,8 @@ public class ViewModel {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ObservableList<Log> getLogData() {
 | 
			
		||||
        logData.removeAll();
 | 
			
		||||
        logData.addAll(TourPlaner.getLogs(this.selectedTour.getName()));
 | 
			
		||||
        return logData;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -586,14 +573,7 @@ public class ViewModel {
 | 
			
		||||
                    ConfigHelper.getLangIniString("keinetourselected"),
 | 
			
		||||
                    ConfigHelper.getLangIniString("logtournotselectedmsg"));
 | 
			
		||||
        }else {
 | 
			
		||||
            try {
 | 
			
		||||
                Reporter.createTourReport(this.selectedTour.getName());
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                LogHelper.error(e.getMessage(), e.getClass().getName());
 | 
			
		||||
            } catch (COSVisitorException e) {
 | 
			
		||||
                LogHelper.error(e.getMessage(), e.getClass().getName());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
           TourPlaner.doReport(this.selectedTour.getName());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user