/* * 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.forms; import com.megatimfx.common.annontations.Champ; import com.megatimfx.common.customcontrols.AbstractNestedEntityTable; import com.megatimfx.common.customcontrols.AbstractSelectionItem; import com.megatimfx.common.customcontrols.CustomFileChooser; import com.megatimfx.components.customdialogs.AlertMessageUtil; import com.megatimfx.components.customdialogs.LoadinIndicatorDialogUtil; import com.megatim.fdxconvert.App; import com.megatim.fdxconvert.controller.table.ConversionModelTable; import com.megatim.fdxconvert.controller.table.MetaAlphaNumeriqueTable; import com.megatim.fdxconvert.controller.table.TypeFichierTable; import com.megatim.fdxconvert.dao.TypeFichierDAO; import com.megatim.fdxconvert.enums.DataType; import com.megatim.fdxconvert.model.ConversionModel; import com.megatim.fdxconvert.pojo.Delimiteur; import com.megatim.fdxconvert.pojo.FileToValidate; import com.megatim.fdxconvert.model.MetaAlphaNumeriqueField; import com.megatim.fdxconvert.model.TypeFichier; import com.megatim.fdxconvert.service.ConversionModelService; import com.megatim.fdxconvert.service.MetaAlphaNumeriqueFieldService; import java.net.URL; import java.util.Arrays; import java.util.HashSet; import java.util.ResourceBundle; import java.util.Set; import javafx.collections.FXCollections; import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; import javafx.scene.control.TabPane; import javafx.util.Pair; /** * * @author STEPHANIE */ public class FileToValidateEditFormController implements Initializable { @FXML @Champ(mappedBy = "typeFichier", type = TypeFichier.class, update = false) private AbstractSelectionItem typeFichierAbstractSelectItem; @FXML private AbstractSelectionItem conversionModelAbstractSelectItem; @FXML @Champ(mappedBy = "delimiteurLigne") private ComboBox delimiteurLigne; @FXML @Champ(mappedBy = "delimiteurColonne") private ComboBox delimiteurColonne; @FXML @Champ(mappedBy = "dataType") private ComboBox dataTypeComboBox; @FXML @Champ(mappedBy = "strictValidation", type = Boolean.class) private CheckBox strictValidationCheckbox; @FXML @Champ(mappedBy = "headerPresent", type = Boolean.class) private CheckBox headerPresentCheckbox; @FXML private CheckBox saisieAlphaNumeriqueFieldChecBox; @FXML @Champ(mappedBy = "filePath") private CustomFileChooser fileToValidateFileChooser; @FXML @Champ(mappedBy = "metaAlphaNumeriqueFields", type = MetaAlphaNumeriqueField.class, update = true) private AbstractNestedEntityTable metaAlphaNumeriqueFieldAbstractTable; @FXML private TabPane tabPane; @FXML private CheckBox useExistingConversionModelCheckBox; private final MetaAlphaNumeriqueFieldService metaAlphaNumeriqueFieldService = MetaAlphaNumeriqueFieldService.getInstance(); private final Set typeFichierSet = new HashSet<>(); private final Set conversionModelSet = new HashSet<>(); @Override public void initialize(URL location, ResourceBundle resources) { tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE); saisieAlphaNumeriqueFieldChecBox.setDisable(true); metaAlphaNumeriqueFieldAbstractTable.setDisable(true); delimiteurColonne.setPromptText("Sélectionnez un élément dans la liste"); delimiteurColonne.setItems(FXCollections.observableArrayList( App.DELIMITEURS_COLONNE.values() )); delimiteurLigne.setPromptText("Sélectionnez un élément dans la liste"); delimiteurLigne.setItems(FXCollections.observableArrayList( App.DELIMITEURS_LIGNE.values() )); delimiteurColonne.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull() .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS)) .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX)) .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)) ); delimiteurLigne.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull() .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLS)) .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.XLSX)) .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)) ); strictValidationCheckbox.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNull() .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.TXT)) .or(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)) ); useExistingConversionModelCheckBox.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)); conversionModelAbstractSelectItem.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)); headerPresentCheckbox.disableProperty().bind(dataTypeComboBox.getSelectionModel().selectedItemProperty().isEqualTo(DataType.JSON)); dataTypeComboBox.setPromptText("Sélectionnez un élément dans la liste"); dataTypeComboBox.setItems(FXCollections.observableArrayList( DataType.values() )); typeFichierAbstractSelectItem.setTitle("Choix du type de fichier"); typeFichierAbstractSelectItem.setColumns(Arrays.asList( TypeFichierTable.codeColumn(), TypeFichierTable.libelleColumn() )); typeFichierAbstractSelectItem.setSearchFieldPairs(Arrays.asList( new Pair<>("code", "Code"), new Pair<>("libelle", "Libellé") )); conversionModelAbstractSelectItem.setTitle("Choix du modèle de conversion"); conversionModelAbstractSelectItem.setColumns(Arrays.asList( ConversionModelTable.libelleColumn(), ConversionModelTable.typeFichierColumn(), ConversionModelTable.dataTypeColumn(), ConversionModelTable.headerPresentColumn(), ConversionModelTable.strictValidationColumn(), ConversionModelTable.delimiteurLigneColumn(), ConversionModelTable.delimiteurColonneColumn() )); conversionModelAbstractSelectItem.setSearchFieldPairs(Arrays.asList( new Pair<>("libelle", "Libellé") )); metaAlphaNumeriqueFieldAbstractTable.setClazz(MetaAlphaNumeriqueField.class); metaAlphaNumeriqueFieldAbstractTable.setColums(Arrays.asList( MetaAlphaNumeriqueTable.typeFichierColumn(),MetaAlphaNumeriqueTable.typeDonneeColumn(), MetaAlphaNumeriqueTable.codeColonneColumn(), MetaAlphaNumeriqueTable.tailleColonneColumn(), MetaAlphaNumeriqueTable.indexColonneColumn() )); metaAlphaNumeriqueFieldAbstractTable.setGenericCrudService(metaAlphaNumeriqueFieldService); saisieAlphaNumeriqueFieldChecBox.setOnAction(event -> { typeFichierAbstractSelectItem.setDisable(saisieAlphaNumeriqueFieldChecBox.isSelected()); }); saisieAlphaNumeriqueFieldChecBox.selectedProperty().addListener((observable, oldValue, newValue) -> { if (newValue) { typeFichierAbstractSelectItem.setDisable(true); saisieAlphaNumeriqueFieldChecBox.setDisable(true); } }); typeFichierAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> { if (newValue != null) { saisieAlphaNumeriqueFieldChecBox.setDisable(typeFichierAbstractSelectItem == null); } }); conversionModelAbstractSelectItem.selectedElementProperty().addListener((observable, oldValue, newValue) -> { if (newValue != null) { dataTypeComboBox.setValue(newValue.getDataType()); if (newValue.getCodeDelimiteurColonne()!= null) { delimiteurColonne.setValue(App.DELIMITEURS_COLONNE.get(newValue.getCodeDelimiteurColonne())); } if (newValue.getCodeDelimiteurLigne()!= null) { delimiteurLigne.setValue(App.DELIMITEURS_LIGNE.get(newValue.getCodeDelimiteurLigne())); } strictValidationCheckbox.setSelected(newValue.isStrictValidation()); headerPresentCheckbox.setSelected(newValue.isHeaderPresent()); metaAlphaNumeriqueFieldAbstractTable.setElements(newValue.getMetaAlphaNumeriqueFields()); typeFichierAbstractSelectItem.setOldElement(newValue.getTypeFichier()); } }); conversionModelAbstractSelectItem.disableProperty().bind(useExistingConversionModelCheckBox.selectedProperty().not()); initElements(); } public ComboBox getDataTypeComboBox() { return dataTypeComboBox; } private void initElements() { Task task = new Task() { @Override protected Object call() throws Exception { typeFichierSet.clear(); typeFichierSet.addAll(TypeFichierDAO.getAllTypeFichierWithValidateur()); typeFichierSet.addAll(TypeFichierDAO.getAllTypeFichierWithModelJson()); return null; } }; task.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show()); task.setOnSucceeded(e -> { typeFichierAbstractSelectItem.setElements(typeFichierSet); LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide(); }); task.setOnFailed(e -> { LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide(); AlertMessageUtil.showAlertException(task.getException(), "Une exception s'est produite pendant le traitement", "Erreur"); }); Thread thread = new Thread(task); thread.setDaemon(true); thread.start(); Task task1 = new Task() { @Override protected Object call() throws Exception { conversionModelSet.clear(); conversionModelSet.addAll(ConversionModelService.getInstance().getAll()); return null; } }; task1.setOnRunning(e -> LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show()); task1.setOnSucceeded(e -> { conversionModelAbstractSelectItem.setElements(conversionModelSet); LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide(); }); task1.setOnFailed(e -> { LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide(); AlertMessageUtil.showAlertException(task1.getException(), "Une exception s'est produite pendant le traitement", "Erreur"); }); Thread thread1 = new Thread(task1); thread1.setDaemon(true); thread1.start(); } public AbstractSelectionItem getTypeFichierAbstractSelectItem() { return typeFichierAbstractSelectItem; } public CheckBox getSaisieAlphaNumeriqueFieldChecBox() { return saisieAlphaNumeriqueFieldChecBox; } public void setSaisieAlphaNumeriqueFieldChecBox(CheckBox saisieAlphaNumeriqueFieldChecBox) { this.saisieAlphaNumeriqueFieldChecBox = saisieAlphaNumeriqueFieldChecBox; } public void setTypeFichierAbstractSelectItem(AbstractSelectionItem typeFichierAbstractSelectItem) { this.typeFichierAbstractSelectItem = typeFichierAbstractSelectItem; } public AbstractNestedEntityTable getMetaAlphaNumeriqueFieldAbstractTable() { return metaAlphaNumeriqueFieldAbstractTable; } public void setMetaAlphaNumeriqueFieldAbstractTable(AbstractNestedEntityTable metaAlphaNumeriqueFieldAbstractTable) { this.metaAlphaNumeriqueFieldAbstractTable = metaAlphaNumeriqueFieldAbstractTable; } public CheckBox getStrictValidationCheckbox() { return strictValidationCheckbox; } public void setStrictValidationCheckbox(CheckBox strictValidationCheckbox) { this.strictValidationCheckbox = strictValidationCheckbox; } }