Jump to content

Silva Mateus

Members
  • Content count

    5
  • Joined

  • Last visited

Community Reputation

0 Comum

About Silva Mateus

  1. Silva Mateus

    Erro ao testar o pool de conexões

    Olá amigos do fórum. Hoje trago a seguinte questão: Estou iniciando os estudos sobre conexões JAVA/Postgres. E me deparei com o seguinte problema: Quando tento testar a minha classe chamada, "PoolDeConexoes", ela me retorna os seguintes erros: "Exception in thread "main" java.lang.NullPointerException at BDAccess.PoolDeConexoes.<init>(PoolDeConexoes.java:13) at BDAccess.PoolDeConexoes.getInstance(PoolDeConexoes.java:21) at BDAccess.Main.main(Main.java:9)" Porém, a IDE não me exibe nenhum erro semântico durante a digitação, então, o mais provável é que se trata de um erro lógico. Abaixo estão as minhas classes, todas comentadas com o devido processo do pool de conexões, nos moldes solicitados pelo meu professor. package BDAccess; import java.util.ArrayList; public class PoolDeConexoes { private static ArrayList<Conexao> conexoes; private static PoolDeConexoes pool; private PoolDeConexoes() { Conexao cn1 = new Conexao(); Conexao cn2 = new Conexao(); conexoes.add(cn1); conexoes.add(cn2); getConexao(); } public static PoolDeConexoes getInstance() { if(pool == null) { pool = new PoolDeConexoes(); } return pool ; } public Conexao getConexao() { if(conexoes == null) { Conexao c = new Conexao(); conexoes.add(c); return c; }else { for(Conexao s:conexoes) { if(s.isLivre()) { return s; } } } return null; } } Acima, a classe denominada: PoolDeConexoes.java package BDAccess; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Conexao { private Connection cnx; private boolean livre; public Conexao() { this.livre = true; Parametros prm = Parametros.getInstance(); String driverJDBC = prm.getParametros("driverJdbc"); String urlBanco = prm.getParametros("urlBanco"); String nomeUsuario = prm.getParametros("nomeUsuario"); String senha = prm.getParametros("senha"); try { Class.forName(driverJDBC); System.out.println("Driver importado!"); cnx = DriverManager.getConnection(urlBanco, nomeUsuario, senha); System.out.println("Conexão estabelecida"); }catch (Exception e) { System.out.println("Conexão não estabelecida!"); } } public Connection getConnection() { return cnx; } public void reserva() { if(livre) { livre = false; }else { System.out.println("Esta conexão já está em uso!"); } } public void libera() { livre = true; } public boolean isLivre() { return livre; } } Acima, a classe com o objeto Conexão. package BDAccess; import java.io.IOException; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException{ PoolDeConexoes plc = PoolDeConexoes.getInstance(); System.out.println(plc.getConexao()); } } E aqui o meu método principal. Agradeço desde já pelo auxílio de vocês sobre a minha questão.
  2. Olá estou com um problema em minhas classes Java. Quando tento criar um novo "Fornecedor", o console me resulta o Caused by: java.lang.StackOverflowError. Aqui estão as minhas classes que interagem entre si. Se alguém poder me auxiliar na resolução deste problema, agradeço. package view; import application.Main; import javafx.fxml.FXML; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.stage.Stage; import model.Fornecedor; import model.Produto; public class FornecedorOverViewController { @FXML private TableView<Fornecedor> tabelaFornecedor; @FXML private TableColumn<Fornecedor, Integer> idFornecedor; @FXML private TableColumn<Fornecedor, String> nomeFornecedor; @FXML private TableColumn<Fornecedor, String> telefoneFornecedor; @FXML private Label nome; @FXML private Label telefone; public FornecedorOverViewController() { } int i = 0; private Main main; @FXML private void initialize() { nomeFornecedor.setCellValueFactory( cellData -> cellData.getValue().nomeProperty()); telefoneFornecedor.setCellValueFactory( cellData -> cellData.getValue().telefoneProperty()); idFornecedor.setCellValueFactory(new PropertyValueFactory<>("id")); showFornecedorDetails(null); tabelaFornecedor.getSelectionModel().selectedItemProperty().addListener( (observable, oldValue, newValue) -> showFornecedorDetails(newValue)); } public void setMainI(Main main) { this.main = main; tabelaFornecedor.setItems(main.getFornecedorData()); } private void showFornecedorDetails(Fornecedor fornecedor) { if (fornecedor != null) { nome.setText(fornecedor.getNome()); telefone.setText(fornecedor.getTelefone()); } else { nome.setText(" "); telefone.setText(" "); } } @FXML private void handleDeleteFornecedor() { int selectedIndex = tabelaFornecedor.getSelectionModel().getSelectedIndex(); if (selectedIndex >= 0) { tabelaFornecedor.getItems().remove(selectedIndex); } else { } } @FXML private void handleNewFornecedor() { Fornecedor newFornecedor = new Fornecedor(null,0); boolean okClicked = main.showFornecedorEditDialog(newFornecedor); if (okClicked) { main.getFornecedorData().add(newFornecedor); } } } package application; import java.io.IOException; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; import javafx.stage.Modality; import javafx.stage.Stage; import model.Categoria; import model.Fornecedor; import model.Produto; import model.Usuario; import view.FornecedorEditDialog; import view.FornecedorOverViewController; import view.LoginController; import view.ProdutoEditDialog; import view.ProdutoOverViewController; import view.RootLayoutController; public class Main extends Application { private Stage primaryStage; private BorderPane rootLayout; private AnchorPane loginLayout; private ObservableList<Produto> produtoData = FXCollections.observableArrayList(); private ObservableList<Fornecedor> fornecedorData = FXCollections.observableArrayList(); private ObservableList<Usuario> usuarioData = FXCollections.observableArrayList(); private ObservableList<Categoria> categoriaData = FXCollections.observableArrayList(); public Main() { int i =0; produtoData.add(new Produto("Skol", 5.99, ++i,199)); produtoData.add(new Produto("Budweiser", 8.99, ++i,2002)); produtoData.add(new Produto("Heineken", 12.00, ++i,22)); i = 0; fornecedorData.add(new Fornecedor("Ambev", ++i)); fornecedorData.add(new Fornecedor("Cervejaria Heineken", ++i)); fornecedorData.add(new Fornecedor("Coca-Cola", ++i)); fornecedorData.add(new Fornecedor("Fonte-Ijuí", ++i)); i = 0; usuarioData.add(new Usuario("mateus", "m16s97aa")); usuarioData.add(new Usuario("dala", "123456")); usuarioData.add(new Usuario("root", "654321")); categoriaData.add(new Categoria("Cerveja", ++i)); categoriaData.add(new Categoria("Vinho", ++i)); categoriaData.add(new Categoria("Vodka", ++i)); categoriaData.add(new Categoria("Cachaca", ++i)); i = 0; } @Override public void start(Stage primaryStage) { this.primaryStage = primaryStage; this.primaryStage.setTitle("Wine And Beer"); login(); /* if(click) { initRootLayout(); showProdutosOverView(); } */ } public void initRootLayout() { try { // Load root layout from fxml file. FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("/view/RootLayout.fxml")); rootLayout = (BorderPane) loader.load(); // Show the scene containing the root layout. Scene scene = new Scene(rootLayout); primaryStage.setScene(scene); // Give the controller access to the main app. RootLayoutController controller = loader.getController(); controller.setMain(this); primaryStage.show(); } catch (IOException e) { e.printStackTrace(); } /* // Try to load last opened person file. File file = getPersonFilePath(); if (file != null) { loadPersonDataFromFile(file); } */ } public void logar() { primaryStage.close(); initRootLayout(); showProdutosOverView(); //return true; } public void login() { try { // Load root layout from fxml file. FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("/view/Login.fxml")); loginLayout = (AnchorPane) loader.load(); // Show the scene containing the root layout. Scene scene = new Scene(loginLayout); primaryStage.setScene(scene); // Give the controller access to the main app. LoginController controller = loader.getController(); controller.setMain(this); primaryStage.show(); } catch (IOException e) { e.printStackTrace(); } } public void showProdutosOverView() { try { // Load person overview. FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("/view/Produto.fxml")); AnchorPane personOverview = (AnchorPane) loader.load(); // Set person overview into the center of root layout. rootLayout.setCenter(personOverview); // Give the controller access to the main app. ProdutoOverViewController controller = loader.getController(); controller.setMain(this); } catch (IOException e) { e.printStackTrace(); } } public Stage getPrimaryStage() { return primaryStage; } public ObservableList<Produto> getProdutoData() { return produtoData; } public ObservableList<Fornecedor> getFornecedorData(){ return fornecedorData; } public ObservableList<Usuario> getUsuarioData(){ return usuarioData; } public ObservableList<Categoria> getCategoriaData(){ return categoriaData; } public static void main(String[] args) { launch(args); } public boolean showProdutoEditDialog(Produto produto) { try { // Load the fxml file and create a new stage for the popup dialog. FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("/view/ProdutoEditDialog.fxml")); AnchorPane page = (AnchorPane) loader.load(); // Create the dialog Stage. Stage dialogStage = new Stage(); dialogStage.setTitle("Editar Produto"); dialogStage.initModality(Modality.WINDOW_MODAL); dialogStage.initOwner(primaryStage); // dialogStage.getIcons().add(new Image("file:resources/images/edit.png")); Scene scene = new Scene(page); dialogStage.setScene(scene); // Set the person into the controller. ProdutoEditDialog controller = loader.getController(); controller.setDialogStage(dialogStage); controller.setProduto(produto); controller.lotarCombo(fornecedorData, categoriaData); controller.setMain(this); // Show the dialog and wait until the user closes it dialogStage.showAndWait(); return controller.isOkClicked(); } catch (IOException e) { e.printStackTrace(); return false; } } public boolean showFornecedorEditDialog(Fornecedor fornecedor) { try { // Load the fxml file and create a new stage for the popup dialog. FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("/view/FornecedorEditDialog.fxml")); AnchorPane page = (AnchorPane) loader.load(); // Create the dialog Stage. Stage dialogStage = new Stage(); dialogStage.setTitle("Editar Fornecedor"); dialogStage.initModality(Modality.WINDOW_MODAL); dialogStage.initOwner(primaryStage); Scene scene = new Scene(page); dialogStage.setScene(scene); // Set the person into the controller. FornecedorEditDialog controller = loader.getController(); controller.setDialogStage(dialogStage); controller.setFornecedor(fornecedor); controller.setMain(this); // Show the dialog and wait until the user closes it dialogStage.showAndWait(); return controller.isOkClicked(); } catch (IOException e) { e.printStackTrace(); return false; } } } package view; import application.Main; import javafx.fxml.FXML; import javafx.scene.control.TextField; import javafx.stage.Stage; import model.Fornecedor; import model.Produto; public class FornecedorEditDialog { @FXML private TextField nome; @FXML private TextField telefone; private Stage dialogStage; private Main main; private int id; private Fornecedor fornecedor; private boolean okClicked = false; @FXML private void initialize() { } public void setDialogStage(Stage dialogStage) { this.dialogStage = dialogStage; } public void setMain(Main main) { this.main = main; id = main.getFornecedorData().size(); id = id+1; } public void setFornecedor(Fornecedor fornecedor) { this.fornecedor = fornecedor; nome.setText(fornecedor.getNome()); telefone.setText(fornecedor.getTelefone()); } public boolean isOkClicked() { return isOkClicked(); } @FXML private void handleOk() { if (isInputValid()) { fornecedor.setNome(nome.getText()); fornecedor.setTelefone(telefone.getText()); if(fornecedor.getId() == 0) { fornecedor.setId(this.id); } okClicked = true; dialogStage.close(); } } @FXML private void handleCancel() { dialogStage.close(); } private boolean isInputValid() { String errorMessage = ""; if (nome.getText() == null || nome.getText().length() == 0) { errorMessage += "Produto Invalido!\n"; } if (telefone.getText() == null || telefone.getText().length() == 0) { errorMessage += "Preco invalidos!\n"; } if (errorMessage.length() == 0) { return true; } else { // Show the error message. return false; } } }
  3. Silva Mateus

    Consulta em duas tabelas - Laravel

    Olá estou com um problema no meu código que é o seguinte: Tenho um Tabela chamada "Colaborador" e outra chamada de "Premiacoes", segue abaixo o exemplo : ----Colaborador------- id | nome | data_contratacao 1| fulano| 2017-02-15 ----Premiacoes------- id | colaborador_id | data_premio 1 | 1 | 2017-03-01 E tenho que fazer uma consulta que me retorne o sequinte: 1 - quais colaboradores ainda não receberam nenhuma premiação 2 - e para os que receberam ao menos uma premiação, quais os meses(ou mês) que não receberam nada. Alguém faz ideia de como fazer isso?
  4. Silva Mateus

    Struct em C

    Wooow. Você me ajudou muito!! Agradeço de verdade.
  5. Silva Mateus

    Struct em C

    Olá, tenho dois problemas que são o seguinte: 1 - Quando escolho a opção "1" e entro no cadastro de produtos o programa pula a etapa de cadastro do "nome", isto é , me deixando cadastrar somente o "codigo" e "estoque minimo". Me disseram que o FFLUSH resolveria esse problema, esse é realmente o método correto? 2 - Quando vou na opção "2 - listar" ele não exibe os valores que foram cadastrado, isto é , a tabela é impressa corretamente só que os valores não são correspondentes. #include<stdio.h> #include<strings.h> #include<string.h> #define max = 10; int contador=0 ; //ESTRUTURA DOS DADOS struct produtos{ int codigo; char nome[30]; float precoMedioUnitario; int quantEstoque; int estoqueMinimo; }; struct produtos cadProduto[9]; main(){ menu(); } // PROCEDIMENTO - VOID MENU void menu(){ // VARIAVEL PARA ESCOLHA SWITCH int escolha; // MENU printf("1 - Cadastrar um produto"); printf("\n2 - Listar os produtos cadastrados"); printf("\n3 - Consultar os dados de um produto "); printf("\n4 - Processar uma saida de mercadoria do estoque"); printf("\n5 - Processar uma entrada de mercadoria no estoque"); printf("\n6 - Sair do programa"); //ESCOLHA DE OPERACAO printf("\nOperacao: "); scanf("%d", &escolha); //DESVIO PARA A OPCAO switch(escolha){ case 1: cadastro(); break; case 2: listar(); break; case 3: break; case 4: break; case 5: break; case 6: break; default: printf("Valor Invalido"); } } // FUNCAO CADASTRO DE PRODUTOS void cadastro(){ int resultado; do{ //FORMULARIO DE CADASTRO printf("Codigo do produto: "); scanf("%d", &cadProduto[contador].codigo); printf("\n"); printf("Nome do produto: "); fgets(cadProduto[contador].nome, 30, stdin); printf("\n"); printf("Estoque minimo: "); scanf("%d", &cadProduto[contador].estoqueMinimo); printf("\n"); contador++; printf("Deseja cadastrar mais produtos? Precione 1 - Sim ou 2 - Nao:\n"); scanf("%d", &resultado); while(resultado!=1 && resultado!=2){ printf("\n"); printf("Opcao invalida!"); printf("\n"); printf("Deseja cadastrar mais produtos? Precione 1 - Sim ou 2 - Nao:\n"); scanf("%d", &resultado); } } while(resultado!=2); printf("\nOperacao Concluida com sucesso!\n"); printf("\n"); menu(); } void listar(){ printf("\n"); for(int i=0; i<contador;i++){ printf("%d | %c | %d | %f | %d\n ",cadProduto[contador].codigo, cadProduto[contador].nome, cadProduto[contador].quantEstoque, cadProduto[contador].precoMedioUnitario, cadProduto[contador].estoqueMinimo ); } }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.