/* * 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.fdxcommons.tools.utils; import com.megatim.fdxcommons.model.integration.ColumnDefinition; import com.megatim.fdxcommons.model.integration.json.JsonStructure; import com.megatim.fdxcommons.model.pojo.JsonTableDefinition; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * * @author ASUS */ public class JsonTableUtil { private final JsonTableDefinition tableDefinition; public JsonTableUtil(JsonTableDefinition tableDefinition) { this.tableDefinition = tableDefinition; } public List tablesName() { List tablesName = new ArrayList<>(); tablesName(tableDefinition, tablesName); return tablesName; } /** * La map est formé du nom complet de chaque colonne (clé) et son * alias(valeur) * * @return */ public Map columnsNameToAlias() { Map columnsNameToAlias = new HashMap<>(); columnsNameToAlias(tableDefinition, columnsNameToAlias); return columnsNameToAlias; } public Map tablesNameToAlias() { Map tablesNameToAlias = new HashMap<>(); int i = 0; tablesNameToAlias(tableDefinition, tablesNameToAlias, i); return tablesNameToAlias; } public Map> tableToChildrenTables() { Map> tableToDirectChildren = new HashMap<>(); tableToDirectChildren(tableDefinition, tableToDirectChildren); return tableToDirectChildren; } private void columnsNameToAlias(JsonTableDefinition tableDef, Map columnsNameToAlias) { for (ColumnDefinition c : tableDef.getColumnDefs()) { columnsNameToAlias.put(tableDef.getTableName() + "." + c.getName(), tableDef.getTableName() + "_" + c.getName()); } for (JsonTableDefinition t : tableDef.getTablesDefinition()) { columnsNameToAlias(t, columnsNameToAlias); } } private int tablesNameToAlias(JsonTableDefinition tableDef, Map tablesNameToAlias, int i) { tablesNameToAlias.put(tableDef.getTableName(), "t" + i); i++; for (JsonTableDefinition t : tableDef.getTablesDefinition()) { i = tablesNameToAlias(t, tablesNameToAlias, i); } return i; } /** * Liste de toutes les tables provenant de la définition du tableDfinition * racine * * @param tableDefinition * @param tablesName */ private void tablesName(JsonTableDefinition tableDefinition, List tablesName) { tablesName.add(tableDefinition.getTableName()); for (JsonTableDefinition t : tableDefinition.getTablesDefinition()) { tablesName(t, tablesName); } } private void tableToDirectChildren(JsonTableDefinition tableDefinition, Map> tableToDirectChildren) { List children = new ArrayList<>(); for (JsonTableDefinition t : tableDefinition.getTablesDefinition()) { children.add(t.getTableName()); if (t.getTablesDefinition().isEmpty()) { tableToDirectChildren.put(t.getTableName(), Arrays.asList()); } else { tableToDirectChildren(t, tableToDirectChildren); } } tableToDirectChildren.put(tableDefinition.getTableName(), children); } }