Ola,
Estou criando um programa, apenas com o proposito de estudo, onde um usuario digita uma mesagem e a ela e atribuido um id (igual ao tamanho do arraylist onde as mensagens serao gravadas), e uma senha que e escolhida aleatoriamente, e ambos serao usados mais tarde quando o usuario quiser vizualizar a mensagem. Tudo esta funcionando perfeitamente, exceto a serializacao, que quando e requisitada a recuperacao dos dados da classe onde o arraylist esta contido, parece que me retorna um arraylist vazio ou nao esta funcionando mesmo.
aqui esta o codigo
Classe onde se encotra arraylist que gostaria de serializar
package encriptadorMsg;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class GerenciadorMensagem implements Serializable{
private static final long serialVersionUID = 1859004047392459794L;
String[] possibilidades = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9"};
List <Mensagem> mensagens = new ArrayList<Mensagem>();
public void criaNovaMensagem(String mensagem){
int id = mensagens.size();
Mensagem msg = new Mensagem(geraSenha(), mensagem, id);
mensagens.add(msg);
}
public String[] geraSenha(){
Random rand = new Random();
String p0 = possibilidades[rand.nextInt((61 - 0 )+1)-0];
String p1 = possibilidades[rand.nextInt((61 - 0 )+1)-0];
String p2 = possibilidades[rand.nextInt((61 - 0 )+1)-0];
String p3 = possibilidades[rand.nextInt((61 - 0 )+1)-0];
String p4 = possibilidades[rand.nextInt((61 - 0 )+1)-0];
String p5 = possibilidades[rand.nextInt((61 - 0 )+1)-0];
String[] novaSenha = {p0,p1,p2,p3,p4,p5};
return novaSenha;
}
public boolean comparaSenha(String senhaUsuario, int idUsuario){
String[] senhaUsuarioQuebrada = senhaUsuario.split("(?!^)");
for (Mensagem mensagem : mensagens) {
if(mensagens.get(idUsuario).getId() == idUsuario && Arrays.equals(senhaUsuarioQuebrada, mensagens.get(idUsuario).getSenha())){
return true;
}
else{
return false;
}
}
return false;
}
public String mostraMensagem(String senha, int id){
if(comparaSenha(senha, id) == true){
for (Mensagem mensagem : mensagens) {
if(mensagem.getId() == id){
String mensagemFinal = mensagem.getMensagem();
return mensagemFinal;
}
}
}
return "Senha ou Id invalidos";
}
}
package encriptadorMsg;
import java.io.Serializable;
public class Mensagem implements Serializable{
/**
*
*/
private static final long serialVersionUID = -1113753825069557271L;
private String[] senha;
private String mensagem;
private int id;
public Mensagem(String[] senha, String mensagem, int id) {
if (mensagem.equalsIgnoreCase(null)){
throw new IllegalArgumentException("A mensagem nao pode ser nula");
}
this.senha = senha;
this.mensagem = mensagem;
this.id = id;
}
public String[] getSenha() {
return senha;
}
public void setSenha(String[] senha) {
this.senha = senha;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
package encriptadorMsg;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class Serializador {
public void salvaGerenciador(GerenciadorMensagem gmsg){
gmsg = new GerenciadorMensagem();
try{
FileOutputStream arquivoGrav = new FileOutputStream("/root/Documentos/gerenciadorSalvo.dat");
ObjectOutputStream objGravar = new ObjectOutputStream(arquivoGrav);
objGravar.writeObject(gmsg);
objGravar.flush();
objGravar.close();
arquivoGrav.flush();
arquivoGrav.close();
}
catch(Exception e){
e.printStackTrace();
}
}
@SuppressWarnings("finally")
public GerenciadorMensagem carregaGerenciador(){
GerenciadorMensagem gerenciador = new GerenciadorMensagem();
try
{
FileInputStream arquivoLeitura = new FileInputStream("/root/Documentos/gerenciadorSalvo.dat");
ObjectInputStream objLeArquivo = new ObjectInputStream(arquivoLeitura);
gerenciador = (GerenciadorMensagem)objLeArquivo.readObject();
objLeArquivo.close();
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
return gerenciador;
}
}
}
}
package encriptadorMsg;
import java.util.Arrays;
import java.util.Scanner;
public class Teste {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
GerenciadorMensagem gmsg = new GerenciadorMensagem();
Serializador serial = new Serializador();
int opcao = 0;
do {
System.out.println("\n\n ### Encriptador de Mensagens ###");
System.out.println("\n =========================");
System.out.println("\n | 1 - Encriptar Msg |");
System.out.println("\n | 2 - Ler mensagem |");
System.out.println("\n | 0 - Sair |");
System.out.println("\n =========================");
System.out.println("Opcao --> ");
opcao = Integer.parseInt(ler.nextLine());
switch (opcao){
case 1:
System.out.println("\nDigite o texto a ser encriptado");
System.out.println("\n-->");
String texto = ler.nextLine();
int mostraIdUsuario = gmsg.mensagens.size();
gmsg.criaNovaMensagem(texto);
String mostraSenhaUsuario = gmsg.mensagens.get(mostraIdUsuario).getSenha()[0] + gmsg.mensagens.get(mostraIdUsuario).getSenha()[1] + gmsg.mensagens.get(mostraIdUsuario).getSenha()[2] + gmsg.mensagens.get(mostraIdUsuario).getSenha()[3] + gmsg.mensagens.get(mostraIdUsuario).getSenha()[4] + gmsg.mensagens.get(mostraIdUsuario).getSenha()[5];
System.out.println("\nSua senha e:");
System.out.println(mostraSenhaUsuario);
System.out.println("\n\nSeu id e: ");
System.out.println(mostraIdUsuario);
break;
case 2:
System.out.println("\nDigite o id da mensagem a ser vizualizada");
System.out.println("\n-->");
int id = Integer.parseInt(ler.nextLine());
System.out.println("\nDigite a senha da Mensagem ");
System.out.println("\n-->");
String senha = ler.nextLine();
gmsg.comparaSenha(senha, id);
System.out.println("\nSua mensagem:");
System.out.println(gmsg.mostraMensagem(senha, id)); break;
case 3:
serial.salvaGerenciador(gmsg);
break;
case 4:
serial.carregaGerenciador();
case 0:
break;
default:
System.out.println("Opcao Invalida!");
break;
}
}while(opcao != 0);
}
}
Obrigado pela atencao