SGBD/java/TrabalhoBD.java

238 lines
9.3 KiB
Java
Raw Normal View History

2023-11-24 01:25:20 +00:00
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template
*/
package trabalhobd;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
/**
*
* @author julioc7r
*/
public class TrabalhoBD {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
// String[] ma = new String[1];
Scanner input = new Scanner(System.in);
// EscolheArquivo tela1 = new EscolheArquivo(); Tentativa de fazer pela
// interface gráfica
BancoDeDados Banco = new BancoDeDados(); // Cria um Banco de Dados
System.out.println("Digite o local onde está o arquivo?"); // TESTE /Users/julioc7r/testecsv
String caminhoArquivo = "/Users/julioc7r/testecsv";// input.nextLine(); // Fazer a busca por um
// repositório************
File arquivoCSV = new File(caminhoArquivo);
File[] lista_arquivosCSV = arquivoCSV.listFiles();
System.out.println("Digite o local onde está o arquivo?" + lista_arquivosCSV.length
+ Arrays.toString(arquivoCSV.listFiles()));
if (arquivoCSV.exists() == false) {
System.out.println("Arquivo não encontrado/Verifique novamento o caminho");
return;
}
int n_tabelas = 0;
for (int t = 0; t < lista_arquivosCSV.length; t++) {
if (lista_arquivosCSV[t].getName().contains(".csv")) {
BufferedReader br = new BufferedReader(new FileReader(lista_arquivosCSV[t]));
int qtd_linhas;
String line = "not null";
for (qtd_linhas = -1; line != null; qtd_linhas++) {// conta quantas linhas tem o arquivo
line = br.readLine();
}
// overwrite old buffered reader/ reseta o arquivo para a primeira posição
br = new BufferedReader(new FileReader(lista_arquivosCSV[t]));
line = br.readLine();
String fator_divisor = ",";
if (line.contains(",") == true) {
fator_divisor = ",";
} else if (line.contains(";") == true) {
fator_divisor = ";";
}
String[] vect = line.split(fator_divisor); // Divide pela as colunas da tabela
String primeiroHeader = vect[0];
System.out.println(
"nome:" + lista_arquivosCSV[t].getName() + " linhas:" + qtd_linhas + " colunas:" + vect.length);
Banco.lista_tabelas
.add(new Tabela(lista_arquivosCSV[t].getName().replace(".csv", ""), qtd_linhas, vect.length));
Banco.setN_tabelas(n_tabelas);// atualiza o numero de tabelas no banco
// Banco.lista_tabelas.get(t).toString();
// System.out.println(Banco.lista_tabelas.get(t).toString());
while (line != null) {
System.out.println(line);
vect = line.split(fator_divisor); // divide no vetor apartir da virgula
if (vect[0].equals(primeiroHeader)) {
for (int i = 0; i < vect.length; i++) {
vect[i].toLowerCase();// NAOFUNCINOANSdkm
}
}
Banco.lista_tabelas.get(n_tabelas).adicionaElemento(vect);
line = br.readLine();
}
System.out.println("Tabela:");
Banco.lista_tabelas.get(n_tabelas).printTabela();
n_tabelas++;
}
}
int opção = 0;
String pesquisa;
char confirma = 'N';
String elemento;
do {
System.out.println("TABELAS:");
for (int i = 0; i < Banco.getN_tabelas(); i++) {
System.out.println("nome:" + Banco.lista_tabelas.get(i).toString());
}
System.out.println("Bem-vindo!");
System.out.println("==========");
System.out.println("1 - Query");
System.out.println("9 - Sair");
System.out.println(":");
opção = input.nextInt();
switch (opção) {
case 1:
System.out.println("\nDIGITE A SQL QUEUE");
elemento = input.nextLine();
elemento = input.nextLine();
String[] vect = elemento.split(" ");
Queue<String> query = new LinkedList();
int orderBy = 0; // Flag para se possuir o orderby
// QUEUE TEST 1 | select emp_no birth_date from employees where // FUNCIONA
// QUEUE TEST 2 | select first_name gender from employees1000 order by gender //
// FUNCIONA
// CAMINHOTESTE /Users/julioc7r/testecsv
// emp_no,birth_date,first_name,last_name,gender,hire_date
for (int i = 0; i < vect.length; i++) { // coloca tudo em letra minuscula e retira a virgula e o
System.out.println(vect[i]); // ponto e virgula que fica na hora que a string é dividida no
// vetor vect[].
vect[i].toLowerCase();
if (vect[i].contains(",")) {
vect[i].replace(",", "");
}
if (vect[i].contains(";")) {
vect[i].replace(";", "");
}
query.add(vect[i]); // Adiciona na fila Query
}
Banco.executaSQL(query);
/*
*
* for(int i = 0 ; i < vect.length ;i ++)
* {
* System.out.println("entrei"+ i);
* if(i == 0 && vect[i].equals("select")){
* i++;
* query.poll();
* int j = 1;
* while(vect[i].equals("from")== false){//conta elementos do SELECT
* i++;
* j++;
* }
* i--;
* selectList = new String[j];
* j = 0;
* do{
* System.out.println(vect[j+1]+" - "+selectList[j]+j);
* //selectList[j] = vect[j+1];
* selectList[j] = query.poll();
* System.out.println(vect[j+1]+" - "+selectList[j]+j);
* j++;
* }while(vect[j+1].equals("from")== false);
* }
*
* if(vect[i].equals("from")){
* //i++;
* int j = 0;
* while((vect[i+1].equals("where")== false)){//||(vect[i+1].equals("order")==
* false)){//conta elementos do SELECT
* i++;
* j++;
* System.out.println("entrei"+ i + j);
* }
* i-=j-1;
* fromList = new String[j];
* j = 0;
* do{
* System.out.println(vect[i]+" - "+fromList[j]+j);
* fromList[j] = vect[i];
* System.out.println(vect[i]+" - "+fromList[j]+j+"i "+i);
* j++;
* i++;
* }while((vect[i].equals("where")== false));//||(vect[i].equals("order")==
* false));
* }
*
* if(vect[i].equals("order") && vect[i+1].equals("by")){
* orderBy=1;
* i = i + 2;
* System.out.println("oi"+i);
* int k; // posição do atributo que vai ser usado para ordenar a tabela no
* selectList
* if(vect[i].equals(selectList[0])== false){
* for(k = 1; k < selectList.length; k++){
* if(vect[i].equals(selectList[k]))
* break;
* }
* String swap = selectList[0];
* selectList[0] = selectList [k];
* selectList[k] = swap;
* System.out.println("oi");
* }
* }
*
* }
*
* int i;
*
* Tabela t = lista_tabelas.get(0);
* t.resultadoQuery(selectList,orderBy);
*/
case 9:
System.out.println("Tem certeza que deseja sair?(S)para sair");
confirma = input.next().toUpperCase().charAt(0);
break;
}
} while (confirma != 'S');
input.close();
}
}