solid-titans / aeds3 Goto Github PK
View Code? Open in Web Editor NEWProjeto de um Crud em java para a matéria de Algoritmos 3.
License: MIT License
Projeto de um Crud em java para a matéria de Algoritmos 3.
License: MIT License
Esse erro acontece simultaneamente com o erro descrito em #17 , a única diferença é que em vez de eu pedir para listar as respostas de um usuário específico, eu peço para imprimir todas as respostas de determinada pergunta
java.io.EOFException
at java.base/java.io.RandomAccessFile.readInt(RandomAccessFile.java:837)
at menu.pergunta.indices.ListaIDs$Bloco.lerBloco(ListaIDs.java:231)
at menu.pergunta.indices.ListaIDs.readP(ListaIDs.java:174)
at menu.pergunta.indices.ListaIDs.read(ListaIDs.java:134)
at menu.sistema.CrudAPI.getRespostaArrayGeral(CrudAPI.java:532)
at menu.resposta.RespostaAPI.listarRespostasDoGeral(RespostaAPI.java:28)
at menu.sistema.CrudAPI.verificarRequisicaoEmPergunta(CrudAPI.java:207)
at menu.Menu.navegarPergunta(Menu.java:277)
at menu.sistema.CrudAPI.verificarRequisicaoDoUsuario(CrudAPI.java:130)
at menu.Menu.acessoGarantido(Menu.java:197)
at menu.Menu.Inicio(Menu.java:96)
at Main.main(Main.java:12)
java.io.IOException: Negative seek offset
at java.base/java.io.RandomAccessFile.seek(RandomAccessFile.java:589)
at crud.Crud.read(Crud.java:95)
at menu.sistema.CrudAPI.getRespostaArrayGeral(CrudAPI.java:542)
at menu.resposta.RespostaAPI.listarRespostasDoGeral(RespostaAPI.java:28)
at menu.sistema.CrudAPI.verificarRequisicaoEmPergunta(CrudAPI.java:207)
at menu.Menu.navegarPergunta(Menu.java:277)
at menu.sistema.CrudAPI.verificarRequisicaoDoUsuario(CrudAPI.java:130)
at menu.Menu.acessoGarantido(Menu.java:197)
at menu.Menu.Inicio(Menu.java:96)
at Main.main(Main.java:12)
Exception in thread "main" java.lang.NullPointerException
at menu.resposta.RespostasFrontEnd.listarRespostasGeral(RespostasFrontEnd.java:55)
at menu.resposta.RespostaAPI.listarRespostasDoGeral(RespostaAPI.java:34)
at menu.sistema.CrudAPI.verificarRequisicaoEmPergunta(CrudAPI.java:207)
at menu.Menu.navegarPergunta(Menu.java:277)
at menu.sistema.CrudAPI.verificarRequisicaoDoUsuario(CrudAPI.java:130)
at menu.Menu.acessoGarantido(Menu.java:197)
at menu.Menu.Inicio(Menu.java:96)
at Main.main(Main.java:12)
Após alterar uma reposta, ela sobrescreve o conteúdo de si e da proxima:
java.io.IOException: Negative seek offset
at java.base/java.io.RandomAccessFile.seek(RandomAccessFile.java:589)
at crud.Crud.read(Crud.java:95)
at menu.backend.cruds.RespostasCRUD.achar(RespostasCRUD.java:60)
at menu.api.RespostasAPI.escolherResposta(RespostasAPI.java:222)
at menu.api.RespostasAPI.arquivarResposta(RespostasAPI.java:177)
at menu.api.APIControle.requisicaoEmPerguntas(APIControle.java:181)
at menu.Menu.navegarPergunta(Menu.java:300)
at menu.Menu.acessoGarantido(Menu.java:217)
at menu.Menu.Inicio(Menu.java:104)
at Main.main(Main.java:75)
Operação terminou com erro!
Após esse erro, se o usuário tentar imprimir a lista de todas as respostas para aquela pergunta, o seguinte erro ocorre:
java.io.IOException: Negative seek offset
at java.base/java.io.RandomAccessFile.seek(RandomAccessFile.java:589)
at crud.Crud.read(Crud.java:95)
at menu.backend.cruds.UsuariosCRUD.achar(UsuariosCRUD.java:75)
at menu.frontend.RespostasFrontEnd.listarGeral(RespostasFrontEnd.java:67)
at menu.api.RespostasAPI.listarRespostasDoGeral(RespostasAPI.java:58)
at menu.api.APIControle.requisicaoEmPerguntas(APIControle.java:159)
at menu.Menu.navegarPergunta(Menu.java:300)
at menu.Menu.acessoGarantido(Menu.java:217)
at menu.Menu.Inicio(Menu.java:104)
at Main.main(Main.java:75)
Exception in thread "main" java.lang.NullPointerException
at menu.frontend.RespostasFrontEnd.listarGeral(RespostasFrontEnd.java:67)
at menu.api.RespostasAPI.listarRespostasDoGeral(RespostasAPI.java:58)
at menu.api.APIControle.requisicaoEmPerguntas(APIControle.java:159)
at menu.Menu.navegarPergunta(Menu.java:300)
at menu.Menu.acessoGarantido(Menu.java:217)
at menu.Menu.Inicio(Menu.java:104)
at Main.main(Main.java:75)
O problema é basicamente este:
Se você tentar inserir uma pergunta, quando o sistema tem mais de um usuário, essa pergunta será registrada no primeiro usuário, e então será adicionado a todos usuários até chegar no usuário N.
Possíveis culpados:
Crud.java
PerguntasCRUD.java
ADMPerguntas.java
Para melhor explicar a situação, considere os dois exemplos:
No primeiro caso eu criei dois usuários: Gustavo e Thiago. e então eu fui em Thiago e tentei inserir uma pergunta. Curiosamente, a pergunta não foi armazenada em Thiago, mas sim em Gustavo. Para ficar ainda mais confuso, se eu adicionar mais uma pergunta, a pergunta agora sim vai para Thiago e esse BUG desaparece e agora as perguntas são adicionadas da maneira como deveria ser.
No segundo caso eu adicionei três usuários: Gustavo, Thiago e Lucas e então eu fui em Lucas e tentei inserir uma pergunta. No primeiro e segundo caso, não aconteceu nada, nenhuma pergunta foi inserida. Porém no terceiro caso finalmente a pergunta foi adicionada. Quando eu fui olhar as outras contas, eu percebi que a primeira pergunta que eu adicionei em Lucas apareceu em Gustavo, e a segunda apareceu em Thiago.
Quando todos os usuários possuem perguntas, o BUG não se manifesta, então eu não sei se isso tem haver com a maneira como o Crud funciona, ou se eu falhei em observar algum erro do "PerguntasCRUD.java".
Para aqueles que forem mexer com as versões da branch : feat/Resposta, a feature de respostas ainda está em processo de implementação, e por isso, mais testes são necessários.
Sobre as notas e comentários, os menus estão "funcionando" mas sugiro que ninguém tente acessá-los, até porque a implementação não passou da fase de concepção.
Ao executar o código abaixo, era suposto cada pergunta ter seu espaço no disco. Alguns testes mostraram que essas perguntas estão sendo sobreescritas.
public class Teste {
public static void main(String[] args) {
ListaIDs lista = new ListaIDs("Dados/db");
lista.create(0, 0);
lista.create(0, 1);
lista.create(1, 0);
lista.create(2, 0);
lista.create(2, 1);
}
}
Nesse exato momento, o código está passando por uma grande refatoração, para deixar ele mais fácil de leitura para todos, e para isso está sendo usando como base as ideias de 'Clean Code' e arquitetura 'SOLID'
A primeira fase da refatoração teve seu término, olhe para a branch 'refactor' para mais detalhes, mas saiba que por enquanto que essa versão ainda não está funcional, tentar compilar ela apenas resultará em problemas, então tome cuidado a acessar o conteúdo dessa branch.
O programa está compilando, mas não está atualizando as atualizações feitas no mesmo
Tendo 10 usuários ou mais e clicar para listar as perguntas o programa trava dando essa mensagem de erro:
java.io.IOException: Negative seek offset
at java.base/java.io.RandomAccessFile.seek(RandomAccessFile.java:589)
at crud.Crud.read(Crud.java:94)
at menu.sistema.CrudAPI.getPerguntaArray(CrudAPI.java:295)
at menu.pergunta.PerguntasAPI.listarPerguntas(PerguntasAPI.java:227)
at menu.sistema.CrudAPI.verificarRequisicaoDoUsuario(CrudAPI.java:120)
at menu.Menu.acessoGarantido(Menu.java:190)
at menu.Menu.Inicio(Menu.java:90)
at Main.main(Main.java:12)
Exception in thread "main" java.lang.NullPointerException
at menu.pergunta.PerguntasFrontEnd.listarPerguntas(PerguntasFrontEnd.java:32)
at menu.pergunta.PerguntasAPI.listarPerguntas(PerguntasAPI.java:233)
at menu.sistema.CrudAPI.verificarRequisicaoDoUsuario(CrudAPI.java:120)
at menu.Menu.acessoGarantido(Menu.java:190)
at menu.Menu.Inicio(Menu.java:90)
at Main.main(Main.java:12)
Durante o processo de listagem de respostas de um determinado usuário, o programa jogou um IOE e EOF exception. A causa exata é algo que eu não consigo determinar exatamente, mas decidi abrir o 'Issue' para que todos fiquem sabendo do problema:
Ao registrar as respostas na primeira pergunta , nada de estranho ocorreu e inclusive eu consegui registrar respostas com diferentes usuários. O erro só se manifestou quando eu fui inserir respostas na segunda pergunta registrada: eu inseri a resposta, e quando fui listar, isso foi imprimido na tela:
java.io.EOFException
at java.base/java.io.RandomAccessFile.readInt(RandomAccessFile.java:837)
at menu.pergunta.indices.ListaIDs$Bloco.lerBloco(ListaIDs.java:231)
at menu.pergunta.indices.ListaIDs.readP(ListaIDs.java:174)
at menu.pergunta.indices.ListaIDs.read(ListaIDs.java:134)
at menu.sistema.CrudAPI.getRespostaArrayUser(CrudAPI.java:499)
at menu.resposta.RespostaAPI.listarRespostasDoUsuario(RespostaAPI.java:50)
at menu.sistema.CrudAPI.verificarRequisicaoEmPergunta(CrudAPI.java:211)
at menu.Menu.navegarPergunta(Menu.java:277)
at menu.sistema.CrudAPI.verificarRequisicaoDoUsuario(CrudAPI.java:130)
at menu.Menu.acessoGarantido(Menu.java:197)
at menu.Menu.Inicio(Menu.java:96)
at Main.main(Main.java:12)
java.io.IOException: Negative seek offset
at java.base/java.io.RandomAccessFile.seek(RandomAccessFile.java:589)
at crud.Crud.read(Crud.java:95)
at menu.sistema.CrudAPI.getRespostaArrayUser(CrudAPI.java:506)
at menu.resposta.RespostaAPI.listarRespostasDoUsuario(RespostaAPI.java:50)
at menu.sistema.CrudAPI.verificarRequisicaoEmPergunta(CrudAPI.java:211)
at menu.Menu.navegarPergunta(Menu.java:277)
at menu.sistema.CrudAPI.verificarRequisicaoDoUsuario(CrudAPI.java:130)
at menu.Menu.acessoGarantido(Menu.java:197)
at menu.Menu.Inicio(Menu.java:96)
at Main.main(Main.java:12)
■■■■■■■■■■■■■■
■▒Respostas▒▒■
■■■■■■■■■■■■■■
Operação terminou com sucesso!
Pressione 'Enter' para continuar...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.