/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Calculos_automaticos;

import clases.InteraccionesBD;
import clases.conexion;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.MutableTreeNode;

/**
 *
 * @author chuen
 */
public class DiseñoArbol {

String where;
String MP;
ResultSet rs = null; 
ArrayList <int[]> puntas = new ArrayList<>();
ArrayList <String[]> nucleos=new ArrayList<>();
 ArrayList <int[]> estandar=new ArrayList<>();
  ArrayList <String[]> forms = new ArrayList<>();
  ArrayList <Object[]> estandar_grupos = new ArrayList<>();
    public DiseñoArbol(String where, String MP){
        this.where= where;
        this.MP= MP;
        this.puntas = pedir_info_puntas();
        this.nucleos = pedir_info_nucleos();
        this.estandar = pedir_info_segmental();
        this.forms = pedir_forms();
        this.estandar_grupos=pedir_info_segmental_grupo();
    }
    
public  ArrayList <String[]> pedir_forms(){
//    ArrayList <String[]> utiles = new ArrayList<>();


         try {
            conexion c = new conexion();
            c.getConexion();
            
             rs = c.consulta("SELECT DISTINCT(f.ID_FORMATIZADOS), f.PIEZA FROM FORMATIZADOS f "+
                      where + " AND (f.MP='"+MP+"')");
         
             
               while(rs.next()){
               String [] utiles_aux = new String[2];
               utiles_aux[0]=String.valueOf(rs.getInt("ID_FORMATIZADOS"));
               utiles_aux[1]=(rs.getString("PIEZA"));
               forms.add(utiles_aux);
               
           }       
        
        c.closeconnection();
 } catch (SQLException ex) {
            Logger.getLogger(InteraccionesBD.class.getName()).log(Level.SEVERE, null, ex);
        }
         return forms;
         
        }
    public  ArrayList <int[]> pedir_info_segmental(){
        ArrayList <int[]> estandar = new ArrayList<>();

        try {
            conexion c = new conexion();
            c.getConexion();
            
             rs = c.consulta("SELECT e.ID_ESTANDAR, e.ID_FORMATIZADOS FROM SEGMENTAL_ESTANDAR2 e "
                    +"INNER JOIN \n" +
"FORMATIZADOS f \n" +
"ON f.ID_FORMATIZADOS = e.ID_FORMATIZADOS " 
                     + where +  " AND (f.MP='"+MP+"')");

            while(rs.next()){
                int []estandar_aux = new int [2];
               estandar_aux[0]= rs.getInt("ID_ESTANDAR");
               estandar_aux[1]= rs.getInt("ID_FORMATIZADOS");
               estandar.add(estandar_aux);
           }       
        
        c.closeconnection();
 } catch (SQLException ex) {
            Logger.getLogger(InteraccionesBD.class.getName()).log(Level.SEVERE, null, ex);
        }
        return estandar;
    }
    
    public ArrayList <String[]> pedir_info_nucleos(){
        
         
ArrayList <String[]> nucleos = new ArrayList<>();

try {
            conexion c = new conexion();
            c.getConexion();
            
             rs = c.consulta("SELECT n.ID_NUCLEOS, n.ID_FORMATIZADOS, n.N_PLAT FROM NUCLEOS n"
                     + " INNER JOIN "
                     + " FORMATIZADOS f " 
                     +" ON f.ID_FORMATIZADOS = n.ID_FORMATIZADOS " + where + " AND (f.MP='"+MP+"') " );
            while(rs.next()){
               String [] nu = new String[3];
               nu[0]= String.valueOf(rs.getInt("ID_NUCLEOS"));
               nu[1]= String.valueOf(rs.getInt("ID_FORMATIZADOS"));
               nu[2]= rs.getString("N_PLAT");
               nucleos.add(nu);
           }       
        
            
            
        c.closeconnection();
 } catch (SQLException ex) {
            Logger.getLogger(InteraccionesBD.class.getName()).log(Level.SEVERE, null, ex);
        }         
 
return nucleos;
        
    }
    
    public ArrayList <int[]> pedir_info_puntas(){
        
ArrayList <int[]> puntas = new ArrayList<>();

try {
            conexion c = new conexion();
            c.getConexion();
            
             rs = c.consulta("SELECT p.ID_PUNTAS, p.ID_FORMATIZADOS FROM PUNTAS_DE_PROYECTIL2 p "
                      +"INNER JOIN \n" +
"FORMATIZADOS f \n" +
"ON f.ID_FORMATIZADOS = p.ID_FORMATIZADOS " 
                     + where +  " AND (f.MP='"+MP+"')");
            while(rs.next()){
                int [] puntas_aux = new int [2];
               puntas_aux[0]= rs.getInt("ID_PUNTAS");
               puntas_aux[1]= rs.getInt("ID_FORMATIZADOS");
               puntas.add(puntas_aux);
           }       
        
        c.closeconnection();
 } catch (SQLException ex) {
            Logger.getLogger(InteraccionesBD.class.getName()).log(Level.SEVERE, null, ex);
        }


        return puntas;
        
    }

    public ArrayList<String[]> getForms() {
        return forms;
    }

      
    public ArrayList<int[]> getPuntas() {
        return puntas;
    }

    public ArrayList<String[]> getNucleos() {
        return nucleos;
    }

