From b3d0580439b9a00c7eb918085de1694151066004 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 16:02:49 +0000
Subject: [PATCH] rename packages
---
fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java | 171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 171 insertions(+), 0 deletions(-)
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java
new file mode 100644
index 0000000..4519209
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/viewmodel/JsonStructureTableViewModel.java
@@ -0,0 +1,171 @@
+package com.megatim.fdxconvert.viewmodel;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatim.fdxconvert.App;
+import com.megatim.fdxconvert.dao.JsonStructureDAO;
+import com.megatim.fdxconvert.model.JsonStructure;
+import com.megatim.fdxconvert.model.TypeFichierJson;
+import com.megatim.fdxconvert.service.TypeFichierJsonService;
+import javafx.application.Platform;
+import javafx.beans.binding.Bindings;
+import javafx.beans.binding.StringBinding;
+import javafx.beans.property.*;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.concurrent.Task;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Consumer;
+
+public class JsonStructureTableViewModel {
+
+ private final ObservableList<TypeFichierJson> data = FXCollections.observableArrayList();
+ private final ObjectProperty<TypeFichierJson> selectedItem = new SimpleObjectProperty<>(null);
+
+ private final BooleanProperty loading = new SimpleBooleanProperty(false);
+ private final IntegerProperty pageNumber = new SimpleIntegerProperty(0);
+ private final LongProperty totalElements = new SimpleLongProperty(0);
+ private final LongProperty numberPerPage = new SimpleLongProperty(0);
+ private final BooleanProperty last = new SimpleBooleanProperty(false);
+ private final BooleanProperty first = new SimpleBooleanProperty(false);
+
+ private final StringBinding paginationNumberInfo = Bindings.createStringBinding(() -> evalString(), pageNumber, numberPerPage, totalElements);
+
+ public void init() {
+ loadData(pageNumber.get());
+ pageNumber.addListener((observable, oldValue, newValue) -> {
+ loadData(newValue.intValue());
+ });
+ }
+
+ public void reloadData() {
+ loadData(pageNumber.get());
+ }
+
+ public void loadSelectedItemChildren(Consumer<TypeFichierJson> consumer) {
+ Task<JsonStructure> task = new Task<JsonStructure>() {
+ @Override
+ protected JsonStructure call() throws Exception {
+ loading.set(true);
+ JsonStructure jsonStructure = JsonStructureDAO.loadSubJsonStructure(selectedItem.get().getJsonStructure());
+ setDelimiteurDate(jsonStructure.getFields());
+ return jsonStructure;
+ }
+ };
+ task.setOnSucceeded(e -> {
+ loading.set(false);
+ selectedItem.get().setJsonStructure(task.getValue());
+ consumer.accept(selectedItem.get());
+ });
+ task.setOnFailed(e -> loading.set(false));
+ task.setOnCancelled(e -> loading.set(false));
+ Thread thread = new Thread(task);
+ thread.setDaemon(true);
+ thread.start();
+ }
+
+ public void deleteSelectedItem() {
+ Task<Void> task = new Task<Void>() {
+ @Override
+ protected Void call() throws Exception {
+ loading.set(true);
+ TypeFichierJsonService.getInstance().delete(selectedItem.get());
+ return null;
+ }
+ };
+ task.setOnSucceeded(e -> {
+ loading.set(false);
+ pageNumber.set(0);
+ loadData(pageNumber.get());
+ });
+ task.setOnFailed(e -> loading.set(false));
+ task.setOnCancelled(e -> loading.set(false));
+ Thread thread = new Thread(task);
+ thread.setDaemon(true);
+ thread.start();
+ }
+
+ public void nextPage() {
+ if (!last.get()) {
+ pageNumber.set(pageNumber.get() + 1);
+ }
+ }
+
+ public void previousPage() {
+ if (!first.get()) {
+ pageNumber.set(pageNumber.get() - 1);
+ }
+ }
+
+ private void setDelimiteurDate(List<JsonStructure> jsonStructures) {
+ jsonStructures.stream().forEach(j -> {
+ if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ setDelimiteurDate(j.getFields());
+ } else if (j.getTypeDonnee().equals(TypeDonnee.DATE) && j.getCodeDelimiteurDate() != null) {
+ j.setDelimiteurDate(App.SEPARATEURS_DATE.get(j.getCodeDelimiteurDate()));
+ }
+ });
+ }
+
+ private void loadData(int page) {
+
+ Task<Void> task = new Task<Void>() {
+ @Override
+ protected Void call() throws Exception {
+
+ loading.set(true);
+
+ List<TypeFichierJson> typeFichierJsons = TypeFichierJsonService.getInstance().getAllByPage(page, Arrays.asList());
+
+ Platform.runLater(() -> {
+ data.clear();
+ data.addAll(typeFichierJsons);
+ totalElements.set(TypeFichierJsonService.getInstance().getTotalElements());
+ numberPerPage.set(TypeFichierJsonService.getInstance().getNumberPerPage());
+ last.set(TypeFichierJsonService.getInstance().isLast());
+ first.set(TypeFichierJsonService.getInstance().isFirst());
+ });
+
+ return null;
+ }
+ };
+
+ task.setOnSucceeded(e -> loading.set(false));
+ task.setOnFailed(e -> loading.set(false));
+ task.setOnCancelled(e -> loading.set(false));
+ Thread thread = new Thread(task);
+ thread.setDaemon(true);
+ thread.start();
+
+ }
+
+ public ObservableList<TypeFichierJson> getData() {
+ return data;
+ }
+
+ public BooleanProperty getLoadingProperty() {
+ return loading;
+ }
+
+ public StringBinding getPaginationNumberInfo() {
+ return paginationNumberInfo;
+ }
+
+ public BooleanProperty getLastProperty() {
+ return last;
+ }
+
+ public BooleanProperty getFirstProperty() {
+ return first;
+ }
+
+ public ObjectProperty<TypeFichierJson> selectedItemProperty() {
+ return selectedItem;
+ }
+
+ private String evalString() {
+ long currentNumber = (pageNumber.get() + 1) * numberPerPage.get();
+ return (currentNumber < totalElements.get() ? currentNumber : totalElements.get()) + "/" + totalElements.get();
+ }
+}
--
Gitblit v1.10.0