Bom dia!
Estou tentando realizar um loop (forEach) que pega a informação no banco de dados (BigTable) um a um de uma determinada Entidade e guarda em uma lista (List), até este momento acho que esta tudo OK, mas, infelizmente de alguma forma a lista fica só com o valor da última propriedade que esta na Entidade, sendo que, o quantidade de itens na lista e exatamente a quantidade que tem na Entidade com o mesmo valor duplicado do último item que foi pego pelo loop.
Segue abaixo todas as classes e JSP's que estou utilizando.
[color=red]formBuscaPorNome:[/color]
<form id=formBuscaPorNome action="<c:url value="/equipamento/exibirDbNome" />" method="get">
<fieldset>
<legend>Busca Equipamento</legend>
<label for="nome">Nome:</label>
<input id="nome" type="text" name="equipamento.nome" value="${equipamento.nome}" />
<c:forEach items="${errors}" var="error">
<c:if test="${error.category == 'equipamento.nome'}"></c:if>
<br/>
<font size="2" color="red">${error.message}</font>
</c:forEach>
<button type="submit">Buscar</button>
</fieldset>
</form>
[color=red]EquipamentoController:[/color]
@Resource
public class EquipamentoController {
private final EquipamentoDao daoEquipamento;
private final AgregacaoEquipamentoDao daoAgregacaoEquipamento;
private final MarcaEquipamentoDao daoMarcaEquipamento;
private final NomeEquipamentoDao daoNomeEquipamento;
private final ClassificacaoEquipamentoDao daoClassificacaoEquipamento;
private final SetorEquipamentoDao daoSetorEquipamento;
private final EquipamentoNomeDao daoEquipamentoNome;
private final Result result;
private final Validator validator;
public EquipamentoController(EquipamentoDao daoEquipamento,
AgregacaoEquipamentoDao daoAgregacaoEquipamento,
MarcaEquipamentoDao daoMarcaEquipamento,
NomeEquipamentoDao daoNomeEquipamento,
ClassificacaoEquipamentoDao daoClassificacaoEquipamento,
SetorEquipamentoDao daoSetorEquipamento,
EquipamentoNomeDao daoEquipamentoNome,
Result result, Validator validator) {
this.daoEquipamento = daoEquipamento;
this.daoAgregacaoEquipamento = daoAgregacaoEquipamento;
this.daoMarcaEquipamento = daoMarcaEquipamento;
this.daoNomeEquipamento = daoNomeEquipamento;
this.daoClassificacaoEquipamento = daoClassificacaoEquipamento;
this.daoSetorEquipamento = daoSetorEquipamento;
this.daoEquipamentoNome = daoEquipamentoNome;
this.result = result;
this.validator = validator;
}
@Get
@Path("/equipamentos/buscaPorNome")
public void formBuscaPorNome() {
}
@Get
@Path("/equipamento/exibirDbNome")
public List<Equipamento> exibirRealizandoBuscaBancoDeDadosPorNome (Equipamento equipamento) {
List<Equipamento> equipamentos = this.daoEquipamentoNome.buscar(equipamento);
System.out.println("Controller Primerito Equipamento: " + equipamentos.get(0).getNumeroSavitecPadronizadoENG());
System.out.println("Controller Segundo Equipamento: " + equipamentos.get(1).getNumeroSavitecPadronizadoENG());
return equipamentos;
}
}
[color=red]EquipamentoNomeDao:[/color]
@Component
public class EquipamentoNomeDao {
private DatastoreService datastore;
private final AgregacaoEquipamentoNomeDao dao;
public EquipamentoNomeDao(AgregacaoEquipamentoNomeDao dao) {
this.datastore = DatastoreServiceFactory.getDatastoreService();
this.dao = dao;
}
public void salvar(Equipamento equipamento) {
Entity entidade = new Entity("Equipamento" + equipamento.getNome().replaceAll(" ", ""), this.dao.pegaIdESomaMaisUm());
entidade.setProperty("nome", equipamento.getNome());
entidade.setProperty("patrimonio", equipamento.getPatrimonio());
entidade.setProperty("serie", equipamento.getSerie());
entidade.setProperty("numeroSavitec", equipamento.getNumeroSavitec());
entidade.setProperty("marca", equipamento.getMarca());
entidade.setProperty("modelo", equipamento.getModelo());
entidade.setProperty("setor", equipamento.getSetor());
entidade.setProperty("classificacao", equipamento.getClassificacao());
this.datastore.put(entidade);
}
public List<Equipamento> buscar(Equipamento equipamento) {
Entity entidade = null;
List<Equipamento> equipamentos = new ArrayList<Equipamento>();
Long total = this.dao.pegaValorDoCounterDeId();
for (Long counter = 1L; counter <= total; counter++) {
try {
entidade = this.datastore.get(KeyFactory.createKey("Equipamento" + equipamento.getNome().replaceAll(" ", ""), counter));
} catch (EntityNotFoundException e) {
System.out.println("Entidade '" + equipamento.getNome() + "'não existe!");
System.out.println("Valor da Entidade quando der erro: " + entidade);
}
equipamento.setPatrimonio((String) entidade.getProperty("patrimonio"));
equipamento.setSerie((String) entidade.getProperty("serie"));
equipamento.setNumeroSavitec((Long) entidade.getProperty("numeroSavitec"));
equipamento.setNome((String) entidade.getProperty("nome"));
equipamento.setMarca((String) entidade.getProperty("marca"));
equipamento.setModelo((String) entidade.getProperty("modelo"));
equipamento.setSetor((String) entidade.getProperty("setor"));
equipamento.setClassificacao((String) entidade.getProperty("classificacao"));
System.out.println("Valor da Variavel 'equipamento': " + equipamento.getNumeroSavitecPadronizadoENG());
equipamentos.add(equipamento);
System.out.println("Primeiro Equipameto: " + equipamentos.get((int) (counter - 1L)).getNumeroSavitecPadronizadoENG());
System.out.println("Patrimonio: " + entidade.getProperty("patrimonio"));
System.out.println("Serie: " + entidade.getProperty("serie"));
System.out.println("Numero Savitec: " + entidade.getProperty("numeroSavitec"));
System.out.println("Nome: " + entidade.getProperty("nome"));
System.out.println("Marca: " + entidade.getProperty("marca"));
System.out.println("Modelo: " + entidade.getProperty("modelo"));
System.out.println("Setor: " + entidade.getProperty("setor"));
System.out.println("Classificação: " + entidade.getProperty("classificacao"));
System.out.println("------------------------------------------------------------------------------------------------");
}
System.out.println("Fora do For no Dao: " + equipamentos.get(0).getNumeroSavitecPadronizadoENG());
System.out.println("Fora do For no Dao: " + equipamentos.get(1).getNumeroSavitecPadronizadoENG());
return equipamentos;
}
}
[color=red]exibirRealizandoBuscaBancoDeDadosPorNome:[/color]
<table>
<thead>
<tr>
<th>Numero Savitec</th>
<th>Patrimonio</th>
<th>Serie</th>
<th>Nome</th>
<th>Marca</th>
<th>Modelo</th>
<th>Classificação</th>
<th>Setor</th>
</tr>
</thead>
<tbody>
<c:forEach items="${equipamentoList}" var="equipamento">
<tr>
<td>${equipamento.numeroSavitecPadronizadoENG}</td>
<td>${equipamento.patrimonio}</td>
<td>${equipamento.serie}</td>
<td>${equipamento.nome}</td>
<td>${equipamento.marca}</td>
<td>${equipamento.modelo}</td>
<td>${equipamento.classificacao}</td>
<td>${equipamento.setor}</td>
</tr>
</c:forEach>
</tbody>
</table>
O resultado dessa brincadeira no Eclipse fica da seguinte forma:
Valor da Variavel 'equipamento': ENG-0009
Primeiro Equipameto: ENG-0009
Patrimonio: 012211
Serie: 102010
Numero Savitec: 9
Nome: Ventilador Pulmonar
Marca: Nada
Modelo:
Setor: UTI
Classificação: Risco II
------------------------------------------------------------------------------------------------
Valor da Variavel 'equipamento': ENG-0010
Primeiro Equipameto: ENG-0010
Patrimonio: 81601
Serie: 9619806
Numero Savitec: 10
Nome: Ventilador Pulmonar
Marca: Nada
Modelo:
Setor: UTI
Classificação: Risco II
------------------------------------------------------------------------------------------------
Valor da Variavel 'equipamento': ENG-0011
Primeiro Equipameto: ENG-0011
Patrimonio: 78190817
Serie: [telefone removido]
Numero Savitec: 11
Nome: Ventilador Pulmonar
Marca: Philips
Modelo:
Setor: UTI
Classificação: Risco IV
------------------------------------------------------------------------------------------------
Fora do For no Dao: ENG-0011
Fora do For no Dao: ENG-0011
Controller Primerito Equipamento: ENG-0011
Controller Segundo Equipamento: ENG-0011
O processo realizado no navegador fica da seguinte forma:
Primeiro realizo a busca por nome do Equipamento "Ventilador Pulmonar":
[color=red]Visualize o Anexo "Realizando Busca".[/color]
O resultado da busca vem com a quantidade de itens corretos mas apenas com o valor do último item duplicado pela quantidade correta:
[color=red]Visualize o Anexo "Resultado da Busca".[/color]
Estou sem idéias para solucionar este problema, se alguém tiver alguma luz, por favor, me ajude.
Sucesso!
Abraço!

