/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template */ package com.megatim.fdxcommons.dao.ifaces.integration.json; import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces; import com.megatim.fdxcommons.model.integration.json.JsonStructure; import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.persistence.Query; /** * * @author ASUS */ public interface JsonStructureDAO extends CustomDAOIfaces { default JsonStructure loadSubJsonStructure(JsonStructure jsonStructure) { List children = getChildren(jsonStructure.getId()); List subJsonStructure = new ArrayList<>(); for (JsonStructure j : children) { subJsonStructure.add(loadSubJsonStructure(j)); } jsonStructure.getFields().clear(); jsonStructure.getFields().addAll(subJsonStructure); return jsonStructure; } default List getChildren(Long id) { Query query = getEntityManager().createQuery("SELECT j from JsonStructure j where j.parent.id = :id "); query.setParameter("id", id); return (List) query.getResultList(); } @Override public default JsonStructure getById(Long id) { Query query = getEntityManager().createQuery("SELECT j from JsonStructure j where j.id = :id "); query.setParameter("id", id); Optional optJsonStructure = ((List) query.getResultList()).stream().findFirst(); return optJsonStructure.isPresent() ? optJsonStructure.get() : null; } }