/*
|
* 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<ConversionModel> {
|
|
private ConversionModelEditFormController conversionModelEditFormController;
|
|
private MetaAlphaNumeriqueFieldEditDialogController metaAlphaNumeriqueFieldEditDialogController;
|
|
private Map<String, AlphaNumeriqueField> 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<MetaAlphaNumeriqueField> 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;
|
}
|
}
|