Estou precisando, criar um programa que fará busca por tags e não estou conseguindo pensar em uma solução clara, gostaria que alguem podesse me ajudar. Já pensei em usar enums que representariam os dados de uma classe e quando passasse para uma busca eles buscariam os dados na classe de acordo com com os enums passados para a busca.
public class Curriculo
{
private DadoPessoal dadoPessoal;
public Curriculo()
{
dadoPessoal = new DadoPessoal();
}
public void setDadoPessoal(DadoPessoal dadoPessoal)
{
this.dadoPessoal = dadoPessoal;
}
public DadoPessoal getDadoPessoal()
{
return this.dadoPessoal;
}
}
public class DadoPessoal
{
private String nome;
private String email;
private String estadoCivil;
public DadoPessoal()
{
nome = "Zé";
email = "zé@dominio.com";
estadoCivil = "Solteiro";
}
public String getNome()
{
return nome;
}
public void setNome(String nome)
{
this.nome = nome;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getEstadoCivil()
{
return estadoCivil;
}
public void setEstadoCivil(String estadoCivil)
{
this.estadoCivil = estadoCivil;
}
}
public enum EnumDadoPessoal
{
NOME("nome"),
EMAIL("email"),
CIVIL("estadoCivil");
private String nomeCampo;
private EnumDadoPessoal(String nomeCampo)
{
this.nomeCampo = nomeCampo;
}
public String getNomeCampo()
{
return this.nomeCampo;
}
}
public class FrameBusca extends JFrame
{
public FrameBusca (Curriculo curriculo)
{
super("Teste Busca");
this.setLayout(new GridBagLayout());
// inicializa GridBagConstraints.
c = new GridBagConstraints();
// inicializa e adiciona JcomboBox.
comboSelecao = new JComboBox(EnumDadoPessoal.values());
c.gridx = 1;
c.gridy = 0;
add(comboSelecao, c);
// inicializa e adiciona JTextField.
textSelecao = new JTextField(15);
c.gridx = 0;
c.gridy = 1;
add(textSelecao, c);
// inicializa e adiciona JLabel.
labelSelecao = new JLabel("Tipo de seleção: ");
c.gridx = 0;
c.gridy = 0;
add(labelSelecao, c);
// adiciona Handler ao JComboBox.
Handler h = new Handler();
comboSelecao.addActionListener(h);
// recebe o curriculo.
this.curriculo = curriculo;
}
private class Handler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
// obtem o nome do campo.
EnumDadoPessoal ed = (EnumDadoPessoal) comboSelecao.getSelectedItem();
String nomeCampo = ed.getNomeCampo();
// obtem DadoPessoal do curriculo.
DadoPessoal d = curriculo.getDadoPessoal();
// obtem o campo com o nome especificado.
try {
Field f = d.getClass().getDeclaredField(nomeCampo);
} catch (SecurityException e1) {
e1.printStackTrace();
} catch (NoSuchFieldException e1) {
e1.printStackTrace();
} catch (IllegalArgumentException e1) {
e1.printStackTrace();
}
}
}
}
Aqui nesse exemplo tenho um curriculo que agrega dadosPessoais e um enum que vai representar cada dado em dadosPessoais, assim na hora da busca vou passar os enum que eu quero pegar e usando “Field f = d.getClass().getDeclaredField(nomeCampo);” vou pegar o campo especificado, mas acho que isso ta meio capenga. Por favor alguem da uma luz!