/* * 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.megatimfx.common.abstracts.AbstractEditDialogController; import com.megatimfx.common.enums.ConfirmationType; import com.megatimfx.common.enums.TypeOperation; import com.megatimfx.common.utils.ViewLoaderUtil; import com.megatim.fdxconvert.App; import com.megatim.fdxconvert.enums.DataType; import com.megatim.fdxconvert.forms.MetaAlphaNumeriqueFieldEditFormController; import com.megatim.fdxconvert.forms.ConversionModelEditFormController; import com.megatim.fdxconvert.model.AlphaNumeriqueField; import com.megatim.fdxconvert.model.ConversionModel; import com.megatim.fdxconvert.pojo.Delimiteur; import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField; import com.megatim.fdxconvert.service.MetaAlphaNumeriqueFieldService; import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.ResourceBundle; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import javafx.event.ActionEvent; import javafx.scene.layout.Pane; /** * * @author ASUS */ public class ConversionModelEditDialogController extends AbstractEditDialogController { private ConversionModelEditFormController conversionModelEditFormController; private MetaAlphaNumeriqueFieldEditDialogController metaAlphaNumeriqueFieldEditDialogController; private Map newAlphaFields = new HashMap<>(); @Override public String getTitle() { return "Editer un modèle de conversion"; } @Override public Pane getContentFormPane() throws IOException { return ViewLoaderUtil.getPaneFromFxmlFile(conversionModelEditFormController.getClass().getResource("ConversionModelEditForm.fxml"), conversionModelEditFormController); } @Override public Object getContentFormController() { return conversionModelEditFormController; } @Override public void initialize(URL url, ResourceBundle rb) { getEditButton().setText("Editer"); conversionModelEditFormController = new ConversionModelEditFormController(); metaAlphaNumeriqueFieldEditDialogController = new MetaAlphaNumeriqueFieldEditDialogController(); metaAlphaNumeriqueFieldEditDialogController.setAlphaNumeriqueFieldEditFormController(new MetaAlphaNumeriqueFieldEditFormController()); super.initialize(url, rb); } @Override protected void beforeBindFormFieldWithCurrentObject(ConversionModel bindObject, Object formController, TypeOperation typeOperation) { if (formController instanceof ConversionModelEditFormController) { ConversionModelEditFormController controller = (ConversionModelEditFormController) formController; if (typeOperation.equals(TypeOperation.VIEW) || typeOperation.equals(TypeOperation.UPDATE)) { if (bindObject.getCodeDelimiteurColonne() != null) { bindObject.setDelimiteurColonne(App.DELIMITEURS_COLONNE.get(bindObject.getCodeDelimiteurColonne())); } if (bindObject.getCodeDelimiteurLigne() != null) { bindObject.setDelimiteurLigne(App.DELIMITEURS_LIGNE.get(bindObject.getCodeDelimiteurLigne())); } } if (typeOperation.equals(TypeOperation.ADD) || typeOperation.equals(TypeOperation.UPDATE)) { controller.getDelimiteurColonne().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull() .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS)) .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX)) .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)) ); controller.getDelimiteurLigne().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull() .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS)) .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX)) .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)) ); controller.getStrictValidationCheckbox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull() .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.TXT))); controller.getHeaderPresentCheckbox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull() .or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)) ); } switch (typeOperation) { case ADD: controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(true); break; case UPDATE: controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(false); break; default: } } } @Override protected void afterBindFormFieldWithCurrentObject(ConversionModel bindObject, Object formController, TypeOperation typeOperation) { if (formController instanceof ConversionModelEditFormController) { ConversionModelEditFormController controller = (ConversionModelEditFormController) formController; controller.getMetaAlphaNumeriqueFieldAbstractTable().setController(metaAlphaNumeriqueFieldEditDialogController); switch (typeOperation) { case ADD: controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> { if (newValue != null) { metaAlphaNumeriqueFieldEditDialogController.getAlphaNumeriqueFieldEditFormController().setTypeFichier(newValue); controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(false); } }); controller.getSaisieAlphaNumeriqueFieldChecBox().selectedProperty().addListener(listener -> { if (controller.getSaisieAlphaNumeriqueFieldChecBox().isSelected()) { controller.getMetaAlphaNumeriqueFieldAbstractTable().setDisable(false); } }); break; case UPDATE: metaAlphaNumeriqueFieldEditDialogController.getAlphaNumeriqueFieldEditFormController() .setTypeFichier(controller.getTypeFichierAbstractSelectItem().getSelectedElement()); controller.getSaisieAlphaNumeriqueFieldChecBox().setSelected(true); controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true); break; default: controller.getSaisieAlphaNumeriqueFieldChecBox().setSelected(true); controller.getSaisieAlphaNumeriqueFieldChecBox().setDisable(true); break; } } } @Override public boolean beforeSave(ActionEvent event) { boolean proceed = super.beforeSave(event); getCurrentObject().getMetaAlphaNumeriqueFields().forEach(m -> { newAlphaFields.put(m.getAlphaNumeriqueField().getCodeColonne(), m.getAlphaNumeriqueField()); }); Delimiteur delimiteurColonne = getCurrentObject().getDelimiteurColonne(); Delimiteur delimiteurLigne = getCurrentObject().getDelimiteurLigne(); if (delimiteurColonne != null) { getCurrentObject().setCodeDelimiteurColonne(delimiteurColonne.getCode()); } if (delimiteurLigne != null) { getCurrentObject().setCodeDelimiteurLigne(delimiteurLigne.getCode()); } return proceed; } @Override public void afterSave(ActionEvent event) { try { ConversionModel currentObject = getCurrentObject(); Set newSetMeta = currentObject.getMetaAlphaNumeriqueFields(); newSetMeta.forEach(m -> { if (!newAlphaFields.containsKey(m.getAlphaNumeriqueField().getCodeColonne())) { try { MetaAlphaNumeriqueFieldService.getInstance().delete(m); } catch (Exception ex) { Logger.getLogger(ConversionModelEditDialogController.class.getName()).log(Level.SEVERE, null, ex); } } }); } catch (Exception ex) { Logger.getLogger(ConversionModelEditDialogController.class.getName()).log(Level.SEVERE, null, ex); } } @Override public String getConfirmationMessage() { return "La configuration a été enregistrée avec succès"; } @Override protected ConfirmationType getConfirmationType() { return ConfirmationType.CONFIRMATION; } }