diff options
| author | Andreas Weninger <e01526989@student.tuwien.ac.at> | 2018-05-16 14:51:31 +0200 | 
|---|---|---|
| committer | Tharre <tharre3@gmail.com> | 2018-05-21 16:10:15 +0200 | 
| commit | b01c84cc72fa21ba5c5e59ec65faa09c828139ba (patch) | |
| tree | 7324a60ee88d38f0809def31f43fcd5bc20cf631 | |
| parent | fa6ac1c592c22ac688123fabed062879881dc843 (diff) | |
| download | sepm-groupproject-b01c84cc72fa21ba5c5e59ec65faa09c828139ba.tar.gz sepm-groupproject-b01c84cc72fa21ba5c5e59ec65faa09c828139ba.tar.xz sepm-groupproject-b01c84cc72fa21ba5c5e59ec65faa09c828139ba.zip | |
[#25958] Apply code formatting. Context Menu Label now bold and black while highlighted. Annotate stuff.
4 files changed, 100 insertions, 57 deletions
| diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java index 1423240..476f968 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java @@ -11,7 +11,9 @@ import java.sql.SQLException;  import java.sql.Timestamp;  import java.util.EnumSet;  import java.util.Set; +import org.springframework.stereotype.Repository; +@Repository  public class DBOperationDAO implements OperationDAO {      private JDBCConnectionManager jdbcConnectionManager; diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java index 7b69886..a6be111 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java @@ -12,7 +12,9 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;  import java.util.EnumSet;  import java.util.Set;  import java.util.SortedSet; +import org.springframework.stereotype.Service; +@Service  public class OperationServiceImpl implements OperationService {      // TODO: anders? diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java index 58874da..446ca50 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java @@ -1,30 +1,25 @@  package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.userInterface; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.DBOperationDAO; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationService; -import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationServiceImpl;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.ui.vehiclepane.VehiclePaneController;  import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;  import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException; -import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager;  import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;  import java.io.IOException;  import java.lang.invoke.MethodHandles;  import java.time.Instant; -import java.time.LocalDate;  import java.time.temporal.ChronoUnit; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.EnumSet;  import java.util.LinkedList; +import java.util.List;  import java.util.Set;  import javafx.event.ActionEvent;  import javafx.fxml.FXML; @@ -33,14 +28,18 @@ import javafx.scene.Scene;  import javafx.scene.control.Alert;  import javafx.scene.control.Alert.AlertType;  import javafx.scene.control.Button; +import javafx.scene.control.ContextMenu;  import javafx.scene.control.Label;  import javafx.scene.control.ListView; +import javafx.scene.control.MenuItem;  import javafx.scene.control.TextField; +import javafx.scene.input.MouseButton;  import javafx.scene.layout.AnchorPane;  import javafx.scene.layout.FlowPane;  import javafx.stage.Stage;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Controller;  @Controller @@ -59,9 +58,7 @@ public class CreateOperationController {      private LinkedList<Vehicle> chosenVehicles = new LinkedList<>(); -    // TODO: Anders? -    private OperationService operationService = -            new OperationServiceImpl(new DBOperationDAO(new JDBCConnectionManager())); +    @Autowired private OperationService operationService;      private final VehicleService vehicleService;      private final SpringFXMLLoader fxmlLoader; @@ -78,10 +75,7 @@ public class CreateOperationController {      public void updateList() {          try {              fpVehicles.getChildren().clear(); -            List<Vehicle> vehicles = vehicleService.list(); - -            // TODO Remove debug -            vehicles = testData(); +            Set<Vehicle> vehicles = vehicleService.list(EnumSet.allOf(Vehicle.Status.class));              for (Vehicle vehicle : vehicles) {                  VehiclePaneController controller = VehiclePaneController.createVehiclePane(); @@ -91,7 +85,13 @@ public class CreateOperationController {                          .getRootElement()                          .setOnMouseClicked(                                  event -> { -                                    if (event.getClickCount() == 2) { +                                    if (event.getButton().equals(MouseButton.SECONDARY)) { +                                        createContextMenu(vehicle, vehicleService) +                                                .show( +                                                        controller.getRootElement(), +                                                        event.getScreenX(), +                                                        event.getScreenY()); +                                    } else {                                          if (chosenVehicles.contains(vehicle)) {                                              chosenVehicles.remove(vehicle);                                              controller.setSelected(false); @@ -130,46 +130,68 @@ public class CreateOperationController {          }      } -    private LinkedList<Vehicle> testData() { -        Employee empl = -                Employee.builder() -                        .birthday(LocalDate.MIN) -                        .isDriver(true) -                        .isPilot(true) -                        .educationLevel(EducationLevel.NKV) -                        .name("Hans Test") -                        .build(); -        Registration reg = -                Registration.builder() -                        .employee(empl) -                        .start(Instant.now().minus(1, ChronoUnit.HOURS)) -                        .end(Instant.now().plus(1, ChronoUnit.HOURS)) -                        .build(); +    private static ContextMenu createContextMenu(Vehicle data, VehicleService vehicleService) { +        ContextMenu menu = new ContextMenu(); -        Vehicle vehicle = -                Vehicle.builder() -                        .name("Test-KTW") -                        .constructionType(ConstructionType.HOCHDACH) -                        .type(VehicleType.KTW) -                        .status(Vehicle.Status.FREI_WACHE) -                        .hasNef(false) -                        .registrations(Arrays.asList(reg)) -                        .build(); +        for (Vehicle.Status status : Vehicle.Status.values()) { +            if (status == Vehicle.Status.ABGEMELDET) { +                continue; +            } -        Vehicle vehicle1 = -                Vehicle.builder() -                        .name("Test-NEF") -                        .constructionType(ConstructionType.NORMAL) -                        .type(VehicleType.NEF) -                        .status(Vehicle.Status.FREI_FUNK) -                        .hasNef(true) -                        .registrations(Arrays.asList(reg)) -                        .build(); -        LinkedList<Vehicle> list = new LinkedList<>(); -        list.add(vehicle); -        list.add(vehicle1); -        // this.lvVehicles.setItems(FXCollections.observableArrayList(list)); -        return list; +            MenuItem mi = new MenuItem(status.name()); + +            if (status == Vehicle.Status.FREI_FUNK || status == Vehicle.Status.FREI_WACHE) { +                mi.getStyleClass().add("mi-free"); +            } else { +                mi.getStyleClass().add("mi-other"); +            } + +            mi.setOnAction( +                    event -> { +                        try { +                            vehicleService.update(data.toBuilder().status(status).build()); +                        } catch (InvalidVehicleException | ServiceException e) { +                            LOG.error("Error while setting status.", e); +                            Alert a = new Alert(AlertType.ERROR, e.getMessage()); +                            a.show(); +                        } +                    }); + +            menu.getItems().add(mi); +        } + +        MenuItem abmelden = new MenuItem("abmelden"); + +        abmelden.setOnAction( +                event -> { +                    try { +                        List<Registration> registrations = data.registrations(); +                        assert registrations +                                != null; // Otherwise the element shouldn't be in the list. + +                        List<Registration> newRegistrations = new ArrayList<>(); + +                        for (Registration registration : registrations) { +                            if (registration.isActive()) { +                                newRegistrations.add( +                                        registration +                                                .toBuilder() +                                                .end(Instant.now().minus(1, ChronoUnit.SECONDS)) +                                                .build()); +                            } else newRegistrations.add(registration); +                        } + +                        vehicleService.update( +                                data.toBuilder().registrations(newRegistrations).build()); +                    } catch (InvalidVehicleException | ServiceException e) { +                        LOG.error("Error while unregistering.", e); +                        Alert a = new Alert(AlertType.ERROR, e.getMessage()); +                        a.show(); +                    } +                }); + +        menu.getItems().add(abmelden); +        return menu;      }      @FXML diff --git a/src/main/resources/styles/main.css b/src/main/resources/styles/main.css index c4af039..61634b6 100644 --- a/src/main/resources/styles/main.css +++ b/src/main/resources/styles/main.css @@ -27,6 +27,23 @@    -fx-font-weight: bold;  } -.scroll-pane { -  -fx-background-color:transparent; +.button-free-status { +  -fx-background-color: #C5E0B4; +} + +.button-other-status { +  -fx-background-color: #F8CBAD; +} + +.mi-free { +  -fx-background-color: #C5E0B4; +} + +.mi-other { +  -fx-background-color: #F8CBAD; +} + +.menu-item:focused .label { +  -fx-text-fill: black; +  -fx-font-weight: bold;  }
\ No newline at end of file | 
