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