Não estou entendendo o porque do método abaixo estar sendo executado apenas uma vez. Quando eu abro a aplicação pela primeira vez, vem tudo certo, mas se eu adicionar outro valor durante a execução, a variável maior ainda retorna a que era no inicio da execução.
Por exemplo: Maior ao executar pela primeira vez: 100
É adicionado o valor 150.
Renderizo a página e ainda é retornado o valor 100.
public BigDecimal getExtensaoExecutada(BigDecimal id) {
BigDecimal maior = new BigDecimal(0);
for(int i = 0; i < getObrasExtensaoExecutadaList().size(); i++) {
if(getObrasExtensaoExecutadaList().get(i).getIdObrasExtensao().id == id) {
if(maior.doubleValue() < getObrasExtensaoExecutadaList().get(i).getExtensaoExecutada().doubleValue())
maior = getObrasExtensaoExecutadaList().get(i).getExtensaoExecutada();
}
}
return maior;
}
Classe completa:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.celg.entidade;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author paulo
*/
@Entity
@Table(name = "OBRAS_EXTENSAO")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "ObrasExtensao.findAll", query = "SELECT o FROM ObrasExtensao o"),
@NamedQuery(name = "ObrasExtensao.findById", query = "SELECT o FROM ObrasExtensao o WHERE o.id = :id"),
@NamedQuery(name = "ObrasExtensao.findByExtensaoPrevKm", query = "SELECT o FROM ObrasExtensao o WHERE o.extensaoPrevKm = :extensaoPrevKm")})
public class ObrasExtensao implements Serializable {
private static final long serialVersionUID = 1L;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
@Id
@Basic(optional = false)
@Column(name = "ID")
private BigDecimal id;
@Column(name = "EXTENSAO_PREV_KM")
private BigDecimal extensaoPrevKm;
@OneToMany(mappedBy = "idObrasExtensao")
private List<ObrasExtensaoExecutada> obrasExtensaoExecutadaList;
@JoinColumn(name = "ID_OBRA", referencedColumnName = "ID")
@ManyToOne
private Obras obras;
public ObrasExtensao() {
}
public ObrasExtensao(BigDecimal id) {
this.id = id;
}
public BigDecimal getId() {
return id;
}
public void setIdObra(BigDecimal id) {
this.id = id;
}
public BigDecimal getExtensaoPrevKm() {
return extensaoPrevKm;
}
public void setExtensaoPrevKm(BigDecimal extensaoPrevKm) {
this.extensaoPrevKm = extensaoPrevKm;
}
public Obras getObras() {
return obras;
}
public void setObras(Obras obras) {
this.obras = obras;
}
public List<ObrasExtensaoExecutada> getObrasExtensaoExecutadaList() {
return obrasExtensaoExecutadaList;
}
public void setObrasExtensaoExecutadaList(List<ObrasExtensaoExecutada> obrasExtensaoExecutadaList) {
this.obrasExtensaoExecutadaList = obrasExtensaoExecutadaList;
}
public BigDecimal getExtensaoExecutada(BigDecimal id) {
BigDecimal maior = new BigDecimal(0);
for(int i = 0; i < getObrasExtensaoExecutadaList().size(); i++) {
if(getObrasExtensaoExecutadaList().get(i).getIdObrasExtensao().id == id) {
if(maior.doubleValue() < getObrasExtensaoExecutadaList().get(i).getExtensaoExecutada().doubleValue())
maior = getObrasExtensaoExecutadaList().get(i).getExtensaoExecutada();
}
}
return maior;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof ObrasExtensao)) {
return false;
}
ObrasExtensao other = (ObrasExtensao) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.celg.entidade.ObrasExtensao[ id=" + id + " ]";
}
}
JSF:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListObrasExtensaoTitle_obras}"/>
</f:facet>
<h:outputText value="#{item.obras.titulo}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListObrasExtensaoTitle_extensaoPrevKm}"/>
</f:facet>
<h:outputText value="#{item.extensaoPrevKm}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListObrasExtensaoTitle_extensaoPrevKm}"/>
</f:facet>
<h:outputText value="#{item.getExtensaoExecutada(item.id)}"/>
</p:column>
<p:column rendered="#{editar}" >
<f:facet name="header">
<h:outputText value=" "/>
</f:facet>
<h:commandLink id="linkVisualizar" value="#{bundle.ListObrasExtensaoViewLink}" action="Edit?faces-redirect=true&includeViewParams=true">
<f:setPropertyActionListener value="#{item}" target="#{obrasExtensaoController.selected}" />
</h:commandLink>
</p:column>
<p:column rendered="#{remover}" >
<f:facet name="header">
<h:outputText value=" "/>
</f:facet>
<h:commandLink id="linkDeletar" value="#{bundle.ListObrasExtensaoDestroyLink}" action="#{obrasExtensaoController.destroy()}">
<f:setPropertyActionListener value="#{item}" target="#{obrasExtensaoController.selected}" />
</h:commandLink>
</p:column>
</html>