Julss799 / PROJECTE1-DAM2

Projecte 1: Entrega 05/12/2022 - 07/12/2022
1 stars 0 forks source link

Scripts de creació de la Taula de la base de dades #24

Closed Formeinstein13 closed 2 years ago

Formeinstein13 commented 2 years ago

public class GeneradorSQL {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
        int nlinia=0;
        File entrada=new File("C:\\Users\\Usuari\\Desktop\\Fitxer_entrada_random.txt");
        File sortida=new File("C:\\Users\\Usuari\\Desktop\\Fitxer_entrada_random.sql");
        Scanner sc = new Scanner(entrada);
        FileReader fr = new FileReader(entrada);
        BufferedReader br = new BufferedReader(fr); 
        String linea="";
        while(sc.hasNextLine()) {
            sc.nextLine();
            nlinia++;
          }
        sc.close();
        String[] liniesSeparades=new String[nlinia];
        for (int i = 0;br.ready();i++){
            linea=br.readLine();
            liniesSeparades[i]=linea;
        }
        br.close();
        fr.close();
        String[] linies=new String[liniesSeparades.length];
        for (int i = 0;i<liniesSeparades.length;i++) {
            String[] separar= liniesSeparades[i].split(";");
            if (i>0) {
                for (int i2 = 0;i2<separar.length;i2++) {
                    if (i2==1) {
                        linies[i]=separar[i2];
                    }
                }
            }

        }
        String sql=sql(linies);
        System.out.println(sql);
        try (FileWriter escriptor =new FileWriter(sortida);) {
            escriptor.append(sql).write('\n');
        } catch (IOException e) {
            System.err.println(e.getMessage());
        }
    }
    catch (IOException | DirectoryIteratorException ex) {
        System.err.println(ex);
    }
}
public static String sql(String[] linies) {
    String[] sqlSeparat=new String[linies.length+1];
    String sql="";
    for (int i = 0;i<sqlSeparat.length;i++) {
        if(i==0) {
            sqlSeparat[i]="CREATE TABLE dades (";
        }
        else if(i==sqlSeparat.length-1) {
            sqlSeparat[i]=");";
        }
        else {
            if (linies[i].equals("Noms")){
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Cognoms")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Ciutats")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Adreses")) {
                sqlSeparat[i]=linies[i]+" Varchar (200)" ;
            }
            else if(linies[i].equals("Professions")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("Pais")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Estudis")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("Colors")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("URL")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Companyia")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("Boolean")) {
                sqlSeparat[i]=linies[i]+" Boolean" ;
            }
            else if(linies[i].equals("Number")) {
                sqlSeparat[i]=linies[i]+" integer (250)" ;
            }
            else if(linies[i].equals("Emails")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("IP4")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;           
            }
            else if(linies[i].equals("Password")) {
                sqlSeparat[i]=linies[i]+" Varchar (500)" ;
            }
            else if(linies[i].equals("Dates")) {
                sqlSeparat[i]=linies[i]+" Date" ;
            }
            else if(linies[i].equals("IBAN")) {
                sqlSeparat[i]=linies[i]+" Varchar (25)" ;
            }
            else if(linies[i].equals("DNI")) {
                sqlSeparat[i]=linies[i]+" Varchar (10)" ;
            }
            else if(linies[i].equals("Autonumeric")) {
                sqlSeparat[i]=linies[i]+" Integer (5)" ;
            }
        }
    }
    for (int i = 0;i<sqlSeparat.length;i++) {
        if (i==0 || i==sqlSeparat.length-1 || i==sqlSeparat.length-2) {
            sql=sql+sqlSeparat[i];
        }
        else {
            sql=sql+sqlSeparat[i]+", ";
        }
    }
    return sql;
}

}

Formeinstein13 commented 2 years ago

main amb les fincions del script de creacio de taules i de insercio de dades

package projecte1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.file.DirectoryIteratorException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Random;
import java.util.Scanner;

