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/controller/ModeleJsonEditDialogController.java | 325 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 325 insertions(+), 0 deletions(-)
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonEditDialogController.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonEditDialogController.java
new file mode 100644
index 0000000..581bc44
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/controller/ModeleJsonEditDialogController.java
@@ -0,0 +1,325 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.controller;
+
+import com.megatim.dynamicjsonparser.enums.TypeDonnee;
+import com.megatimfx.common.abstracts.AbstractEditDialogController;
+import com.megatimfx.common.enums.TypeOperation;
+import com.megatimfx.common.utils.ViewLoaderUtil;
+import com.megatimfx.components.customdialogs.AlertMessageUtil;
+import com.megatimfx.components.dialogs.NotificationDialog;
+import com.megatimfx.components.dialogs.NotificationType;
+import com.megatim.fdxconvert.forms.ModeleJsonEditFormController;
+import com.megatim.fdxconvert.forms.StructureChampJsonEditFormController;
+import com.megatim.fdxconvert.model.ModeleJson;
+import com.megatim.fdxconvert.model.StructureChampJson;
+import com.megatim.fdxconvert.model.SubObject;
+import com.megatim.fdxconvert.service.SubObjectService;
+import com.megatim.fdxconvert.util.Utilities;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.stream.Collectors;
+import javafx.event.ActionEvent;
+import javafx.event.Event;
+import javafx.scene.Node;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ModeleJsonEditDialogController extends AbstractEditDialogController<ModeleJson> {
+
+ private ModeleJsonEditFormController modeleJsonEditFormController;
+
+ private StructureChampJsonEditDialogController structureChampJsonEditDialogController;
+
+ private List<StructureChampJson> structJsonToBeDeleted = new ArrayList<>();
+ private final List<SubObject> subObjectToBeDeleted = new ArrayList<>();
+
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ modeleJsonEditFormController = new ModeleJsonEditFormController();
+
+ structureChampJsonEditDialogController = new StructureChampJsonEditDialogController();
+ structureChampJsonEditDialogController.setStructureChampJsonEditFormController(new StructureChampJsonEditFormController());
+ structureChampJsonEditDialogController.setModeleJsonEditFormController(modeleJsonEditFormController);
+
+ structureChampJsonEditDialogController.setSubObjectsList(modeleJsonEditFormController.getSubObjectListe());
+
+ super.initialize(url, rb);
+ }
+
+ @Override
+ public String getTitle() {
+ return "Structure d'un fichier JSON";
+ }
+
+ @Override
+ public Pane getContentFormPane() throws IOException {
+ return ViewLoaderUtil.getPaneFromFxmlFile(
+ modeleJsonEditFormController.getClass().getResource("ModeleJsonEditForm.fxml"),
+ modeleJsonEditFormController
+ );
+ }
+
+ @Override
+ public Object getContentFormController() {
+ return modeleJsonEditFormController;
+ }
+
+ @Override
+ public ModeleJson refreshObjectToUpdate(ModeleJson objectToUpdate) {
+ ModeleJson modeleJson = new ModeleJson();
+
+ modeleJson.setId(objectToUpdate.getId());
+ modeleJson.setObjectName(objectToUpdate.getObjectName());
+ modeleJson.setTypeFichier(objectToUpdate.getTypeFichier());
+ modeleJson.getListeStructureJson().addAll(objectToUpdate.getListeStructureJson());
+ modeleJson.setDateCreation(objectToUpdate.getDateCreation());
+ modeleJson.getSubObjects().addAll(objectToUpdate.getSubObjects());
+
+ if (objectToUpdate.getSubObjects() != null) {
+ modeleJson.getSubObjects().addAll(objectToUpdate.getSubObjects());
+ }
+
+ return modeleJson;
+ }
+
+ @Override
+ protected void beforeBindFormFieldWithCurrentObject(ModeleJson bindObject, Object formController, TypeOperation typeOperation) {
+
+ if (formController instanceof ModeleJsonEditFormController) {
+ ModeleJsonEditFormController controller = (ModeleJsonEditFormController) formController;
+
+ controller.getSubTypeDeleteButton().setOnAction(event -> {
+ removeSubObjectFromList(controller, event);
+ });
+
+ if (typeOperation.equals(TypeOperation.UPDATE) || typeOperation.equals(TypeOperation.VIEW)) {
+ controller.getSubObjectListe().addAll(bindObject.getSubObjects());
+ }
+
+ if (typeOperation.equals(TypeOperation.VIEW)) {
+
+ controller.getSubTypeAddButton().setDisable(true);
+ controller.getSubTypeUpdateButton().setDisable(true);
+ controller.getObjectNameTextField().setDisable(true);
+ }
+
+ if (typeOperation.equals(TypeOperation.ADD) || typeOperation.equals(TypeOperation.UPDATE)) {
+
+ controller.getSubTypeDeleteButton().disableProperty().bind(controller.getSubObjetsTableView().getSelectionModel().selectedItemProperty().isNull());
+ controller.getSubTypeUpdateButton().disableProperty().bind(controller.getSubObjetsTableView().getSelectionModel().selectedItemProperty().isNull());
+ }
+
+ }
+
+ }
+
+ @Override
+ protected void afterBindFormFieldWithCurrentObject(ModeleJson bindObject, Object formController, TypeOperation typeOperation) {
+ if (formController instanceof ModeleJsonEditFormController) {
+
+ ModeleJsonEditFormController controller = (ModeleJsonEditFormController) formController;
+
+ controller.getStructureChampAbstractTable().setController(structureChampJsonEditDialogController);
+
+ switch (typeOperation) {
+
+ case ADD:
+ controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> {
+
+ if (newValue != null) {
+ structureChampJsonEditDialogController.setTypeFichier(newValue);
+ }
+
+ });
+
+ break;
+
+ case UPDATE:
+
+ structureChampJsonEditDialogController.setTypeFichier(controller.getTypeFichierAbstractSelectItem().getSelectedElement());
+
+ break;
+
+ }
+ }
+ }
+
+ @Override
+ public boolean beforeSave(ActionEvent event) {
+ boolean proceed = super.beforeSave(event);
+ ModeleJson modeleJson = getCurrentObject();
+ StringBuilder message = new StringBuilder();
+
+ if (modeleJson.getListeStructureJson().isEmpty()) {
+
+ message.append("Bien vouloir remplir la structure des champs\n");
+ proceed = false;
+
+ }
+
+ if (modeleJson.getTypeFichier() == null) {
+
+ message.append("Le type du fichier est obligatoire\n");
+ proceed = false;
+ }
+
+ if (modeleJson.getObjectName() == null || modeleJson.getObjectName().isEmpty()) {
+
+ message.append("Le nom de l'objet à définir est obligatoire");
+ proceed = false;
+
+ } else {
+ getCurrentObject().setObjectName(getCurrentObject().getObjectName().trim());
+ StringBuilder subMessage = Utilities.validateName(getCurrentObject().getObjectName(), "Le nom de l'objet ");
+
+ if (subMessage.length() != 0) {
+
+ message.append(subMessage);
+ proceed = false;
+ }
+ }
+
+ if (!proceed) {
+
+ Node source = (Node) event.getSource();
+ Stage parentStage = (Stage) source.getScene().getWindow();
+ NotificationDialog notificationDialog = new NotificationDialog(message.toString(), NotificationType.ERROR, parentStage);
+ notificationDialog.showNotification();
+ } else {
+
+ getCurrentObject().setSubObjects(new HashSet<>(modeleJsonEditFormController.getSubObjectListe()));
+
+ getCurrentObject().getSubObjects().forEach(s -> {
+
+ s.setModeleJson(getCurrentObject());
+
+ s.getListeStructureJson().forEach(ss -> {
+ ss.setFieldOfSubObject(s);
+ });
+ });
+
+ }
+
+ try {
+ List<SubObject> liste = new ArrayList<>();
+ liste.addAll(subObjectToBeDeleted);
+
+ for (SubObject s : liste) {
+ SubObjectService.getInstance().delete(s);
+ subObjectToBeDeleted.remove(s);
+ }
+ } catch (Exception ex) {
+ proceed = false;
+
+ AlertMessageUtil.showAlertException(ex, "Une exception s'est produite pendant la supprression", "Erreur");
+
+ }
+ return proceed;
+ }
+
+ public StructureChampJsonEditDialogController getStructureChampJsonEditDialogController() {
+ return structureChampJsonEditDialogController;
+ }
+
+ private void removeSubObjectFromList(ModeleJsonEditFormController controller, Event event) {
+ Object selectedItem = controller.getSubObjetsTableView().getSelectionModel().getSelectedItem();
+
+ if (selectedItem != null) {
+ SubObject subObject = (SubObject) selectedItem;
+
+ if (!findIfSubObjectIsUsed(subObject, controller)) {
+
+ controller.getSubObjectListe().remove(subObject);
+
+ if (subObject.getId() != null && subObject.getId() != 0L && subObject.getId() != 0) {
+ subObjectToBeDeleted.add(subObject);
+ }
+
+ } else {
+ Node source = (Node) event.getSource();
+ Stage parentStage = (Stage) source.getScene().getWindow();
+ NotificationDialog notificationDialog = new NotificationDialog("Echec Suppression : L'objet à supprimer est utilisé dans la déjfinition d'un objet ou d'un champ", NotificationType.ERROR, parentStage);
+ notificationDialog.showNotification();
+ }
+
+ }
+ }
+
+ private boolean findIfSubObjectIsUsed(final SubObject subObject, ModeleJsonEditFormController controller) {
+
+ boolean found;
+
+ //Retirer le subObject concerné de la liste de recherche
+ List<SubObject> subObjectsListe = controller.getSubObjectListe().stream()
+ .filter(p -> {
+
+ if (subObject.getId() == null || subObject.getId() == 0 || subObject.getId() == 0L) {
+ return !p.getDateCreation().equals(subObject.getDateCreation());
+ } else {
+ return !p.getId().equals(subObject.getId());
+ }
+
+ }).collect(Collectors.toList());
+ List<SubObject> subObjectUsingSubObject = new ArrayList<>();
+
+ //Vérifier un sous-objet utilise le sous-objet à supprimer
+ subObjectsListe.forEach(s -> {
+ List<StructureChampJson> structUsingSubObject = s.getListeStructureJson().stream().filter(p -> p.getTypeDonnee().equals(TypeDonnee.OBJET) && p.getTypeOfSubObject().getId().equals(subObject.getId()))
+ .collect(Collectors.toList());
+
+ if (!structUsingSubObject.isEmpty()) {
+ subObjectUsingSubObject.add(s);
+ }
+ });
+
+ //Si aucun sous-objet n'utilise le sous-objet à supprimer
+ if (subObjectUsingSubObject.isEmpty()) {
+
+ List<StructureChampJson> structList = controller.getStructureChampAbstractTable().getElementObservableList()
+ .stream().filter(p -> p.getTypeDonnee().equals(TypeDonnee.OBJET))
+ .collect(Collectors.toList());
+
+ if (!structList.isEmpty()) {
+
+ List<StructureChampJson> structUsingSubObject = structList.stream()
+ .filter(p -> {
+
+ if (p.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+
+ if (subObject.getId() == null || subObject.getId() == 0 || subObject.getId() == 0L) {
+ return !p.getDateCreation().equals(subObject.getDateCreation());
+
+ } else {
+ return !p.getId().equals(subObject.getId());
+ }
+ } else {
+ return false;
+ }
+
+ }
+ )
+ .collect(Collectors.toList());
+
+ found = !structUsingSubObject.isEmpty();
+
+ } else {
+ found = false;
+ }
+ } else {
+ found = false;
+ }
+ return found;
+ }
+
+}
--
Gitblit v1.10.0