package com.megatim.fdxgenerator.controller;
|
|
import com.megatimfx.common.abstracts.AbstractEditDialogController;
|
import com.megatimfx.common.customdialogs.LoadinIndicatorDialogUtil;
|
import com.megatimfx.common.dialogs.NotificationDialog;
|
import com.megatimfx.common.dialogs.NotificationType;
|
import com.megatimfx.common.enums.TypeOperation;
|
import com.megatimfx.common.utils.ViewLoaderUtil;
|
import com.megatim.fdxgenerator.App;
|
import com.megatim.fdxgenerator.enums.DataType;
|
import com.megatim.fdxgenerator.forms.StructureLigneEditFormController;
|
import com.megatim.fdxgenerator.forms.ValidateurFichierEditFormController;
|
import com.megatim.fdxgenerator.model.StructureLigne;
|
import com.megatim.fdxgenerator.model.ValidateurFichier;
|
import com.megatim.fdxgenerator.pojo.Delimiteur;
|
import com.megatim.fdxgenerator.service.ValidateurFichierService;
|
import java.io.IOException;
|
import java.net.URL;
|
import java.util.ResourceBundle;
|
import javafx.collections.ListChangeListener;
|
import javafx.event.ActionEvent;
|
import javafx.scene.Node;
|
import javafx.scene.layout.Pane;
|
import javafx.stage.Stage;
|
|
public class ValidateurFichierEditDialogController extends AbstractEditDialogController<ValidateurFichier> {
|
|
private ValidateurFichierEditFormController validateurFichierEditFormController;
|
|
private StructureLigneEditDialogController structureLigneEditDialogController;
|
|
private ValidateurFichierService validateurFichierService = ValidateurFichierService.getInstance();
|
|
@Override
|
public void initialize(URL url, ResourceBundle rb) {
|
validateurFichierEditFormController = new ValidateurFichierEditFormController();
|
structureLigneEditDialogController = new StructureLigneEditDialogController();
|
structureLigneEditDialogController.setStructureLigneEditFormController(new StructureLigneEditFormController());
|
super.initialize(url, rb);
|
}
|
|
@Override
|
public String getTitle() {
|
return "Edition d'un validateur de fichier";
|
}
|
|
@Override
|
public Pane getContentFormPane() throws IOException {
|
return ViewLoaderUtil.getPaneFromFxmlFile(
|
validateurFichierEditFormController.getClass().getResource("ValidateurFichierEditForm.fxml"),
|
validateurFichierEditFormController
|
);
|
}
|
|
@Override
|
public Object getContentFormController() {
|
return validateurFichierEditFormController;
|
}
|
|
@Override
|
protected void beforeBindFormFieldWithCurrentObject(ValidateurFichier bindObject, Object formController, TypeOperation typeOperation) {
|
|
if (formController instanceof ValidateurFichierEditFormController) {
|
ValidateurFichierEditFormController controller = (ValidateurFichierEditFormController) 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().isNotEqualTo(DataType.CSV))
|
);
|
|
controller.getDelimiteurLigne().disableProperty()
|
.bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
|
.or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNotEqualTo(DataType.CSV))
|
);
|
|
controller.getHeaderPresentCheckbox().disableProperty().bind(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isNull()
|
.or(controller.getDataTypeComboBox().getSelectionModel().selectedItemProperty().isEqualTo(DataType.TXT))
|
);
|
|
}
|
}
|
}
|
|
@Override
|
protected void afterBindFormFieldWithCurrentObject(ValidateurFichier bindObject, Object formController,
|
TypeOperation typeOperation
|
) {
|
|
if (formController instanceof ValidateurFichierEditFormController) {
|
|
ValidateurFichierEditFormController controller = (ValidateurFichierEditFormController) formController;
|
|
controller.getStructureLigneAbstractTable().setController(structureLigneEditDialogController);
|
|
controller.getStructureLigneAbstractTable().getElementObservableList().sort((o1, o2) -> {
|
return Integer.valueOf(o1.getPosition()).compareTo(o2.getPosition());
|
});
|
|
structureLigneEditDialogController.setSelectedStructureLignes(controller.getStructureLigneAbstractTable().getElementObservableList());
|
|
switch (typeOperation) {
|
|
case ADD:
|
|
controller.getSaisieStructureLigneChecBox().setOnAction(event -> {
|
|
if (controller.getSaisieStructureLigneChecBox().isSelected()) {
|
int numberOfPosition = Integer.parseInt(controller.getNombrePositionTextField().getText());
|
structureLigneEditDialogController.getStructureLigneEditFormController().populatePositionComboBox(numberOfPosition);
|
}
|
|
});
|
controller.getTypeFichierAbstractSelectItem().selectedElementProperty().addListener((observable, oldValue, newValue) -> {
|
|
if (newValue != null) {
|
structureLigneEditDialogController.setTypeFichier(newValue);
|
}
|
|
});
|
break;
|
|
case UPDATE:
|
|
structureLigneEditDialogController.setTypeFichier(controller.getTypeFichierAbstractSelectItem().getSelectedElement());
|
|
controller.getSaisieStructureLigneChecBox().setSelected(true);
|
controller.getSaisieStructureLigneChecBox().setDisable(true);
|
|
break;
|
|
default:
|
|
controller.getSaisieStructureLigneChecBox().setSelected(true);
|
controller.getSaisieStructureLigneChecBox().setDisable(true);
|
|
break;
|
}
|
|
controller.getStructureLigneAbstractTable().getElementObservableList().addListener((ListChangeListener.Change<? extends StructureLigne> c) -> {
|
|
while (c.next()) {
|
|
if (c.wasAdded()) {
|
|
int start = c.getFrom();
|
int end = c.getTo();
|
|
for (int i = start; i < end; i++) {
|
|
StructureLigne structLigne = c.getList().get(i);
|
|
structLigne.setValidateurFichier(getCurrentObject());
|
|
structureLigneEditDialogController.getStructureLigneEditFormController().getList().remove(new Integer(structLigne.getPosition()));
|
|
structureLigneEditDialogController.getStructureLigneEditFormController().getList().sort((o1, o2) -> {
|
return o1.compareTo(o2);
|
});
|
}
|
|
} else if (c.wasRemoved()) {
|
|
for (StructureLigne structLigne : c.getRemoved()) {
|
|
structureLigneEditDialogController.getStructureLigneEditFormController().getList().add(structLigne.getPosition());
|
|
structureLigneEditDialogController.getStructureLigneEditFormController().getList().sort((o1, o2) -> {
|
return o1.compareTo(o2);
|
});
|
|
}
|
}
|
|
}
|
});
|
|
}
|
|
}
|
|
@Override
|
protected void afterBindCurrentObjectWithFormField(ValidateurFichier bindObject, Object formController,
|
TypeOperation typeOperation
|
) {
|
ValidateurFichierEditFormController controller = (ValidateurFichierEditFormController) formController;
|
controller.getStructureLigneAbstractTable().setController(structureLigneEditDialogController);
|
if (typeOperation.equals(TypeOperation.ADD)) {
|
if (bindObject.getTypeFichier() != null) {
|
bindObject.setId(bindObject.getTypeFichier().getCode());
|
}
|
}
|
}
|
|
@Override
|
public boolean beforeSave(ActionEvent event) {
|
Boolean proceed = super.beforeSave(event);
|
Delimiteur delimiteurColonne = getCurrentObject().getDelimiteurColonne();
|
Delimiteur delimiteurLigne = getCurrentObject().getDelimiteurLigne();
|
|
if (delimiteurColonne != null) {
|
getCurrentObject().setCodeDelimiteurColonne(delimiteurColonne.getCode());
|
}
|
|
if (delimiteurLigne != null) {
|
getCurrentObject().setCodeDelimiteurLigne(delimiteurLigne.getCode());
|
}
|
|
if (proceed) {
|
if (getTypeOperation().equals(TypeOperation.ADD) || getTypeOperation().equals(TypeOperation.UPDATE)) {
|
LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().show();
|
proceed = getCurrentObject().getNombrePosition() == getCurrentObject().getStructureLignes().size();
|
|
if (!proceed) {
|
LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
|
Node source = (Node) event.getSource();
|
Stage parentStage = (Stage) source.getScene().getWindow();
|
NotificationDialog notificationDialog = new NotificationDialog(
|
"Vous devez remplir la structure de toutes les positions",
|
NotificationType.ERROR,
|
parentStage
|
);
|
notificationDialog.showNotification();
|
} else {
|
proceed = validateurFichierService.find(getCurrentObject()) != null;
|
|
if (!proceed) {
|
LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
|
Node source = (Node) event.getSource();
|
Stage parentStage = (Stage) source.getScene().getWindow();
|
NotificationDialog notificationDialog = new NotificationDialog(
|
"Il existe déjà un validateur de fichier associé à ce type de fichier",
|
NotificationType.ERROR,
|
parentStage
|
);
|
notificationDialog.showNotification();
|
}
|
}
|
LoadinIndicatorDialogUtil.getLoadingIndicatorDialog().hide();
|
}
|
}
|
return proceed;
|
}
|
|
}
|