public class ProvesMain {
public static void main(String[] args) {
    Random r=new Random();
    String dadesGenerades[][] = new String[1][1], nomsCamps[]=new String[]{"Nom", "Cognom", "Ciutats", "Adreces", "Professions", "Pais", "Estudis", "Colors", "URL"}; //La primera dimensio de l'array defineix els camps a buscar, i la segona la quantitat de registres a generar
    int nombreRegistresGenerar=0, campFinal=0;
    try {
        File entrada=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_e-s\\Fitxer_entrada_estatics_i_IBAN.txt");
        FileReader fr = new FileReader(entrada);
        BufferedReader br = new BufferedReader(fr);
        boolean error=false, generat=false;
        int i=1,x=0, j=0, campsGenerar=0, tamany=0, nlinia=0;
        String linea1="", linea="", linea1Separado[], lineaSeparado[];
        linea1=br.readLine();
        Scanner sc = new Scanner(entrada);
        while(sc.hasNextLine()) {
            sc.nextLine();
            nlinia++;
          }
        sc.close();
        String[] linies=new String[nlinia];
        //Semarem els camps per ";"
        linea1Separado=linea1.split(";");
        while(br.ready() && error==false) //mentres hi hagi lineas
        {
            x++;
            if(linea1Separado.length != 3) //Si no estan tots els camps error
            {
                error=true;
                break;
            }
            //Definim cuantes dades haurem de generar
            nombreRegistresGenerar=Integer.parseInt(linea1Separado[2])+1;

            if (!generat) {
                try //Definim la quantitat de camps a generar
                {
                    Scanner s = new Scanner(entrada);
                    while(s.hasNextLine()) {
                        s.nextLine();
                        campsGenerar++;
                    }
                    campsGenerar--;

                    //definim l'array de sortida de dades
                    dadesGenerades = new String[campsGenerar][nombreRegistresGenerar];
                    generat=true;
                }
                catch (Exception e) {   
                }
            }

            //Iniciem la revisio/generació de dades del camps demanats
            linea=br.readLine();
            lineaSeparado=linea.split(";");
            linies[x]=lineaSeparado[1];
            if (lineaSeparado[0].equals("1")) //Si el primer camp es 1, generarem noms
            {
                File fNoms=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\NOMS.txt"); 
                FileReader fn = new FileReader(fNoms);
                BufferedReader bn = new BufferedReader(fn); 
                String noms[]= new String[200];
                for (j=0;bn.ready();j++)
                {
                    noms[j]=bn.readLine();
                }
                bn.close(); //S'han de tencar
                fn.close();
                //desordenem la llista per a emplenar els noms aleatoriament

                //Emplenem l'array de control amb les dades demanades
                dadesGenerades[campFinal][0]="Noms";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=noms[r.nextInt(noms.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("2")) //Si el primer camp es 2, generarem cognoms
            {
                File fCognoms=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\COGNOMS.txt"); 
                FileReader fcn = new FileReader(fCognoms);
                BufferedReader bcn = new BufferedReader(fcn); 
                String cognoms[]= new String[250];
                for (j=0;bcn.ready();j++)
                {
                    cognoms[j]=bcn.readLine();
                }
                bcn.close(); 
                fcn.close();

                //Emplenem l'array de control amb les dades demanades
                dadesGenerades[campFinal][0]="Cognoms";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=cognoms[r.nextInt(cognoms.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("3")) //Si el primer camp es 1, generarem noms
            {
                File fCiutats=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\CIUTATS.txt"); 
                FileReader fci = new FileReader(fCiutats);
                BufferedReader bci = new BufferedReader(fci); 
                String ciutats[]= new String[200];
                for (j=0;bci.ready();j++)
                {
                    ciutats[j]=bci.readLine();
                }
                bci.close(); 
                fci.close();
                dadesGenerades[campFinal][0]="Ciutats";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=ciutats[r.nextInt(ciutats.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("4"))
            {
                File fAdreses=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\ADRECES.txt"); 
                FileReader fad = new FileReader(fAdreses);
                BufferedReader bad = new BufferedReader(fad);
                String adreces[]= new String[200];
                for (j=0;bad.ready();j++)
                {
                    adreces[j]=bad.readLine();
                }
                bad.close(); 
                fad.close();
                dadesGenerades[campFinal][0]="Adreses";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=adreces[r.nextInt(adreces.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("5"))
            {
                File fProfesions=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\PROFESIONS.txt"); 
                FileReader fpr = new FileReader(fProfesions);
                BufferedReader bpr = new BufferedReader(fpr); 
                String professions[]= new String[239];
                for (j=0;bpr.ready();j++)
                {
                    professions[j]=bpr.readLine();
                }
                bpr.close(); 
                fpr.close();
                dadesGenerades[campFinal][0]="Professions";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=professions[r.nextInt(professions.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("6"))
            {
                File fPais=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\PAISOS.txt"); 
                FileReader fpa = new FileReader(fPais);
                BufferedReader bpa = new BufferedReader(fpa); 
                String pais[]= new String[446];
                for (j=0;bpa.ready();j++)
                {
                    pais[j]=bpa.readLine();
                }
                bpa.close(); 
                fpa.close();
                dadesGenerades[campFinal][0]="Pais";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=pais[r.nextInt(pais.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("7"))
            {
                File fEstudis=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\Estudis.txt"); 
                FileReader fes = new FileReader(fEstudis);
                BufferedReader bes = new BufferedReader(fes); 
                String estudis[]= new String[253];
                for (j=0;bes.ready();j++)
                {
                    estudis[j]=bes.readLine();

                }
                bes.close(); 
                fes.close();
                dadesGenerades[campFinal][0]="Estudis";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=estudis[r.nextInt(estudis.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("8"))
            {
                File fColors=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\Colors.txt"); 
                FileReader fco = new FileReader(fColors);
                BufferedReader bco = new BufferedReader(fco); 
                String colors[]= new String[113];
                for (j=0;bco.ready();j++)
                {
                    colors[j]=bco.readLine();
                }
                bco.close(); 
                fco.close();
                dadesGenerades[campFinal][0]="Colors";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=colors[r.nextInt(colors.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("9"))
            {
                File fUrl=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\URL.txt"); 
                FileReader fu = new FileReader(fUrl);
                BufferedReader bu = new BufferedReader(fu); 
                String url[]= new String[200];
                for (j=0;bu.ready();j++)
                {
                    url[j]=bu.readLine();
                }
                bu.close(); 
                fu.close();
                dadesGenerades[campFinal][0]="URL";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=url[r.nextInt(url.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("10"))
            {
                File fCompanyia=new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\NOMS_DE_COMPANYIES.txt"); 
                FileReader fco = new FileReader(fCompanyia);
                BufferedReader bco = new BufferedReader(fco); 
                String companyia[]= new String[243];
                for (j=0;bco.ready();j++)
                {
                    companyia[j]=bco.readLine();
                }
                bco.close(); 
                fco.close();
                dadesGenerades[campFinal][0]="Companyia";
                for (int k = 1; k < nombreRegistresGenerar; k++) {
                    dadesGenerades[campFinal][k]=companyia[r.nextInt(companyia.length)];
                }
                campFinal++;
            }
            else if (lineaSeparado[0].equals("17")) {
                IBAN(dadesGenerades, campFinal);
                campFinal++;
            }
            else if (lineaSeparado[0].equals("18"))
            {
                DNI(dadesGenerades, campFinal, r);
                campFinal++;
            }
            else if (lineaSeparado[0].equals("13"))
            {

            }
        }

        if (linea1Separado[0].equals("XML"))
        {
            File sortida2 = new File(linea1Separado[1]+"fitxer_sortida.xml");
            FileWriter fw = new FileWriter(sortida2);
            BufferedWriter bw = new BufferedWriter(fw);
            //Aqui iria la funcion escribir fixero linea por linea
        }
        else if (linea1Separado[0].equals("SQL"))
        {
            //creem un fitxer de sortida
            File sortida=new File("C:\\DAM2\\PROJECTE_1\\Fitxer_sortida.sql");
            //declarem la variable que contindra el contingut del fitxer de sortida
            String SQL="";
            //recollim el script de creacio de la taula
            String sql1=sql(linies);
            //recollim el script de insercio de les dades a la taula
            String sql2=sqlDades(dadesGenerades,linies);
            //ajuntem el script de creacio de taula + el script de insercio de les dades
            SQL=sql1+"\n"+sql2;
            System.out.println(sql2);
            try (FileWriter escriptor =new FileWriter(sortida);) {
                escriptor.append(SQL).write('\n');
            } catch (IOException e) {
                System.err.println(e.getMessage());
            }
        }
        else //Si no hi ha cap dels dos error
        {
            error=true;
            System.out.println("ERROR en la Seleccio de sortida");
        }

        for (int k = 0; k < campsGenerar; k++) {
            for (int k2 = 0; k2 < nombreRegistresGenerar; k2++) {
                System.out.print(dadesGenerades[k][k2]+" ");
            }
        System.out.println();
        }   

        if(error==true)
        {
            System.out.println("ERROR");
        }
        else
        {
            System.out.println("Ha sortit tot be!!");
        }

        br.close(); //S'han de tancar
        fr.close();
    }catch (Exception pasanCosas) {
        pasanCosas.printStackTrace();}
}
public static String sqlDades(String dadesGenerades[][],String[] linies) {
    //iniciem una variable que sera el script de incercio
    String sql="INSERT INTO dades (";
    //fem aquest bucle per decidir quines columnes seran emplenades de dades
    for (int i=1;i<linies.length;i++) {
        if (i<linies.length-1) {
            sql=sql+linies[i]+", ";
        }
        else if (i==linies.length-1){
            sql=sql+linies[i];
        }
    }
    //tanquem la capsalera de incercio i iniciem la incercio de les dades
    sql=sql+") ";
    sql=sql+"\n";
    sql=sql+"VALUES (";
    int llarg=dadesGenerades[0].length-1;
    //fem aquest bucle per recollir les dades que inserirem a la taula
    for (int k = 1; k <= llarg; k++) {
        //fem un if per fer el tancaments del script
        if (k>1) {
            sql=sql+"), ";
            sql=sql+"\n";
            sql=sql+"(";
        }
        //fem aquest bucle per crear les cometes dobles pels varchars i treure-lis hals numeros
        for (int k2 = 0; k2 < dadesGenerades.length; k2++) {

            if (dadesGenerades[k2][0].equals("Noms")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Cognoms")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Ciutats")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Adreses")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Professions")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Pais")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Estudis")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Colors")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("URL")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Companyia")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Emails")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("IP4")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("Password")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("IBAN")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else if (dadesGenerades[k2][0].equals("DNI")) {
                sql=sql+"\""+dadesGenerades[k2][k]+"\"";
            }
            else {
                sql=sql+dadesGenerades[k2][k]+", ";
            }
            if (k2<dadesGenerades.length-1) {
                sql=sql+", ";
            }

        }
        //tanquem el script
        if (k==llarg) {
            sql=sql+");";
        }
    }

    return sql;
}
public static String sql(String[] linies) {
    //declarem un array que contindra totes les linies del script de creacio de taula
    String[] sqlSeparat=new String[linies.length+1];
    //declarem una variable que contindra totes el script de creacio de taula
    String sql="";
    //fem un bucle per crear el scrip de creacio de taula
    for (int i = 0;i<sqlSeparat.length;i++) {
        //comencem ha fer el inici de script
        if(i==0) {
            sqlSeparat[i]="CREATE TABLE dades (";
        }
        //fem el final del script
        else if(i==sqlSeparat.length-1) {
            sqlSeparat[i]=");";
        }
        //fem el contingut del mitg del script
        else {
            if (linies[i].equals("Noms")){
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Cognoms")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Ciutats")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Adreses")) {
                sqlSeparat[i]=linies[i]+" Varchar (200)" ;
            }
            else if(linies[i].equals("Professions")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("Pais")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("Estudis")) {
                sqlSeparat[i]=linies[i]+" Varchar (200)" ;
            }
            else if(linies[i].equals("Colors")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("URL")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;
            }
            else if(linies[i].equals("Companyia")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("Boolean")) {
                sqlSeparat[i]=linies[i]+" Boolean" ;
            }
            else if(linies[i].equals("Number")) {
                sqlSeparat[i]=linies[i]+" integer (250)" ;
            }
            else if(linies[i].equals("Emails")) {
                sqlSeparat[i]=linies[i]+" Varchar (50)" ;
            }
            else if(linies[i].equals("IP4")) {
                sqlSeparat[i]=linies[i]+" Varchar (20)" ;           
            }
            else if(linies[i].equals("Password")) {
                sqlSeparat[i]=linies[i]+" Varchar (500)" ;
            }
            else if(linies[i].equals("Dates")) {
                sqlSeparat[i]=linies[i]+" Date" ;
            }
            else if(linies[i].equals("IBAN")) {
                sqlSeparat[i]=linies[i]+" Varchar (25)" ;
            }
            else if(linies[i].equals("DNI")) {
                sqlSeparat[i]=linies[i]+" Varchar (10)" ;
            }
            else if(linies[i].equals("Autonumeric")) {
                sqlSeparat[i]=linies[i]+" Integer (5)" ;
            }
        }
    }
    //fem aquest bucle per inserir el contingut del script a una variable string
    for (int i = 0;i<sqlSeparat.length;i++) {
        if (i==0 || i==sqlSeparat.length-1 || i==sqlSeparat.length-2) {
            sql=sql+sqlSeparat[i];
        }
        else {
            sql=sql+sqlSeparat[i]+", ";
        }
    }
    return sql;
}
private static void DNI(String[][] dadesGenerades, int campFinal,Random r) {
    //Creem un array per tenir predefinida la posició de les lletres, que sempre serà la mateixa
    String letra[] = {"T", "R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"};
    int i=0,posicionLetra; //creem un contador y una variable per calcular la posició de la lletra
    String dni=""; //Serà el dni final
    dadesGenerades[campFinal][0]="DNI";
    for (int j = 1; j < dadesGenerades[campFinal].length; j++){
        while (i!=8) { //En aquest bucle, generarem a cada numero del dni un numero aleatori
            dni=dni+r.nextInt(9);;
            i++;
        }
        posicionLetra=Integer.parseInt(dni)%23; //Calcularem la resta de la divisió del dni entre 23, per a saber quina lletra se li assignarà
        dni=dni+letra[posicionLetra]; //Li assignem la seva lletra corresponent a partir del numero tret, agafant aquesta n posició
        dadesGenerades[campFinal][j]=dni;
    }

}
public static void IBAN (String dadesGenerades[][], int campFinal) {
    int contador=0, tamany=0, banc, oficina, control1, control2, A=0, B=0, C, D=0, E;
    Random r = new Random();
    String BancsLleida[]=new String[1], oficinesBanc[]=new String[1], bancOficina="", compte="", IBAN, IBANsenseCC, CCC="", nomFitxer="", Rstring;
    boolean finalitzador=false;

    //Llegim l'arxiu dels bancs presents a la provincia de Lleida
    try {
        File f1 = new File("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\FitxersIBAN\\BancsLleida.txt");
        Scanner s = new Scanner(f1);
        FileReader fr = new FileReader(f1);
        BufferedReader br = new BufferedReader(fr);
        while(s.hasNextLine()) {
            s.nextLine();
            contador++;
        }
        tamany=contador;
        BancsLleida=new String[tamany];
        contador=0;
        while(contador<tamany) {
            BancsLleida[contador]=br.readLine();
            contador++;
        }
        contador=0;
    }catch (Exception e) {  
    }
    //Elegim el banc aleatoriament
    banc=r.nextInt(tamany);

    //Un cop tenim el banc, carreguem les seves oficines
    Path dir = Paths.get("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\FitxersIBAN\\");
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir);) {
        for (Path fitxer: stream) {
            if (finalitzador==true) {
                break;
            }
            nomFitxer=fitxer.toString();
            if (nomFitxer.startsWith("C:\\DAM2\\PROJECTE_1\\Fitxers_de_dades\\FitxersIBAN\\"+BancsLleida[banc])) {
                File f2 = new File(fitxer.toString());
                Scanner s2 = new Scanner(f2);
                FileReader fr2 = new FileReader(f2);
                BufferedReader br2 = new BufferedReader(fr2);
                while(s2.hasNextLine()) {
                    s2.nextLine();
                    contador++;
                }
                tamany=contador;
                oficinesBanc=new String[tamany];
                contador=0;
                while(contador<tamany) {
                    oficinesBanc[contador]=br2.readLine();
                    contador++;
                }
                contador=0;
                finalitzador=true;
            }
        }
    } catch (IOException | DirectoryIteratorException ex) {
        System.err.println(ex);
    }

    //Elegim la oficina aleatoriament
    oficina=r.nextInt(tamany);

    //Completem banc i oficina

    //Bucle per emplenar l'array de control d'Ibans
    dadesGenerades[campFinal][0]="IBAN";
    for (int j = 1; j < dadesGenerades[campFinal].length; j++) {
        bancOficina=BancsLleida[r.nextInt(BancsLleida.length)]+oficinesBanc[r.nextInt(oficinesBanc.length)];
        compte="";
        for(int i = 0; i < 10; i++){
            compte += r.nextInt(10);
        }

        //Calculem el primer digit de control
        for (int i = 0; i < bancOficina.length(); i++) {
            if(i==0) A+=Character.getNumericValue(bancOficina.charAt(i))*4; 
            if(i==1) A+=Character.getNumericValue(bancOficina.charAt(i))*8; 
            if(i==2) A+=Character.getNumericValue(bancOficina.charAt(i))*5;
            if(i==3) A+=Character.getNumericValue(bancOficina.charAt(i))*10;
            if(i==4) B+=Character.getNumericValue(bancOficina.charAt(i))*9;
            if(i==5) B+=Character.getNumericValue(bancOficina.charAt(i))*7;
            if(i==6) B+=Character.getNumericValue(bancOficina.charAt(i))*3;
            if(i==7) B+=Character.getNumericValue(bancOficina.charAt(i))*6;
        }
        C=(A+B)%11;
        control1=11-C;
        if (control1==10) {
            control1=1;
        }
        if (control1==11) {
            control1=0;
        }
        //Calculem el 2n digit de control
        for (int i = 0; i < compte.length(); i++) {
            if(i==0) D+=Character.getNumericValue(compte.charAt(i))*1;
            if(i==1) D+=Character.getNumericValue(compte.charAt(i))*2;
            if(i==2) D+=Character.getNumericValue(compte.charAt(i))*4; 
            if(i==3) D+=Character.getNumericValue(compte.charAt(i))*8; 
            if(i==4) D+=Character.getNumericValue(compte.charAt(i))*5; 
            if(i==5) D+=Character.getNumericValue(compte.charAt(i))*10;
            if(i==6) D+=Character.getNumericValue(compte.charAt(i))*9;
            if(i==7) D+=Character.getNumericValue(compte.charAt(i))*7;
            if(i==8) D+=Character.getNumericValue(compte.charAt(i))*3;
            if(i==9) D+=Character.getNumericValue(compte.charAt(i))*6;
        }
        E=D%11;
        control2=11-E;
        if (control2==10) {
            control2=1;
        }
        if (control2==11) {
            control2=0;
        }
        CCC=bancOficina+control1+control2+compte;

        //Calculem els digits de control de l'IBAN
        IBANsenseCC=CCC+14+28;

        BigInteger calcularIban=new BigInteger(IBANsenseCC);
        BigInteger mod97 = new BigInteger("97");
        BigInteger RBigInt=calcularIban.mod(mod97);

        Rstring=RBigInt.toString();

        if (Rstring.length()<2) {
            IBAN="ES0"+Rstring+CCC;         
        }else {
            IBAN="ES"+Rstring+CCC;
        }
        //Escribim l'iban a l'array
        dadesGenerades[campFinal][j]=IBAN;  
    }
}
}