Pessoal,
os códigos abaixo são referentes a um simulador de uma Biblioteca. Preciso serializá-la, mas não estou conseguindo. Em anexo, segue um diagrama “porco” que dá uma noção da estruturação do programa.
CLASSE AGENTE
public class Agente
{
private int codigo;
public Agente(int codigo)
{
setCodigo(codigo);
}
public int getCodigo()
{
return codigo;
}
public void setCodigo(int codigo)
{
this.codigo = codigo;
}
public String toString()
{
return "Código: " + codigo;
}
}
CLASSE ARTIGO
import java.util.ArrayList;
import java.util.List;
public class Artigo extends Publicacao
{
private List<String> palavrasChave;
private List<Autor> autores;
public Artigo(int codigo, String titulo, String editor, String data, ArrayList<String> palavrasChave)
{
super(codigo, titulo, editor, data);
setPalavrasChave(palavrasChave);
autores = new ArrayList<Autor>();
}
public List<String> getPalavrasChave()
{
return palavrasChave;
}
public void setPalavrasChave(ArrayList<String> palavrasChave)
{
this.palavrasChave = palavrasChave;
}
public void setAutores(ArrayList<Autor> autores)
{
this.autores = autores;
}
public List<Autor> getAutores()
{
return autores;
}
public void addAutor(Autor autor)
{
autores.add(autor);
}
}
CLASSE ASSUNTO
public class Assunto
{
private String codigo, assunto;
public Assunto(String codigo, String assunto)
{
setCodigo(codigo);
setAssunto(assunto);
}
public String getAssunto()
{
return assunto;
}
public void setAssunto(String assunto)
{
this.assunto = assunto.trim();
}
public String getCodigo()
{
return codigo;
}
public void setCodigo(String codigo)
{
this.codigo = codigo.trim();
}
public String toString() {
return "Código: " + codigo + "\nAssunto: " + assunto;
}
}
CLASSE AUTOR
public class Autor extends Agente {
private String nome, sobrenome;
public Autor(int codigo, String nome, String sobrenome)
{
super(codigo);
setNome(nome);
setSobrenome(sobrenome);
}
public String getNome()
{
return nome;
}
public void setNome(String nome)
{
this.nome = nome.trim();
}
public String getSobrenome()
{
return sobrenome;
}
public void setSobrenome(String sobrenome)
{
this.sobrenome = sobrenome.trim();
}
public String toString()
{
return "Nome: " + nome + " " + sobrenome + "\n" + super.toString();
}
}
CLASSE BIBLIO
import java.util.ArrayList;
public class Biblio implements Biblioteca
{
private RepositorioDados repositorio;
public Biblio()
{
repositorio = new RepositorioDados();
}
public void addAutor(Autor autor)
{
repositorio.addAutor(autor);
}
public void addEditor(Editor editor)
{
repositorio.addEditor(editor);
}
public Autor findAutor(int codigo)
{
return repositorio.findAutor(codigo);
}
public Editor findEditor(int codigo)
{
return repositorio.findEditor(codigo);
}
public void addPub(Publicacao publicacao)
{
repositorio.addPub(publicacao);
}
public void removePub(String titulo)
{
repositorio.removePub(titulo);
}
public void removeAgente(int codigo)
{
repositorio.removeAgente(codigo);
}
public Publicacao findPub(int codigo)
{
return repositorio.findPub(codigo);
}
public ArrayList<Publicacao> findPubs(String busca)
{
return repositorio.findPubs(busca);
}
}
INTERFACE BIBLIOTECA
import java.util.List;
public interface Biblioteca
{
public void addAutor(Autor autor);
public void addEditor(Editor editor);
public Autor findAutor(int codigo);
public Editor findEditor(int codigo);
public void addPub(Publicacao publicacao);
public void removePub(String titulo);
public void removeAgente(int codigo);
public Publicacao findPub(int codigo);
public List<Publicacao> findPubs(String busca);
}
CLASSE EDITOR
public class Editor extends Agente
{
private String nome;
public Editor(int codigo, String nome)
{
super(codigo);
setNome(nome);
}
public String getNome()
{
return nome;
}
public void setNome(String nome)
{
this.nome = nome.trim();
}
public String toString()
{
return "Nome: " + nome + "\n" + super.toString();
}
}
CLASSE LIVRO
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Livro extends Publicacao
{
private List<Autor> autores;
private Assunto assunto;
public Livro(int codigo, String titulo, String editor, String data, Assunto assunto)
{
super(codigo, titulo, editor, data);
this.assunto = assunto;
autores = new ArrayList<Autor>();
}
public void setAutores(ArrayList<Autor> autores)
{
this.autores = autores;
}
public List<Autor> getAutores()
{
return autores;
}
public void addAutor(Autor autor)
{
autores.add(autor);
}
public Assunto getAssunto()
{
return assunto;
}
public void setAssunto(Assunto assunto)
{
this.assunto = assunto;
}
public String toString()
{
String string = super.toString() + "\n" + assunto.toString();
for(Iterator<Autor> iterador = autores.iterator(); iterador.hasNext();)
{
string += "\n" + iterador.next().toString();
}
return string;
}
}
CLASSE PUBLICAÇÃO
public class Publicacao
{
private int codigo;
private String titulo, editor, data;
public Publicacao(int codigo, String titulo, String editor, String data)
{
setCodigo(codigo);
setTitulo(titulo);
setEditor(editor);
setData(data);
}
public int getCodigo()
{
return codigo;
}
public void setCodigo(int codigo)
{
this.codigo = codigo;
}
public String getData()
{
return data;
}
public void setData(String data)
{
this.data = data.trim();
}
public String getEditor()
{
return editor;
}
public void setEditor(String editor)
{
this.editor = editor.trim();
}
public String getTitulo()
{
return titulo;
}
public void setTitulo(String titulo)
{
this.titulo = titulo.trim();
}
public String toString() {
return "Título: " + titulo + "\nCódigo: " + codigo +
"\nEditor: " + editor + "\nData: " + data;
}
}
CLASSE REPOSITÓRIO DE DADOS
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.HashSet;
public class RepositorioDados
{
private Map<String, Assunto> assuntos;
private Set<Agente> agentes;
private List<Publicacao> pubs;
public RepositorioDados()
{
assuntos = new HashMap<String, Assunto>();
agentes = new HashSet<Agente>();
pubs = new ArrayList<Publicacao>();
initAssuntos();
}
public void addAutor(Autor autor)
{
agentes.add(autor);
}
public void addEditor(Editor editor)
{
agentes.add(editor);
}
public Autor findAutor(int codigo)
{
for(Iterator<Agente> iterador = agentes.iterator(); iterador.hasNext();)
{
Agente agente = iterador.next();
if((agente instanceof Autor) && (agente.getCodigo() == codigo))
{
return (Autor)agente;
}
}
return null;
}
public Editor findEditor(int codigo)
{
for(Iterator<Agente> iterador = agentes.iterator(); iterador.hasNext();)
{
Agente agente = iterador.next();
if((agente instanceof Editor) && (agente.getCodigo() == codigo))
{
return (Editor)agente;
}
}
return null;
}
public void addPub(Publicacao publicacao)
{
pubs.add(publicacao);
}
public void removePub(String titulo)
{
for(Iterator<Publicacao> iterador = pubs.iterator(); iterador.hasNext();)
{
Publicacao publicacao = iterador.next();
if(titulo.equals(publicacao.getTitulo()))
{
pubs.remove(publicacao);
break;
}
}
}
public void removeAgente(int codigo)
{
for(Iterator<Agente> iterador = agentes.iterator(); iterador.hasNext();)
{
Agente agente = iterador.next();
if(agente.getCodigo() == codigo)
{
agentes.remove(agente);
break;
}
}
}
public Publicacao findPub(int codigo)
{
for(Iterator<Publicacao> iterador = pubs.iterator(); iterador.hasNext();)
{
Publicacao publicacao = iterador.next();
if(publicacao.getCodigo() == codigo)
{
return publicacao;
}
}
return null;
}
public ArrayList<Publicacao> findPubs(String busca)
{
busca = busca.toLowerCase();
ArrayList<Publicacao> result = new ArrayList<Publicacao>();
for(Iterator<Publicacao> iterador = pubs.iterator(); iterador.hasNext();)
{
Publicacao publicacao = iterador.next();
if((publicacao.getTitulo().toLowerCase().contains(busca)) || (publicacao.getEditor().toLowerCase().contains(busca)) || (Integer.parseInt(busca) == publicacao.getCodigo()))
{
result.add(publicacao);
}
}
return result;
}
private void initAssuntos()
{
assuntos.put("000", new Assunto("000","Generalidades"));
assuntos.put("100", new Assunto("100", "Filosofia"));
assuntos.put("200", new Assunto("200", "Religião"));
assuntos.put("300", new Assunto("300", "Ciências Sociais"));
assuntos.put("400", new Assunto("400", "Línguas"));
assuntos.put("500", new Assunto("500", "Ciências Naturais"));
assuntos.put("600", new Assunto("600", "Ciências Aplicadas"));
assuntos.put("700", new Assunto("700", "Artes"));
assuntos.put("800", new Assunto("800", "Literatura"));
}
}
CLASSE REVISTA
import java.util.ArrayList;
import java.util.List;
public class Revista extends Publicacao
{
private List<Artigo> artigos;
public Revista(int codigo, String titulo, String editor, String data)
{
super(codigo, titulo, editor, data);
artigos = new ArrayList<Artigo>();
}
public List<Artigo> getArtigos()
{
return artigos;
}
public void setArtigos(ArrayList<Artigo> artigos)
{
this.artigos = artigos;
}
public void addArtigo(Artigo artigo)
{
artigos.add(artigo);
}
}
Quem tiver paciência para ajudar-me ficaria muito grato, pois estou tentando há dias e não consigo.
[ ]