diff options
Diffstat (limited to 'src/main/java/at/ac')
| -rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ArchiveOperationController.java | 74 | 
1 files changed, 71 insertions, 3 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ArchiveOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ArchiveOperationController.java index 3c3a005..212dba6 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ArchiveOperationController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/missioncontrol/controller/ArchiveOperationController.java @@ -9,6 +9,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.dto.Vehicle;  import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.OperationService;  import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;  import java.io.IOException; +import java.time.Instant;  import java.time.LocalDateTime;  import java.time.ZoneOffset;  import java.util.Arrays; @@ -21,6 +22,7 @@ import java.util.Set;  import java.util.stream.Collectors;  import javafx.fxml.FXML;  import javafx.scene.control.Label; +import javafx.scene.control.TextField;  import javafx.scene.image.Image;  import javafx.scene.image.ImageView;  import javafx.scene.layout.AnchorPane; @@ -33,6 +35,7 @@ import org.springframework.stereotype.Controller;  public class ArchiveOperationController {      private static final Logger LOG = LoggerFactory.getLogger(ArchiveOperationController.class); +    @FXML private TextField txtSearch;      @FXML private ImageView imvVehicleDetail;      @FXML private Label lblStatus; @@ -89,13 +92,26 @@ public class ArchiveOperationController {              showServiceExceptionAlertAndWait("Die Einsätze konnten nicht geladen werden!");              ;          } -        setFlowPane(); +        setFlowPane(list);      } -    private void setFlowPane() { +    public void update(Set<Operation> operations) { +        long cancelledAmount = 0; +        long completedAmount = 0; +        for (Operation operation : operations) { +            if (operation.status() == Status.CANCELLED) cancelledAmount++; +            else completedAmount++; +        } +        lblCancelled.setText("storniert: " + cancelledAmount); +        lblCompleted.setText("abgeschlossen: " + completedAmount); +        lblOperations.setText("Einsätze: " + operations.size()); +        setFlowPane(operations); +    } + +    private void setFlowPane(Set<Operation> operations) {          try {              archiveOperationFlowPane.getChildren().clear(); -            for (Operation operation : sortSet(list)) { +            for (Operation operation : sortSet(operations)) {                  OperationInArchiveController opInAController =                          OperationInArchiveController.create();                  opInAController.set(operation); @@ -210,4 +226,56 @@ public class ArchiveOperationController {          backApMain.setVisible(b);          apMainDetails.setVisible(b);      } + +    @FXML +    public void searchInput() { +        LOG.debug("Search for operations in archive detail view started."); +        String text = txtSearch.getText(); +        Set<Operation> chosenOperations = new HashSet<>(); +        if (emptyText(text)) update(); +        else { +            for (Operation operation : list) { +                if (checkEquality(operation, text)) chosenOperations.add(operation); +            } +            update(chosenOperations); +        } +    } + +    private boolean emptyText(String text) { +        if (text == null) return true; +        text = text.replaceAll("\\s+", ""); +        return text.isEmpty(); +    } + +    private boolean checkEquality(Operation operation, String text) { +        if (isEqual(text, operation.opCode()) +                || isEqual(text, operation.destination()) +                || isEqual(text, reformDateToString(operation.created()))) return true; +        for (Vehicle vehicle : operation.vehicles()) { +            if (isEqual(text, vehicle.name())) return true; +        } +        return false; +    } + +    private String reformDateToString(Instant time) { +        LocalDateTime dateTime = +                LocalDateTime.ofInstant(Objects.requireNonNull(time), ZoneOffset.UTC); +        return "am " +                + dateTime.getDayOfMonth() +                + "." +                + dateTime.getMonth().getValue() +                + "." +                + dateTime.getYear(); +    } + +    private boolean isEqual(String text, String realText) { +        for (int i = 0; (i + text.length()) < realText.length(); i++) { +            StringBuilder result = new StringBuilder(); +            for (int j = i; j < i + text.length(); j++) { +                result.append(realText.charAt(j)); +            } +            if ((text.toLowerCase()).equals(result.toString().toLowerCase())) return true; +        } +        return false; +    }  }  | 
