Metodo gerar backup

Bom Dia amigos.

Estou com uma duvida cruel em java.
Estou fazendo um trabalho que existem 6 classes, nas quais são:
Aluno, Matricula, Professor, Disciplina, Mestre, Doutor.
Já fiz todos metodos get/set, equals,tostring, enfim, o que foi pedido. Só que me deparei com dois topicos no exercicio que não estou conseguindo fazer, é a seguinte:

-> Crie uma classe chamada BD que armazene uma lista sem repetição (HashSet, por exemplo) de Aluno, uma
de Disciplina, uma de Matricula, uma de Professor (que armazenará tanto mestres como doutores).

-> Nessa classe BD, deverá existir um método gerarBackup que irá retornar um StringBuffer com um
cabeçalho contendo a data atual no formato abaixo e o conteúdo textual (gerado pelo método toString) de
todos os objetos de todas as listas. Observe exemplo:

Backup realizado em 5 de outubro de 2009 às 12:04:34
Alunos
1;Carlos Alberto;07/08/89
2;José Marcos;02/01/86
Professores
11111111111;Daniel de Paula;1000.00;Mestre
22222222222;César Couto;1400.00;Doutor
Disciplinas
100;LTP-III;60;22222222222
101;ED-I;80;11111111111
Matriculas
100;2;99
101;1;NULL

Se puderem me ajudar. Agradeço Demais.

Obrigado a todos.

e o que você fez dessa parte onde está o “problema” ?
Onde está a dúvida exatamente ?
Não sabe mexer com as classes StringBuffer e HashSet ? Seja mais específico se possível.

Bom Dia Cronnos.

A classe Bd já fiz:

package entidades;

import java.util.ArrayList;
import java.util.Collection;

public class BD {
Collection todosAlunos = new ArrayList();
Collection todasDisciplinas = new ArrayList();
Collection todasMatriculas = new ArrayList();
Collection todosProfessores = new ArrayList();

A minha duvida está em como fazer o metodo gerarBackup, que irá retornar um StringBuffer com um
cabeçalho contendo a data atual no formato abaixo e o conteúdo textual (gerado pelo método toString) de
todos os objetos de todas as listas. Observe exemplo:

Backup realizado em 5 de outubro de 2009 às 12:04:34
Alunos
1;Carlos Alberto;07/08/89
2;José Marcos;02/01/86
Professores
11111111111;Daniel de Paula;1000.00;Mestre
22222222222;César Couto;1400.00;Doutor
Disciplinas
100;LTP-III;60;22222222222
101;ED-I;80;11111111111
Matriculas
100;2;99
101;1;NULL

Estou lendo mais sobre a classe StringBuffer e seu metodo append. que acredito que funcione pegando todos os metodos toString(Sobrescritos) das outras classes, para que gere o resultado acima.

O método append funciona da mesma forma que fazer
String nome = "Alberto " + "José " + “da Sílva”;
com StringBuffer seria
nome.append("Alberto ").append("José ").append(“da Silva”);

Para pegar a data atual, você pode criar um objeto de SimpleDateFormat para especificar o formato da data e depois instanciar um objeto Date que conterá a data atual. Um exemplo dos comandos:
SimpleDateFormat formatador = new SimpleDateFormat(“dd/MM/yyyy”);
String data = formatador.format(data);
System.out.println(data);