    public ArrayList<int[]> getEstandar() {
        return estandar;
    }
    
    
    public DefaultMutableTreeNode armarcarpetaconpiezas(ArrayList<Integer> ids_solicitados, String nombrecarpeta){
        DefaultMutableTreeNode hoja_categoria = new DefaultMutableTreeNode(nombrecarpeta);
DefaultMutableTreeNode pieza = new DefaultMutableTreeNode(); 
MutableTreeNode hoja;

        for (int i = 0; i < ids_solicitados.size(); i++) {
            for (int j = 0; j < forms.size(); j++) {
             String [] IDform = new String[2];
            IDform = forms.get(j);
            int IDpieza = Integer.parseInt(IDform[0]);
            
                      
            if(IDpieza==ids_solicitados.get(i)){
                
            
                pieza = new DefaultMutableTreeNode(IDpieza);
                hoja = new DefaultMutableTreeNode("Gen-"+IDform[0]+"/"+IDform[1]);
                pieza.add(hoja);
                
                for (int k = 0; k < estandar.size(); k++) {
                    int [] IDestandar = new int[2];
                     IDestandar = estandar.get(k);
                    if(IDpieza==IDestandar[1]){
                    hoja = new DefaultMutableTreeNode("Seg"+"-"+IDestandar[0]+"/Pieza-"+IDestandar[1]);
                    pieza.add(hoja);
                    
                    }
                      }
                for (int m = 0; m < puntas.size(); m++) {
                    int [] IDpuntas = new int[2];
                     IDpuntas = puntas.get(m);
                    
                     if(IDpieza==IDpuntas[1]){
                    hoja = new DefaultMutableTreeNode("PP"+"-"+IDpuntas[0]+"/Pieza-"+IDpuntas[1]);
                    pieza.add(hoja);
                    }
                      }
                                for (int h = 0; h < nucleos.size(); h++) {
                    String [] n = nucleos.get(h);
                    if(IDpieza==Integer.parseInt(n[1])){
                    hoja = new DefaultMutableTreeNode("Nu"+"-"+n[0]+"/Pieza-"+n[1]+"/Plat-"+n[2]);
                    pieza.add(hoja);
                    }
                    
                      }
               
               
             
           hoja_categoria.add(pieza);
      
                
        
    }
          
    }
    }
                
      return hoja_categoria;
                }
    
    
    public void cargarfilacombinacionesdegrupos(ArrayList<Integer> ids_solicitados, DefaultTableModel dtm){
Object [] fila = new Object[3];
        for (int i = 0; i < ids_solicitados.size(); i++) {
            for (int j = 0; j < forms.size(); j++) {
             String [] IDform = new String[2];
            IDform = forms.get(j);
            int IDpieza = Integer.parseInt(IDform[0]);
            
                      
            if(IDpieza==ids_solicitados.get(i)){
                
            
                fila[0]="Gen-"+IDform[0]+"-/"+IDform[1];
                
                
                for (int k = 0; k < estandar_grupos.size(); k++) {
                    Object [] IDestandar = new Object[3];
                     IDestandar = estandar_grupos.get(k);
                     int IDESTANDARINT = Integer.parseInt(IDestandar[1].toString());
                    if(IDpieza==IDESTANDARINT){
                    fila[1]=("Seg"+"-"+IDestandar[0]+"/Pieza-"+IDestandar[1]);
                    fila[2]=(IDestandar[2]);
                    dtm.addRow(fila);
                    
                    }
                      }
                for (int m = 0; m < puntas.size(); m++) {
                    int [] IDpuntas = new int[2];
                     IDpuntas = puntas.get(m);
                    
                     if(IDpieza==IDpuntas[1]){
                    fila[1]=("PP"+"-"+IDpuntas[0]+"/Pieza-"+IDpuntas[1]);
                    fila[2]= "PP-Punta de proyectil";
                    dtm.addRow(fila);
                    }
                      }
                                for (int h = 0; h < nucleos.size(); h++) {
                    String [] n = nucleos.get(h);
                    if(IDpieza==Integer.parseInt(n[1])){
                    fila[1]=("Nu"+"-"+n[0]+"/Pieza-"+n[1]+"/Plat-"+n[2]);
                    fila[2]= "Nu-Núcleo";
                    dtm.addRow(fila);
                    break;
                    }
                    
                      }
               
               
             
           
      
                
        
    }
          
    }
    }
                
      
                }



 public  ArrayList <Object[]> pedir_info_segmental_grupo(){
        ArrayList <Object[]> estandar = new ArrayList<>();

        try {
            conexion c = new conexion();
            c.getConexion();
            
             rs = c.consulta("SELECT e.ID_ESTANDAR, e.ID_FORMATIZADOS, e.GRUPO FROM SEGMENTAL_ESTANDAR2 e "
                    +"INNER JOIN \n" +
"FORMATIZADOS f \n" +
"ON f.ID_FORMATIZADOS = e.ID_FORMATIZADOS " 
                     + where +  " AND (f.MP='"+MP+"')");

            while(rs.next()){
                Object []estandar_aux = new Object [3];
               estandar_aux[0]= rs.getInt("ID_ESTANDAR");
               estandar_aux[1]= rs.getInt("ID_FORMATIZADOS");
               estandar_aux[2]= rs.getString("GRUPO");
               estandar.add(estandar_aux);
           }       
        
        c.closeconnection();
 } catch (SQLException ex) {
            Logger.getLogger(InteraccionesBD.class.getName()).log(Level.SEVERE, null, ex);
        }
        return estandar;
    }

 public ArrayList<Integer> solicitar_ids(String sentencia){
  ArrayList<Integer> forms = new ArrayList<>();  
       ResultSet rs = null;
    
             try {
            conexion c = new conexion();
            c.getConexion();
            
             rs = c.consulta(sentencia);
         
             
               while(rs.next()){
                int utiles_aux=rs.getInt("ID_FORMATIZADOS");
                forms.add(utiles_aux);
               
           }       
        
        c.closeconnection();
 } catch (SQLException ex) {
            Logger.getLogger(InteraccionesBD.class.getName()).log(Level.SEVERE, null, ex);
        }
             return forms;
}
 
    }

