/* * 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 convert() { return convert(typeFichierJson.getJsonStructure().getFields()); } private List convert(List jsonStructs) { List 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; } }