/*
|
* 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.util;
|
|
import com.megatim.dynamicjsonparser.enums.TypeDonnee;
|
import static com.megatim.dynamicjsonparser.enums.TypeDonnee.ALPHANUMERIQUE;
|
import static com.megatim.dynamicjsonparser.enums.TypeDonnee.DATE;
|
import static com.megatim.dynamicjsonparser.enums.TypeDonnee.DECIMAL;
|
import static com.megatim.dynamicjsonparser.enums.TypeDonnee.NUMERIQUE;
|
import com.megatim.dynamicjsonparser.pojo.JsonField;
|
import com.megatim.fdxconvert.model.JsonStructure;
|
import com.megatim.fdxconvert.model.TypeFichierJson;
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
public class TypeFichierJsonConverter {
|
|
private final TypeFichierJson typeFichierJson;
|
|
public TypeFichierJsonConverter(TypeFichierJson typeFichierJson) {
|
this.typeFichierJson = typeFichierJson;
|
}
|
|
public List<JsonField> convert() {
|
return convert(typeFichierJson.getJsonStructure().getFields());
|
}
|
|
private List<JsonField> convert(List<JsonStructure> jsonStructs) {
|
List<JsonField> fields = new ArrayList<>();
|
|
jsonStructs.forEach(j -> {
|
if (j.getTypeDonnee() != null) {
|
if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
|
if (j.getFields() != null && !j.getFields().isEmpty()) {
|
fields.add(new JsonField(j.getName(), convert(j.getFields()), j.getName(),j.getLengthh(), j.isRequired(), j.isCollection()));
|
}
|
} else {
|
fields.add(convert(j, j.getParent().getName()));
|
}
|
}
|
});
|
return fields;
|
}
|
|
private JsonField convert(JsonStructure js, String className) {
|
Class<?> clazz;
|
|
switch (js.getTypeDonnee()) {
|
|
case ALPHANUMERIQUE:
|
clazz = String.class;
|
break;
|
|
case NUMERIQUE:
|
clazz = Long.class;
|
break;
|
|
case DATE:
|
clazz = LocalDate.class;
|
break;
|
|
case DECIMAL:
|
clazz = BigDecimal.class;
|
break;
|
|
default:
|
clazz = String.class;
|
}
|
JsonField dynamicField = new JsonField(clazz, js.getName(), className, js.getLengthh(), js.isRequired(), js.isCollection());
|
dynamicField.setFormatDate(js.getFormatDate());
|
dynamicField.setSeparateurDate(js.getCodeDelimiteurDate());
|
|
return dynamicField;
|
}
|
}
|